[英]Am I not able to break a While loop inside of a function?
那么为什么它不允许我打破函数中的 while 循环呢? 另外,我不想使用主循环,因为我不明白它是如何工作的。 如果您无法弄清楚发生了什么,也许您可以使用有效的主循环重新格式化代码? 任何帮助是极大的赞赏! ______________________________________________________________________
#imports
import turtle
import math
import random
import time
from turtle import Turtle, Screen
#variables
BossSpawnx = 0
BossSpawny = 0
PlayerSpawnx = -250
PlayerSpawny = -250
BossMovement = 0
global BossMovement
#initiation
Screen().screensize(500, 500)
Screen().title("Tiny Turtles")
Screen().bgcolor("gray")
print("welcome to Tiny Turtles")
#Initiating Boss
Boss = Turtle("turtle")
Boss.color("red")
turtle.delay(None)
Boss.penup()
Boss.goto(BossSpawnx, BossSpawny)
Boss.color("red")
#Initiating Player
Player = Turtle("turtle")
Player.color("cyan")
Player.penup()
Player.goto(PlayerSpawnx, PlayerSpawny)
while True:
#Functions
def k1():
Player.forward(25)
def k2():
Player.left(35)
def k3():
Player.right(35)
def k4():
Player.backward(25)
def follow_runner():
print("Following")
if BossMovement == 4:
Boss.setheading(Boss.towards(Player))
Boss.forward(min(Boss.distance(Player), 8))
if Boss.xcor() == Player.xcor() and Boss.ycor() == Player.ycor():
print('Turtletastrophy!')
break
else:
Screen().ontimer(follow_runner, 10)
else:
BossMovement += 1
Screen().onkey(k1, "Up") # the up arrow key
Screen().onkey(k2, "Left") # the left arrow key
Screen().onkey(k3, "Right") # you get it!
Screen().onkey(k4, "Down")
Screen().listen()
follow_runner()
好。 首先,将函数定义移出循环。 为什么要在循环内定义?
此外,当我尝试运行此代码时,会出现以下语法错误:
SyntaxError: name 'BossMovement' is assigned to before global declaration
因此将global
关键字移动到相关函数中。 为什么要在全局范围内更改全局变量的范围?
您也应该一次性完成键分配。
这是一个工作示例:
# imports
import turtle
import math
import random
import time
from turtle import Turtle, Screen
# variables
BossSpawnx = 0
BossSpawny = 0
PlayerSpawnx = -250
PlayerSpawny = -250
BossMovement = 0
# initiation
Screen().screensize(500, 500)
Screen().title("Tiny Turtles")
Screen().bgcolor("gray")
print("welcome to Tiny Turtles")
# Initiating Boss
Boss = Turtle("turtle")
Boss.color("red")
turtle.delay(None)
Boss.penup()
Boss.goto(BossSpawnx, BossSpawny)
Boss.color("red")
# Initiating Player
Player = Turtle("turtle")
Player.color("cyan")
Player.penup()
Player.goto(PlayerSpawnx, PlayerSpawny)
def k1():
Player.forward(25)
def k2():
Player.left(35)
def k3():
Player.right(35)
def k4():
Player.backward(25)
def follow_runner():
global BossMovement
print("Following")
if BossMovement == 4:
Boss.setheading(Boss.towards(Player))
Boss.forward(min(Boss.distance(Player), 8))
if Boss.xcor() == Player.xcor() and Boss.ycor() == Player.ycor():
print('Turtletastrophy!')
return True
else:
Screen().ontimer(follow_runner, 10)
return False
else:
BossMovement += 1
return False
Screen().onkey(k1, "Up") # the up arrow key
Screen().onkey(k2, "Left") # the left arrow key
Screen().onkey(k3, "Right") # you get it!
Screen().onkey(k4, "Down")
Screen().listen()
done = False
while not done:
done = follow_runner()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.