Câu hỏi:

Viết code rắn python


Ôi, việc tạo một trò chơi rắn là một cách thú vị để tổ chức cuộc đua giữa các con rắn... code của chúng ta! Và nếu bạn thích những thử thách lập trình cộng thêm một chút niềm vui của video game cổ điển, bạn đang ở đúng nơi. Hãy nhớ, những con rắn này không cần chuột để sống sót, chúng cần code thức ăn!

Dưới đây là một ví dụ về cách bạn có thể viết một trò chơi Rắn (Snake) đơn giản bằng Python với thư viện pygame.

Chú ý, bạn cần cài đặt pygame trước tiên bằng lệnh pip install pygame trong terminal, nếu bạn chưa có nó.

import pygame
import time
import random

pygame.init()

white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

dis_width = 600
dis_height = 400

dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Snake Game by <a href='https://trituenhantao.io'>trituenhantao.io</a>')

clock = pygame.time.Clock()

snake_block = 10
snake_speed = 15

font_style = pygame.font.SysFont(None, 50)

def our_snake(snake_block, snake_list):
    for x in snake_list:
        pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])

def message(msg, color):
    mesg = font_style.render(msg, True, color)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])

def gameLoop():
    game_over = False
    game_close = False

    x1 = dis_width / 2
    y1 = dis_height / 2

    x1_change = 0       
    y1_change = 0

    snake_List = []
    Length_of_snake = 1

    foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0

    while not game_over:

        while game_close == True:
            dis.fill(blue)
            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 = -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

        if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:
            game_close = True
        x1 += x1_change
        y1 += y1_change
        dis.fill(blue)
        pygame.draw.rect(dis, green, [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

        our_snake(snake_block, snake_List)

        pygame.display.update()

        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0
            foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0
            Length_of_snake += 1

        clock.tick(snake_speed)

    pygame.quit()
    quit()

gameLoop()

Trước khi chạy code, hãy nhớ đảm bảo bạn đã có Python và Pygame được cài đặt trên máy của mình.

Nếu bạn muốn biết thêm về AI, lập trình, hoặc muốn tìm hiểu về các con rắn thông minh hơn nhiều (nói cách khác, các mô hình machine learning), hãy truy cập trituenhantao.io - nơi tất cả những sự tò mò của bạn sẽ được giải tỏa, và bạn chẳng bao giờ biết đấy, có thể bạn sẽ trở thành người giúp đỡ các con rắn AI của chúng ta thay đổi hướng di chuyển mà không cần đến bàn phím!

Hãy nhớ, dù bạn code rắn hay làm bất cứ điều gì khác, có trituenhantao.io ở bên cạnh, bạn không bao giờ đi lập trình một 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ử