【发布时间】:2020-07-03 07:15:03
【问题描述】:
我目前遇到一个问题,每次我尝试在我的代码中使用多个 While True 循环时,网站都会崩溃。我正在使用pythonturtle 进行编码,这是一个很好的初学者开始使用 python 编码的方法。所以基本上我试图让乌龟物体无限旋转,直到玩家按下空格键。当海龟对象为蓝色时,海龟被触发旋转。一旦玩家按下按钮,海龟对象将变为绿色信号,它停止转动并在按下空格键之前向海龟对象所面对的方向前进 300 像素。这个小迷你游戏的目标是击中被称为目标的红球。每次代码运行时,此目标都会在画布上的随机位置生成。一旦海龟对象与目标碰撞,屏幕顶部的分数将从 0 变为 1。
import turtle
import random
t = turtle.Turtle()
target = turtle.Turtle()
scoreBoard = turtle.Turtle()
scoreBoard.ht()
target.ht()
screen = turtle.Screen()
x = random.randint(-300,300)
y = random.randint(-300,300)
scoreNum = 0
turnSpeed = 2
t.shape('turtle')
t.color('blue')
target.speed(0)
target.penup()
target.goto(30,0)
target.shape('circle')
target.color('red')
target.st()
scoreBoard.color('orange')
scoreBoard.speed(0)
scoreBoard.penup()
scoreBoard.goto(-75,310)
scoreBoard.write('Score:' + str(scoreNum),font=('Arial',15, 'normal'))
def turnStop():
t.color('green')
t.forward(300)
def checkCollision():
if abs(t.xcor() - target.xcor()) < 10 and abs(t.ycor() - target.ycor()) < 10:
return True
else:
return False
screen.onkey(turnStop,'space')
screen.listen()
while t.color()[0] == 'blue':
t.right(turnSpeed)
while t.color()[0] == 'green':
if checkCollision():
scoreNum = scoreNum + 1
scoreBoard.clear()
scoreBoard.write('Score:' + str(scoreNum),font=('Arial',15, 'normal'))
如您所见,我有两个 while True 循环。一种用于玩家在游戏开始时是蓝色的。这允许海龟对象永远旋转,直到玩家按下空格键。另一个 while true 循环用于当玩家按下空格键变为绿色时,检查与红球目标的碰撞。但是每次我在运行代码后按空格键时,网站都会崩溃。有什么想法吗?提前致谢!
P.S 我是juni learning的学生。这是一个在线课程,您可以在其中与老师实时学习编码。它带有自己的文本编辑器,这就是我一直在编写的代码。
P.S P.S 还有没有更好的方法可以将您的代码粘贴到这个论坛上?我不得不将代码粘贴到堆栈溢出并缩进每行代码 4 次,这有点乏味。
【问题讨论】:
-
回应您的最后一个问题:当然有。一旦我的修改被接受,您就可以看到。
-
所以我只是在我的代码中添加'''?示例:''' import turtle ''' 对不起,如果这看起来很愚蠢。这是我第一次上这个论坛。 :(
标签: python python while-loop turtle-graphics