icantech
Code mẫu Python
2005
10/11/2023

Hướng dẫn chi tiết cách lập trình game Tic Tac Toe trong Python

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é!

1. Phân tích trò chơi cờ caro

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:

  • Một trò chơi trên bàn cờ kích thước 3x3 giữa hai người chơi.
  • Hai người chơi, mỗi 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ờ.
  • Mục tiêu: Có được một hàng ngang, hàng dọc hoặc hàng chéo gồm 3 biểu tượng của mình trước khi đối thủ làm được điều đó.
  • Khi một người chơi đạt được điều kiện chiến thắng hoặc không còn ô trống trên bảng, trò chơi kết thúc. Nếu không người chơi nào đạt được chiến thắng, trò chơi được coi là hòa.
tro-choi-tic-tac-toe

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:

  • Khởi tạo màn hình trò chơi.
  • Vẽ các đường thẳng để tạo bàn cờ 3x3.
  • Vẽ các quân cờ X và O.
tro-choi-tic-tac-toe
  • Đánh dấu ô trên bảng với ký tự của người chơi hiện tại.
  • Kiểm tra ô trống trên bảng.
  • Kiểm tra bàn cờ còn ô trống hay không.
  • Kiểm tra chiến thắng của người chơi.

2. Hướng dẫn lập trình Game Tic Tac Toe Python đơn giản

2.1. Khởi tạo màn hình trò chơi

Để 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: 

  • Khai báo các thư viện cần thiết cho trò chơi: pygame, sys.
  • Khai báo kích thước của màn hình.
  • Định nghĩa về các màu sắc sẽ dùng trong trò chơi.
  • Khởi tạo màn hình trò chơi

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) 

2.2. Vẽ các đường thẳng để tạo bàn cờ 3x3

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():

 tro-choi-tic-tac-toe

2.3. Vẽ các quân cờ X và O

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:

  • Quân cờ X: Vẽ 2 đường thẳng xếp chéo nhau phù hợp với kích thước của ô vuông
  • Quân cờ O: Vẽ hình tròn phù hợp với kích thước ô vuông

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)

2.4. Đánh dấu ô trên bảng với ký tự của người chơi hiện tại

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

2.5. Kiểm tra ô trống trên bảng

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

2.6. Khởi tạo trò chơi

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()

3. Lời Kết

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.

Share
Tags
Code mẫu Python

Bài tương tự