python小游戏 |
您所在的位置:网站首页 › 贪吃蛇的代码python › python小游戏 |
一、游戏规则: 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 |