py小游戏系列贪吃蛇,儿时的回忆
Posted 诗一样的代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py小游戏系列贪吃蛇,儿时的回忆相关的知识,希望对你有一定的参考价值。
hello大家好,今天我又发现了个有趣的小玩意。我是专写有趣小玩意的老诗。
老规矩,先上效果图
这是一个贪吃蛇的小游戏。我们8090后这一代人肯定会碰到过。蛇会随着吃到的食物变得越来越长。然后碰到墙壁或者碰到自己的身体都会输掉游戏。这个是简陋版的贪吃蛇,但是最基本的游戏逻辑都已经全部实现了。
首先先定义游戏中的物体:
food = vector(0, 0)
snake = [vector(10, 0)]
aim = vector(0, -10)
这里面有食物和蛇,还有方向。
上下左右对蛇进行控制。
onkey(lambda: change(10, 0), 'Right')
onkey(lambda: change(-10, 0), 'Left')
onkey(lambda: change(0, 10), 'Up')
onkey(lambda: change(0, -10), 'Down')
这里面的onkey就是对键盘进行检测。然后chang进行改变蛇移动的方向。当然我们可以可以使用其他键盘按键进行操作的,例如wsad,也是可以控制上下左右的。
移动与更新逻辑
def move():
"Move snake forward one segment."
head = snake[-1].copy()
head.move(aim)
if not inside(head) or head in snake:
square(head.x, head.y, 9, 'red')
update()
return
snake.append(head)
if head == food:
print('Snake:', len(snake))
food.x = randrange(-15, 15) * 10
food.y = randrange(-15, 15) * 10
else:
snake.pop(0)
clear()
for body in snake:
square(body.x, body.y, 9, 'black')
square(food.x, food.y, 9, 'green')
update()
ontimer(move, 100)
上面代码是贪吃蛇的核心逻辑代码。写的是蛇的移动与逻辑更新。
1整条蛇是由head.move(aim)更新方向移动的。
2if not inside(head) or head in snake: 这一条一句就是输掉比赛的意思,然后蛇身会变成红色。这里面有return,也就是退出逻辑
3if head == food:如果吃掉了食物,那就打印一下蛇的长度,并且更新食物的位置。square(food.x, food.y, 9, ‘green’)是把食物变成绿色。
4整个游戏也就是一个递归,ontimer控制时间帧数,最后退出机制就是return。
整体而言,游戏并不是太难,也很容易就可以学会。上面的思想还是说的比较清楚的。有需要拿完整源码的话,请移步到公众号:诗一样的代码。既然进来了,原创不易。小伙伴点个赞再走呗。
以上是关于py小游戏系列贪吃蛇,儿时的回忆的主要内容,如果未能解决你的问题,请参考以下文章