Hướng dẫn tic tac toe 2 player python code - tic tac toe 2 player mã python

Chương trình Python sau đây là trò chơi 2 người chơi tic-tac-toe. Nó hoàn toàn là một trò chơi console và có thể được chơi bởi 2 người chơi với các biểu tượng O và X.

#board and empty positions 
board=['0','1','2','3','4','5','6','7','8']
empty = [0,1,2,3,4,5,6,7,8]

#function to display board
def display_board[]:
  print['  |   |   ']
  print[board[0]+' | '+board[1]+' | '+board[2]]
  print['  |   |   ']
  print['---------']
  print['  |   |   ']
  print[board[3]+' | '+board[4]+' | '+board[5]]
  print['  |   |   ']
  print['---------'] 
  print['  |   |   ']
  print[board[6]+' | '+board[7]+' | '+board[8]]
  print['  |   |   ']

#function to take inputs from player-I and II
def player_input[player]:
  player_symbol = ['X','O']
  correct_input = True

  position = int[input['player {playerNo} chance! Choose field to fill {symbol} '.format[playerNo = player +1, symbol = player_symbol[player]]]]

  if board[position] == 'X' or board[position] == 'O':
    correct_input = False
  
  if not correct_input:
    print["Position already equipped"]
    player_input[player]
  else:
    empty.remove[position]
    board[position] = player_symbol[player] 
    return 1

#function checks if any player won
def check_win[]:
  #define players symbols and winning positions
  player_symbol = ['X','O']
  winning_positions =[[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]

  #check all winning positions for matching placements
  for check in winning_positions:
    first_symbol = board[check[0]]
    if first_symbol != ' ':
      won = True
      for point in check:
        if board[point] !=  first_symbol:
          won = False
          break
      if won:
        if first_symbol == player_symbol[0]:
          print['player 1 won']
        else:
          print['player 2 won']
        break
    else:
      won = False

  if won:
    return 0
  else:
    return 1

#function to invoke functions to play
def play[]:
  player = 0
  while empty and check_win[]:    
    display_board[]
    player_input[player]
    player = int[not player]
  if not empty:
    print["NO WINNER!"]

#driver code
if __name__ == '__main__':
  play[]

Chương trình có hai danh sách toàn cầu sau:

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]

Danh sách bảng lưu trữ các vị trí có thể được đánh dấu trên bảng TIC TAC ToE [bảng có tổng cộng 9 vị trí].board list stores the positions which can be marked on the tic tac toe board [the board has a total of 9 positions].

Danh sách trống lưu trữ các vị trí trống của bảng. Chúng tôi sử dụng danh sách này làm tham số trong hàm

if board[position] == 'X' or board[position] == 'O': 
   correct_input = False 
if not correct_input: 
   print["Position already equipped"] 
   player_input[player]
1 để kiểm tra xem trò chơi có kết thúc hay không.empty list stores the empty positions of the board. We use this list as a parameter in the
if board[position] == 'X' or board[position] == 'O': 
   correct_input = False 
if not correct_input: 
   print["Position already equipped"] 
   player_input[player]
1 function to check whether the game is over or not.

Chức năng giải thích

Chương trình có 4 chức năng sau:

  • Display_board []: Để hiển thị TIC TAC TOE BAN [GUI].: To display Tic Tac Toe board [GUI].
  • player_input [người chơi]: Để có được vị trí đầu vào từ người chơi. : To get input position from the player.
  • Check_win []: Để kiểm tra người chiến thắng trong trò chơi.: To check the winner of the game.
  • play []: giống như hàm chính, gọi các chức năng trên cho trò chơi.: More like the main function, which calls the above functions for gameplay.

player_input[player]

Chúng tôi sử dụng chức năng này để lấy đầu vào từ người chơi. Người chơi vào các vị trí trống để đánh dấu chúng bằng biểu tượng của họ.

Nếu trong trường hợp vị trí không trống [không có trong danh sách

if board[position] == 'X' or board[position] == 'O': 
   correct_input = False 
if not correct_input: 
   print["Position already equipped"] 
   player_input[player]
2], chúng tôi sẽ gọi đệ quy cùng một chức năng, để một lần nữa nhận được đầu vào chính xác từ trình phát.

