Trò chơi ăn thiên thạch

Giải thích code:

import pygame

import random


width=800

height=600

#khởi tạo

pygame.init()

#tạo màn hình

screen= pygame.display.set_mode((width,height))

#tạo nhân vật người chơi

player=pygame.Rect(width/2,height/2,20,20) #tạo một đối tượng người chơi có chiều rộng là 20 và chiều cao là 20, đồng thời đặt đối tượng đó ở giữa màn hình.

#tiểu hành tinh

asteroids=[]

for i in range (10):

x=random.randint(0,width) ###tạo ra 10 đối tượng tiểu hành tinh, mỗi đối tượng có vị trí x và y ngẫu nhiên trong màn hình, chiều rộng và chiều cao là 50.

y=random.randint(0,height)

asteroids.append(pygame.Rect(x,y,50,50))

#nét chữ

font=pygame.font.Font(None,30)

#clock

clock=pygame.time.Clock() #tạo đối tượng đồng hồ để kiểm soát tốc độ khung hình của trò chơi.

#score

score=0

# vòng lặp trò chơi

while True: #vòng lặp trò chơi chính chạy cho đến khi người dùng đóng trò chơi.

#xử lý sự kiện

for event in pygame.event.get(): #xử lý mọi sự kiện, chẳng hạn như người dùng đóng trò chơi.

if event.type==pygame.QUIT:

pygame.quit()

sys.exit()

#cập nhập nút di chuyển

keys=pygame.key.get_pressed()

if keys[pygame.K_LEFT] or keys[pygame.K_a]:

player.x-=5

if keys[pygame.K_RIGHT] or keys[pygame.K_d]:

player.x+=5

if keys[pygame.K_UP] or keys[pygame.K_w]:

player.y-=5

if keys[pygame.K_DOWN] or keys[pygame.K_s]:

player.y+=5

#cập nhật vị trí người chơi

player.clamp_ip(pygame.Rect(0,0,width,height)) #đảm bảo rằng trình phát nằm trong ranh giới màn hình.

#cập nhật vị trí của từng tiểu hành tinh và nếu một tiểu hành tinh biến mất khỏi màn hình,

#nó sẽ được định vị lại ở đầu màn hình với vị trí x ngẫu nhiên.

for asteroid in asteroids:

asteroid.y+=5

if asteroid.y>height:

asteroid.y=0

asteroid.x=random.randint(0,width)

#kiểm tra va chạm

#kiểm tra va chạm giữa người chơi và từng tiểu hành tinh và nếu va chạm xảy ra,

#điểm sẽ tăng lên và tiểu hành tinh được định vị lại ở đầu màn hình với vị trí x ngẫu nhiên.

for asteroid in asteroids:

if player.colliderect(asteroid):

score+=1

asteroid.x=random.randint(0,width)

asteroid.y=0

#vẽ đồ vật

screen.fill((0,0,0)) #lấp đầy màn hình bằng một màu đen.

for asteroid in asteroids: #vẽ từng tiểu hành tinh trên màn hình.

pygame.draw.rect(screen,(255,255,255),asteroid)

pygame.draw.rect(screen, (255,0,0), player) #vẽ người chơi trên màn hình.

#vẽ score

text=font.render(f"Score: {score}",True,(255,255,255)) #tạo một đối tượng văn bản hiển thị điểm hiện tại bằng màu trắng.

screen.blit(text, (10,10)) #vẽ đối tượng văn bản trên màn hình tại vị trí (10,10).

#cập nhật màn hình

pygame.display.flip() #cập nhật màn hình để hiển thị trình phát, tiểu hành tinh và điểm số.

#tick the clock

clock.tick(60) #kiểm soát tốc độ khung hình của trò chơi, với 60 khung hình mỗi giây.