Hướng dẫn tic-tac toe game in python assignment expert - trò chơi tic-tac toe trong chuyên gia phân công trăn

Trò chơi Tic-Tac-Toe

Abhinav và Anjali đang chơi trò chơi tic-tac-toe. Tic-Tac-Toe là một trò chơi được chơi trên lưới ba hình vuông của ba hình vuông. Abhinav là O, và Anjali là X. Người chơi thay phiên nhau đặt điểm của họ vào các ô vuông trống. Người chơi đầu tiên có được 3 điểm của cô ấy trong một đường chéo hoặc ngang, hoặc hàng dọc là người chiến thắng. Khi tất cả chín ô vuông đã hoàn tất, trò chơi đã kết thúc. Nếu không có người chơi nào có ba điểm liên tiếp, trò chơi sẽ kết thúc bằng một chiếc cà vạt. Viết một chương trình để quyết định người chiến thắng trong trò chơi tic-tac-toe.

Đầu vào

Đầu vào sẽ là ba dòng chứa O và X được phân tách bởi không gian.

Đầu ra

Đầu ra phải là một dòng duy nhất chứa "Abhinav thắng" hoặc "Anjali thắng" hoặc "cà vạt".

Giải trình

Ví dụ: nếu đầu vào là

O X O
O X X
O O X 

Vì ba trong số O đang in hàng thẳng đứng "Abhinav thắng".

Đầu vào mẫu 1

O x o

O x x

O o x

Đầu ra mẫu 1

Abhinav thắng

Đầu vào mẫu 2

O o x

X x o

X o o

Đầu ra mẫu 2

Anjali thắng

Tôi muốn đầu ra mẫu chính xác

Trả lời câu hỏi #258828 trong Python cho Raju

Trò chơi Tic-Tac-Toe

Abhinav và Anjali đang chơi trò chơi tic-tac-toe. . Người chơi đầu tiên có được 3 điểm của cô ấy trong một đường chéo hoặc ngang, hoặc hàng dọc là người chiến thắng. Khi tất cả chín ô vuông đã hoàn thành, trò chơi đã kết thúc. Nếu không có người chơi nào có ba điểm liên tiếp, trò chơi kết thúc trong một Tie.Write một chương trình để quyết định người chiến thắng trong trò chơi tic-tac-toe.

Đầu vào

Đầu vào sẽ là ba dòng chứa O và X được phân tách bởi không gian.

Đầu vào mẫu 1

O x o

O x x

O o x

Đầu ra mẫu 1

Abhinav thắng

Đầu vào mẫu 2

O o x

Đầu ra mẫu 1

Abhinav thắng

Đầu vào mẫu 2

X x o

def check_win[board]:
 """
 Check if somebody win.
 Return winning symbol or None in case of tie
 """
 for r in range[3]:
  if board[r][0] == board[r][1] == board[r][2]:
    return board[r][0]
 
 for c in range[3]:
  if board[0][c] == board[1][c] == board[2][c]:
    return board[0][c]


  if board[0][0] == board [1][1] == board [2][2]:
    return board[0][0]
 
  if board[0][2] == board [1][1] == board [2][0]:
    return board[0][2]


board = []
for r in range[3]:
 line = input[]
 board.append[line.split[]]


res = check_win[board]
if res is None:
 print[Tie]
elif res.upper[] == 'X':
 print['Anjali Wins']
elif res.upper[] == 'O':
 print['Abhinav Wins']

X o o

Tic tac toe python, là những gì chúng ta sẽ làm trong bài viết này. Tic Tac Toe là một trò chơi đơn giản mà hầu hết nếu không phải ai cũng biết điều đó. Bạn cũng có thể gọi nó là trò chơi X và O và O.

Nó được chơi như thế nào

Hai người chơi trò chơi. Chúng đặt một X hoặc O trong lưới ba bằng ba. Bạn giành chiến thắng bằng cách đặt thư của bạn để điền vào một hàng hoặc cột hoàn chỉnh hoặc đường chéo trên trường Sudoku.

Chơi với máy tính

Chơi một trò chơi như vậy với máy tính liên quan đến việc thực hiện một loại AI trong chương trình. AI thực hiện các bước đi theo cách tương tự như cách một con người và nên đơn giản và đủ hợp lý. Vì vậy, để tổng hợp nó, bạn sẽ chơi với AI máy tính.

Định nghĩa

Các chức năng được xác định trong Python bằng cách sử dụng từ ‘def. Chúng tôi sẽ sử dụng một số chức năng trong chương trình Tic Tac Toe Python của chúng tôi vì rất nhiều mã có thể tái sử dụng và thực sự sẽ được sử dụng lại nhiều lần để đảm bảo trò chơi chạy. Các chức năng như sau:

