Python3代码没有像我预期的那样工作
当我在做一个简单的python海龟模块游戏时,遇到了一个问题。游戏的重点是让你(一个红方块)避开一个障碍物(蓝色圆圈)。每次蓝色圆圈到达屏幕底部时,它都应该重置为顶部。当这种情况发生时,圆圈重置一秒钟,然后再次传送回地面。这是我的密码Python3代码没有像我预期的那样工作,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,当我在做一个简单的python海龟模块游戏时,遇到了一个问题。游戏的重点是让你(一个红方块)避开一个障碍物(蓝色圆圈)。每次蓝色圆圈到达屏幕底部时,它都应该重置为顶部。当这种情况发生时,圆圈重置一秒钟,然后再次传送回地面。这是我的密码 #Import modules import turtle import time import random #Create window screen = turtle.Screen() screen.title("Street Raiders") scre
#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")
#导入模块
进口海龟
导入时间
随机输入
#创建窗口
screen=turtle.screen()
屏幕标题(“街头掠夺者”)
屏幕颜色(“黑色”)
屏幕。屏幕大小(400400)
#划界
borderPen=海龟。海龟()
颜色(“白色”)
边缘性养老金(3)
边界笔速度(0)
borderPen.penup()
borderPen.hideturtle()
边界笔设置位置(-100,-100)
borderPen.pendown()
对于范围(4)内的侧面:
borderPen.fd(200)
borderPen.lt(90)
#创建玩家
playerCar=海龟。海龟()
playerCar.速度(0)
玩家卡颜色(“红色”)
玩家卡形状(“方形”)
播放卡设置标题(90)
playerCar.penup()
播放卡设置位置(0,-75)
playerX=playerCar.xcor()
#定义玩家移动功能
def向左移动()
全球playerX
如果playerX<-85或playerX==-85:
playerX=-75
playerCar.setx(playerX)
其他:
playerX-=10
playerCar.setx(playerX)
def向右移动()
全球playerX
如果playerX>85或playerX==85:
playerX=75
playerCar.setx(playerX)
其他:
playerX+=10
playerCar.setx(playerX)
#允许玩家移动
乌龟,听着
乌龟。上键(向左移动,“左”)
乌龟.安基(向右移动,“向右”)
#制造障碍
障碍=75
障碍物=海龟。海龟()
障碍物。速度(0)
障碍物形状(“圆”)
障碍物颜色(“蓝色”)
障碍物
障碍物设置位置(随机随机随机(-80,81),障碍物)
#移动障碍物
活着=真
尽管如此:
如果活着:
塞蒂(75岁)
障碍物.setx(random.randint(-80,81))
对于范围内的移动(30):
睡眠时间(0.1)
障碍-=5
障碍物,塞蒂(障碍物)
其他:
打印(“游戏结束…重试”)
`
如果你知道它为什么不起作用,请回复。谢谢 在游戏循环中,您没有将变量
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")
为True时:
如果活着:
#障碍。塞蒂(75)#
应该是
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")
糟糕的调试器也是如此。找出它为什么不起作用的最好方法是调试它,因为您有代码并且知道要用它做什么。
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")