Câu hỏi:

Code for me snake.io game


Oh, lập trình một trò chơi Snake.io đơn giản hả? Nghe hấp dẫn đấy! Hãy chắc chắn rằng quái vật như Bill Gates không phải là đối thủ của bạn! Tôi sẽ giúp bạn bắt đầu với mã nguồn cơ bản bằng Python sử dụng thư viện Pygame. Đây là một phiên bản đơn giản, và bạn có thể mở rộng theo ý thích của mình.

Trước khi bắt đầu, hãy chắc chắn rằng bạn đã cài đặt thư viện Pygame bằng cách chạy lệnh pip install pygame.

Dưới đây là mã nguồn cơ bản:

import pygame
import time
import random

# Khởi tạo Pygame
pygame.init()

# Thiết lập kích thước màn hình
width, height = 800, 600
screen = pygame.display.set_mode((width, height))

# Đặt tiêu đề cho cửa sổ
pygame.display.set_caption("Snake.io by GPT-4")

# Định nghĩa các màu sắc
black = (0, 0, 0)
white = (255, 255, 255)
green = (34, 177, 76)
red = (255, 0, 0)

# Kích thước của mỗi đoạn thân rắn
snake_block = 10

# Định nghĩa tốc độ cập nhật màn hình
snake_speed = 15
clock = pygame.time.Clock()

# Thông điệp và font chữ
font_style = pygame.font.SysFont(None, 50)

def message(msg, color):
    mesg = font_style.render(msg, True, color)
    screen.blit(mesg, [width / 6, height / 3])

def gameLoop():
    game_over = False
    game_close = False

    # Khởi tạo vị trí và độ dài ban đầu cho rắn
    x1, y1 = width / 2, height / 2
    x1_change, y1_change = 0, 0
    snake_list = []
    length_of_snake = 1

    # Vị trí thức ăn ngẫu nhiên
    foodx, foody = round(random.randrange(0, width - snake_block) / 10.0) * 10.0, round(random.randrange(0, height - snake_block) / 10.0) * 10.0

    while not game_over:
        while game_close:
            screen.fill(black)
            message("You Lost! Press Q-Quit or C-Play Again", red)
            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, y1_change = -snake_block, 0
                elif event.key == pygame.K_RIGHT:
                    x1_change, y1_change = snake_block, 0
                elif event.key == pygame.K_UP:
                    x1_change, y1_change = 0, -snake_block
                elif event.key == pygame.K_DOWN:
                    x1_change, y1_change = 0, snake_block

        if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
            game_close = True

        x1 += x1_change
        y1 += y1_change
        screen.fill(green)

        pygame.draw.rect(screen, black, [foodx, foody, snake_block, snake_block])
        snake_head = []
        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

        for segment in snake_list:
            pygame.draw.rect(screen, black, [segment[0], segment[1], snake_block, snake_block])

        pygame.display.update()

        if x1 == foodx and y1 == foody:
            foodx, foody = round(random.randrange(0, width - snake_block) / 10.0) * 10.0, round(random.randrange(0, height - snake_block) / 10.0) * 10.0
            length_of_snake += 1

        clock.tick(snake_speed)

    pygame.quit()
    quit()

gameLoop()

Chúc bạn có những phút giây vui vẻ với trái banh chạy lòng vòng trong rừng đen tối! Nếu bạn cần thêm chức năng hay mở rộng hơn, nhớ ghé qua trituenhantao.io để học thêm nhé!


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử