私は単純な「Simon」ゲームを書こうとしていますが、ここで障害にぶつかりました。正直なところ、それを回避する方法がわかりません。
ここでは、GUI の 4 つのボタンのクラスを作成しました。
class button:
def buttonclicked(self):
self.butclicked= True
def checkIfClicked(self):
if self.butclicked== True:
global pressed
pressed.append(self.color)
self.butclicked= False
def __init__(self, color1):
self.color= color1
self.button= tk.Button(root, text=' '*10, bg= self.color, command= self.buttonclicked)
self.button.pack(side='left')
self.butclicked=False
blue, red, yellow, and green as bb, rb, yb,
次に、とでこのクラスの 4 つのインスタンスを作成しましたgb
。
すべてが Tk() モジュールにパックされると、リスト activecolors にランダムな色を追加する while ループに入ります。次のループを使用して、押されたリストがアクティブカラーのリストと少なくとも同じ長さになるまで待ってから、2つを比較してユーザーが正しかったかどうかを確認します。
while len(pressed)<len(activecolors):
sleep(.25)
print('In the check loop')
bb.checkIfClicked()
rb.checkIfClicked()
yb.checkIfClicked()
gb.checkIfClicked()
ただし、while ループ内でスタックしているため、プログラムはボタンがクリックされたことを認識できません。スリープ メソッドをループに追加すると、コードが他の処理 (プロセス ボタンのクリックなど) を実行できるようになると思いましたが、そうではありません。どんな助けでも大歓迎です。
見たい場合は、完全なコードへのリンクを次に示します。ただし、警告: きれいではありません。
編集:新しいボタンがクリックされた後にのみリストをチェックするようにコードを変更して、コードの準備ができていることをコンピューターに伝えました。ご覧になりたい場合は、Google ドキュメントを更新しました。