py小游戏系列贪吃蛇,儿时的回忆

Posted 诗一样的代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py小游戏系列贪吃蛇,儿时的回忆相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

hello大家好,今天我又发现了个有趣的小玩意。我是专写有趣小玩意的老诗。

老规矩,先上效果图

image.png

这是一个贪吃蛇的小游戏。我们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小游戏系列贪吃蛇,儿时的回忆的主要内容,如果未能解决你的问题,请参考以下文章

py小游戏系列贪吃蛇,儿时的回忆

py小游戏系列吃豆人,儿时的回忆

py小游戏系列吃豆人,儿时的回忆

py小游戏系列吃豆人,儿时的回忆

java小游戏贪吃蛇大作战:来一起回顾童年回忆!

HTML实现简单的贪吃蛇小游戏(附完整源码)