Python 对象没有';t移到';右';方向
你好,这是我的第一篇文章,我是一个编程新手,已经有三个月了 目前,我正在努力减少制作游戏Snake的问题,我现在正在制作Snake玩家的动作 我试图使“body”块与“player”块保持完整,理想情况下,我希望代码向上移动,然后向右移动以到达“player”块 但是,根据我编写代码的方式,“body”块在向上移动后不会立即移动,从而与“player”块具有相同的y坐标 我认为它导致这个问题的原因是elif,身体块不断上下移动,以使右协调与球员块y坐标相匹配 所以我试着把elif移到if,但很明显,这会使身体模块向玩家模块的对角线方向移动,我不希望,我只希望模块向玩家模块的水平或垂直方向移动 我还重新组织了elif声明,只是为了测试问题在哪里,在elif之间切换只会使最后一个elif不起作用,或者如果我的“s”向下移动在左右移动之前,甚至使左移动不起作用 我想我也尝试在“w”if语句上方添加一个新的if语句,因为我认为身体模块不会向右移动,因为身体模块检测到它与玩家模块没有相同的y坐标,所以它优先向上移动。然而,这也没有奏效 那么这里的问题是什么Python 对象没有';t移到';右';方向,python,Python,你好,这是我的第一篇文章,我是一个编程新手,已经有三个月了 目前,我正在努力减少制作游戏Snake的问题,我现在正在制作Snake玩家的动作 我试图使“body”块与“player”块保持完整,理想情况下,我希望代码向上移动,然后向右移动以到达“player”块 但是,根据我编写代码的方式,“body”块在向上移动后不会立即移动,从而与“player”块具有相同的y坐标 我认为它导致这个问题的原因是elif,身体块不断上下移动,以使右协调与球员块y坐标相匹配 所以我试着把elif移到if,但很明
from graphics import *
import keyboard
width = 200
height = 200
def main():
keyW = False
keyA = False
keyS = False
keyD = False
radius = 10
length = radius * 2
win = GraphWin("MOVEMENTS", width, height)
win.setBackground("black")
player = Rectangle(Point(width-40,20), Point(width-20,40))
player.setFill("green")
player.setWidth(2)
player.draw(win)
body = Rectangle(Point(20,height-40), Point(40,height-20))
body.setFill("green")
body.setWidth(2)
body.draw(win)
while(True):
if keyboard.is_pressed("w") and keyS==False:
keyW = True
keyA = False
keyS = False
keyD = False
elif keyboard.is_pressed("a") and keyD==False:
keyW = False
keyA = True
keyS = False
keyD = False
elif keyboard.is_pressed("s") and keyW==False:
keyW = False
keyA = False
keyS = True
keyD = False
elif keyboard.is_pressed("d") and keyA==False:
keyW = False
keyA = False
keyS = False
keyD = True
if keyW==True:
player.move(0,-0.05)
elif keyA==True:
player.move(-0.05,0)
elif keyS==True:
player.move(0,0.05)
elif keyD==True:
player.move(0.05,0)
if body.getCenter().getY() >= player.getCenter().getY(): # W
body.move(0,-0.05)
elif body.getCenter().getX() >= player.getCenter().getX(): # A
body.move(-0.05,0)
elif body.getCenter().getY() <= player.getCenter().getY(): # S
body.move(0,0.05)
elif body.getCenter().getX() <= player.getCenter().getX(): # D
body.move(0.05,0)
main()
从图形导入*
输入键盘
宽度=200
高度=200
def main():
keyW=False
keyA=False
keyS=False
keyD=False
半径=10
长度=半径*2
win=图形宽度(“移动”、宽度、高度)
赢。挫折(“黑色”)
播放器=矩形(点(宽度-40,20),点(宽度-20,40))
player.setFill(“绿色”)
播放器设置宽度(2)
球员。平局(获胜)
主体=矩形(点(20,高度-40),点(40,高度-20))
主体。设置填充(“绿色”)
正文.设置宽度(2)
身体。平局(赢)
虽然(正确):
如果按下键盘.u(“w”)且键==假:
keyW=True
keyA=False
keyS=False
keyD=False
elif键盘。按下(“a”)键且键D==假:
keyW=False
keyA=真
keyS=False
keyD=False
elif keyboard.is_按下(“s”)且keyW==False:
keyW=False
keyA=False
keyS=True
keyD=False
elif键盘。按下(“d”)键且keyA==False:
keyW=False
keyA=False
keyS=False
keyD=True
如果keyW==True:
玩家移动(0,-0.05)
elif keyA==真:
玩家移动(-0.05,0)
elif keyS==真:
玩家移动(0,0.05)
elif keyD==真:
玩家移动(0.05,0)
如果body.getCenter().getY()>=player.getCenter().getY():#W
身体移动(0,-0.05)
elif body.getCenter().getX()>=player.getCenter().getX():#A
身体移动(-0.05,0)
elif body.getCenter().getY()我相信你的代码的问题在于你使用的是=
和
和我相信你的代码的问题在于你使用的是=
和
和,但这取决于头部的位置是否正确?不是像你在移动中那样在绝对坐标上。(如果蛇在屏幕上从左向右移动,按D键应使移动蛇向下移动),但这取决于头部向右看的位置?不是像你在移动中那样在绝对坐标上。(如果snake从左到右屏幕移动,按D键应使snake向下移动)我忘记在描述中提及它,但我已尝试在If/elif语句中替换>=到>,但问题仍然存在。我忘记在描述中提及它,但我已尝试在If/elif语句中替换>=到>,但问题依然存在。
if body.getCenter().getY() >= player.getCenter().getY(): # W
if body.getCenter().getY() > player.getCenter().getY(): # W