我目前有一个问题,每次我试图在我的代码中使用一个以上的虽然真实循环网站崩溃。我编码与python海龟,一个很好的初学者的方式开始编码与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循环用于当玩家按下空格键变为绿色时,检查是否与红球目标发生碰撞。但每次我在运行代码后按空格键,网站就会崩溃。有什么想法吗?提前谢谢!
我是juni学习的学生。这是一个在线课程,在那里你可以去和老师实时学习编码。它有自己的文本编辑器,这就是我一直在使用的代码。
还有没有更好的方法把你的代码粘贴到这个论坛上?我不得不将代码粘贴到堆栈溢出,并将每行代码缩进4次,这有点单调乏味。
好的,我和我的老师讨论了我的代码问题。我们修复了它,现在它正在按预期运行。
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')
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 True:
while t.color()[0] == 'blue':
t.right(turnSpeed)
if t.color()[0] == 'green':
for i in range(30):
t.forward(10)
if checkCollision():
x = random.randint(-300,300)
y = random.randint(-300,300)
scoreNum = scoreNum + 1
scoreBoard.clear()
scoreBoard.write('Score:' + str(scoreNum),font=('Arial',15, 'normal'))
target.goto(x,y)
t.penup()
t.goto(0,0)
t.color('blue')
t.pendown()
break
else:
break
基本上,我必须在我的while color is blue循环中嵌套一个while True循环,沿着我的条件边检查代码是否为绿色。感谢所有回应的人,感谢他们试图帮助我解决我的问题!我真的很感激!
当你有两个for循环时,直到完成另一个循环,一个循环才会被到达。为什么不在主循环中使用另一个if条件?
while t.color()[0] == 'blue':
if t.color()[0] == 'green':
t.right(turnSpeed)
PS:首先粘贴,然后标记为代码
问题内容: 假设您必须在python中创建10个类对象,并对其进行处理,例如: 您将如何循环处理,并为每个对象分配一个变量(如),从而使代码更短?每个对象都可以在循环外部访问 问题答案: 每天都会以不同的方式询问这个问题。答案是:将数据放在变量名之外,这是必填的博客文章。 在这种情况下,为什么不列出objs?
问题内容: 我在嵌套循环内的单个sqlite数据库上使用多个游标时遇到了问题。我找到了一个适合我的解决方案,但是它的功能有限,而且我还没有看到在线记录此特定问题。我这样发布: 明确的问题/解决方案可用 看看是否有更好的解决方案 也许我在python模块中发现了一个缺陷 我的Python应用程序将社交关系数据存储在sqlite中。数据集包括两个表之间的一对多关系:myConnections和shar
假设我有一些这样的方法: 但我不想调用序列方法: 这很无聊。如果我添加一个新方法:,我需要添加手动:
问题内容: 我正在寻找使用for循环来创建多个在迭代(i)上命名的变量,并为每个变量分配一个唯一的int。 如您所见,我迷路了。理想情况下,我正在寻找输出 有什么建议? 问题答案: 您可以一站式完成所有操作 然后您可以使用 但是使用列表而不是字典可能更好 然后您可以使用 甚至(获得前三个学期)
我在递归地计算一个数的位数和,直到和小于10。例如; 由于最后的数字和是9,那么我们停止。我意识到遵循递归方法,在我的知识中,它工作得很好; 但是,如果我们有类似的情况,正确的输出是1,因为但是我的代码停止在第二个级别,并以我可以得到一些帮助来修改我的第二个代码以解决这个问题吗?提前谢了。
问题内容: 给定以下代码(不起作用): 有没有办法使这项工作?或者,如果用户满意,我是否需要做一次检查以打破输入循环,然后再进行另一项(更受限制的)签入外部循环以一起打破? 问题答案: 我的第一个直觉是将嵌套循环重构为一个函数,然后使用它来分解。