python贪吃蛇代码示例(实测可运行)

贪吃蛇经典街机游戏python贪吃蛇代码示例。使用箭头按键进行导航和食用绿色食物。每次食用食物时,蛇的身体都会变得更长。避免吃掉自己或撞墙!

python贪吃蛇代码

"""Snake, classic arcade game.

Exercises

1. How do you make the snake faster or slower?
2. How can you make the snake go around the edges?
3. How would you move the food?
4. Change the snake to respond to mouse clicks.
"""

from random import randrange
from turtle import *

from freegames import square, vector

food = vector(0, 0)
snake = [vector(10, 0)]
aim = vector(0, -10)


def change(x, y):
    """Change snake direction."""
    aim.x = x
    aim.y = y


def inside(head):
    """Return True if head inside boundaries."""
    return -200 < head.x < 190 and -200 < head.y < 190


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)


setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: change(10, 0), 'Right')
onkey(lambda: change(-10, 0), 'Left')
onkey(lambda: change(0, 10), 'Up')
onkey(lambda: change(0, -10), 'Down')
move()
done()

这段代码是一个经典的贪吃蛇(Snake)游戏的实现,使用Python的turtle库和自定义的freegames库来创建游戏界面和功能。

代码中首先导入了需要使用的库和模块,包括randrange函数用于生成随机数,turtle库用于创建游戏界面,square函数用于绘制方块,vector类用于表示蛇的位置和方向。

接下来定义了一些变量,包括蛇的初始位置和方向(snake和aim),以及食物的位置(food)。

然后定义了几个函数:

  • change函数用于改变蛇的方向,根据传入的参数修改aim的x和y值,从而控制蛇的移动方向。
  • inside函数用于判断蛇头是否在游戏界面内,如果在界面内则返回True,否则返回False。
  • move函数用于移动蛇的位置,首先复制蛇头的位置,并根据aim的值移动蛇头到新的位置。然后判断蛇头是否超出界限或者与蛇身重叠,如果是则游戏结束,显示蛇头的位置为红色方块。如果蛇头与食物位置重合,则蛇的长度加一,并随机生成新的食物位置。否则,移除蛇尾的位置,更新游戏界面。
  • clear函数用于清除之前的游戏界面。
  • square函数用于绘制方块,根据传入的位置和颜色参数,在游戏界面上绘制一个方块。
  • update函数用于更新游戏界面的显示。
  • ontimer函数用于定时调用move函数,实现蛇的连续移动。

接下来设置游戏界面的大小、隐藏光标、关闭动画效果,并监听键盘事件,根据不同的按键调用change函数改变蛇的方向。

最后调用move函数开始游戏,调用done函数表示游戏结束。

这段代码实现了一个简单的贪吃蛇游戏,玩家通过控制方向键来移动蛇,目标是吃到尽可能多的食物,蛇的长度会随着吃食物而增长,如果蛇头碰到边界或者与自己的身体相撞,则游戏结束。