30/05/2026

30/05/2026
30/05/2026
pythonimport pygame
import random
# Khởi tạo Pygame
pygame.init()
# Cài đặt màn hình
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Game Bắn Súng Đơn Giản")
# Màu sắc
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
# Tốc độ
clock = pygame.time.Clock()
# Tải hoặc tạo font chữ
font = pygame.font.SysFont(None, 36)
# Người chơi (Khẩu súng ở dưới màn hình)
player_size = 50
player_x = WIDTH // 2 - player_size // 2
player_y = HEIGHT - player_size - 10
player_speed = 5
# Đạn
bullets = []
bullet_speed = 7
# Mục tiêu
target_size = 40
target_x = random.randint(0, WIDTH - target_size)
target_y = 50
target_speed = 3
# Điểm số
score = 0
# Vòng lặp game
running = True
while running:
# Xử lý sự kiện
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Bắn đạn khi nhấn phím Space
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
bullet_x = player_x + player_size // 2 - 2
bullet_y = player_y
bullets.append([bullet_x, bullet_y])
# Di chuyển người chơi
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_x > 0:
player_x -= player_speed
if keys[pygame.K_RIGHT] and player_x < WIDTH - player_size:
player_x += player_speed
# Di chuyển mục tiêu
target_y += target_speed
# Nếu mục tiêu rơi xuống chạm đáy, tạo lại ở trên cùng
if target_y > HEIGHT:
target_y = 50
target_x = random.randint(0, WIDTH - target_size)
# Di chuyển đạn
for bullet in bullets:
bullet[1] -= bullet_speed
# Xóa đạn nếu bay ra khỏi màn hình
if bullet[1] < 0:
bullets.remove(bullet)
# Kiểm tra va chạm (Đạn trúng mục tiêu)
for bullet in bullets:
if (target_x < bullet[0] < target_x + target_size) and \
(target_y < bullet[1] < target_y + target_size):
bullets.remove(bullet)
target_y = 50
target_x = random.randint(0, WIDTH - target_size)
score += 1
# Vẽ mọi thứ lên màn hình
screen.fill(BLACK) # Xóa màn hình
# Vẽ người chơi
pygame.draw.rect(screen, BLUE, (player_x, player_y, player_size, player_size))
# Vẽ mục tiêu
pygame.draw.rect(screen, RED, (target_x, target_y, target_size, target_size))
# Vẽ đạn
for bullet in bullets:
pygame.draw.rect(screen, WHITE, (bullet[0], bullet[1], 4, 10))
# Hiển thị điểm số
score_text = font.render(f"Điểm: {score}", True, WHITE)
screen.blit(score_text, (10, 10))
# Cập nhật màn hình
pygame.display.flip()
# Giới hạn 60 FPS (khung hình/giây)
clock.tick(60)
pygame.quit()
30/05/2026
1. Code cho Tâm Ngắm (Sight) hoặc Khẩu Súng
Muốn tâm ngắm di chuyển linh hoạt theo con trỏ chuột của người chơi, chúng ta dùng đoạn code sau:
Khi bấm vào lá cờ xanh (Bắt đầu).
Liên tục di chuyển tới vị trí của con trỏ chuột.
Đoạn mã
Khi [lá cờ xanh] được nhấp
Liên tục
Đi tới [con trỏ chuột v]
2. Code cho Viên Đạn (Bullet)
Viên đạn sẽ xuất phát từ tâm ngắm/khẩu súng khi người chơi nhấn chuột và bay thẳng lên phía trên.
Bước 1: Khi bắt đầu game, ẩn viên đạn đi.
Bước 2: Tạo bản sao khi nhấn chuột.
Đoạn mã
Khi [lá cờ xanh] được nhấp
Ẩn
Liên tục
Nếu <chuột được nhấn?> thì
Tạo bản sao của [bản thân tôi v]
Đợi (0.3) giây // Để tránh đạn bay ra quá dày
Hết
Bước 3: Lập trình cho bản sao của viên đạn (khi bay):
Đoạn mã
Khi tôi bắt đầu là một bản sao
Đi tới [Tâm ngắm v] // Xuất phát từ tâm ngắm
Hiện
Lặp lại cho đến khi <chạm [cạnh v]?>
Thay đổi y một lượng (15) // Đạn bay thẳng lên trên
Hết
Xóa bản sao này
3. Code cho Mục Tiêu (Target - ví dụ: Quả bóng)
Mục tiêu sẽ xuất hiện ngẫu nhiên từ phía trên, rơi xuống. Nếu bị đạn bắn trúng thì biến mất và người chơi được cộng điểm.
Đoạn mã
Khi [lá cờ xanh] được nhấp
Đặt [Điểm v] thành (0)
Ẩn
Liên tục
Đợi (1) giây
Tạo bản sao của [bản thân tôi v]
Hết
Khi tôi bắt đầu là một bản sao
Đi tới vị trí ngẫu nhiên
Đặt y thành (180) // Xuất hiện ở mép trên màn hình
Hiện
Lặp lại cho đến khi <<chạm [cạnh dưới v]?> hoặc <chạm [Viên đạn v]?>>
Thay đổi y một lượng (-5) // Rơi xuống từ từ
Nếu <chạm [Viên đạn v]?> thì
Thay đổi [Điểm v] một lượng (1)
Xóa bản sao này
Hết
Hết
Xóa bản sao này
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
CÂU HỎI LIÊN QUAN
Top thành viên trả lời