Lập trình

Hướng dẫn code Python game rắn săn mồi với 8 bước đơn giản

Huy Erick

Trò chơi rắn săn mồi là một trong những trò chơi phổ biến và được yêu thích trên nền tảng lập trình Python. Trong bài viết này, chúng ta sẽ tìm hiểu cách lập trình...

Trò chơi rắn săn mồi là một trong những trò chơi phổ biến và được yêu thích trên nền tảng lập trình Python. Trong bài viết này, chúng ta sẽ tìm hiểu cách lập trình trò chơi rắn săn mồi với Python qua 8 bước đơn giản.

1. Phân tích trò chơi rắn săn mồi

Trước khi bắt đầu lập trình trò chơi, chúng ta cần phân tích cấu trúc và quy tắc của trò chơi rắn săn mồi. Trò chơi gồm các phần sau:

  • Ban đầu, trên màn hình sẽ hiển thị một con rắn rất nhỏ (ngắn).
  • Con rắn sẽ di chuyển và săn mồi.
  • Mỗi khi con rắn ăn được một miếng mồi, con rắn sẽ dài thêm một khúc.
  • Nếu con rắn tự cắn hoặc đâm vào biên, trò chơi sẽ kết thúc.

Từ phân tích trò chơi như trên, chúng ta sẽ thực hiện các bước sau:

  • Bước 1: Khởi tạo màn hình trò chơi.
  • Bước 2: Tạo con rắn.
  • Bước 3: Tạo chuyển động cho con rắn.
  • Bước 4: Thêm con mồi.
  • Bước 5: Tăng độ dài của con rắn khi ăn mồi.
  • Bước 6: Xử lý sự kiện rắn đâm vào biên và hiển thị thông báo.
  • Bước 7: Xử lý sự kiện con rắn cắn vào đuôi và hiển thị thông báo.
  • Bước 8: Hiển thị thông báo khi trò chơi kết thúc và hiển thị kết quả.
  • Bước 9: Ghi nhận điểm số.

2. Hướng dẫn code Python game rắn săn mồi dành cho người mới bắt đầu

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

Ở bước này, chúng ta sẽ khai báo các thư viện cần thiết cho trò chơi: pygame, sys và random. Các lệnh cụ thể như sau:

import pygame, sys, random  WHITE = (255, 255, 255) YELLOW = (255, 255, 102) BLACK = (0, 0, 0) RED = (213, 50, 80) GREEN = (0, 255, 0) BLUE = (50, 153, 213)  pygame.init() screen_width = 600 screen_height = 400 title = 'Rắn săn mồi' screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption(title)

2.2. Lập trình tạo rắn

Trong thực tế, con rắn được tạo thành từ nhiều hình vuông ghép lại với nhau. Để vẽ các hình vuông trong Pygame, chúng ta sử dụng lệnh vẽ hình chữ nhật pygame.draw.rect() với chiều dài và chiều rộng bằng nhau.

Mỗi hình vuông trong con rắn có kích thước là 10x10, nên các tọa độ của các khúc trong con rắn phải là bội của 10.

snake_block = 10 x_head = 300 y_head = 200 x_head_change = 0 y_head_change = 0 clock = pygame.time.Clock()

2.3. Tạo chuyển động của rắn

Để di chuyển rắn, chúng ta sử dụng các sự kiện phím của Pygame. Các phím mũi tên trên bàn phím sẽ tương ứng với việc di chuyển lên, xuống, trái và phải của con rắn.

Cụ thể, chúng ta sử dụng các lệnh sau:

while True:     for event in pygame.event.get():         if event.type == pygame.QUIT:             pygame.quit()             sys.exit()         if event.type == pygame.KEYDOWN:             if event.key == pygame.K_LEFT:                 x_head_change = -10                 y_head_change = 0             elif event.key == pygame.K_RIGHT:                 x_head_change = 10                 y_head_change = 0             elif event.key == pygame.K_UP:                 y_head_change = -10                 x_head_change = 0             elif event.key == pygame.K_DOWN:                 y_head_change = 10                 x_head_change = 0      screen.fill(WHITE)     x_head += x_head_change     y_head += y_head_change     pygame.display.update()     clock.tick(12)

2.4. Thêm con mồi

