使用graphics.py输入的箭头键无法正常工作

时间:2019-10-17 14:34:27

标签: python

我刚刚开始学习Python(到目前为止,我能流利使用的唯一其他编程语言是C,所以这对我来说是非常新的),我决定使用它来做一些简单的游戏习惯它。我希望它是一个箭头键控制的游戏,并且我正在使用graphics.py库,据我所知,该库对初学者非常友好。

这是我想出的:

from graphics import *

win = GraphWin("Game", 800, 500)

def getXInput():
    inputBuffer = win.checkKey()
    inputResult = 0

    if inputBuffer == "Right":
        inputResult = 1
    elif inputBuffer == "Left":
        inputResult = -1

    return inputResult

def getYInput():
    inputBuffer = win.checkKey()
    inputResult = 0

    if inputBuffer == "Down":
        inputResult = 1
    elif inputBuffer == "Up":
        inputResult = -1

    return inputResult  

class player:

    def __init__(self):
        self.x = 400
        self.y = 250
        self.speed = 3
        self.canMove = True
        self.txt = Text(Point(self.x, self.y), "test")
        self.txt.draw(win)

    def move(self):
        while self.canMove == True:
            xMove = getXInput() * self.speed
            yMove = getYInput() * self.speed

            self.txt.move(xMove, yMove)


def main():
    pl = player()
    pl.move()

    win.close()

main()

播放器输入通过getXInput和getYInput函数进行管理,这些函数会昂贵地检查是否按下了箭头键,并相应地返回-1、0或1。

然后,将这些功能的结果乘以玩家的属性“速度”,成倍增加,这就是游戏如何沿正确的方向移动玩家角色。这种方法很有效:它在x轴上完美工作,但在y轴上却很奇怪,仅偶尔注册一次输入。在move方法中将yMove分配放在xMove之前,可以解决此问题,从而使垂直运动变得完美而水平运动非常草率。我真的不明白是什么原因造成的,有人可以帮忙吗?

0 个答案:

没有答案