Python 3 代码未按预期运行
Python 3 code not working as I expected it to
我在做一个简单的 python 乌龟模块游戏时遇到了问题。游戏的重点是让你(红色方块)躲避障碍物(蓝色圆圈)。每次蓝色圆圈到达屏幕底部时,它都应该重置到顶部。当这种情况发生时,圆圈会重置一秒钟,然后再次传送回去。这是我的代码
#Import modules
import turtle
import time
import random
#Create window
screen = turtle.Screen()
screen.title("Street Raiders")
screen.bgcolor("black")
screen.screensize(400, 400)
#Draw border
borderPen = turtle.Turtle()
borderPen.color("white")
borderPen.pensize(3)
borderPen.speed(0)
borderPen.penup()
borderPen.hideturtle()
borderPen.setposition(-100, -100)
borderPen.pendown()
for sides in range(4):
borderPen.fd(200)
borderPen.lt(90)
#Create player
playerCar = turtle.Turtle()
playerCar.speed(0)
playerCar.color("red")
playerCar.shape("square")
playerCar.setheading(90)
playerCar.penup()
playerCar.setposition(0, -75)
playerX = playerCar.xcor()
#Define player movement functions
def move_left():
global playerX
if playerX < -85 or playerX == -85:
playerX = -75
playerCar.setx(playerX)
else:
playerX -= 10
playerCar.setx(playerX)
def move_right():
global playerX
if playerX > 85 or playerX == 85:
playerX = 75
playerCar.setx(playerX)
else:
playerX += 10
playerCar.setx(playerX)
#Allow player movement
turtle.listen()
turtle.onkey(move_left, "Left")
turtle.onkey(move_right, "Right")
#Create obstacles
obstacleY = 75
obstacle = turtle.Turtle()
obstacle.speed(0)
obstacle.shape("circle")
obstacle.color("blue")
obstacle.penup()
obstacle.setposition(random.randint(-80, 81), obstacleY)
#Move obstacles
alive = True
while True:
if alive:
obstacle.sety(75)
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
`
如果您知道它不起作用的原因,请回复。谢谢!
在游戏循环中,您没有将变量 obstacleY
的值重置到屏幕顶部;相反,你暂时将障碍物的位置设置在那里,然后它恢复它的路线:
while True:
if alive:
# obstacle.sety(75) # <-- replace this
obstacleY = 75 # <-- with that
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
while True:
if alive:
obstacle.sety(75)
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
应该
while alive:
obstacle.sety(75)
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
我在做一个简单的 python 乌龟模块游戏时遇到了问题。游戏的重点是让你(红色方块)躲避障碍物(蓝色圆圈)。每次蓝色圆圈到达屏幕底部时,它都应该重置到顶部。当这种情况发生时,圆圈会重置一秒钟,然后再次传送回去。这是我的代码
#Import modules
import turtle
import time
import random
#Create window
screen = turtle.Screen()
screen.title("Street Raiders")
screen.bgcolor("black")
screen.screensize(400, 400)
#Draw border
borderPen = turtle.Turtle()
borderPen.color("white")
borderPen.pensize(3)
borderPen.speed(0)
borderPen.penup()
borderPen.hideturtle()
borderPen.setposition(-100, -100)
borderPen.pendown()
for sides in range(4):
borderPen.fd(200)
borderPen.lt(90)
#Create player
playerCar = turtle.Turtle()
playerCar.speed(0)
playerCar.color("red")
playerCar.shape("square")
playerCar.setheading(90)
playerCar.penup()
playerCar.setposition(0, -75)
playerX = playerCar.xcor()
#Define player movement functions
def move_left():
global playerX
if playerX < -85 or playerX == -85:
playerX = -75
playerCar.setx(playerX)
else:
playerX -= 10
playerCar.setx(playerX)
def move_right():
global playerX
if playerX > 85 or playerX == 85:
playerX = 75
playerCar.setx(playerX)
else:
playerX += 10
playerCar.setx(playerX)
#Allow player movement
turtle.listen()
turtle.onkey(move_left, "Left")
turtle.onkey(move_right, "Right")
#Create obstacles
obstacleY = 75
obstacle = turtle.Turtle()
obstacle.speed(0)
obstacle.shape("circle")
obstacle.color("blue")
obstacle.penup()
obstacle.setposition(random.randint(-80, 81), obstacleY)
#Move obstacles
alive = True
while True:
if alive:
obstacle.sety(75)
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
`
如果您知道它不起作用的原因,请回复。谢谢!
在游戏循环中,您没有将变量 obstacleY
的值重置到屏幕顶部;相反,你暂时将障碍物的位置设置在那里,然后它恢复它的路线:
while True:
if alive:
# obstacle.sety(75) # <-- replace this
obstacleY = 75 # <-- with that
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
while True:
if alive:
obstacle.sety(75)
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")
应该
while alive:
obstacle.sety(75)
obstacle.setx(random.randint(-80, 81))
for moves in range(30):
time.sleep(0.1)
obstacleY -= 5
obstacle.sety(obstacleY)
else:
print("GAME OVER... TRY AGAIN")