Python:为什么数学运算符赢了';不行?
我一直在遵循一个教程,向初学者展示如何制作一个“太空入侵者”游戏。我主要只是想找到一种玩海龟图案之类的东西的方法。一切都进行得很顺利,直到我注意到我定义move_left函数的if语句不起作用。然而,问题不在于if语句本身。我尝试在它下面做的任何数学运算都会被程序完全忽略,没有错误消息或任何东西。我甚至试图在if语句下打印语句,只是为了看实际语句是否符合要求,并看到语句确实按照我的计划打印。那么是什么原因呢?为什么我不能在这两个函数下做任何数学方程或类似的事情 下面是我遵循的代码:Python:为什么数学运算符赢了';不行?,python,if-statement,turtle-graphics,Python,If Statement,Turtle Graphics,我一直在遵循一个教程,向初学者展示如何制作一个“太空入侵者”游戏。我主要只是想找到一种玩海龟图案之类的东西的方法。一切都进行得很顺利,直到我注意到我定义move_left函数的if语句不起作用。然而,问题不在于if语句本身。我尝试在它下面做的任何数学运算都会被程序完全忽略,没有错误消息或任何东西。我甚至试图在if语句下打印语句,只是为了看实际语句是否符合要求,并看到语句确实按照我的计划打印。那么是什么原因呢?为什么我不能在这两个函数下做任何数学方程或类似的事情 下面是我遵循的代码: import
import turtle
import os
def main():
#Set up the screen
wn = turtle.Screen()
wn.bgcolor("black")
wn.title("Space Invaders")
#Draw Border
border_pen = turtle.Turtle()
border_pen.speed(0)
border_pen.color("white")
border_pen.penup()
border_pen.setposition(-300, -300)
border_pen.pendown()
border_pen.pensize(3)
for side in range (4):
border_pen.fd(600)
border_pen.lt(90)
border_pen.hideturtle()
#create the player turtle
player = turtle.Turtle()
player.color("blue")
player.shape('triangle')
player.penup()
player.speed(0)
player.setposition(0, -250)
player.setheading(90)
#Player controls
playerspeed = 15
def move_left():
x = player.xcor()
x -= playerspeed
player.setx(x)
print(x)
if x < -280:
print("Reached") #It is here I tested rather or not the if statement
#above works, which it does
x = -280 #The following code here will not take effect. I tried all
#of different signs to use. Nothing happens. Not even an
#error
def move_right(): #I did not put the if statement here since I noticed the
#problem with the left side first
x = player.xcor()
x += playerspeed
player.setx(x)
if x > 280:
x = 280
turtle.listen()
turtle.onkey(move_left, "Left")
turtle.onkey(move_right, "Right")
turtle.mainloop()
main()
导入海龟
导入操作系统
def main():
#设置屏幕
wn=tutle.Screen()
wn.bgcolor(“黑色”)
wn.标题(“太空入侵者”)
#划界
border\u pen=海龟。海龟()
边界笔速度(0)
边框颜色(“白色”)
border_pen.penup()
边界笔设置位置(-300,-300)
border_pen.pendown()
边境养老金(3)
对于范围内的侧面(4):
border_pen.fd(600)
边界_pen.lt(90)
边界_pen.hideturtle()
#创建玩家乌龟
玩家=乌龟。乌龟()
播放器颜色(“蓝色”)
player.shape('三角形')
player.penup()
玩家速度(0)
玩家设置位置(0,-250)
玩家设置标题(90)
#玩家控制
球员速度=15
def向左移动()
x=player.xcor()
x-=玩家速度
player.setx(x)
打印(x)
如果x<-280:
打印(“到达”)#我在这里测试了if语句,而不是if语句
#上面的工作,确实如此
x=-280#以下代码将不生效。我都试过了
#使用不同的标志。什么也没发生。连一个都没有
#错误
def move_right():#我没有把if语句放在这里,因为我注意到
#首先是左侧的问题
x=player.xcor()
x+=玩家速度
player.setx(x)
如果x>280:
x=280
乌龟,听着
乌龟。上键(向左移动,“左”)
乌龟.安基(向右移动,“向右”)
tutle.mainloop()
main()
代码没有影响的原因是您修改了x
的值,该值是函数范围的局部变量,而不是播放器位置。在更新局部变量x
后,调用player.setx(x)
实际更新播放器位置。如果要绑定位置,还可以使用内置的min
/max
方法:
def move_left():
x = player.xcor()
x -= playerspeed
player.setx(max(x, -280))
def move_right():
x = player.xcor()
x += playerspeed
player.setx(min(x, 280))
将x设置为-280后,您忘记调用
player.setx(x)
。欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。除此之外,(1)您没有向我们展示不正确的输出;(2) 如果你的问题只是数学运算,为什么所有的代码都在这里?