if board[position] == 'X' or board[position] == 'O': 
   correct_input = False 
if not correct_input: 
   print["Position already equipped"] 
   player_input[player]

check_win[]

Trong chức năng này, chúng tôi xác định các vị trí chiến thắng như sau:

winning_positions =[[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]]

Để giành chiến thắng trong trò chơi, một người chơi phải đánh dấu tất cả các mục nhập ít nhất một danh sách phụ.

Nếu điều đó xảy ra, chúng tôi in người chiến thắng trò chơi tùy thuộc vào biểu tượng của người chơi.

play[]

Trong chức năng này, chúng tôi sử dụng vòng lặp

if board[position] == 'X' or board[position] == 'O': 
   correct_input = False 
if not correct_input: 
   print["Position already equipped"] 
   player_input[player]
3 để liên tục chạy trò chơi [nhận đầu vào từ người chơi] cho đến khi chúng tôi có được người chiến thắng hoặc tất cả các vị trí được lấp đầy.

Đó là tất cả để xây dựng 2 người chơi tic tac toe trò chơi bằng Python 3. Nếu bạn có bất kỳ nghi ngờ nào về điều này, thì hãy bình luận bên dưới.

Trong hướng dẫn này, chúng tôi sẽ xem xét một trong những cách để tạo ra trò chơi hai người chơi cổ điển Tic-Tac-Toe bằng Python. Các khái niệm Python mà chúng ta sẽ sử dụng trong trò chơi này là: chuỗi, vòng lặp, câu lệnh có điều kiện [nếu/khác], danh sách, từ điển và chức năng. Chúng tôi cũng sẽ sử dụng mô -đun thời gian.Tic-Tac-Toe using Python. The Python concepts that we will use in this game are: strings, loops, conditional[If/else] statements, lists, dictionaries, and functions. We will also make use of the time module.

Bước 1 - Khởi tạo bảng

Đầu tiên chúng tôi sẽ nhập thời gian & nbsp; mô -đun. Phương pháp Sleep [] từ mô -đun thời gian sẽ được sử dụng để giới thiệu sự chậm trễ khi cần thiết. Tiếp theo, chúng tôi sẽ tạo một từ điển với các số từ 1 đến 9 dưới dạng khóa & nbsp; và các chuỗi trống dưới dạng giá trị & nbsp; để khởi tạo bảng TIC-TAC-toe của chúng tôi.time module. The sleep[] method from the time module will be used to introduce delays where needed. Next, we will create a dictionary with numbers from 1 to 9 as keys and empty strings as values to initialize our Tic-Tac-Toe board.

