📜  在Python中使用 Turtle 创建一个贪吃蛇游戏(1)

📅  最后修改于: 2023-12-03 15:23:26.269000             🧑  作者: Mango

在Python中使用 Turtle 创建一个贪吃蛇游戏

贪吃蛇游戏是一种经典的小游戏,在此我们将使用 Python 的 Turtle 库来实现贪吃蛇游戏。

玩法

贪吃蛇游戏的玩法很简单,玩家需要操纵一条小蛇在游戏区域中吃食物,每吃到一个食物,小蛇的身子就会变长一格。当小蛇撞到游戏区域边缘或者自己的身体时,游戏结束。

实现过程

首先,我们要导入 turtle 库,然后设置画布大小和背景颜色。接着,我们需要创建一个小蛇的初始状态,包括头部和身体。然后就是小蛇运动的逻辑,小蛇会不断前进,每吃到一个食物,身子就会变长一格。同时,我们需要判断小蛇是否撞到墙壁或自己的身体,如果撞到了,游戏就结束了。最后,我们需要在画布上显示得分和游戏结束信息。

以下是代码片段:

# 导入 turtle 库
import turtle
import random

# 设置画布大小和背景颜色
turtle.setup(500, 500)
turtle.bgcolor('grey')

# 创建小蛇的头部和身体
snake_head = turtle.Turtle()
snake_head.shape('circle')
snake_head.color('black')
snake_head.penup()
snake_head.goto(0, 0)

snake_body = []
for i in range(3):
    snake_body_segment = turtle.Turtle()
    snake_body_segment.shape('square')
    snake_body_segment.color('white')
    snake_body_segment.penup()
    snake_body_segment.goto(-20 * i, 0)
    snake_body.append(snake_body_segment)

# 设置小蛇运动的逻辑
direction = 'right'

def move():
    global direction
    
    # 计算小蛇头部的新位置
    x = snake_head.xcor()
    y = snake_head.ycor()
    if direction == 'right':
        x += 20
    elif direction == 'left':
        x -= 20
    elif direction == 'up':
        y += 20
    elif direction == 'down':
        y -= 20
    snake_head.goto(x, y)
    
    # 让小蛇的身体跟着头部走
    for i in range(len(snake_body) - 1, 0, -1):
        x = snake_body[i - 1].xcor()
        y = snake_body[i - 1].ycor()
        snake_body[i].goto(x, y)
    snake_body[0].goto(snake_head.xcor(), snake_head.ycor())
    
    # 判断小蛇是否吃到了食物
    if snake_head.distance(food) < 20:
        food.goto(random.randint(-240, 240), random.randint(-240, 240))
        new_body_segment = turtle.Turtle()
        new_body_segment.shape('square')
        new_body_segment.color('white')
        new_body_segment.penup()
        snake_body.append(new_body_segment)
    
    # 判断小蛇是否撞到了墙壁或自己的身体
    if snake_head.xcor() > 240 or snake_head.xcor() < -240 or snake_head.ycor() > 240 or snake_head.ycor() < -240:
        turtle.write('Game Over', font=('Arial', 16, 'bold'), align='center')
    for i in range(1, len(snake_body)):
        if snake_head.distance(snake_body[i]) < 20:
            turtle.write('Game Over', font=('Arial', 16, 'bold'), align='center')
    
    # 循环调用 move() 函数,让小蛇继续移动
    turtle.ontimer(move, 100)

turtle.ontimer(move, 100)

# 设置键盘控制小蛇的方向
def go_up():
    global direction
    if direction != 'down':
        direction = 'up'

def go_down():
    global direction
    if direction != 'up':
        direction = 'down'

def go_left():
    global direction
    if direction != 'right':
        direction = 'left'

def go_right():
    global direction
    if direction != 'left':
        direction = 'right'

turtle.onkey(go_up, 'Up')
turtle.onkey(go_down, 'Down')
turtle.onkey(go_left, 'Left')
turtle.onkey(go_right, 'Right')
turtle.listen()

# 创建食物
food = turtle.Turtle()
food.shape('square')
food.color('red')
food.penup()
food.goto(random.randint(-240, 240), random.randint(-240, 240))

# 在画布上显示得分和游戏结束信息
turtle.hideturtle()
turtle.penup()
turtle.goto(0, 250)
turtle.write('Score: 0', font=('Arial', 16, 'bold'), align='center')

以上代码实现了贪吃蛇游戏的基本逻辑,你可以在此基础上添加更多的功能和美化界面。希望这篇教程能够帮助你学习 Turtle 库和 Python 编程,也希望你能在自己的项目中成功地应用 Turtle 库。