我的游戏有问题,当球越过障碍物时,它没有从我的屏幕上删除

I have problem with my game, when the ball goes over the block, it is not deleting from my screen

有人可以帮帮我吗?

我花了很多时间来理解这个问题..(没有成功)

我尝试制作一款 80 年代的热门游戏。

问题是,当球落在其中一块石头上时,我捕捉到了事件(在控制台中显示)并更新了方块列表,但该方块并未从屏幕上删除,就好像什么都没发生一样,并且我没有更新任何列表

这是我的代码:

import time
from turtle import Screen, Turtle
import random

screen = Screen()
screen.bgcolor("black")
screen.setup(width=800, height=600)
screen.tracer(0)

player = Turtle("square")
player.shapesize(1.0, 4.0, 0)
player.color("blue")
player.penup()
player.goto(0, -250)
screen.tracer(0)




blue_turtle = []
blue_positions = []
for i in range(7):
    turtle = Turtle("square")
    turtle.shapesize(2.0 ,4.0, 0)
    turtle.color("blue")
    turtle.penup()
    blue_positions.append((-300 + i * 100, 200))
    blue_turtle.append(turtle)
    
def renderBlocks(b):
    for i in range(len(b) - 1):
        if b[i] == None:
            print("Skipped")
            continue
        else:
            x, y= blue_positions[i]
            b[i].goto(x=x, y=y)
            # total += 100
    
ball = Turtle("circle")
ball.color("white")
    
    
game_on = True
    
def move():
    x = ball.xcor() + 10
    y = ball.ycor()+ 10
    ball.goto(x=x, y=y)

while game_on:
    move()
    
    renderBlocks(blue_turtle)
    for i in range(len(blue_turtle) - 1):
        if (blue_turtle[i] != None) and ball.distance(blue_turtle[i]) < 20:
            blue_turtle[i] = (None)
    
 
    time.sleep(0.1)
    
    screen.update()

screen.exitonclick()

我认为问题出在这里:

blue_turtle[i] = (None)

您告诉您的 海龟已被消除的代码,但您没有告诉海龟图形它应该被删除。而是考虑:

blue_turtle[i].hideturtle()
blue_turtle[i] = None

我对您的代码进行了修改以解决此问题和其他一些问题:

from turtle import Screen, Turtle

def renderBlocks(b):
    for i in range(len(b) - 1):
        if b[i]:
            x, y = blue_positions[i]
            b[i].goto(x, y)

def move():
    if game_on:
        x = ball.xcor() + 10
        y = ball.ycor() + 10
        ball.goto(x, y)

        renderBlocks(blue_turtles)

        for i in range(len(blue_turtles) - 1):
            if blue_turtles[i] and ball.distance(blue_turtles[i]) < 20:
                blue_turtles[i].hideturtle()
                blue_turtles[i] = None

        screen.update()
        screen.ontimer(move, 100)  # milliseconds

screen = Screen()
screen.setup(width=800, height=600)
screen.bgcolor('black')
screen.tracer(0)

player = Turtle('square')
player.shapesize(1, 4, 0)
player.color('blue')
player.penup()
player.sety(-250)

blue_turtles = []
blue_positions = []

for i in range(7):
    turtle = Turtle('square')
    turtle.shapesize(2, 4, 0)
    turtle.color('blue')
    turtle.penup()
    blue_positions.append((-300 + i * 100, 200))
    blue_turtles.append(turtle)

ball = Turtle('circle')
ball.color('white')

game_on = True

move()

screen.exitonclick()