python代码实现踩影子游戏

代码说明
初始化屏幕:设置游戏窗口的标题、背景颜色和尺寸。
创建玩家和影子:初始化玩家方块和影子方块,设置它们的外观和初始位置。
显示分数:创建一个分数板,显示当前的分数。
移动影子:定义 move_shadow 函数来将影子方块移动到随机位置。
玩家移动:定义四个函数来处理玩家的移动(左、右、上、下)。
检测碰撞:定义 check_collision 函数来检测玩家是否与影子方块碰撞,如果碰撞,增加分数并重新随机影子位置。
绑定键盘事件:将键盘按键绑定到相应的移动函数。
主游戏循环:在循环中不断更新窗口并检查碰撞。
运行游戏
运行代码后,玩家可以使用方向键控制蓝色方块移动。
方块需要移动到红色影子的位置上来增加分数。
影子每次被踩到后会随机移动,玩家需要快速反应。

import turtle
import random

# 初始化屏幕
win = turtle.Screen()
win.title("踩影子游戏")
win.bgcolor("white")
win.setup(width=800, height=600)

# 创建玩家方块
player = turtle.Turtle()
player.shape("square")
player.color("blue")
player.penup()
player.speed(0)
player.goto(0, -250)

# 创建影子方块
shadow = turtle.Turtle()
shadow.shape("circle")
shadow.color("red")
shadow.penup()
shadow.speed(0)
shadow.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_shadow():
    x = random.randint(-350, 350)
    y = random.randint(-250, 250)
    shadow.goto(x, y)
    shadow.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(shadow) < 20:
        score += 1
        scoreboard.clear()
        scoreboard.write(f"分数: {score}", align="center", font=("Courier", 24, "normal"))
        move_shadow()

# 绑定键盘事件
win.listen()
win.onkeypress(move_left, "Left")
win.onkeypress(move_right, "Right")
win.onkeypress(move_up, "Up")
win.onkeypress(move_down, "Down")

# 主游戏循环
move_shadow()  # 初始化影子位置
while True:
    win.update()
    check_collision()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值