1、游戏贪吃蛇游戏贪吃蛇 pythonpython 编程代码编程代码基本准备首先,我们需要安装 pygame 库,小编通过 pip install pygame,很快就安装好了。在完成贪吃蛇小游戏的时候,我们需要知道整个游戏分为四部分:游戏显示:游戏界面、结束界面贪吃蛇:头部、身体、食物判断、死亡判断树莓:随机生成按键控制:上、下、左、右游戏显示首先,我们来初始化 pygame,定义颜色、游戏界面的窗口大小、标题和图标等。1#初始化 pygame2pygame.init()3fpsClock=pygame.time.Clock()4#创建 pygame显示层5playSurface=pygame.
2、display.set_mode(600,460)#窗口大小6pygame.display.set_caption(Snake Game)#窗口名称7#定义颜色变量8redColour=pygame.Color(255,0,0)9blackColour=pygame.Color(0,0,0)10whiteColour=pygame.Color(255,255,255)11greyColour=pygame.Color(150,150,150)游戏结束界面,我们会显示“Game Over!”和该局游戏所得分数,相关代码如下:1#定义 gameOver函数2def gameOver(playSur
3、face,score):3gameOverFont=pygame.font.SysFont(arial.ttf,54)#游戏结束字体和大小4gameOverSurf=gameOverFont.render(Game Over!,True,greyColour)#游戏结束内容显示5gameOverRect=gameOverSurf.get_rect()6gameOverRect.midtop=(300,10)#显示位置7playSurface.blit(gameOverSurf,gameOverRect)8scoreFont=pygame.font.SysFont(arial.ttf,54)#得
4、分情况显示9scoreSurf=scoreFont.render(Score:+str(score),True,greyColour)10scoreRect=scoreSurf.get_rect()11scoreRect.midtop=(300,50)12playSurface.blit(scoreSurf,scoreRect)13pygame.display.flip()#刷新显示界面14time.sleep(5)#休眠五秒钟自动退出界面15pygame.quit()16sys.exit()贪吃蛇和树莓我们需要将整个界面看成许多20*20 的小方块,每个方块代表一个单位,蛇的长度用单位来表示
5、,同时我们采用列表的形式存储蛇的身体。同时,我们都知道,树莓的位置是随机的。所以,我们需要让树莓出现的位置是游戏界面中的随机位置,同时,每吃到一颗树莓,就需要重新生成一颗新的树莓,并且得分加1。相关初始化设置如下:1snakePosition=100,100#贪吃蛇 蛇头的位置2snakeSegments=100,100#贪吃蛇 蛇的身体,初始为一个单位3raspberryPosition=300,300#树莓的初始位置4raspberrySpawned=1#树莓的个数为 15direction=right#初始方向为右6changeDirection=direction7score=0#初始
6、得分如何控制贪吃蛇的运动轨迹呢,那么就需要按键控制了。我们通过键盘的和WSAD来控制,如果想直接退出游戏,则可以通过Esc 键。这里需要强调的是,贪吃蛇里面是不能反方向运动,因此,我们需要进一步的增加限制条件:1#检测例如按键等 pygame 事件2for event in pygame.event.get():3if event.type=QUIT:4pygame.quit()5sys.exit()6elif event.type=KEYDOWN:7#判断键盘事件8if event.key=K_RIGHT or event.key=ord(d):9changeDirection=right1
7、0if event.key=K_LEFT or event.key=ord(a):11changeDirection=left12if event.key=K_UP or event.key=ord(w):13changeDirection=up14if event.key=K_DOWN or event.key=ord(s):15changeDirection=down16if event.key=K_ESCAPE:17pygame.event.post(pygame.event.Event(QUIT)18#判断是否输入了反方向19if changeDirection=right and n
8、ot direction=left:20direction=changeDirection21if changeDirection=left and not direction=right:22direction=changeDirection23if changeDirection=up and not direction=down:24direction=changeDirection25if changeDirection=down and not direction=up:26direction=changeDirection方向设置好了,那么贪吃蛇蛇身变换怎么做啊?很简单,我们只需要
9、根据方向变换一下坐标即可。1#根据方向移动蛇头的坐标2if direction=right:3snakePosition0+=204if direction=left:5snakePosition0-=206if direction=up:7snakePosition1-=208if direction=down:9snakePosition1+=2010#增加蛇的长度11snakeSegments.insert(0,list(snakePosition)贪吃蛇游戏里面最重要的就是食物判断和死亡判断。首先是食物判断,我们通过键盘按键来决定贪吃蛇的走向,以便它能吃到树莓。如何判断贪吃蛇有没有吃到
10、树莓呢?很简单,如果贪吃蛇蛇头的位置和树莓的位置重合了,也就是相同,那么贪吃蛇就吃到树莓了,否则没有。同时,一旦发生了树莓被吃的情况,立刻重新随机生成一个新的树莓。相关代码如下:1#判断是否吃掉了树莓2if snakePosition0=raspberryPosition0 and snakePosition1=raspberryPosition1:3raspberrySpawned=04 else:5snakeSegments.pop()#若没有吃掉树莓,需将最后一单位的蛇身提出列表,此处和蛇身移动时位置变换有关6#如果吃掉树莓,则重新生成树莓7if raspberrySpawned=0:8
11、x=random.randrange(1,30)#和游戏界面大小相关9y=random.randrange(1,23)10raspberryPosition=int(x*20),int(y*20)11raspberrySpawned=112score+=1死亡判断则分为两类情况,一是触碰到了游戏界面的边界,二是贪吃蛇触碰到了自己的身体。一旦发生死亡,则触发 gameover。1#判断是否死亡2if snakePosition0 600 or snakePosition0 460 or snakePosition1 600 or snakePosition0 460 or snakePosition1 0:99gameOver(playSurface,score)100for snakeBody in snakeSegments1:101if snakePosition0=snakeBody0 and snakePosition1=snakeBody1:102gameOver(playSurface,score)103#控制游戏速度104fpsClock.tick(5)105106if _name_=_main_:107main()