Ինչպե՞ս տեղափոխել ձեր խաղի կերպարը Pygame-ում:
Pygame-ը հզոր գրադարան է, որը թույլ է տալիս ծրագրավորողներին ստեղծել գրավիչ 2D խաղեր՝ օգտագործելով Python ծրագրավորման լեզուն: Խաղի զարգացման հիմնարար ասպեկտներից մեկը կերպարների շարժումն է:
Այս հոդվածում մենք կսովորենք, թե ինչպես տեղափոխել ձեր խաղի կերպարը Pygame-ում: Այս հոդվածը բոլորի համար է՝ անկախ նրանից, որ դուք սկսնակ եք, թե փորձառու ծրագրավորող, և ձեզ կհամալրի գիտելիքներն ու հմտությունները, որոնք անհրաժեշտ են ձեր խաղերում կերպարների սահուն և արձագանքող շարժումներ իրականացնելու համար:
Pygame-ում խաղի կերպարները տեղափոխելու քայլեր
Ստորև ներկայացված են Pygame-ում ձեր խաղի կերպարը տեղափոխելու ամբողջական քայլերը.
Քայլ 1. Խաղի պատուհանի կարգավորում և Pygame-ի սկզբնավորում
Սկսելու համար ներմուծեք անհրաժեշտ մոդուլները՝ ներառելով ձեր կոդի սկզբում հետևյալ տողը. ներմուծեք pygame: Այնուհետև նախաստորագրեք Pygame-ը` զանգահարելով pygame.init(): Հաջորդը, կարգավորեք խաղի պատուհանը՝ սահմանելով լայնությունը և բարձրությունը՝ օգտագործելով s_width և s_height փոփոխականները: Ստեղծեք խաղի պատուհանը՝ օգտագործելով pygame.display.set_mode((s_width, s_height)) և սահմանեք պատուհանի ցանկալի անվանումը՝ օգտագործելով pygame.display.set_caption ("Ձեր խաղի պատուհանի վերնագիրը"):
Շարահյուսություն
import pygame
pygame.init()
s_width, s_height = 800, 600
screen = pygame.display.set_mode((s_width, s_height))
pygame.display.set_caption("Your Game Window Title")
Քայլ 2. Նիշերի պատկերի բեռնում և կերպարի դիրքի սահմանում
Ներբեռնեք պատկերի ֆայլը ձեր խաղի կերպարի համար՝ օգտագործելով char_img=pygame.image.load("character.png"): Ստեղծեք ուղղանկյուն օբյեկտ՝ կերպարի չափերը ներկայացնելու համար՝ զանգահարելով char_rect=char_img.get_rect(): Նիշը խաղի պատուհանի կենտրոնում տեղադրելու համար ուղղանկյունի կենտրոնը սահմանեք՝ օգտագործելով char_rect.center=(s_width/2, s_height/2):
Շարահյուսություն
char_img = pygame.image.load("character.png")
char_rect = char_img.get_rect()
char_rect.center = (s_width // 2, s_height // 2)
Քայլ 3. Նիշերի շարժման համար օգտագործողի մուտքի կառավարում
Խաղի հանգույցի ներսում առբերեք սեղմված ստեղների ցանկը՝ օգտագործելով ստեղները=pygame.key.get_pressed(): Ստուգեք ստեղների ցանկը՝ որոշելու համար, թե որ ստեղները սեղմված են: Օրինակ՝ ձախ սլաքի ստեղնը սեղմելիս նիշը ձախ տեղափոխելու համար օգտագործեք հետևյալ պայմանը. if keys[pygame.K_LEFT]. char_rect.x −= move_speed: Նմանապես, ստուգեք այլ սլաքների ստեղները՝ տարբեր ուղղություններով նիշերի շարժումը կարգավորելու համար:
Շարահյուսություն
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
char_rect.x -= movement_speed
if keys[pygame.K_RIGHT]:
char_rect.x += movement_speed
if keys[pygame.K_UP]:
char_rect.y -= movement_speed
if keys[pygame.K_DOWN]:
char_rect.y += movement_speed
Քայլ 4. Էկրանի թարմացում
Օգտագործողի մուտքագրումը մշակելուց հետո անհրաժեշտ է թարմացնել էկրանը՝ փոփոխություններն արտացոլելու համար: Սկսեք մաքրելով էկրանը՝ օգտագործելով screen.fill((255, 255, 255))՝ այն սպիտակ ֆոնով լցնելու համար: Այնուհետև, նիշերի պատկերը էկրանին դրեք իր ընթացիկ դիրքում՝ օգտագործելով screen.blit(char_img, char_rect): Վերջապես, թարմացրեք ամբողջ էկրանը pygame.display.flip(-ի) միջոցով կատարված փոփոխություններով։
Շարահյուսություն
screen.fill((255, 255, 255))
screen.blit(char_img, char_rect)
pygame.display.flip()
Քայլ 5. Իրադարձությունների կառավարում և խաղի հանգույցի վերահսկում
Ապահովելու համար, որ խաղի պատուհանը բաց կմնա այնքան ժամանակ, մինչև օգտագործողը որոշի փակել այն, ներառեք իրադարձությունների մշակումը խաղի օղակում: Կրկնել pygame.event.get()-ում իրադարձությունների համար օգտագործվող իրադարձությունների ցանկի միջոցով: Ստուգեք, արդյոք միջոցառման տեսակը pygame.QUIT է, ինչը ցույց է տալիս, որ օգտվողը ցանկանում է փակել պատուհանը: Եթե այս պայմանը բավարարված է, սահմանեք գործարկում=False՝ խաղի հանգույցից դուրս գալու և խաղից դուրս գալու համար:
Շարահյուսություն
screen.fill((255, 255, 255))
screen.blit(char_img, char_rect)
pygame.display.flip()
Քայլ 6. Ժամացույցի ավելացում և կադրերի ցանկալի արագության կարգավորում
Ձեր խաղի կադրերի արագությունը կառավարելու համար ստեղծեք ժամացույցի օբյեկտ՝ օգտագործելով clock=pygame.time.Clock(): Նշեք ցանկալի կադրերի արագությունը՝ FPS-ին համապատասխան արժեք դնելով: Խաղի հանգույցի ներսում զանգահարեք clock.tick(FPS)՝ կադրերի արագությունը կարգավորելու համար:
Շարահյուսություն
screen.fill((255, 255, 255))
screen.blit(char_img, char_rect)
pygame.display.flip()
Օրինակ 1. Հիմնական Նիշերի շարժում՝ օգտագործելով pygame
#import the pygame and keyboard
import pygame
import keyboard
# Initialize Pygame
pygame.init()
# Set up the game window
s_width, s_height = 800, 600
screen = pygame.display.set_mode((s_width, s_height))
pygame.display.set_caption("Example to move character")
# Load the character image
char_img = pygame.image.load("tplogo.png")
char_rect = char_img.get_rect()
char_rect.center = (s_width // 2, s_height // 2)
# Set up the clock
clock = pygame.time.Clock()
FPS = 60
# Set the game loop
running = True
while running:
dt = clock.tick(FPS) / 1000.0
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if keyboard.is_pressed('left'):
char_rect.x -= 5
if keyboard.is_pressed('right'):
char_rect.x += 5
if keyboard.is_pressed('up'):
char_rect.y -= 5
if keyboard.is_pressed('down'):
char_rect.y += 5
# Update the screen
screen.fill((255, 255, 255))
screen.blit(char_img, char_rect)
pygame.display.flip()
# Quit the game
pygame.quit()
Արդյունք
Օրինակ 2. Ցանցի վրա հիմնված շարժում՝ օգտագործելով pygame
image
char_img = pygame.image.load("tplogo.png")
char_rect = char_img.get_rect()
char_rect.center = (s_width // 2, s_height // 2)
# Set up the clock
clock = pygame.time.Clock()
FPS = 60
# Define grid size and movement speed
grid_size = 100
movement_speed = 5
# Set the game loop
running = True
while running:
dt = clock.tick(FPS) / 1000.0
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if keyboard.is_pressed('left'):
char_rect.x -= movement_speed * dt
if keyboard.is_pressed('right'):
char_rect.x += movement_speed * dt
if keyboard.is_pressed('up'):
char_rect.y -= movement_speed * dt
if keyboard.is_pressed('down'):
char_rect.y += movement_speed * dt
# Snap the character to the nearest grid position
char_rect.x = round(char_rect.x / grid_size) * grid_size
char_rect.y = round(char_rect.y / grid_size) * grid_size
# Update the screen
screen.fill((255, 255, 255))
screen.blit(char_img, char_rect)
pygame.display.flip()
# Quit the game
pygame.quit()
Արդյունք
Օրինակ 3. սահուն ռոտացիա և նիշերի շրջում
Այս օրինակում կերպարի պատկերը (tplogo.png) սկզբնապես բեռնված է և կենտրոնացած է խաղի պատուհանի վրա: Պատկերն այնուհետև սահուն պտտվում է՝ մեծացնելով պտտման անկյունը՝ ելնելով պտտման արագությունից: Հորիզոնական շրջադարձային էֆեկտին հասնելու համար պտտվող պատկերը շրջվում է՝ օգտագործելով pygame.transform.flip() ֆունկցիան True-ով որպես հորիզոնական շրջվող առաջին արգումենտ:
import pygame
# Initialize Pygame
pygame.init()
# Set up the game window
s_width, s_height = 800, 600
screen = pygame.display.set_mode((s_width, s_height))
pygame.display.set_caption("Smooth Rotation Example")
# Load the character image
char_img = pygame.image.load("tplogo.png")
char_rect = char_img.get_rect()
char_rect.center = (s_width // 2, s_height // 2)
# Set up the clock
clock = pygame.time.Clock()
FPS = 60
# Define rotation angle and speed
rotation_angle = 0
rotation_speed = 2
# Set the game loop
running = True
while running:
dt = clock.tick(FPS) / 1000.0
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Rotate the image
rotation_angle += rotation_speed * dt
rotated_image = pygame.transform.rotate(char_img, rotation_angle)
# Flip the image horizontally
flipped_image = pygame.transform.flip(rotated_image, True, False)
# Update the screen
screen.fill((255, 255, 255))
screen.blit(flipped_image, flipped_image.get_rect(center=char_rect.center))
pygame.display.flip()
# Quit the game
pygame.quit()
Արդյունք
Եզրակացություն
Հետևելով հոդվածում տրված քայլերին, դուք կարող եք հաջողությամբ տեղափոխել ձեր խաղի կերպարը Pygame: Խաղի պատուհանի, կերպարների պատկերի, օգտատիրոջ մուտքագրման, իրադարձությունների մշակման և ժամացույցի վերահսկման ներդրումը կապահովի կերպարների սահուն շարժումը ձեր խաղում: