Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当您需要不同的参数时,如何在类中使用if/elif?_Python_Pygame - Fatal编程技术网

Python 当您需要不同的参数时,如何在类中使用if/elif?

Python 当您需要不同的参数时,如何在类中使用if/elif?,python,pygame,Python,Pygame,我正在做一个类,将所有关于pygame键盘的命令放入其中,至少是我需要的所有命令,但当我使用if或else等于我稍后要定义的“变量”时,它返回一个错误,告诉我它未定义 我不知道怎么用技术术语说,对不起,错了。我开始使用button作为key()参数,我得到了相同的错误,然后我尝试使用\uuuuu init\uuuuuuu(),但我还可以使用它(不确定如何使用),然后我以这种方式 class control(): def button(self, button): self

我正在做一个类,将所有关于pygame键盘的命令放入其中,至少是我需要的所有命令,但当我使用if或else等于我稍后要定义的“变量”时,它返回一个错误,告诉我它未定义

我不知道怎么用技术术语说,对不起,错了。我开始使用button作为
key()
参数,我得到了相同的错误,然后我尝试使用
\uuuuu init\uuuuuuu()
,但我还可以使用它(不确定如何使用),然后我以这种方式

class control():
    def button(self, button):
        self.button = button
    def exit(self):
        if event.type == pygame.QUIT:
            pygame.quit()
    def key(self, axis, speed):
        if event.type == pygame.KEYDOWN:
            if event.key == self.button:
                axis = 0
                axis = speed


ctrl = control()
w = control().button(K_w)
s = control(K_s)
UP = control(K_UP)
DOWN = control(K_DOWN)


while True:
    for event in pygame.event.get():
        ctrl.exit()  
        w.key(y1, -5)
        s.key(y1, +5)
        UP.key(y2, -5)
        DOWN.key(y2, +5)
文件“C:/Users/Smith/PycharmProjects/untitled/venv/test0002.py”,第25行,在
w=控制()按钮(K_w)
名称错误:未定义名称“K_w”
我想使用按键功能来定义按钮,以便以后每次键盘输入时都使用它,而不是每次都重新写入。

错误消息

未定义名称“K_w”

发生,b因为您忘记了模块名称空间

常量的名称是
pygame.K_w
,而不是
K_w
。常量放置在pygame模块名称空间中

使用常量的全名:

w=control()
或导入pygame常量,请参见

从pygame.locals导入*
# [...]
w=控制()按钮(K_w)

此外,从未定义变量
w
,因为
control()
会生成对象,但
button()
不会返回任何值。方法按钮应返回
self

class控件():
def按钮(自身,按钮):
self.button=按钮
回归自我
但是我建议在类
控件中实现构造函数,而不是在方法
按钮中实现构造函数(当然,您可以同时实现这两种方法):

class控件():
定义初始化(自,按钮=0):
self.button=按钮
ctrl=control()
w=控制(K_w)
s=控制(K_s)
向上=控制(K_向上)
向下=控制(K_向下)

方法
必须返回参数
轴的新值

class控件():
# [...]
def键(自身、轴、速度):
如果event.type==pygame.KEYDOWN:
如果event.key==self.button:
轴=速度
返回轴
y1,y2=0,0
尽管如此:
对于pygame.event.get()中的事件:
ctrl.exit()
y1=w键(y1,-5)
y1=s键(y1,+5)
y2=向上键(y2,-5)
Y2=向下。键(Y2,+5)
错误消息

未定义名称“K_w”

发生,b因为您忘记了模块名称空间

常量的名称是
pygame.K_w
,而不是
K_w
。常量放置在pygame模块名称空间中

使用常量的全名:

w=control()
或导入pygame常量,请参见

从pygame.locals导入*
# [...]
w=控制()按钮(K_w)

此外,从未定义变量
w
,因为
control()
会生成对象,但
button()
不会返回任何值。方法按钮应返回
self

class控件():
def按钮(自身,按钮):
self.button=按钮
回归自我
但是我建议在类
控件中实现构造函数,而不是在方法
按钮中实现构造函数(当然,您可以同时实现这两种方法):

class控件():
定义初始化(自,按钮=0):
self.button=按钮
ctrl=control()
w=控制(K_w)
s=控制(K_s)
向上=控制(K_向上)
向下=控制(K_向下)

方法
必须返回参数
轴的新值

class控件():
# [...]
def键(自身、轴、速度):
如果event.type==pygame.KEYDOWN:
如果event.key==self.button:
轴=速度
返回轴
y1,y2=0,0
尽管如此:
对于pygame.event.get()中的事件:
ctrl.exit()
y1=w键(y1,-5)
y1=s键(y1,+5)
y2=向上键(y2,-5)
Y2=向下。键(Y2,+5)
 File "C:/Users/Smith/PycharmProjects/untitled/venv/test0002.py", line 25, in <module>
    w = control().button(K_w)
NameError: name 'K_w' is not defined