Hướng dẫn text-based tic tac toe python - Tic tac toe python dựa trên văn bản

Chào mừng bạn đến với Codereview!

Bạn đã bỏ lỡ một cơ hội oo.

Bạn có một class Player nhưng bạn vẫn đang "bật dữ liệu nội bộ". Bạn làm điều này:

def get_player_input[choices, text='']:
    ...

đó không phải là một phương pháp trên Player. Và sau đó, bạn làm điều này:

if player.is_human:
    row = int[get_player_input[options, "Enter row number[1-3]: "]] - 1
    colmn = int[get_player_input[options, "Enter column number[1-3]: "]] - 1
else:
    row, colmn = randint[0, 2], randint[0, 2]

Hành động viết if player.is_human: ... else: ... này là "chuyển đổi dữ liệu nội bộ". Đó là "dữ liệu nội bộ" vì bạn không nhận được nó từ bên ngoài lớp. Đó là "chuyển đổi" vì bạn đang đưa ra một lựa chọn độc quyền.

Bật dữ liệu nội bộ là "mùi mã" cho thấy bạn có thể cần một lớp mới. Trong trường hợp này, tôi nghĩ bạn làm:

from abc import ABC, abstractmethod

class Player[ABC]:
    @abstractmethod
    def get_next_move[self, board: Board] -> Position:
        ...

class PlayerIO[Player]:
    def get_next_move[self, board: Board] -> Position:
        """ Read next move from io streams """
        pass

class PlayerRandom[Player]:
    def get_next_move[self, board: Board] -> Position:
        """ Randomly generate next move """
        pass

Tôi sẽ đề xuất rằng hàm tạo IO lấy các luồng đầu vào và đầu ra, và xử lý hiển thị bảng và nhắc nhở cho một bước đi mới.

Tôi cũng sẽ đề nghị bạn viết một lớp Textio thuộc loại nào đó và đưa ra các phương thức như "Lời nhắc cho đầu vào" và "Đọc một chuỗi" và "Đọc một số nguyên". Tập hợp các hoạt động cơ bản này có thể là các khối xây dựng cho lớp PlayerIO của bạn và sẽ có thể tạo một đối tượng giả để kiểm tra đơn vị.

Thêm khu vực chơi và nhãn có văn bản "Tic Tac Toe" ..

