Nhà sáng tạo
Nguyễn Minh Phương
Session 389 - Học phần 4 Bài học : Buổi 5 - TRÒ CHƠI RẮN SĂN MỒI (PHẦN 1)
Giới thiệu sản phẩm
Tìm hiểu chủ đề: Các trò chơi kinh điển phần 1
Kiến thức, khái niệm: Tìm hiểu về game Snake game, lên kịch bản, thiết kế thuật toán về Trò chơi rắn săn mồi
Dự án lên kịch bản trò chơi rắn săn mồi: Xây dựng kịch bản và thiết kế nhân vật rắn săn mồi kèm khu vực di chuyển
import pygame
import random
pygame.init()
WIDTH, HEIGHT = 600, 400
BLOCK = 20
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
snake = [(140,100), (120, 100), (100, 100)]
direction = 'RIGHT'
# Tạo biến thức ăn với tọa đô ngẫu nhiên
food_x = random.randint(0, (WIDTH - BLOCK) // BLOCK) * BLOCK
food_y = random.randint(0, (HEIGHT - BLOCK) // BLOCK) * BLOCK
food = (food_x, food_y)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
# Nếu nhấn phím phải thì direction là 'RIGHT', nhấn phím trái thì direction là 'LEFT';Nếu nhấn phím lên thì direction là 'UP', nhấn phím xuống thì direction là 'DOWN'
if event.key == pygame.K_RIGHT:
direction = 'RIGHT'
elif event.key == pygame.K_LEFT:
direction = 'LEFT'
elif event.key == pygame.K_UP:
direction = 'UP'
elif event.key == pygame.K_DOWN:
direction = 'DOWN'
# Đặt x,y lần lượt là tọa độ của đầu rắn
head_x, head_y = snake[0]
if direction == 'RIGHT':
head_x += BLOCK
elif direction == 'LEFT':
head_x -= BLOCK
elif direction == 'UP':
head_y -= BLOCK
elif direction == 'DOWN':
head_y += BLOCK
snake.insert(0, (head_x, head_y))
snake.pop()
if head_x < 0 or head_x >= WIDTH or head_y < 0 or head_y >= HEIGHT:
running = False
if (head_x, head_y) == food:
food_x = random.randint(0, (WIDTH - BLOCK) // BLOCK) * BLOCK
food_y = random.randint(0, (HEIGHT - BLOCK) // BLOCK) * BLOCK
food = (food_x, food_y)
screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 0, 0), (*food, BLOCK, BLOCK))
for part in snake:
pygame.draw.rect(screen, (0, 255, 0), (*part, BLOCK, BLOCK))
pygame.display.flip()
clock.tick(10)
pygame.quit()
Kiến thức, khái niệm: Tìm hiểu về game Snake game, lên kịch bản, thiết kế thuật toán về Trò chơi rắn săn mồi
Dự án lên kịch bản trò chơi rắn săn mồi: Xây dựng kịch bản và thiết kế nhân vật rắn săn mồi kèm khu vực di chuyển
import pygame
import random
pygame.init()
WIDTH, HEIGHT = 600, 400
BLOCK = 20
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
snake = [(140,100), (120, 100), (100, 100)]
direction = 'RIGHT'
# Tạo biến thức ăn với tọa đô ngẫu nhiên
food_x = random.randint(0, (WIDTH - BLOCK) // BLOCK) * BLOCK
food_y = random.randint(0, (HEIGHT - BLOCK) // BLOCK) * BLOCK
food = (food_x, food_y)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
# Nếu nhấn phím phải thì direction là 'RIGHT', nhấn phím trái thì direction là 'LEFT';Nếu nhấn phím lên thì direction là 'UP', nhấn phím xuống thì direction là 'DOWN'
if event.key == pygame.K_RIGHT:
direction = 'RIGHT'
elif event.key == pygame.K_LEFT:
direction = 'LEFT'
elif event.key == pygame.K_UP:
direction = 'UP'
elif event.key == pygame.K_DOWN:
direction = 'DOWN'
# Đặt x,y lần lượt là tọa độ của đầu rắn
head_x, head_y = snake[0]
if direction == 'RIGHT':
head_x += BLOCK
elif direction == 'LEFT':
head_x -= BLOCK
elif direction == 'UP':
head_y -= BLOCK
elif direction == 'DOWN':
head_y += BLOCK
snake.insert(0, (head_x, head_y))
snake.pop()
if head_x < 0 or head_x >= WIDTH or head_y < 0 or head_y >= HEIGHT:
running = False
if (head_x, head_y) == food:
food_x = random.randint(0, (WIDTH - BLOCK) // BLOCK) * BLOCK
food_y = random.randint(0, (HEIGHT - BLOCK) // BLOCK) * BLOCK
food = (food_x, food_y)
screen.fill((0, 0, 0))
pygame.draw.rect(screen, (255, 0, 0), (*food, BLOCK, BLOCK))
for part in snake:
pygame.draw.rect(screen, (0, 255, 0), (*part, BLOCK, BLOCK))
pygame.display.flip()
clock.tick(10)
pygame.quit()
Hình ảnh sản phẩm

Đăng nhập để tham gia bình luận