現在、Tic-Tac-Toeゲームを作っています。誰かが連続して3つのピースを取得したかどうかを確認しようとしています。私はボタンのテキストをチェックして、私が3行を続けているかどうかを調べることを試みています。しかし、リスト内の特定のボタンのテキストをチェックする方法はわかりません。誰にもアイデアがありますか、それとも良い方法があれば教えてください。ボタンのリストで特定のボタンのテキストを取得するにはどうすればよいですか?私はTkinterを使用しています
完全なコード
import tkinter as tk
class TicTacToe(tk.Tk):
def __init__(self):
super().__init__()
# Vars
self.rounds_played = 0
self.wins = 0
self.losses = 0
self.player = 0
self.turn = 0
self.clicked_buttons = []
# Attributes
self.resizable(False, False)
self.attributes("-toolwindow", True)
# Start
self.game_title = tk.Label(text="Stew's Tic Tac Toe")
self.name_label = tk.Label(text="Choose a name\n(Press the \'Enter\' key to submit)")
self.name_entry = tk.Entry()
self.symbol_label = tk.Label(text="Choose your symbol")
self.symbol_buttons = [tk.Button(text="[X]", command=lambda: self.symbol_select(0)),
tk.Button(text="[O]", command=lambda: self.symbol_select(1))]
self.next = tk.Button(text="Next", command=self.next_button)
self.ready = tk.Button(text="Start", command=self.start_game_button)
self.game_title.grid(row=0)
self.name_label.grid(row=1)
self.name_entry.grid(row=2)
self.name_entry.bind("<Return>", lambda x: self.set_player_name(self.player))
def set_player_name(self, num):
if num == 0:
self.names = [self.name_entry.get()]
if self.names[0] == " ":
self.names = ["Player 1"]
print(self.names[0])
self.symbol_label.grid(row=3,)
self.symbol_buttons[0].grid(row=4, sticky=tk.W, padx=57.5)
self.symbol_buttons[1].grid(row=4, sticky=tk.E, padx=57.5)
elif num == 1:
self.names.append(self.name_entry.get())
if self.names[1] == "" or " ":
self.names.append("Player 2")
self.ready.grid(row=4)
def symbol_select(self, num):
if num == 0:
self.symbol = ["[X]",
"[O]"]
else:
self.symbol = ["[X]",
"[O]"]
self.next.grid(row=5)
def next_button(self):
self.player = 1
self.next.grid_forget()
self.name_entry.delete(0, tk.END)
self.symbol_label.grid_forget()
for x in self.symbol_buttons:
x.grid_forget()
def start_game_button(self):
self.game_title.grid_configure(row=0, column=1, columnspan=3)
self.whos_turn = tk.Label(text="{}\'s turn".format(self.names[0]))
self.whos_turn.grid(row=1, column=1, columnspan=3)
self.ready.grid_forget()
self.name_label.grid_forget()
self.name_entry.grid_forget()
self.game_buttons = [tk.Button(text="[ ]", command=lambda: self.move_update(0)),
tk.Button(text="[ ]", command=lambda: self.move_update(1)),
tk.Button(text="[ ]", command=lambda: self.move_update(2)),
tk.Button(text="[ ]", command=lambda: self.move_update(3)),
tk.Button(text="[ ]", command=lambda: self.move_update(4)),
tk.Button(text="[ ]", command=lambda: self.move_update(5)),
tk.Button(text="[ ]", command=lambda: self.move_update(6)),
tk.Button(text="[ ]", command=lambda: self.move_update(7)),
tk.Button(text="[ ]", command=lambda: self.move_update(8))]
num = 0
for r in range(0,3):
for c in range(0,3):
self.game_buttons[num].grid(row=(r%3 + 2), column=(c%3 + 1))
num = num + 1
self.rounds = tk.Label(text="Rounds Played: {}".format(self.rounds_played))
self.rounds.grid(row=5, column=1, columnspan=3)
def move_update(self, num):
if num not in self.clicked_buttons:
self.clicked_buttons.append(num)
self.turn = self.turn + 1
if self.turn%2 == 1:
self.game_buttons[num].config(text=self.symbol[0])
elif self.turn%2 == 0:
self.game_buttons[num].config(text=self.symbol[1])
# Here is where I am struggling
for x in range(0,8):
if self.game_buttons[x] == "[X]" and self.game_buttons[(x+3)%9]:
if self.game_buttons[(x+6)%9] == "[X]":
print("Winner")
# Here is where it ends
if self.turn == 9:
self.rounds_played = self.rounds_played + 1
self.rounds.configure(text="Rounds Played: {}".format(self.rounds_played))
self.play_again = tk.Button(text="Play Again?", command=self.new_game)
self.play_again.grid(row=6, column=1, columnspan=3)
def new_game(self):
self.turn = 0
game = TicTacToe()
game.mainloop()
パート私は、テキストを見つけていないよ、この部分で実現
for x in range(0,8):
if self.game_buttons[x] == "[X]" and self.game_buttons[(x+3)%9]:
if self.game_buttons[(x+6)%9] == "[X]":
print("Winner")
に苦しんでいますが、私は本当に両方に呼び出す方法がわかりません特定のリスト項目とテキスト
'self.game_buttonsは、[X] [ "テキスト"]'その特定のボタンのテキストになります。 – jasonharper
私はそれを試みたが、以前はうまくいかなかったようだ。私はもう一度それを試すことができます。 * EDIT *私は、ステートメントが間違っていると、それがうまくいかない理由を定義しました。ありがとう。 – stew3254