1. Giới Thiệu về Trò Chơi Rắn Săn Mồi
Trò chơi "Rắn săn mồi" (Snake Game) là một trong những trò chơi điện tử cổ điển mà hầu hết mọi người đã từng chơi, đặc biệt là trên các điện thoại di động đời đầu hoặc các máy tính cũ. Cốt truyện của trò chơi rất đơn giản: Người chơi điều khiển một con rắn di chuyển trong một không gian kín, ăn các miếng thức ăn để rắn dài ra. Tuy nhiên, có một số thử thách mà người chơi phải đối mặt, bao gồm việc không để rắn va phải tường hay chính cơ thể của nó, điều này sẽ khiến người chơi thua cuộc.
Kể từ khi ra đời vào năm 1976, trò chơi này đã trở thành một phần không thể thiếu trong kho tàng trò chơi điện tử, trải qua nhiều phiên bản và nền tảng khác nhau. Trò chơi Rắn săn mồi không chỉ là một trò chơi giải trí mà còn là một bài toán thú vị trong lập trình, nơi người lập trình có thể áp dụng các thuật toán và kỹ thuật xử lý sự kiện để tạo ra những trò chơi hấp dẫn.
2. Tạo Lập Trò Chơi Rắn Săn Mồi
Trong phần này, chúng ta sẽ học cách xây dựng trò chơi Rắn săn mồi cơ bản bằng ngôn ngữ lập trình Python. Python là một ngôn ngữ dễ học và mạnh mẽ, rất phù hợp cho những người mới bắt đầu học lập trình. Để phát triển một trò chơi như Rắn săn mồi, chúng ta cần một thư viện đồ họa để vẽ màn hình trò chơi và xử lý các sự kiện như di chuyển của rắn, việc ăn thức ăn và va chạm với các vật cản.
Trong ví dụ này, chúng ta sẽ sử dụng thư viện Pygame, một thư viện phổ biến trong việc phát triển trò chơi 2D. Pygame cung cấp các công cụ để vẽ đồ họa, xử lý âm thanh và nhập liệu từ bàn phím hoặc chuột.
3. Cài Đặt Môi Trường Phát Triển
Để bắt đầu phát triển trò chơi Rắn săn mồi, bạn cần cài đặt Python và Pygame. Các bước cài đặt như sau:
Cài đặt Python: Tải Python từ trang chủ python.org. Sau khi cài đặt, bạn có thể kiểm tra bằng cách mở Command Prompt (Windows) hoặc Terminal (Mac/Linux) và nhập lệnh:
Nếu Python đã được cài đặt thành công, bạn sẽ thấy phiên bản Python hiện tại.
Cài đặt Pygame: Mở Command Prompt hoặc Terminal và nhập lệnh sau để cài đặt Pygame:
Sau khi cài đặt xong, bạn đã sẵn sàng để viết mã.
Dưới đây là một đoạn mã cơ bản để tạo ra trò chơi Rắn săn mồi với Python và Pygame. Mã này sẽ tạo một cửa sổ trò chơi, điều khiển rắn và thu thập thức ăn.
# Cài đặt cửa sổ trò chơi
gameDisplay = pygame.display.set_mode((width, height))
pygame.display.set_caption('Rắn Săn Mồi')
# Cài đặt tốc độ trò chơi
clock = pygame.time.Clock()
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
value = score_font.render("Điểm: " + str(score), True, white)
gameDisplay.blit(value, [0, 0])
def our_snake(snake_block, snake_list):
pygame.draw.rect(gameDisplay, green, [x[0], x[1], snake_block, snake_block])
# Hàm hiển thị thông báo khi thua
mesg = font_style.render(msg, True, color)
gameDisplay.blit(mesg, [width / 6, height / 3])
# Vị trí thức ăn ngẫu nhiên
foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0
while game_close:
gameDisplay.fill(blue)
message("Bạn thua! Nhấn C để chơi lại hoặc Q để thoát", red)
your_score(Length_of_snake - 1)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block
x1_change = 0
# Kiểm tra nếu rắn chạm vào biên
if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
game_close = True
gameDisplay.fill(blue)
pygame.draw.rect(gameDisplay, white, [foodx, foody, snake_block, snake_block])
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
our_snake(snake_block, snake_List)
your_score(Length_of_snake - 1)
pygame.display.update()
# Kiểm tra va chạm với thức ăn
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0
Length_of_snake += 1
clock.tick(snake_speed)