Bài 19: Gaming - Phần 2 - Lập trình AI bằng Python

Đăng bởi: Admin | Lượt xem: 2894 | Chuyên mục: AI


7. Tạo bot chơi Tic Tac Toe 

Tic-Tac-Toe rất quen thuộc và là một trong những trò chơi được nhiều người yêu thích. Ta hãy thử tạo trò chơi này bằng cách sử dụng thư viện easyAI trong Python.
from easyAI import TwoPlayersGame, AI_Player, Negamax
from easyAI.Player import Human_Player
Kế thừa lớp từ lớp TwoPlayerGame để xử lý tất cả các hoạt động của trò chơi
class TicTacToe_game(TwoPlayersGame):
   def __init__(self, players):
Xác định người chơi và người chơi sẽ bắt đầu trò chơi
self.players = players
self.nplayer = 1
Xác định board :
self.board = [0] * 9
Bây giờ có một số điều nhất định cần xác định như sau:
Xác định các bước di chuyển có thể
def possible_moves(self):
   return [x + 1 for x, y in enumerate(self.board) if y == 0]
Xác định bước di chuyển của một người chơi 
def make_move(self, move):
   self.board[int(move) - 1] = self.nplayer
Để tăng cường AI, hãy xác định thời điểm người chơi di chuyển :
def umake_move(self, move):
   self.board[int(move) - 1] = 0
Xác định điều kiện thua mà đối thủ có ba người trên một hàng :
def condition_for_lose(self):
   possible_combinations = [[1,2,3], [4,5,6], [7,8,9],
      [1,4,7], [2,5,8], [3,6,9], [1,5,9], [3,5,7]]
   return any([all([(self.board[z-1] == self.nopponent)
      for z in combination]) for combination in possible_combinations])
Xác định kiểm tra kết thúc trò chơi
def is_over(self):
   return (self.possible_moves() == []) or self.condition_for_lose()
Hiển thị vị trí hiện tại của người chơi trong trò chơi
def show(self):
   print('\n'+'\n'.join([' '.join([['.', 'O', 'X'][self.board[3*j + i]]
      for i in range(3)]) for j in range(3)]))
Tính điểm :
def scoring(self):
   return -100 if self.condition_for_lose() else 0
Xác định phương pháp chính để xác định thuật toán và bắt đầu trò chơi :
if __name__ == "__main__":
   algo = Negamax(7)
   TicTacToe_game([Human_Player(), AI_Player(algo)]).play()
Bạn có thể xem kết quả sau và cách chơi đơn giản của trò chơi này
. . .
. . .
. . .
Player 1 what do you play ? 1
Move #1: player 1 plays 1 :
O . .
. . .
. . .
Move #2: player 2 plays 5 :
O . .
. X .
121
. . .
Player 1 what do you play ? 3
Move #3: player 1 plays 3 :
O . O
. X .
. . .
Move #4: player 2 plays 2 :
O X O
. X .
. . .
Player 1 what do you play ? 4
Move #5: player 1 plays 4 :
O X O
O X .
. . .
Move #6: player 2 plays 8 :
O X O
O X .
. X .
Bài tiếp theo: Neural Networks >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!