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

2024-09-29 19:34:36 发布

您现在位置: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赋值之前可以逆转问题,使垂直移动完美,而水平移动非常松散。我真的不明白是什么原因造成的,有人能帮忙吗


Tags: 函数selftxt游戏movedef玩家win

热门问题