首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在蟒蛇龟中使用多个时间真循环

在蟒蛇龟中使用多个时间真循环
EN

Stack Overflow用户
提问于 2020-03-22 10:12:41
回答 2查看 381关注 0票数 0

我目前有一个问题,每次我尝试使用超过一个,而真实循环在我的代码,网站崩溃。我正在用python海龟编写代码,这是开始使用python编码的一个不错的初学者方式。基本上,我试图让一个海龟物体无限地旋转,直到玩家按下空格键。当海龟的物体是蓝色的时候,海龟就会被触发旋转。一旦玩家按下按钮,乌龟物体就会变成绿色,停止转动,并在按空格键之前向乌龟物体面对的方向移动300 px。这个小游戏的目标是击中被称为目标的红色球。每当代码运行时,这个目标都是在画布上的随机位置生成的。一旦海龟物体与目标发生碰撞,屏幕顶部的得分将从0变为1。

代码语言:javascript
运行
AI代码解释
复制
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'))

所以正如你所看到的,我有两个时间,真循环。一个是当玩家在游戏开始时是蓝色的。这允许海龟物体永远旋转,直到玩家击中空格键。另一个是真正的循环,当玩家通过按空格键变绿时,检查与红色球目标的碰撞。但是每次我运行代码后按下空格键,网站就会崩溃。有什么主意吗?谢谢!

我是朱尼学习的学生。这是一个在线课程,在那里你可以去学习与老师实时编码。它有自己的文本编辑器,所以这就是我一直在用的代码。

是否有更好的方法将您的代码粘贴到这个论坛上?我不得不粘贴我的代码堆栈溢出和缩进每一行代码4次,这有点乏味。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-23 16:06:09

好的,那么我和我的老师检查了我的密码问题。我们修复了它,现在它正在按预期运行。

代码语言:javascript
运行
AI代码解释
复制
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

基本上,我不得不在我的时间颜色是蓝色的循环中嵌套一个时间真循环,我的条件是检查代码是否是绿色的。感谢任何回应的人,感谢你们帮助我解决我的问题!我真的很感激!

票数 0
EN

Stack Overflow用户

发布于 2020-03-22 10:29:58

当您有两个for-循环时,一个将永远不会到达,直到另一个完成。为什么不在主循环中使用另一个if条件呢?

代码语言:javascript
运行
AI代码解释
复制
while t.color()[0] == 'blue':  
    if t.color()[0] == 'green':
        t.right(turnSpeed)

PS:首先粘贴,然后将所有标记为代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60803156

复制
相关文章

相似问题

蟒蛇龟中的“‘If”语句

22

在蟒蛇龟中创造透明的方块

15

定义蟒蛇龟的区域

22

计算蟒蛇龟的生命

10

键盘输入和得分。蟒蛇龟

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档