import time
board = { 1 : ' ', 2 : ' ', 3: ' ',
   4 : ' ', 5 : ' ', 6 : ' ', 
   7 : ' ', 8 : ' ', 9 : ' ‘}
Bước 2 - Khởi tạo các biến

Tiếp theo, chúng tôi sẽ khởi tạo các biến mà chúng tôi sẽ sử dụng để theo dõi chi tiết người chơi và trạng thái trò chơi trong chương trình.

# Initialize variables
count = 0			# counter to track number of filled slots
winner = False		        # boolean to check if anyone won
play = True			# boolen to check if the game should continue
tie = False			# boolean to check if there is a tie
curr_player = ''		# variable to store current player identifier
player_details = []		# list to store player identifier and marker
Bước 3 - Vòng lặp trò chơi

Bước tiếp theo của chúng tôi sẽ là bắt đầu vòng lặp trò chơi. Chúng tôi sẽ đạt được điều đó bằng cách sử dụng D, đó là một vòng lặp mãi mãi. Toàn bộ logic trò chơi của chúng tôi sẽ tồn tại bên trong vòng lặp này.d, which is a forever loop. Our entire game logic will exist inside this loop.

while play:
	[execute game code]

Chúng tôi sẽ sử dụng một số chức năng trợ giúp để thực hiện các hành động lặp đi lặp lại trong chương trình. Các chức năng này sẽ được viết bên ngoài vòng lặp trò chơi của chúng tôi và được gọi bên trong vòng lặp trò chơi.

Bước 4-Tạo một chức năng để in bảng Tic-Tac-Toe & NBSP;

Chúng tôi sẽ tạo một hàm trợ giúp gọi là print_board [] để in từ điển bảng đại diện cho bảng tic-tac-toe trong ma trận 3 x 3. Chúng tôi sẽ sử dụng một vòng lặp for-in để lặp qua từ điển và in bảng khi cần thiết. Trong khi sử dụng chức năng in bên trong vòng lặp For, chúng ta có thể truy cập các khóa từ điển của chúng ta với biến vòng lặp I và các giá trị tương ứng bằng cách sử dụng các khóa này [cú pháp: board [i]]. Chúng tôi sử dụng kết thúc = Thời gian & NBSP; tham số để in bảng theo chiều ngang. Để chia nó thành ma trận 3 x 3, chúng tôi sẽ sử dụng điều kiện IF kiểm tra từng khóa trong từ điển. Nếu khóa hóa ra là bội số của 3, chúng tôi sẽ sử dụng in [] để buộc phím tiếp theo được in trong một dòng mới.print_board[] to print the board dictionary representing the Tic-Tac-Toe board in a 3 X 3 matrix. We will use a for-in loop to iterate through the dictionary and print the board as needed. While using the print function inside the for loop, we can access the keys of our dictionary with the loop variable i and the corresponding values using these keys [syntax: board[i]]. We make use of the end=“ “  parameter to print the board horizontally. To break it into a 3 X 3 matrix, we will use an if condition that checks each key in the dictionary. If the key turns out to be a multiple of 3, we use print[] to force the next key to be printed in a new line.

def printBoard[]:
  for i in board:
   print[ i, ':', board[i], ' ', end=""]
   if i%3 == 0:
    print[]

Chúng tôi sẽ bắt đầu trò chơi bằng cách gọi hàm print_board [] từ vòng lặp trò chơi.print_board[] function from the game loop.

while play:
  print_board[]
Bước 5 - Chấp nhận đầu vào từ người chơi của chúng tôi

Chúng tôi sẽ sử dụng các định danh ‘A‘ và ‘B‘ để xác định hai người chơi và ‘x‘ và ‘O‘ là các dấu hiệu tương ứng. Các điểm đánh dấu sẽ được sử dụng để đánh dấu vị trí được chọn bởi người chơi trên bảng trò chơi. Chúng tôi sẽ tạo một hàm trợ giúp khác có tên là get_player_details []. Hàm này sẽ chấp nhận định danh của trình phát hiện tại như một tham số và trả về danh sách chứa định danh và điểm đánh dấu cho trình phát khác. & NBSP; & NBSP;A‘ and ‘B‘ to identify the two players and ‘X‘ and ‘O‘ as the corresponding markers. The markers will be used to mark the slot chosen by the players on the game board. We will create another helper function called get_player_details[]. This function will accept the identifier of the current player as a parameter and return a list containing the identifier and marker for the other player.  

def get_player_details[curr_player]:
  if curr_player == 'A':
   return ['B','O']
  else:
   return ['A','X']

Sau khi in bảng trò chơi, chúng tôi sẽ gọi chức năng get_player_details [] để có được chi tiết cho trình phát đầu tiên. Lưu ý rằng biến Curr_Player là trống tại thời điểm này. Do đó, hàm sẽ trả về ‘và‘ x ‘làm giá trị danh sách. Do đó, người chơi đầu tiên sẽ được gán định danh ‘A‘ và điểm đánh dấu ‘x. Biến Curr_Player biến cũng sẽ được khởi tạo với phần tử đầu tiên từ danh sách để hàm có thể trả về các giá trị chính xác khi được gọi lại.get_player_details[] function to get the details for the first player. Note that the curr_player variable is blank at this point. As a result, the function will return ‘A‘ and ‘X‘ as list values. The first player will thus be assigned the identifier ‘A‘ and the marker ‘X‘. The variable curr_player will also be initialized with the first element from the list so that the function can return the correct values when invoked again.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
0

Tiếp theo, chúng tôi sẽ nhắc người chơi đầu tiên chọn một số [khe] trên bảng cho điểm đánh dấu của họ.number[slot] on the board for their marker.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
1

Chúng tôi đang sử dụng hàm input [] để lưu trữ đầu vào từ trình phát trong một biến có tên là input_slot. Vì hàm input [] luôn trả về một chuỗi, chúng tôi sẽ phải chuyển đổi đầu vào của người dùng thành một số bằng hàm int [] và sau đó lưu trữ nó trong biến input_slot của chúng tôi.input[] function to store the input from the player in a variable called input_slot. Since input[] function always returns a string, we will have to convert the user input to a number using the int[] function and then store it in our input_slot variable.

Bước 6 - Đặt một điểm đánh dấu vào vị trí mong muốn

Trong bước này, chúng tôi sẽ cập nhật bảng với đầu vào của người dùng. & Nbsp; & nbsp;

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
2

Để đạt được điều này, chúng tôi sẽ tạo một hàm trợ giúp gọi là insert_input []. Hàm này có hai tham số: slot_num là khe được chọn bởi người chơi và điểm đánh dấu của người chơi.insert_input[]. This function takes two parameters: slot_num which is the slot chosen by the player, and the player’s marker.

Chức năng này cũng kiểm tra xem khe cắm mong muốn có sẵn và sử dụng vòng lặp thời gian để tiếp tục nhắc nhở cho đến khi người dùng chọn một khe cắm có sẵn. Slot_num tương ứng với các khóa trong từ điển đại diện cho bảng. Một khe được coi là có sẵn nếu giá trị tương ứng trong từ điển bảng trống. Giá trị được đặt thành điểm đánh dấu sau khi tìm thấy một khe có sẵn.while loop to keep prompting until the user chooses an available slot. The slot_num corresponds to the keys in the dictionary representing the board. A slot is deemed available if the corresponding value in the board dictionary is empty. The value is set to the marker once an available slot is found.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
3Bước 7 - Win Logic

Sau mỗi đầu vào của người dùng, chúng tôi sẽ kiểm tra xem có người chơi nào không. Người chiến thắng biến sẽ được đặt thành đúng hay sai tùy thuộc vào việc có ai thắng hay không.winner will be set to True or False depending on whether or not anyone wins.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
4

Để đạt được điều này, chúng tôi sẽ sử dụng hàm trợ giúp gọi là win_game []. Hàm chấp nhận hai tham số: điểm đánh dấu và định danh của người chơi.win_game[]. The function accepts two parameters: the player’s marker and identifier.

Chúng tôi sẽ sử dụng chức năng để kiểm tra tất cả các kết hợp chiến thắng có thể có thể [theo chiều dọc, chiều ngang và đường chéo] và xác định xem các giá trị [điểm đánh dấu] có giống nhau không [tất cả ‘X X hoặc tất cả‘ O,]. Để tìm một sự kết hợp chiến thắng trước tiên, chúng tôi sẽ in bảng để hiển thị bố cục cuối cùng. Sau đó, chúng tôi sẽ sử dụng hàm Sleep [] từ mô -đun thời gian để tạm dừng trong một giây và sau đó in người thắng.values [markers] are the same [either all ‘X’s or all ‘O’s]. On finding a winning combination we will first print the board to show the final layout. We will then use the sleep[] function from the time module to pause for a second and then print who won.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
5Bước 8 - Tie Logic

Tiếp theo chúng tôi sẽ thêm logic để xử lý một chiếc cà vạt. Trò chơi được buộc khi không có người chiến thắng ngay cả sau khi tất cả các điểm trên bảng đã được lấp đầy. Để xác định một chiếc cà vạt, chúng tôi sẽ phải theo dõi số lượng điểm được lấp đầy. Chúng tôi sẽ sử dụng một biến được gọi là đếm cho việc này và tăng giá trị của nó thêm 1 sau mỗi lần di chuyển. & Nbsp;count for this and increment its value by 1 after each move. 

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
6

Chúng tôi kiểm tra số lượng biến và người chiến thắng sau mỗi lần di chuyển. Nếu tất cả các vị trí đã được lấp đầy [đếm = 9] và không có người chiến thắng [người chiến thắng = sai], chúng tôi tuyên bố trò chơi là một sự ràng buộc. Sau đó, chúng tôi đặt cà vạt biến thành True và in bảng để hiển thị bố cục cuối cùng.count and winner after each move. If all the slots have been filled [count = 9] and there is no winner [winner = False], we declare the game to be a tie. We then set the variable tie to True and print the board to show the final layout.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
7Bước 9 - Chơi lại logic

Khi chúng tôi có một người chiến thắng hoặc một trò chơi gắn liền, chúng ta nên kiểm tra xem người chơi có muốn chơi lại không. Trò chơi biến sẽ được đặt thành đúng hay sai tùy thuộc vào việc người chơi có chọn chơi lại hay không. Các biến số và các biến người chơi hiện tại sẽ được đặt lại nếu người chơi chọn chơi lại.play will be set to True or False depending on whether or not the players choose to play again. The count and current player variables will be reset if the players choose to play again.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
8

Chúng tôi sẽ tạo một hàm trợ giúp gọi là play_again [] để nắm bắt đầu vào của người dùng và thực hiện hành động. Khi được thực hiện, chức năng này sẽ hỏi người chơi nếu họ muốn chơi lại. Nếu người chơi muốn chơi lại, bảng được đặt lại và chức năng trả về đúng. Mặt khác, chức năng in một thông báo ‘Cảm ơn bạn và trả về sai.play_again[] to capture user input and take action. When executed, this function will ask the player if they want to play again. If the players wish to play again, the board is reset and the function returns True. Otherwise, the function prints a ‘Thank You‘ message and returns False.

board=['0','1','2','3','4','5','6','7','8'] 
empty = [0,1,2,3,4,5,6,7,8]
9Mã hoàn chỉnh

Dưới đây là mã hoàn chỉnh cho trò chơi Tic-Tac-Toe hai người chơi. Thử cho nó một lần.

if board[position] == 'X' or board[position] == 'O': 
   correct_input = False 
if not correct_input: 
   print["Position already equipped"] 
   player_input[player]
0

Làm thế nào để bạn lập trình một tic

Các bước để xây dựng một trò chơi Python Tic Tac Toe..
Tạo cửa sổ hiển thị cho trò chơi của chúng tôi ..
Vẽ lưới trên vải nơi chúng tôi sẽ chơi tic tac toe ..
Vẽ thanh trạng thái bên dưới khung vẽ để hiển thị lượt của người chơi nào là nó và ai thắng trò chơi ..
Khi ai đó thắng trò chơi hoặc trò chơi là một trận hòa thì chúng tôi thiết lập lại trò chơi ..

Làm thế nào để bạn tạo ra noughts và chéo trong Python?

Naughts và Crosses với Python..
Bước 1: Thiết kế bảng lưới.....
Bước 2: Chọn điểm đánh dấu của mỗi người chơi.....
Bước 3: Quyết định bước đầu tiên.....
Bước 4: Quyết định nơi di chuyển điểm đánh dấu.....
Bước 5: Không gian trống cho di chuyển tiếp theo.....
Bước 6: Kiểm tra bảng đầy đủ.....
Bước 7: Bước đi tiếp theo.....
Bước 7: Người chiến thắng ..

Tôi có thể chơi tic không

Tic Tac Toe Rules Hai người chơi chơi với nhau bằng cách sử dụng bảng 3 × 3.Một người chơi sử dụng Noughts và người chơi đối phương sử dụng chéo.Người chơi đầu tiên sắp xếp 3 biểu tượng giống hệt nhau của họ [theo chiều ngang, theo chiều dọc hoặc đường chéo] chiến thắng trò chơi.Two players play against each other using a 3×3 board. One player uses noughts, and the opposing player uses crosses. The first player to align 3 of their identical symbols [horizontally, vertically, or diagonally] wins the game.

Bài Viết Liên Quan

Chủ Đề