python小游戏

您所在的位置:网站首页 贪吃蛇的代码python python小游戏

python小游戏

2023-10-14 15:56| 来源: 网络整理| 查看: 265

一、游戏规则:

1.游戏开始,通过键盘上下左右控制贪吃蛇移动方向,去找食物,贪吃蛇吃到食物就会增加一节

2.贪吃蛇碰到自身就会提示死亡(简版中没有设置真实死亡)

3.贪吃蛇碰到墙壁后会自动从另一边穿出(常规的是碰墙就死,但是我不想死的那么快,哈哈哈)

二、代码实现

1.工具:python(random,turtle库,没安装的需要安装一下,调出命令行:pip install turtle)

turtle是一个简单的画图的库(也被称为海龟画图),在屏幕中有一个横轴为x,纵轴为y的坐标系,最中间是原点(0,0)位置开始,如下图。

图片

2.画图流程:提笔(penup)--定位(goto)--绘画(forward)落笔(pendown)

3.原理:结合turtle的画图功能,贪吃蛇的蛇身就可以通过画出一个个方块,并涂上颜色来实现,同理食物也是如此。

4.具体实现:

4.1.贪吃蛇我们可以通过坐标列表来存储,设置变量为snake=[[0,0],[0,10],[0,20]]

4.2.食物设置为随机变量,food=[r.randrange(-25,25)*10,r.randrange(-25,25)*10]

4.3.方块绘制:

编写单个方块的绘图函数,需要参数绘制的坐标位置想x,y,绘制的边长size,填充的颜色color,对蛇身和食物分别遍历达到绘制效果

#绘制方块 def square(x,y,size,color): t.penup() t.goto(x,y) t.pendown() t.color(color) #设置颜色 t.begin_fill() #渲染 for i in range(4): t.forward(size) t.left(90) t.end_fill()#渲染 #画食物 square(food[0],food[1],10,'red') #画蛇 for i in snake: square(i[0],i[1],10,'black')

4.4.方向调整:

给定一个目标作为方向aim[0,10],就是说以贪吃蛇的蛇头为原点,y增加10,就是对照上述坐标轴就是向上移动10个单位,同理aim[0,-10],就是向下,aim[10,0],就是向右,aim[-10,0],就是向左

aim=[0,10] #初始化 #动态调整移动的方向 def change_direction(x,y): aim[0]=x aim[1]=y #监听键盘实现方向改变 t.listen() t.onkey(lambda :change_direction(0,10),'Up') t.onkey(lambda :change_direction(0,-10),'Down') t.onkey(lambda :change_direction(10,0),'Right') t.onkey(lambda :change_direction(-10,0),'Left')

4.5.方块的移动:

先深度拷贝一份蛇的头部坐标,用蛇的头部坐标x,y分别加上移动的目标aim的x,y作为新的头部,然后添加到snake列表,并去掉最后一个方块。

def move_snake(): head=c.deepcopy(snake[-1]) #复制一份头部坐标 #确定方向 head=[head[0]+aim[0],head[1]+aim[1]] #确定新头的坐标 snake.pop(0) #去尾巴 snake.append(head) #添加头 #删除之前的动画 t.clear() #画蛇 for i in snake: square(i[0],i[1],10,'black')

4.6.边界的判断

判断贪吃蛇的头部是否超出四周边界,超出则减去整个屏幕的边长,达到穿墙的效果

#判断边界 def inside(head): if head[0]>250: head[0]-=250*2 elif head[0]250: head[1]-=250*2 elif head[1]250: head[0]-=250*2 elif head[0]250: head[1]-=250*2 elif head[1]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3