즐거운프로그래밍

[파이썬] 파이게임(pygame) 활용하기

수수께끼 고양이 2023. 10. 27. 16:35
728x90
반응형
pygame 설치 필요

pip3 install pygame

 

 

import pygame
import random

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super(Player,self).__init__()
        self.surface=pygame.Surface((75,25))
        self.surface.fill((0,0,0))
        self.rect=self.surface.get_rect()
    def update(self,key_pressed):
        if key_pressed[pygame.K_LEFT]:
            self.rect.move_ip(-5,0)
        if key_pressed[pygame.K_RIGHT]:
            self.rect.move_ip(+5,0)
        if key_pressed[pygame.K_UP]:
            self.rect.move_ip(0,-5)
        if key_pressed[pygame.K_DOWN]:
            self.rect.move_ip(0,+5)
            
        if self.rect.left<0:
            self.rect.left=0
        elif self.rect.right>640:
            self.rect.right=640
        elif self.rect.top<0:
            self.rect.top=0
        elif self.rect.bottom>480:
            self.rect.bottom=480

class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super(Enemy,self).__init__()
        self.surface=pygame.Surface((25,25))
        self.surface.fill((0,255,0))
        self.rect=self.surface.get_rect(center=(640,random.randint(0,480)))
        self.speed=random.randint(5,20)
    def update(self):
        self.rect.move_ip(-self.speed,0)
        if self.rect.right<0:
            self.kill()

pygame.init()

screen=pygame.display.set_mode((640,480))

clock=pygame.time.Clock()

ADDENEMY=pygame.USEREVENT+1
pygame.time.set_timer(ADDENEMY,250)

player=Player()
enemies=pygame.sprite.Group()

running=True
while running:
    for event in pygame.event.get(): # 윈도우 창 닫기 버튼 누르면 닫힘
        if event.type==pygame.QUIT:
            running=False
        elif event.type==pygame.KEYDOWN: 
            if event.key==pygame.K_ESCAPE: # esc 키를 누르면 종료됨
                running=False
        elif event.type==ADDENEMY:
            newEnemy=Enemy()
            enemies.add(newEnemy)
        
    key_pressed=pygame.key.get_pressed()
    player.update(key_pressed)
    enemies.update()
        
    screen.fill((255,255,255)) # R:255, G:255, B:255 = 하얀색
    
#     pygame.draw.circle(screen,(0,0,255),(320,240),50)
    
#     surface=pygame.Surface((75,25))
#     surface.fill((0,0,0)) # 0 = 검정색
#     rect=surface.get_rect()
    
    screen.blit(player.surface, player.rect)
    for enemy in enemies:
        screen.blit(enemy.surface, enemy.rect)
    
    if pygame.sprite.spritecollideany(player,enemies):
        player.kill()
        running=False
    
    pygame.display.flip()
    
    clock.tick(30)
    
pygame.quit()

 

 

 

728x90
반응형