- Bài 1: Tổng quan AI
- Bài 2: Machine Learning
- Bài 3: Chuẩn bị dữ liệu
- Bài 4: Supervised Learning: Classification phần 1
- Bài 5: Supervised Learning: Classification phần 2
- Bài 6: Supervised Learning: Regression
- Bài 7: Logic Programming
- Bài 8: Unsupervised Learning: Clustering phần 1
- Bài 9: Unsupervised Learning: Clustering phần 2
- Bài 10: Natural Language Processing
- Bài 11: NLTK Package phần 1
- Bài 12: NLTK Package phần 2
- Bài 13: Analyzing Time Series Data phần 1
- Bài 14: Analyzing Time Series Data phần 2
- Bài 15: Nhận diện giọng nói phần 1
- Bài 16: Nhận diện giọng nói - phần 2
- Bài 17: Heuristic Search
- Bài 18: Gaming - Phần 1
- Bài 19: Gaming - Phần 2
- Bài 20: Neural Networks
- Bài 21: Reinforcement Learning
- Bài 22: Thuật toán di truyền
- Bài 23: Computer Vision
- Bài 24: Deep Learning
Bài 19: Gaming - Phần 2 - Lập trình AI bằng Python
Đăng bởi: Admin | Lượt xem: 3119 | 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 .
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!
- Bài 1: Tổng quan AI
- Bài 2: Machine Learning
- Bài 3: Chuẩn bị dữ liệu
- Bài 4: Supervised Learning: Classification phần 1
- Bài 5: Supervised Learning: Classification phần 2
- Bài 6: Supervised Learning: Regression
- Bài 7: Logic Programming
- Bài 8: Unsupervised Learning: Clustering phần 1
- Bài 9: Unsupervised Learning: Clustering phần 2
- Bài 10: Natural Language Processing
- Bài 11: NLTK Package phần 1
- Bài 12: NLTK Package phần 2
- Bài 13: Analyzing Time Series Data phần 1
- Bài 14: Analyzing Time Series Data phần 2
- Bài 15: Nhận diện giọng nói phần 1
- Bài 16: Nhận diện giọng nói - phần 2
- Bài 17: Heuristic Search
- Bài 18: Gaming - Phần 1
- Bài 19: Gaming - Phần 2
- Bài 20: Neural Networks
- Bài 21: Reinforcement Learning
- Bài 22: Thuật toán di truyền
- Bài 23: Computer Vision
- Bài 24: Deep Learning