Կառուցեք պարզ խաղ Python-ում՝ օգտագործելով PyGame մոդուլը
Pygame-ը խաղերի մշակման լավ գրադարան է, քանի որ այն ներառում է մի շարք ներկառուցված գործիքներ և գործառույթներ, որոնք կարող են օգտագործվել տարբեր ժանրերի խաղեր ստեղծելու համար՝ պարզից մինչև բարդ: Գրադարանը ներառում է գրաֆիկա, ձայն և մուտքային մշակում, որոնք բոլորն էլ անհրաժեշտ են ցանկացած խաղի համար:
Sprites ստեղծելու և փոփոխելու ունակությունը Pygame-ի ամենաուշագրավ հնարավորություններից մեկն է: Sprites-ը գրաֆիկական առարկաներ են, որոնք պատկերում են խաղի հերոսները, առարկաները և խաղի այլ առանձնահատկությունները: Pygame-ը ներառում է ուժեղ sprite դաս, որը թույլ է տալիս ծրագրավորողին ներառել գրաֆիկա և անիմացիաներ խաղի մեջ, տեղափոխել և պտտել սփրայթները և հայտնաբերել նրանց միջև բախումները:
Pygame-ի մեկ այլ կարևոր տարր է բախման հայտնաբերումը, որը թույլ է տալիս ծրագրավորողին բացահայտել, երբ երկու խաղի օբյեկտներ են բախվում: Խաղերում դա շատ կարևոր է, քանի որ այն թույլ է տալիս օգտագործողին շփվել շրջակա միջավայրի և խաղի այլ տարրերի հետ: Pygame-ը ներառում է բախումների հայտնաբերման մեխանիզմ՝ սփրայթների և խաղի այլ տարրերի միջև բախումները հայտնաբերելու համար:
Pygame-ը ներառում է ձայնային և երաժշտական հնարավորություններ, բացի սփրայթներից և բախումների հայտնաբերումից: Սա ծրագրավորողների համար հեշտացնում է ձայնային էֆեկտներ և երաժշտություն ներառել իրենց խաղերում, ինչը կարող է զգալիորեն բարելավել խաղային փորձը:
Ընդհանուր առմամբ, Pygame-ը ուժեղ և հարմարվող գործիքակազմ է, որը կարող է օգտագործվել տարբեր խաղեր և մուլտիմեդիա հավելվածներ ստեղծելու համար: Դրա պարզ API-ն, լայն փաստաթղթերը և օգտվողների հսկայական բազան:
Խաղը, որը մենք կառուցելու ենք, պարզ 2D խաղ է, որտեղ դուք շփվում եք շրջակա միջավայրի հետ և խաղացողին տեղափոխում եք էկրանին առարկաներ բռնելու համար: Ամեն անգամ, երբ խաղացողը դիպչում է դրան, նա միավոր է վաստակում:
Սա պարզ խաղ է, բայց դրա զարգացումը ձեզ հիանալի պատկերացում կտա Pygame մոդուլի և այն մասին, թե ինչպես կարող եք օգտագործել այն ավելի առաջադեմ խաղեր ստեղծելու համար:
Սկսել
Նախքան pygame գրադարանն օգտագործելը, մենք նախ պետք է գրադարանը տեղադրենք pip-ի միջոցով:
Այնուամենայնիվ, քանի որ այն ներկառուցված չէ, մենք նախ պետք է տեղադրենք pygame գրադարանը: Դա կարելի է անել՝ օգտագործելով pip փաթեթի կառավարիչը:
Pygame գրադարանը տեղադրելու համար բացեք ձեր տերմինալը և մուտքագրեք հետևյալ հրամանը −
pip install pygame
Սա կներբեռնի և կտեղադրի pygame գրադարանը և դրա կախվածությունները: Տեղադրվելուց հետո մենք կարող ենք ներմուծել pygame-ը մեր Python կոդում՝ օգտագործելով հետևյալ հայտարարությունը -
import pygame
Պարզ խաղի կառուցում Pygame մոդուլի միջոցով
Այս հոդվածը մի փոքր տարբերվելու է մյուս հոդվածներից, քանի որ դրանում մենք կկոդավորենք ամբողջ սցենարը սկզբում արագ և հեշտ մեկնաբանություններով՝ հասկանալու համար, իսկ հետո վերջապես կբաժանենք բոլոր բաղադրիչները և այն, ինչ մենք անում ենք: Այդպես ավելի հեշտ է հասկանալ և չի խանգարում ուսուցման գործընթացին:
Ամբողջական կոդը
Օրինակ
Ահա ամբողջական կոդը −
import pygame
import random
# Initialize pygame
pygame.init()
# Set the width and height of the screen (width, height)
screen = pygame.display.set_mode((800, 600))
# Set the title of the window
pygame.display.set_caption("Catch Game")
# Set the clock
clock = pygame.time.Clock()
# Colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# Player class
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
selfelf.image = pygame.Surface([50, 50])
self.image.fill(RED)
self.rect = self.image.get_rect()
self.rect.x = 375
self.rect.y = 500
self.speed = 5
def update(self):
# Get the current key state
keys = pygame.key.get_pressed()
# Move the player
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
elif keys[pygame.K_RIGHT]:
self.rect.x += self.speed
# Object class
class Object(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.Surface([25, 25])
self.image.fill(BLUE)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(0, 750)
self.rect.y = random.randrange(-100, -40)
self.speed = random.randint(2, 8)
def update(self):
# Move the object down the screen
self.rect.y += self.speed
# If the object goes off the bottom of the screen, reset it
if self.rect.top > 600:
self.rect.x = random.randrange(0, 750)
self.rect.y = random.randrange(-100, -40)
self.speed = random.randint(2, 8)
# Create groups for all sprites and objects
all_sprites = pygame.sprite.Group()
objects = pygame.sprite.Group()
# Create the player
player = Player()
all_sprites.add(player)
# Create the objects
for i in range(10):
obj = Object()
all_sprites.add(obj)
objects.add(obj)
# Set the score
score = 0
# Set the font
font_name = pygame.font.match_font("arial")
# Function to draw text on the screen
def draw_text(surf, text, size, x, y):
font = pygame.font.Font(font_name, size)
text_surface = font.render(text, True, WHITE)
text_rect = text_surface.get_rect()
text_rect.midtop = (x, y)
surf.blit(text_surface, text_rect)
# Game loop
running = True
while running:
# Set the frame rate
clock.tick(60)
# Process events
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Update all sprites
all_sprites.update()
# Check for collisions between the player and objects
hits = pygame.sprite.spritecollide(player, objects, True)
for hit in hits:
score += 1
obj = Object()
all_sprites.add(obj)
objects.add(obj)
# Draw everything on the screen
screen.fill(BLACK)
all_sprites.draw(screen)
draw_text(screen, "Score: {}".format(score), 18, 50, 10)
# Update the screen
pygame.display.update()
Կոդի խզում
Այս կոդը Pygame խաղի հիմնական օրինակն է: Ահա կոդի յուրաքանչյուր մասի բացատրությունը −
pygame.init() - Սա սկզբնավորում է Pygame-ը:
-
screen=pygame.display.set_mode((800, 600)) - Սա ստեղծում է խաղի էկրանը 800x600 պիքսել լուծաչափով:
pygame.display.set_caption("Catch Game") − Սա սահմանում է պատուհանի վերնագիրը «Catch Game»:
clock=pygame.time.Clock() - Սա ստեղծում է Pygame ժամացույց, որն օգտագործվում է խաղի կադրերի արագությունը կարգավորելու համար:
Գույներ - Այս տողերը սահմանում են տարբեր գույների հաստատուններ, որոնք հետագայում կօգտագործվեն կոդի մեջ:
Խաղացողի դաս - Սա Pygame sprite դաս է, որը սահմանում է խաղացողի օբյեկտը: Այն ունի «թարմացում» կոչվող մեթոդ, որը կոչվում է յուրաքանչյուր շրջանակ՝ խաղացողի դիրքը թարմացնելու համար՝ հիմնվելով օգտագործողի մուտքի վրա:
Օբյեկտի դաս - Սա Pygame-ի մեկ այլ սփրայթ դաս է, որը սահմանում է այն առարկաները, որոնք խաղացողը պետք է բռնի: Այն ունի «թարմացում» կոչվող մեթոդ, որը կոչվում է յուրաքանչյուր շրջանակ՝ օբյեկտի դիրքը թարմացնելու համար:
all_sprites=pygame.sprite.Group() - Սա ստեղծում է Pygame sprite խումբ, որը կպարունակի խաղի բոլոր sprites-ները:
objects=pygame.sprite.Group() - Սա ստեղծում է Pygame sprite խումբ, որը կպարունակի բոլոր այն առարկաները, որոնք խաղացողը պետք է բռնի:
player=Player() - Սա ստեղծում է Player դասի օրինակ և ավելացնում այն all_sprites խմբին:
i-ի համար միջակայքում(10) - Սա ստեղծում է Object դասի 10 օրինակ, դրանք ավելացնում է all_sprites խմբին և ավելացնում է օբյեկտների խմբին:
-
գնահատական=0 - Սա սկզբնավորում է միավորը մինչև 0:
font_name=pygame.font.match_font("arial") - Սա սահմանում է միավորների ցուցադրման համար օգտագործվող տառատեսակը:
draw_text(surf, text, size, x, y) - Սա օգնական ֆունկցիա է, որը նկարում է տեքստը էկրանին:
Խաղի հանգույց - Սա խաղի հիմնական հանգույցն է: Այն աշխատում է այնքան ժամանակ, մինչև «վազող» փոփոխականը դրվի False-ի:
clock.tick(60) - Սա սահմանում է կադրերի արագությունը վայրկյանում 60 կադր:
pygame.event.get()-ում իրադարձության համար - Սա մշակում է Pygame-ի բոլոր իրադարձությունները, որոնք տեղի են ունենում յուրաքանչյուր կադրի ընթացքում:
all_sprites.update() - Սա կանչում է «թարմացում» մեթոդը all_sprites խմբի բոլոր սփրայթների վրա:
hits=pygame.sprite.spritecollide (player, objects, True) - Սա ստուգում է խաղացողի և առարկաների միջև բախումները: Եթե բախում է հայտնաբերվում, օբյեկտը հանվում է օբյեկտների խմբից և միավորը ավելանում է 1-ով:
screen.fill(BLACK) - Սա լրացնում է էկրանը սև գույնով:
all_sprites.draw(screen) - Սա էկրանին նկարում է all_sprites խմբի բոլոր sprites-ները:
draw_text(screen, "Score − {}".format(score), 18, 50, 10). Սա գծում է հաշիվը էկրանին:
pygame.display.update() - Սա թարմացնում է էկրանը ընթացիկ կադրի ընթացքում կատարված բոլոր փոփոխություններով:
Արդյունք
Ահա մի նմուշ արդյունք
Եզրակացություն
Pygame-ը բաց կոդով հզոր փաթեթ է Python-ում խաղեր և մուլտիմեդիա հավելվածներ ստեղծելու համար: Նրա բազմազան գործառույթներն ու գործիքները թույլ են տալիս այն օգտագործել տարբեր ժանրերի խաղեր ստեղծելու համար՝ սկսած պարզ 2D հարթակներից մինչև ավելի բարդ 3D խաղեր: Այս ձեռնարկում մենք նայեցինք, թե ինչպես օգտագործել Pygame-ը պարզ խաղ ստեղծելու համար, որտեղ խաղացողը կարող է շփվել շրջակա միջավայրի հետ, շարժվել և գրավել իրերը էկրանին:
Այս ձեռնարկից հետո դուք պետք է հասկանաք, թե ինչպես է աշխատում Pygame-ը և ինչպես այն կարող է օգտագործվել ավելի բարդ խաղեր ստեղծելու համար: Ընդհանուր առմամբ, Pygame-ը հիանալի գործիք է խաղերի մշակողների համար, ովքեր ցանկանում են կառուցել Python-ի վրա հիմնված խաղեր: