代码说明
初始化屏幕:设置窗口标题、背景颜色和尺寸。
创建玩家和目标:初始化玩家方块和目标点,设置它们的外观和初始位置。
显示分数:创建分数板以显示当前分数。
移动目标:定义 move_target 函数来将目标点移动到随机位置。
玩家移动:定义四个函数来处理玩家的移动(左、右、上、下)。
检测碰撞:定义 check_collision 函数来检测玩家是否与目标点碰撞,如果碰撞,增加分数并重新随机目标位置。
绑定键盘事件:将键盘按键绑定到相应的移动函数。
主游戏循环:在循环中不断更新窗口并检查碰撞。
运行游戏
运行代码后,玩家可以使用方向键控制蓝色方块,目标点会随机移动。每次玩家碰到目标点时,分数会增加并显示在屏幕上。
import turtle
import random
# 初始化屏幕
win = turtle.Screen()
win.title("捉迷藏游戏")
win.bgcolor("lightblue")
win.setup(width=800, height=600)
# 创建玩家方块
player = turtle.Turtle()
player.shape("square")
player.color("blue")
player.penup()
player.speed(0)
player.goto(0, -250)
# 创建目标点
target = turtle.Turtle()
target.shape("circle")
target.color("red")
target.penup()
target.speed(0)
target.hideturtle()
# 分数
score = 0
# 显示分数
scoreboard = turtle.Turtle()
scoreboard.speed(0)
scoreboard.color("black")
scoreboard.penup()
scoreboard.hideturtle()
scoreboard.goto(0, 260)
scoreboard.write(f"分数: {score}", align="center", font=("Courier", 24, "normal"))
# 随机移动目标点
def move_target():
x = random.randint(-350, 350)
y = random.randint(-250, 250)
target.goto(x, y)
target.showturtle()
# 玩家移动
def move_left():
x = player.xcor() - 20
if x < -380:
x = -380
player.setx(x)
def move_right():
x = player.xcor() + 20
if x > 380:
x = 380
player.setx(x)
def move_up():
y = player.ycor() + 20
if y > 290:
y = 290
player.sety(y)
def move_down():
y = player.ycor() - 20
if y < -290:
y = -290
player.sety(y)
# 检测碰撞
def check_collision():
global score
if player.distance(target) < 20:
score += 1
scoreboard.clear()
scoreboard.write(f"分数: {score}", align="center", font=("Courier", 24, "normal"))
move_target()
# 绑定键盘事件
win.listen()
win.onkeypress(move_left, "Left")
win.onkeypress(move_right, "Right")
win.onkeypress(move_up, "Up")
win.onkeypress(move_down, "Down")
# 主游戏循环
move_target() # 初始化目标位置
while True:
win.update()
check_collision()