Làm cho GUI chức năng ..
Thực hiện logic để phát hiện chiến thắng ..
Phát hiện vẽ ..
Nhãn tình trạng ..
Hiển thị lượt của ai ..
Tạo nút phát lại ..
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
Nhập Tkinter dưới dạng TK
Nhập Tkinter.MessageBox
root = tk.tk []
#tk.title ['tic tac toe game']
#game board để giữ dữ liệu
game_board = ["-", "-", "-",
"-", "-", "-",
"-", "-", "-"]
# biết nếu trò chơi kết thúc
game_still_on = true
người chiến thắng = không có
# người chơi hiện tại
current_player = "x"
# Chơi game
def play_game []:
# Hiển thị bảng trò chơi
display_game_board []
Trong khi game_still_on:
# Xử lý một lượt
tay cầm_turn [current_player]
# Kiểm tra xem trò chơi có kết thúc không
Check_if_game_over []
# Lật sang người chơi khác
flip_player []
# In người chiến thắng hoặc cà vạt
Nếu người chiến thắng == "x" hoặc người chiến thắng == "o":
In ["Xin chúc mừng" + người chiến thắng + "You Won!"]
Nếu người chiến thắng == "x" hoặc người chiến thắng == "o":
In ["Xin chúc mừng" + người chiến thắng + "You Won!"]
flip_player []
# In người chiến thắng hoặc cà vạt
Nếu người chiến thắng == "x" hoặc người chiến thắng == "o":
In ["Xin chúc mừng" + người chiến thắng + "You Won!"]
Elif Winner == Không có:
in ["Draw Draw."]
DEF DEALT_GAME_BOARD []:
in ["\ n"]
PRIN
in["---------"]
in [game_board [3] + "|" + game_board [4] + "|" + game_board [5] + "4 | 5 | 6"]
In [Game_board [6] + "|" + Game_board [7] + "|" + Game_board [8] + "7 | 8 | 9"]
def tay cầm_turn [người chơi]:
# điểm đầu vào từ người chơi
In [người chơi + "của lượt."]
# biết nếu trò chơi kết thúc
game_still_on = true
người chiến thắng = không có
# người chơi hiện tại
current_player = "x"
# Chơi game
def play_game []:
# Hiển thị bảng trò chơi
display_game_board []
Trong khi game_still_on:
# Xử lý một lượt
tay cầm_turn [current_player]
# Kiểm tra xem trò chơi có kết thúc không
Check_if_game_over []
# Lật sang người chơi khác
flip_player []
# In người chiến thắng hoặc cà vạt
Nếu người chiến thắng == "x" hoặc người chiến thắng == "o":
In ["Xin chúc mừng" + người chiến thắng + "You Won!"]
khác:
Elif Winner == Không có:
in ["Draw Draw."]
Game_Still_on toàn cầu
DEF DEALT_GAME_BOARD []:
in ["\ n"]
PRIN
in["---------"]
game_still_on = Sai
in [game_board [3] + "|" + game_board [4] + "|" + game_board [5] + "4 | 5 | 6"]
In [Game_board [6] + "|" + Game_board [7] + "|" + Game_board [8] + "7 | 8 | 9"]
def tay cầm_turn [người chơi]:
# điểm đầu vào từ người chơi
In [người chơi + "của lượt."]
spot = input ["Chọn một điểm từ 1-9:"]
hợp lệ = sai
khác:
trả lại không
Trong khi không hợp lệ:
Game_Still_on toàn cầu
trong khi điểm không ở ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
spot = input ["hey! Chọn một điểm từ 1-9:"]
spot = int [điểm] - 1
Nếu game_board [spot] == ​​"-":
game_still_on = Sai
hợp lệ = true
khác:
def tay cầm_turn [người chơi]:
# điểm đầu vào từ người chơi
In [người chơi + "của lượt."]
spot = input ["Chọn một điểm từ 1-9:"]
trả lại game_board [2]
khác:
trả lại không
hợp lệ = sai
Game_Still_on toàn cầu
Trong khi không hợp lệ:
trong khi điểm không ở ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
spot = input ["hey! Chọn một điểm từ 1-9:"]
game_still_on = Sai
# Trả lại người chiến thắng
Nếu chéo_1:
trả lại game_board [0]
elif chéo_2:
trả lại game_board [2]
khác:
trả lại không
#Kiểm tra cà vạt
Def Check_for_tie []:
Game_Still_on toàn cầu
Nếu "-" Không có trong game_board:
game_still_on = Sai
trả về đúng
khác:
trả lại không
#Kiểm tra cà vạt
Def Check_for_tie []:
Game_Still_on toàn cầu
Nếu "-" Không có trong game_board:
game_still_on = Sai
trả về đúng
trả lại sai
# Lật người chơi hiện tại
def flip_player []:
Toàn cầu current_player

Python có thể tạo ra tic tac toe không?

Đối với giao diện trò chơi, bạn sẽ sử dụng bộ công cụ GUI Tkinter, xuất hiện trong cài đặt Python tiêu chuẩn như một pin bao gồm.Trò chơi Tic-Tac-Toe dành cho hai người chơi.Một người chơi chơi X và các vở kịch khác O. Người chơi thay phiên nhau đặt điểm của họ trên một mạng lưới các ô ba phần ba.you'll use the Tkinter GUI tool kit, which comes in the standard Python installation as an included battery. The tic-tac-toe game is for two players. One player plays X and the other plays O. The players take turns placing their marks on a grid of three-by-three cells.

Thuật toán nào được sử dụng cho Tic Tac Toe trong Python?

Thuật toán Minimax là một quy tắc quyết định được xây dựng cho 2 trò chơi tổng bằng không [Tic-Tac-Toe, cờ vua, GO, v.v.].Thuật toán này nhìn thấy một vài bước phía trước và đặt mình vào đôi giày của đối thủ. is a decision rule formulated for 2 player zero-sum games [Tic-Tac-Toe, Chess, Go, etc.]. This algorithm sees a few steps ahead and puts itself in the shoes of its opponent.

Làm thế nào để bạn tạo ra một trò chơi Tic Tac Toe trong Python Gui?

Các bước được thực hiện trong hướng dẫn này là:..
Tạo một cửa sổ Tkinter ..
Thêm khu vực chơi và nhãn có văn bản "Tic Tac Toe" ..
Làm cho GUI chức năng ..
Thực hiện logic để phát hiện chiến thắng ..
Phát hiện vẽ ..
Nhãn tình trạng ..
Hiển thị lượt của ai ..
Tạo nút phát lại ..

Bài Viết Liên Quan

Chủ Đề