1. Bảng trống

Đây là một tuyên bố biến nhiều hơn một chức năng. Chúng tôi tạo ra một bảng trống với các không gian để đặt vào X X và và O O. Nó chủ yếu là một bảng ba ba với các khe trống.

board = [' ' for x in range[10]]

2. Chức năng in bảng

Chức năng này sẽ in ra bảng mỗi lần ‘X, hoặc‘ O, được đặt trên bảng. Bảng sẽ trông có thể trình bày trên bất kỳ vỏ hoặc nhàn rỗi bạn chạy trên.

def printBoard[board]:
    print[" " + board[1] + "| " + board[2] + "| " + board[3]]
    print["---------"]
    print[" " + board[4] + "| " + board[5] + "| " + board[6]]
    print["---------"]
    print[" " + board[7] + "| " + board[8] + "| " + board[9]]

Các biến bảng là các giá trị thực tế được lưu trong mảng bảng.

3. Một chức năng để kiểm tra xem bảng có đầy không

Chúng ta cần liên tục cần kiểm tra xem bảng có toàn bộ để kết thúc trò chơi không. Nếu bảng đầy thì đó là một sự ràng buộc. Hội đồng quản trị có thể thiếu để đầy đủ mà không có người chiến thắng được tuyên bố và do đó một động thái có thể được thực hiện. Hàm đơn giản và trả về đúng hoặc sai. Hàm này sẽ được gọi mỗi lần trước khi di chuyển được thực hiện.

def isBoardFull[board]:
    if board.count[" "] > 1:
        return False
    else:
        return True

4. Một chức năng để kiểm tra xem có người chiến thắng không

Nếu bảng không đầy đủ, chúng tôi sẽ kiểm tra xem có người chiến thắng không. Chúng tôi tuyên bố một người chiến thắng nếu ba người X X. hoặc ba người khác xuất hiện trong một hàng hoặc trong một cột hoặc theo đường chéo.

def isWinner[bo, le]:
    return [bo[7] == le and bo[8] == le and bo[9] == le] or 
           [bo[4] == le and bo[5] == le and bo[6] == le] or 
           [bo[1] == le and bo[2] == le and bo[3] == le] or 
           [bo[1] == le and bo[4] == le and bo[7] == le] or  
           [bo[2] == le and bo[5] == le and bo[8] == le] or 
           [bo[3] == le and bo[6] == le and bo[9] == le] or 
           [bo[1] == le and bo[5] == le and bo[9] == le] or  
           [bo[3] == le and bo[5] == le and bo[7] == le]
#Note that all this code falls on line. 
#Do not go to the next line.
#"bo" stands for the board.
#"le" stands for the letter or symbol we're checking.

5. Hàm thư chèn

Chúng tôi đặt ra một sự thiên vị mà người dùng con người sẽ luôn là người đầu tiên bắt đầu và anh ta sẽ sử dụng ‘X. Sau đó, người dùng nên chèn một vị trí số trên bảng trong đó ‘X, sẽ được đặt. Vị trí số tương tự như định dạng của T9 T9 và do đó bạn chèn một số từ một đến chín.

def insertLetter[letter, pos]:
    board[pos] = letter

Đây là một hàm đơn giản chèn các chữ cái

6. Một chức năng để kiểm tra xem vị trí có miễn phí không

Chúng tôi xác định một chức năng kiểm tra xem vị trí được chọn bởi người dùng hoặc AI máy tính là miễn phí. Nó là một hàm boolean và sẽ trả về đúng hoặc sai tùy thuộc vào trạng thái của vị trí.

def spaceIsFree[pos]:
    return board[pos] == " "

7. Một chức năng cho người chơi di chuyển

Hàm này nhắc người dùng nhập một vị trí trên bảng trong đó X sẽ đặt. Nó kiểm tra xem đầu vào của người dùng có hợp lệ không. Nếu đầu vào là hợp lệ, chính vị trí được kiểm tra trạng thái của nó, có thể bị chiếm hoặc trống. Nó lưu chữ cái ở vị trí đó nếu nó kiểm tra với hai trường hợp. Nếu nó không vượt qua một trường hợp, thì một lỗi được ném lại tương ứng, điều này có nghĩa là nếu nó bị chiếm, người dùng được cảnh báo và yêu cầu chọn một số khác. Nếu người dùng nhập một số lớn hơn, anh ấy/cô ấy được nhắc nhập một số hợp lệ.

def playMove[]:
    run = True
    while run:
        move = input["Please select position for 'X'[1-9]: "]
        try:
            move = int[move]
            if move > 0 and move < 10 :
                if spaceIsFree[move]:
                    run = False
                    insertLetter["x", move]
                else:
                    print["Sorry this space is occupied"]
            else:
                print["Please type the number within the range"]
        except:
            print["Please type a number. "]

