Chắc hẳn các bạn đã quen thuộc với game Tic Tac Toe hay còn được biết đến với tên gọi cờ caro. Trong bài viết này, ICANTECH sẽ hướng dẫn bạn cách lập trình game Tic Tac Toe Python cực đơn giản. Cùng theo dõi nhé!
Trước khi lập trình game cờ caro trong Python hãy cùng ICANTECH phân tích trò chơi này:
Với cách phân tích như vậy, chúng ta cần thực hiện các bước sau:
Để tạo game cờ caro chúng ta cần khởi tạo màn hình trò chơi theo lần lượt các bước như sau:
import pygame, sys
pygame.init()
WIDTH = 300
HEIGHT = 300
LINE_WIDTH = 7
BOARD_ROWS = 3
BOARD_COLS = 3
SQUARE_SIZE = 100
CIRCLE_RADIUS = 30
CIRCLE_WIDTH = 7
CROSS_WIDTH = 12
SPACE = 27
RED = (255, 0, 0)
BG_COLOR = (28, 170, 156)
LINE_COLOR = (23, 145, 135)
CIRCLE_COLOR = (239, 231, 200)
CROSS_COLOR = (66, 66, 66)
Để khởi tạo chương trình pygame, ICANTECH sẽ thêm thông số kích thước màn hình, tiêu đề trò chơi bằng cách sử dụng câu lệnh sau:
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Tic Tac Toe')
screen.fill(BG_COLOR)
Tiếp theo, ICANTECH sẽ tiến hành tạo bàn cờ với kích thước 3x3 bằng cách vẽ 2 đường thẳng dọc và 2 đường thẳng ngang trên màn hình để tạo ra một bàn cờ có kích thước 3x3.
def draw_lines():
# Horizontal lines
pygame.draw.line(screen, LINE_COLOR, (0, SQUARE_SIZE), (WIDTH, SQUARE_SIZE), LINE_WIDTH)
pygame.draw.line(screen, LINE_COLOR, (0, 2 * SQUARE_SIZE), (WIDTH, 2 * SQUARE_SIZE), LINE_WIDTH)
# Vertical lines
pygame.draw.line(screen, LINE_COLOR, (SQUARE_SIZE, 0), (SQUARE_SIZE, HEIGHT), LINE_WIDTH)
pygame.draw.line(screen, LINE_COLOR, (2 * SQUARE_SIZE, 0), (2 * SQUARE_SIZE, HEIGHT), LINE_WIDTH)
board = [[0 for i in range(BOARD_COLS)] for j in range(BOARD_ROWS)]
Thêm hình ảnh kết quả:
draw_lines():
Sau khi đã tạo bàn cờ thành công, tiếp theo ICANTECH sẽ lần lượt tạo hai quân cờ X và O như sau:
def draw_figures():
for row in range(BOARD_ROWS):
for col in range(BOARD_COLS):
if board[row][col] == 1:
pygame.draw.line(screen, CROSS_COLOR, (col * SQUARE_SIZE + SPACE, row * SQUARE_SIZE + SQUARE_SIZE - SPACE), (col * SQUARE_SIZE + SQUARE_SIZE - SPACE, row * SQUARE_SIZE + SPACE), CROSS_WIDTH)
pygame.draw.line(screen, CROSS_COLOR, (col * SQUARE_SIZE + SPACE, row * SQUARE_SIZE + SPACE), (col * SQUARE_SIZE + SQUARE_SIZE - SPACE, row * SQUARE_SIZE + SQUARE_SIZE - SPACE), CROSS_WIDTH)
elif board[row][col] == 2:
pygame.draw.circle(screen, CIRCLE_COLOR, (int(col * SQUARE_SIZE + SQUARE_SIZE // 2), int(row * SQUARE_SIZE + SQUARE_SIZE // 2)), CIRCLE_RADIUS, CIRCLE_WIDTH)
Do “Tic-Tac-Toe” là trò chơi 2 người chơi lần lượt đánh dấu X và O vào các ô trống trên bàn cờ nên cần xác định được biểu tượng X hay O sẽ được vẽ tiếp theo.
def mark_square(row, col, player):
board[row][col] = player
Tiếp theo, ICANTECH lần lượt Kiểm tra ô trống trên bàn cờ. Nếu còn thì trả về giá trị False, nếu không còn trả về giá trị True.
def available_square(row, col):
if board[row][col] == 0:
return True
Trước khi bắt đầu chơi, bạn cần chạy hàm vẽ bàn cờ, xác định người chơi đi trước sẽ vẽ biểu tượng X hay O.
draw_lines()
player = 1
game_over = False
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN and not game_over:
mouseX = event.pos[0] # x
mouseY = event.pos[1] # y
clicked_row = int(mouseY // SQUARE_SIZE)
clicked_col = int(mouseX // SQUARE_SIZE)
if available_square(clicked_row, clicked_col):
mark_square(clicked_row, clicked_col, player)
draw_figures()
player = player % 2 + 1
pygame.display.update()
Như vậy, ICANTECH đã hướng dẫn bạn chi tiết cách lập trình game Tic Tac Toe Python. Hi vọng bạn có thể ứng dụng các kiến thức ở trên để tự lập trình trò chơi của riêng mình. Chúc các bạn thành công!
Nếu bạn đang quan tâm hay thích thú với lập trình game trên python. Thì hãy tham khảo ngay khóa học lập trình Python Code Combat của ICANTECH nhé!
Nguồn ảnh: ICANTECH.