编辑代码

import turtle
import random
import time

# 设置屏幕
screen = turtle.Screen()
screen.title("Turtle 跑酷小游戏")
screen.bgcolor("skyblue")
screen.setup(width=800, height=300)
screen.tracer(0)

# 地面
ground = turtle.Turtle()
ground.hideturtle()
ground.penup()
ground.goto(-400, -100)
ground.pendown()
ground.forward(800)

# 玩家角色
player = turtle.Turtle()
player.shape("square")
player.color("black")
player.penup()
player.goto(-200, -80)
player.dy = 0
player.is_jumping = False

# 重力和跳跃
gravity = -0.5
jump_strength = 10

# 障碍列表
obstacles = []

# 跳跃函数
def jump():
    if not player.is_jumping:
        player.dy = jump_strength
        player.is_jumping = True

# 键盘绑定
screen.listen()
screen.onkey(jump, "space")

# 碰撞检测
def is_collision(t1, t2):
    return abs(t1.xcor() - t2.xcor()) < 20 and abs(t1.ycor() - t2.ycor()) < 20

# 主循环
game_over = False
last_spawn_time = time.time()

while not game_over:
    # 玩家重力运动
    player.dy += gravity
    new_y = player.ycor() + player.dy

    if new_y < -80:
        new_y = -80
        player.dy = 0
        player.is_jumping = False

    player.sety(new_y)

    # 生成障碍(每隔1秒)
    if time.time() - last_spawn_time > 1.2:
        obstacle = turtle.Turtle()
        obstacle.shape("square")
        obstacle.color("red")
        obstacle.penup()
        obstacle.goto(400, -80)
        obstacles.append(obstacle)
        last_spawn_time = time.time()

    # 移动障碍
    for obstacle in obstacles:
        obstacle.setx(obstacle.xcor() - 5)
        if is_collision(player, obstacle):
            game_over = True
            break

    screen.update()
    time.sleep(0.02)

# 游戏结束
message = turtle.Turtle()
message.hideturtle()
message.penup()
message.goto(0, 0)
message.write("游戏结束!", align="center", font=("Arial", 24, "bold"))

screen.mainloop()