2017-01-18 9 views
0

私はtkinterで地雷探査機のようなゲームを作成しようとしています。目標は、ボタンをクリックし、ランダムに数字を選択し、その数字が1の場合は、プレーヤーにポイントを与えます。問題は、クリックしたボタンを無効にし、 'cat'が見つかったかどうかによって色が変わるようにすることです。これを行う唯一のボタンは、右下のボタンで、クリックしたものでなくても、色が交互に切り替わり、無効になります。問題がどこにあるのかわからないので、助けていただければ幸いです。ボタンが正しく動作しないのはなぜですか?

from tkinter import * 
from random import * 
turns=10 
points=0 
def onclick(): 
    global turns,points 
    iscat=randint(1,11) 
    btn.configure(state="disabled") 
    if iscat==1: 
     btn.configure(background="blue") 
     statlabel.configure(text="You found a cat!") 
     points=points+1 
    else: 
     btn.configure(bg="red") 
     statlabel.configure(text="It's empty! Hurry, or all the cats will die!") 
    turns=turns-1 
root=Tk() 
root.title("Catsweeper") 
root.configure(background="black") 
frame=Frame(root) 
frame.configure(bg="black") 
Grid.rowconfigure(root, 0, weight=1) 
Grid.columnconfigure(root, 0, weight=1) 
frame.grid(row=0, column=0) 
grid=Frame(frame) 
grid.grid(column=0, row=7, columnspan=2) 
Grid.rowconfigure(frame, 7, weight=1) 
Grid.columnconfigure(frame, 0, weight=1) 
chosenx=int(input("How many rows? ")) 
choseny=int(input("How many columns? ")) 
for x in range(1,chosenx+1): 
    for y in range(1, choseny+1): 
     btn=Button(frame, command=onclick, state = "normal") 
     btn.grid(column=x, row=y) 
statlabel=Label(frame, text="", background="red", fg="white") 
statlabel.grid(column=choseny+1) 
if turns==0: 
    statlabel.configure(text="GAME OVER") 
    btn.configure(state="disabled") 
root.mainloop()  

答えて

0

onclickは、特定のボタンへの参照を渡していないということを意味していません。したがって、btnに割り当てられた最新のものだけを使用することができます。これは、右下のボタンで行います。

関連する問題