Con mồi sẽ xuất hiện ngẫu nhiên trên màn hình trò chơi. Do các bước di chuyển của con rắn có độ dài là 10, nên con mồi sẽ xuất hiện ở những tọa độ x và y là bội của 10.

randFoodX = random.randrange(0, screen_width - 10) surplusFoodX = randFoodX % 10 foodx = round(randFoodX - surplusFoodX) randFoodY = random.randrange(0, screen_height - 10) surplusFoodY = randFoodY % 10 foody = round(randFoodY - surplusFoodY)  pygame.draw.rect(screen, BLUE, [foodx, foody, snake_block, snake_block])

2.5. Tăng độ dài rắn khi ăn được mồi

Để tăng độ dài của rắn khi ăn được mồi, chúng ta cần khai báo một biến để lưu trữ độ dài của con rắn và một danh sách để lưu trữ tọa độ của các khúc trong con rắn.

snake_list = [] snake_length = 1  def show_snake(snake_block, snake_list):     for x in snake_list:         pygame.draw.rect(screen, BLACK, [x[0], x[1], snake_block, snake_block])  snake_head = [] snake_head.append(x_head) snake_head.append(y_head) snake_list.append(snake_head)  if len(snake_list) > snake_length:     del snake_list[0]  show_snake(snake_block, snake_list)

Nếu con rắn chạm vào con mồi, chúng ta sẽ tạo ra một con mồi mới ở vị trí ngẫu nhiên và tăng độ dài của con rắn.

if x_head == foodx and y_head == foody:     randFoodX = random.randrange(0, screen_width - 10)     surplusFoodX = randFoodX % 10     foodx = round(randFoodX - surplusFoodX)     randFoodY = random.randrange(0, screen_height - 10)     surplusFoodY = randFoodY % 10     foody = round(randFoodY - surplusFoodY)     snake_length += 1

2.6. Xử lý sự kiện rắn đâm vào biên

Để kiểm tra xem con rắn có đâm vào biên không, chúng ta sử dụng các câu lệnh sau:

if (x_head >= screen_width) or (x_head  0) or (y_head >= screen_height) or (y_head  0):     game_close = True

2.7. Xử lý sự kiện con rắn cắn vào đuôi

Khi con rắn cắn vào thân hoặc đuôi của nó, chúng ta gán biến game_close = True để dừng trò chơi.

for x in snake_list[:-1]:     if x == snake_head:         game_close = True

2.8. Hiển thị thông báo game thua và kết quả

Khi trò chơi kết thúc và hiển thị thông báo, chúng ta sẽ thực hiện các bước sau:

  • Khai báo kiểu chữ và định nghĩa hàm hiển thị thông báo.
arialFont = pygame.font.SysFont("Arial", 30)  def message(msg, color):     mesg = arialFont.render(msg, True, color)     textRect = mesg.get_rect()     textRect.center = (300, 200)     screen.blit(mesg, textRect)
  • Khai báo biến game_close để xác định trạng thái thua game.
  • Khi trò chơi kết thúc, hãy bấm phím cách để chơi lại.
game_close = False  while True:     while game_close == True:         screen.fill(BLUE)         message("Thua rồi! Bấm phím cách để chơi lại", RED)         pygame.display.update()         for event in pygame.event.get():             if event.type == pygame.QUIT:                 pygame.quit()                 sys.exit()             if event.type == pygame.KEYDOWN:                 if event.key == pygame.K_SPACE:                     game_close = False                     snake_list = []                     snake_length = 1                     x_head = 300                     y_head = 200

2.9. Ghi nhận điểm số

Ở bước cuối cùng, chúng ta sẽ lập trình để ghi nhận điểm số của người chơi và hiển thị trên màn hình. Số điểm mà người chơi đạt được chính là độ dài của con rắn.

def show_score(score):     value = arialFont.render("Điểm: " + str(score), True, BLACK)     screen.blit(value, [0, 0])

3. Lời kết

Qua bài viết này, chúng ta đã tìm hiểu chi tiết cách lập trình trò chơi rắn săn mồi bằng ngôn ngữ Python. Hy vọng rằng bạn sẽ áp dụng thành công những kiến thức này để tạo ra trò chơi rắn săn mồi riêng của mình.

Nếu bạn quan tâm đến việc học lập trình game trên Python, hãy tham khảo khóa học lập trình Python Code Combat tại ICANTECH.

Nguồn ảnh: ICANTECH.

1