收藏 分销(赏)

贪食蛇游戏设计报告.pdf

上传人:鱼** 文档编号:852395 上传时间:2024-03-29 格式:PDF 页数:7 大小:410.54KB 下载积分:5 金币
下载 相关 举报
贪食蛇游戏设计报告.pdf_第1页
第1页 / 共7页
贪食蛇游戏设计报告.pdf_第2页
第2页 / 共7页


点击查看更多>>
资源描述
首先首先导入我们要用到的模块,除了第三方库 pygame 外,我们还会用到一些 Python 内置的模块如 sys、random、time 等,一并导入即可。import pygame,sys,random,time#从 pygame 模块导入常用的函数和常量 from pygame.localsimport*1.1 一些全局参数的初始化接下来接下来,我们需要声明一些全局参数。如初始化 pygame、定义游戏窗口的大小、窗口的标题、定义全局的颜色变量等信息。#初始化 Pygame 库pygame.init()#初始化一个游戏界面窗口DISPLAY=pygame.display.set_mode(640,480)#设置游戏窗口的标题pygame.display.set_caption(人人都是 Pythonista-Snake)#定义一个变量来控制游戏速度FPSCLOCK=pygame.time.Clock()#初始化游戏界面内使用的字体BASICFONT=pygame.font.SysFont(SIMYOU.TTF,80)#定义颜色变量BLACK=pygame.Color(0,0,0)WHITE=pygame.Color(255,255,255)RED=pygame.Color(255,0,0)GREY=pygame.Color(150,150,150)1.2 初始化贪吃蛇及食物游戏中需要有贪吃蛇及食物,我们给定一个初始值。我们将整个界面看成许多20*20 的小方块,每个小方块代表一个标准小格子,贪吃蛇的长度就可以用几个标准小格子表示。我们将贪吃蛇身体用列表的形式存储,方便之后的删减。初始化贪吃蛇及食物#贪吃蛇的的初始位置snake_Head=100,100#初始化贪吃蛇的长度(注:这里以 20*20 为一个标准小格子)snake_Body=80,100,60,100,40,100#指定蛇初始前进的方向,向右direction=right#给定第一枚食物的位置food_Position=300,300#食物标记:0food_flag=1代表食物已被吃掉;1 代表未被吃掉。1.3 实现贪吃蛇的上下左右移动我们需要控制贪吃蛇的上下左右的移动,这里通过监听键盘输入来实现。利用键盘中的上下左右键或 WASD键来控制贪吃蛇的运动。#检测按键等 Pygame 事件 for eventin pygame.event.get():if event.type=QUIT:#接收到退出事件后,退出程序 pygame.quit()sys.exit()#判断键盘事件,用 方向键 或 wsad 来表示上下左右elif event.type=KEYDOWN:if(event.key=K_UPor event.key=K_w)and direction!=DOWN:direction=UPif(event.key=K_DOWNor event.key=K_s)and direction!=UP:direction=DOWNif(event.key=K_LEFTor event.key=K_a)and direction!=RIGHT:direction=LEFTif(event.key=K_RIGHTor event.key=K_d)and direction!=LEFT:direction=RIGHT接下来就是将蛇前进方向按照键盘的输入进行转弯操作,并将蛇的头部当前的位置加入到蛇身的列表中。#根据键盘的输入,改变蛇的头部,进行转弯操作 if direction=LEFT:snake_Head0-=20if direction=RIGHT:snake_Head0+=20if direction=UP:snake_Head1-=20if direction=DOWN:snake_Head1+=20#将蛇的头部当前的位置加入到蛇身的列表中snake_Body.insert(0,list(snake_Head)1.4 判断是否吃到食物如果蛇头与食物的位置重合,则判定吃到食物,将食物数量清零;而没吃到食物的话,蛇身就会跟着蛇头运动,蛇身的最后一节将被踢出列表。#判断是否吃掉食物 if snake_Head0=food_Position0and snake_Head1=food_Position1:food_flag=0else:snake_Body.pop()1.5 重新生成食物当游戏界面中的食物数量为0 时,需要重新生成食物。利用random 函数来生成随机位置#生成新的食物 if food_flag=0:#随机生成 x,y x=random.randrange(1,32)y=random.randrange(1,24)food_Position=int(x*20),int(y*20)food_flag=11.6 绘制贪吃蛇、食物、分数等信息定义贪吃蛇的绘制函数#绘制贪吃蛇 def drawSnake(snake_Body):for iin snake_Body:pygame.draw.rect(DISPLAY,WHITE,Rect(i0,i1,20,20)定义食物的绘制函数#绘制食物的位置 def drawFood(food_Position):pygame.draw.rect(DISPLAY,RED,Rect(food_Position0,food_Position1,20,20)定义分数的绘制函数#打印出当前得分#设置分数的显示颜色 score_Surf=BASICFONT.render(%s%(score),True,GREY)#设置分数的位置 score_Rect=score_Surf.get_rect()score_Rect.midtop=(320,240)#绑定以上设置到句柄def drawScore(score):DISPLAY.blit(score_Surf,score_Rect)这些都定义好之后,我们需要在游戏主逻辑中调用它们,并刷新Pygame的显示层,贪吃蛇与食物的每一次移动,都会进行刷新显示层的操作来显示。最后我们可以设定一个速度值来合理控制游戏执行的速度。DISPLAY.fill(BLACK)#画出贪吃蛇drawSnake(snake_Body)#画出食物的位置drawFood(food_Position)#打印出玩家的分数drawScore(len(snake_Body)-3)#刷新 Pygame 的显示层,贪吃蛇与食物的每一次移动,都会进行刷新显示层的操作来显示。pygame.display.flip()#控制游戏速度FPSCLOCK.tick(7)1.7 定义游戏结束的画面并判断游戏是否结束定义函数,用于展示游戏结束的画面并退出程序#游戏结束并退出 def GameOver():#设置 GameOver 的显示颜色 GameOver_Surf=BASICFONT.render(Game Over!,True,GREY)#设置 GameOver 的位置 GameOver_Rect=GameOver_Surf.get_rect()GameOver_Rect.midtop=(320,10)#绑定以上设置到句柄 DISPLAY.blit(GameOver_Surf,GameOver_Rect)pygame.display.flip()#等待 3 秒 time.sleep(3)#退出游戏 pygame.quit()#退出程序 sys.exit()在游戏主逻辑中加入判断,游戏是否结束游戏结束的判断#贪吃蛇触碰到边界 if snake_Head0620:GameOver()if snake_Head1460:GameOver()#贪吃蛇触碰到自己 for iin snake_Body1:if snake_Head0=i0and snake_Head1=i1:GameOver()
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服