pygameのキーボードに関するすべてのコマンド、少なくとも必要なものすべてを内部に配置するクラスを実行していますが、後で定義する「変数」と等しいかどうかを使用すると、エラーが返されます。定義されていません。
私は技術的なサームで言うのに十分なことを知りません、間違いで申し訳ありません。ボタンをkey()
引数として使い始めて、同じエラーが発生したので、使っ__init__()
てみましたが、まだ使えます(方法はわかりません)、こうして作りました...
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)
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
キー関数を使用してボタンを定義したいので、後ですべてのキーボード入力に対してそれを取得し、毎回すべてを書き直すことができます。
エラーメッセージ
名前「K_w」が定義されていません
モジュールの名前空間を忘れたために発生します。
定数の名前はpygame.K_w
ではなくですK_w
。定数はpygameモジュールの名前空間に配置されます。
定数のフルネームを使用します。
w = control().button(pygame.K_w)
またはpygame定数をインポートしますpygame.localsを参照してください
from pygame.locals import *
# [...]
w = control().button(K_w)
さらに、オブジェクトを生成しますが、値を返さないw
ため、変数が定義されることcontrol()
はありbutton()
ません。メソッドボタンは次を返す必要がありますself
:
class control():
def button(self, button):
self.button = button
return self
ただしcontrol
、メソッドではなくクラスにコンストラクターを実装することをお勧めしbutton
ます(もちろん両方を実行できます)。
class control():
def __init__(self, button=0):
self.button = button
ctrl = control()
w = control(K_w)
s = control(K_s)
UP = control(K_UP)
DOWN = control(K_DOWN)
このメソッドkey
は、パラメーターの新しい値を返す必要がありますaxis
。
class control():
# [...]
def key(self, axis, speed):
if event.type == pygame.KEYDOWN:
if event.key == self.button:
axis = speed
return axis
y1, y2 = 0, 0
while True:
for event in pygame.event.get():
ctrl.exit()
y1 = w.key(y1, -5)
y1 = s.key(y1, +5)
y2 = UP.key(y2, -5)
Y2 = DOWN.key(y2, +5)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加