• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python实现简单的贪吃蛇游戏

    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,加入按钮、难度、音乐、得分功能,供大家参考,具体内容如下

    贪吃蛇小游戏,可以显示出得分,又背景音乐,难度选择和开始重启按钮设置。

    游戏实现效果如下:

    后面有完整代码和解析

    import sys
    import pygame
    import random
    
    class Button(object):#定义按钮类
     def __init__(self,begin1,begin2,restart1,restart2,position,position2):
     self.gamebegin1=pygame.image.load(begin1).convert_alpha()#导入开始和重启按钮图片
     self.gamebegin2=pygame.image.load(begin2).convert_alpha()
     self.gamerestart1=pygame.image.load(restart1).convert_alpha()
     self.gamerestart2=pygame.image.load(restart2).convert_alpha()
     self.position=position
     self.position2=position2
     
     def ifpress(self):
     point_x,point_y=pygame.mouse.get_pos()#找到鼠标光标所在位置
     x,y=self.position#指定的点击按钮位置
     w,h=self.gamebegin1.get_size()#定义按钮尺寸
     x-=w/2
     y-=h/2
     if_x=x-w/2point_xx+w/2#判断鼠标光标是否在按钮上
     if_y=y-h/2point_yy+h/2
     return if_x and if_y
    
     def ispress(self):
     x,y=self.position
     w,h=self.gamebegin1.get_size()
     x-=w/2
     y-=h/2
     if self.ifpress():#如果鼠标光标在按钮上,图片显示为gamebegin1,否则显示为gamebegin2
      screen.blit(self.gamebegin1,(x-w/2+8,y-h/2+7))  
     else:
      screen.blit(self.gamebegin2,(x-w/2,y-h/2))
     #定义重启按钮,方法同上
     def ifrepress(self):
     point_x,point_y=pygame.mouse.get_pos()
     x,y=self.position2
     w,h=self.gamerestart1.get_size()
     x-=w/2
     y-=h/2
     if_x=x-w/2point_xx+w/2
     if_y=y-h/2point_yy+h/2
     return if_x and if_y
    
     def isrepress(self):
     x,y=self.position2
     w,h=self.gamerestart1.get_size()
     x-=w/2
     y-=h/2
     if self.ifrepress():
      screen.blit(self.gamerestart1,(x-w/2,y-h/2))  
     else:
      screen.blit(self.gamerestart2,(x-w/2,y-h/2))
      
    def choice():#定义选择难度
     screen.fill((0,0,0))#初始界面颜色设置为黑色
     Rect1=pygame.Rect(300,300,200,100)#设置按钮尺寸
     Rect2=pygame.Rect(300,450,200,100)
     pygame.draw.rect(screen,(136,189,186),Rect1)#创建按钮
     screen.blit(font.render('grade one:',-1,(255,255,255)),(300,300))
     pygame.draw.rect(screen,(136,189,186),Rect2)
     screen.blit(font.render('grade two:',-1,(255,255,255)),(300,450))
     pygame.display.flip()#显示到屏幕上
     point_x,point_y=pygame.mouse.get_pos()#找到鼠标光标所在位置
     global a,b#定义全局变量
     if 300point_x500 and 300point_y400:#判断光标是否在按钮上
     if pygame.mouse.get_pressed()[0]:#判断鼠标是否按下
      a=8#a表示没秒执行8次
      b=1#b表示设定的一个数,与后面判断执行时有关
     if 300point_x500 and 450point_y550:
     if pygame.mouse.get_pressed()[0]:
      a=12
      b=1
     pygame.display.update()#更新屏幕
     
    
    def getResult():#游戏结束时出现得分结果和gameover
     final_text1='Game_Over'
     final_text2='Your final score is: '+str(score)
     ft1_font=pygame.font.SysFont('Arial',70)
     ft1_surf=font.render(final_text1,1,(242,3,36))
     screen.blit(ft1_surf,[screen.get_width()/2-ft1_surf.get_width()/2,100])
     pygame.display.flip()
    
    def main():
     pygame.init()#初始化pygame
     clock=pygame.time.Clock()#定义时间
     pygame.font.init()#初始化字符
     #需要在其它定义中出现的参数,这里还需要定义全局变量一下
     global score,screen,font,button,status,x,y,direction,snackhead,snackbody,foodposition,state,a,b
     screen=pygame.display.set_mode((640,640))#设置屏幕尺寸
     screen.fill((0,0,0))#填充屏幕颜色
     #指明图片路径
     beginname1='D://picture//gamebegin1.png'
     beginname2='D://picture//gamebegin2.png'
     restartname1='D://picture//restart1.png'
     restartname2='D://picture//restart2.png'
     pygame.display.set_caption('sanckgame')
     font=pygame.font.SysFont('Arial',40)#定义字符种类和大小
     snackhead=[120,120]#定义初始蛇的头部位置
     foodposition=[360,360]#定义初始食物位置
     snackbody=[[120,120],[100,120],[80,120]]#定义蛇全身位置 
     score=0
     x=300
     y=300
     state=0
     a=1
     b=0
     food_eat=1#食物被吃为0,否则为1
     direction='right'#定义初始运动方向
     re_direction=direction#re_direction为变化后的方向
     button = Button(beginname1,beginname2,restartname1,restartname2,(330,300),(600,320))#定义按钮数值 
     pygame.display.update()
    
     
     while True:
      
     for event in pygame.event.get():#遍历可能出现的事件
    
      if event.type == pygame.QUIT:#点击关闭,程序关闭
      pygame.quit()
      sys.exit()
     button.ispress()#显示按钮
     pygame.display.update()
     if button.ifpress():
      if pygame.mouse.get_pressed()[0]:   
      break #点击按钮,结束这里的循环,进入游戏选择难度界面
     while True:
     for event in pygame.event.get():
    
      if event.type == pygame.QUIT:
      pygame.quit()
      sys.exit()
     choice()#运行choice()
     if b==1:#如果点击了按钮,结束循环,进入游戏运行界面
      break
     pygame.mixer.init()#初始化音乐
     pygame.mixer.music.load('D://music//Above Everything - Capo Productions.ogg')#导入音乐 
     pygame.display.update()
     status=True
     screen=pygame.display.set_mode((640,640))
     screen.fill((0,0,0))
     while status:
     clock.tick(a)#运行速度
     
     for event in pygame.event.get():
    
      if event.type == pygame.QUIT:
      pygame.quit()
      sys.exit()
      
      elif event.type == pygame.KEYDOWN:#判断键盘事件
      if event.key == pygame.K_RIGHT or event.key == ord('d'):
       re_direction='right'
      if event.key == pygame.K_LEFT or event.key == ord('a'):
       re_direction='left'
      if event.key == pygame.K_UP or event.key == ord('w'):
       re_direction='up'
      if event.key == pygame.K_DOWN or event.key == ord('s'):
       re_direction='down'
     #跳出判断事件循环
     if re_direction=='right'and not direction =='left':
      direction=re_direction
     if re_direction=='left'and not direction =='right':
      direction=re_direction
     if re_direction=='up'and not direction =='down':
      direction=re_direction
     if re_direction=='down'and not direction =='up':
      direction=re_direction
     #头部坐标变化 
     if direction=='left':
      snackhead[0]-=20
     if direction=='right':
      snackhead[0]+=20
     if direction=='down':
      snackhead[1]+=20  
     if direction=='up':
      snackhead[1]-=20
     snackbody.insert(0,list(snackhead))#每移动一次,把头部新位置插入到最前面,形成新的头部
     
     if snackhead[0]==foodposition[0] and snackhead[1]==foodposition[1]:#判断蛇是否吃到了食物
      food_eat=0
      score+=1
      pygame.display.update()
     else:
      snackbody.pop()#没吃到则将位置变化前的尾部剔除出去,设的长度不变
     pygame.display.update()
     if food_eat==0:#迟到食物后生成新的食物
      x=random.randint(1,31)
      y=random.randint(1,31)
      for position in snackbody:#判断食物是否出现在蛇的身体处,出现则重新生成
      if not x == position[0] and not y == position[1]:
       state=1
      else:
       state=0
      if state ==1:
      foodposition=[int(x*20),int(y*20)]
      food_eat=1
      
     screen.fill((0,0,0))
     for position in snackbody:#画出蛇的身体和食物
      rect2=pygame.Rect(position[0],position[1],20,20)
      pygame.draw.rect(screen,(166,188,199),rect2)
      rect1=pygame.Rect(foodposition[0],foodposition[1],20,20)
      pygame.draw.rect(screen,(169,111,102),rect1)
     screen.blit(font.render('Score:'+str(score),-1,(255,255,255)),(100,50))#显示出得分
     pygame.display.update()
     #如果蛇撞到墙或自己的身体,则游戏结束
     if snackhead[0]0 or snackhead[0]>620:
      restart()
     if snackhead[1]0 or snackhead[1]>620:
      restart()
     for body in snackbody[1:]:
      if body[0]==snackhead[0]and body[1]==snackhead[1]:
      restart() 
     
     pygame.display.flip()
     pygame.display.update()
     if pygame.mixer.music.get_busy()==False:
      pygame.mixer.music.set_volume(0.3)
      pygame.mixer.music.play(-1)#音乐循环
     
    def restart():#重新开始按钮
      
     getResult()#显示结果
     while True:
     for event in pygame.event.get():
    
      if event.type == pygame.QUIT:
      pygame.quit()
      sys.exit()
      
      button.isrepress()
      pygame.display.update()
      if button.ifrepress():
      pygame.display.update()
      if pygame.mouse.get_pressed()[0]:
       main()
    
    main()

    按钮图片如下,可以自己画图做,音乐最好用ogg格式的,否则可能出问题。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 五分钟学会怎么用python做一个简单的贪吃蛇
    • 用Python实现童年贪吃蛇小游戏功能的实例代码
    • python语言实现贪吃蛇游戏
    • 150行python代码实现贪吃蛇游戏
    • python实现贪吃蛇游戏源码
    • 教你一步步利用python实现贪吃蛇游戏
    • python简单贪吃蛇开发
    • python实现贪吃蛇游戏
    • python贪吃蛇游戏代码
    • 只需要100行Python代码就可以实现的贪吃蛇小游戏
    上一篇:pycharm最新免费激活码至2099年(21.3.18亲测可用)
    下一篇:python实现自动打卡小程序
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python实现简单的贪吃蛇游戏 python,实现,简单,的,贪吃,