8. Hàm AI cho máy tính

Đây là chức năng chọn ra tùy chọn mà máy tính sẽ thực hiện. Đơn giản, trước tiên nó sẽ lấy một kiểm tra cho các không gian có sẵn và lưu trữ các vị trí trong một biến.

Sau đó, nó sẽ kiểm tra xem nó có bất kỳ động tác nào có thể cho phép nó giành chiến thắng. Nếu vậy thì nó sẽ đặt thư của nó ở đó. Nếu không, sau đó nó sẽ kiểm tra xem đối thủ, đó là bạn, sắp giành chiến thắng và nếu vậy, thì nó sẽ chống lại và đặt một lá thư để chặn bạn chiến thắng. Khi không đúng, thì miễn phí đặt một chữ cái ở bất cứ đâu trong các vị trí có sẵn. Tuy nhiên, để làm cho nó có một số logic, nó sẽ đặt một chữ cái ngẫu nhiên ở các góc, nếu các góc trống rỗng. Nếu không thì nó sẽ tiến hành chọn khe giữa nếu mở. Khi không có trường hợp nào ở trên là đúng thì nó sẽ ngẫu nhiên chọn một khe cắm cạnh trống và đặt chữ cái của nó ở đó.
If not, it will then check if the opponent, which is you, is about to win and if so, it then will counter and place a letter to block you from winning.
When neither is true, then it is free to place a letter anywhere in the available slots. However, to make it have some logic, it will set a letter randomly at the corners, if the corners themselves are empty. If not then it will proceed to pick the middle slot if open.
When none of the cases above are true then it will randomly pick an empty edge slot and place its letter there.

def compMove[]:
    possibleMoves = [x for x, letter in enumerate[board] if letter == ' ' and x != 0]
#The above line justs checks for empty slots in the board
    move = 0
    for let in ['o','x']:
        for i in possibleMoves:
            boardCopy = board[:]
            boardCopy[i] = let
            if isWinner[boardCopy, let]:
                move = i
                return move
#This checks if one of the players has a wining move
    cornersOpen = []
    for i in possibleMoves:
        if i in [1,3,7,9]:
            cornersOpen.append[i]
#This checks for open corners
    if len[cornersOpen] > 0:
        move = selectRandom[cornersOpen]
        return move
    if 5 in possibleMoves:
        move = 5 
        return move 
This checks for open middle slot.
    edgesOpen = []
    for i in possibleMoves:
        if i in [2,4,6,8]:
            edgesOpen.append[i]
    if len[edgesOpen] > 0:
        move = selectRandom[edgesOpen]
    return move

9. Chọn chức năng ngẫu nhiên

Chức năng này chỉ đơn giản chọn một vị trí ngẫu nhiên trên bảng để máy tính đặt chữ cái của nó. Điều này làm cho AI không thể đoán trước theo một nghĩa nào đó. Nó được thực hiện trong hàm AI được xác định trước đó. Để tạo ra một số ngẫu nhiên, chúng tôi sẽ sử dụng mô -đun ngẫu nhiên.
It is implemented in the AI function defined earlier. To produce a random number, we will use the random module.

def check_win[board]:
 """
 Check if somebody win.
 Return winning symbol or None in case of tie
 """
 for r in range[3]:
  if board[r][0] == board[r][1] == board[r][2]:
    return board[r][0]
 
 for c in range[3]:
  if board[0][c] == board[1][c] == board[2][c]:
    return board[0][c]


  if board[0][0] == board [1][1] == board [2][2]:
    return board[0][0]
 
  if board[0][2] == board [1][1] == board [2][0]:
    return board[0][2]


board = []
for r in range[3]:
 line = input[]
 board.append[line.split[]]


res = check_win[board]
if res is None:
 print[Tie]
elif res.upper[] == 'X':
 print['Anjali Wins']
elif res.upper[] == 'O':
 print['Abhinav Wins']
0

10. Chức năng chính

Hàm chính gọi tất cả các chức năng khác theo thứ tự. Đó là xương sống của trò chơi và tạo thành một cú pháp theo thời gian của các chức năng và các trường hợp được chọn khác.

def check_win[board]:
 """
 Check if somebody win.
 Return winning symbol or None in case of tie
 """
 for r in range[3]:
  if board[r][0] == board[r][1] == board[r][2]:
    return board[r][0]
 
 for c in range[3]:
  if board[0][c] == board[1][c] == board[2][c]:
    return board[0][c]


  if board[0][0] == board [1][1] == board [2][2]:
    return board[0][0]
 
  if board[0][2] == board [1][1] == board [2][0]:
    return board[0][2]


