本文首发于行者AI
1.序言目前基本上软测会用到的工具或者第三方库都已经被写完,本着不要逮着一只羊进行薅羊毛原则,换个赛道,这次就使用pygame库写个简单的贪吃蛇吧,当做熟悉python练手也是不错的。
2.安装与导入使用pipinstallpygame进入安装,安装成功后导入所需模块:
importpygame,sys,*
其中sys为要在后续中使用它的退出程序机制所以在这里需要导入。
3.定义后续需要的参数初始化一个游戏界面DISPLAY=_mode((800,800))定义一个变量控制游戏速度FPSCLOCK=()定义蛇头初始位置snake_Head=[100,100]定义改变方向的变量,按键changeDirection=direction定义食物状态,0表示被吃,1表示没有被吃food_Total=1
以上都是在定义后续会用到的参数。
4.绘制蛇与食物绘制食物位置defdrawFood(food_Postion):(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))
上面的(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))draw是pygame的绘制模块,rect中DISPLAY是在我们设置的游戏界面上绘制颜色、所绘制矩形的区域、矩形的宽度和高度。
5.游戏规则与运行defgameover():退出程序()
这里设置的退出与上文中的()对应。
判断是否吃到食物ifsnake_Head[0]==food_Postion[0]andsnake_Head[1]==food_Postion[1]:food_Total=0else:snake_()
snake_()意思是如果没有吃到就不再新增加食物,如果没有这句代码,会导致蛇没有吃到食物也在增加长度。
iffood_Total==0:x=(1,32)y=(1,24)food_Postion=[int(x*20),int(y*20)]food_Total=1
这里的意思为如果食物被吃了,状态为0的话,就随机地点生成一个。
ifsnake_Head[0]800orsnake_Head[0]0:gameover()elifsnake_Head[0]800orsnake_Head[0]0:gameover()初始化pygame库()设置游戏窗口标题_caption('贪吃蛇')定义颜色BLACK=(0,0,0)WHITE=(255,255,255)RED=(255,0,0)定义一个蛇初始长度,因为界面都是20*20所以长度都是减20snake_Body=[[80,100],[60,100],[40,100]]蛇初始方向direction="right"定义初始食物位置food_Postion=[300,300]绘制贪吃蛇defdrawSnake(snake_Body):foriinsnake_Body:(DISPLAY,WHITE,Rect(i[0],i[1],20,20))退出()渲染底色(BLACK)画出食物位置drawFood(food_Postion)刷新显示层,贪吃蛇与食物每次移动,都会刷新显示层()(game_speed)():==QUIT:()()==KEYDOWN:如果是做箭头或者是a,蛇向左移动==K_==K_a:changeDirection='left'==K_==K_w:changeDirection='up'==K_==K_s:changeDirection='down'确认方向,判断是否输入了反方向ifchangeDirection=='right'andnotdirection=='left':direction=changeDirectionifchangeDirection=='left'andnotdirection=='right':direction=changeDirectionifchangeDirection=='up'andnotdirection=='down':direction=changeDirectionifchangeDirection=='down'andnotdirection=='up':direction=changeDirection增加蛇的长度snake_(0,list(snake_Head))如果碰到自己forbodyinsnake_Body[1:]:ifsnake_Head[0]==body[0]andsnake_Head[1]==body[1]:gameover()我们是行者AI,我们在“AI+游戏”中不断前行。
618期间产品套餐推出活动,前往公众号【行者AI】,和我们一起探讨技术问题吧!
版权所有 © Copyright © 2002-2030 龙辉游戏资讯网站地图