board = []
for r in range[3]:
 line = input[]
 board.append[line.split[]]


res = check_win[board]
if res is None:
 print[Tie]
elif res.upper[] == 'X':
 print['Anjali Wins']
elif res.upper[] == 'O':
 print['Abhinav Wins']
1

Hàm chính hơi phức tạp và yêu cầu bạn phải đi qua nó theo từng dòng theo từng khối. Tất cả những gì chúng ta cần làm bây giờ là gọi chức năng chính của chúng ta để chạy trò chơi.

Bây giờ chúng tôi hãy xem mã đầy đủ của trò chơi được kết hợp thành một tệp .py. Tháng mười hai mà bạn có thể lưu trữ các chức năng trong các tệp khác nhau nhưng bạn sẽ phải nhập chúng vào chức năng chính. Tuy nhiên, để làm cho trò chơi đơn giản và dễ đọc, chúng tôi lưu trữ tất cả các mã trong hồ sơ
Remember that you can store the functions in different files but you will have to import them in the main function. However, to make the game simple and readable, we store all the code in on file

def check_win[board]:
 """
 Check if somebody win.
 Return winning symbol or None in case of tie
 """
 for r in range[3]:
  if board[r][0] == board[r][1] == board[r][2]:
    return board[r][0]
 
 for c in range[3]:
  if board[0][c] == board[1][c] == board[2][c]:
    return board[0][c]


  if board[0][0] == board [1][1] == board [2][2]:
    return board[0][0]
 
  if board[0][2] == board [1][1] == board [2][0]:
    return board[0][2]


board = []
for r in range[3]:
 line = input[]
 board.append[line.split[]]


res = check_win[board]
if res is None:
 print[Tie]
elif res.upper[] == 'X':
 print['Anjali Wins']
elif res.upper[] == 'O':
 print['Abhinav Wins']
2

Để có được sự hiểu biết sâu sắc về cách tạo ra một trò chơi TIC TAC TOE trong Python, hãy xem các video dưới đây.

Phần 1

Phần 2

Tín dụng video - TechWithTim

Cảm ơn bạn đã đọc qua bài viết của tôi. Hãy bình luận dưới đây nếu bạn thích bài viết hoặc tìm thấy điều gì đó sai với nó. Bạn cũng có thể nhận xét về các truy vấn của bạn.
Please comment below if you liked the article or found something wrong with it. You can also comment on your queries.

Bạn có thể kiểm tra các bài viết khác dưới đây:

Người giải quyết Sudoku Python | Backtracking | Recursion

Đoán số python

Tạo dịch giả ngôn ngữ bằng cách sử dụng Python

Nhận những trò đùa với Python

Chương trình máy tính trong Python

Tải xuống video YouTube bằng Python

Ứng dụng GUI để xem mật khẩu wifi trong Python

Bạn có thể làm một tic

Đầu tiên, chúng ta hãy kiểm tra các bước để xây dựng chương trình Tic Tac Toe trong Python: Tạo cửa sổ hiển thị cho trò chơi của chúng tôi. Lấy lưới trên khung vẽ nơi chúng tôi sẽ chơi tic tac toe.prow thanh trạng thái bên dưới khung vẽ để hiển thị lượt chơi nào của người chơi là Nó và ai thắng trò chơi.Create the display window for our game. Draw the grid on the canvas where we will play Tic Tac Toe. Draw the status bar below the canvas to show which player's turn is it and who wins the game.

Tic là gì

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. Nếu một người chơi nhất định có ba điểm liên tiếp theo chiều ngang, chiều dọc hoặc đường chéo, thì người chơi đó sẽ thắng trò chơi.

Việc sử dụng tic là gì

Mục tiêu của trò chơi là để người chơi định vị điểm của họ để họ tạo ra một dòng ba ô liên tục theo chiều dọc, chiều ngang hoặc đường chéo.Một đối thủ có thể ngăn chặn chiến thắng bằng cách chặn việc hoàn thành dòng của đối thủ.for players to position their marks so that they make a continuous line of three cells vertically, horizontally, or diagonally. An opponent can prevent a win by blocking the completion of the opponent's line.

Là tic

Tic-Tac-Toe [tiếng Anh Mỹ], Noughts và Crosses [tiếng Anh phổ biến], hoặc XS và OS [tiếng Anh Canada hoặc Ailen] là một trò chơi giấy và bút chì cho hai người chơi thay phiên nhau đánh dấu không gian trong ba lần-three lưới với x hoặc o.a paper-and-pencil game for two players who take turns marking the spaces in a three-by-three grid with X or O.

Bài Viết Liên Quan

Chủ Đề