2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료/텍스트기반SW

[파이썬] 파이게임 고양이/강아지 객체 여러마리 생성하기

원당컴1 2023. 10. 20. 09:17

2023.08.17 - [강의자료/텍스트기반SW] - [파이썬] 파이게임 객체 임의의 위치로 이동하기

이전 시간에 만든 프로젝트에서 강아지 객체를 새로 만들어 보고 임의의 위치에서 5마리 정도를 생성하여 임의의 위치로 이동하는 것을 살펴 봅니다. 

객체를 만들기 위한 이미지는 파이게임 튜토리얼(https://github.com/formazione/pygame_tutorial)에 있는 이미지를 사용하겠습니다.

 

Dog 객체생성

Dog 객체는 Cat 객체를 그대로 복사하여 이미지 읽어 오는 디렉토리만 변경 했습니다.

class Dog(Animal):
    def __init__(self,location=(0, 0),imgsize=(50,50),walkSpeed=3,jumpSpeed = 5,runSpeed = 7,changeFrame=30):
        ...


    def ordered_list_of_surfaces(self):
        if self.dir == 'W':self.flipped=True
        elif self.dir == 'E': self.flipped = False
        self.los =[]
        if self.flipped :
            self.los = [
                pygame.transform.flip(pygame.image.load(img), True, False)
                for img in glob.glob(f"dog\\{self.action}*.png")
            ]
        else :
            self.los = [
                pygame.image.load(img)
                for img in glob.glob(f"dog\\{self.action}*.png")
            ]
        print('image Loading')
        return self.los

    ...

 

Dog/Cat 객체 5개 생성

Dog/Cat 객체를 5개를 생성하여 5개가 임의의 위치로 이동하는 코드를 작성해 보겠습니다.

먼저 Dog/Cat 객체를 5개 생성할 리스트를 만듭니다.

dogcatList = []
for i in range(5): #5번 동작하면서 dog/cat 을 생성하여 dogcatList에 append
    imsiX = random.randrange(100,SCREEN_WIDTH - 100)
    imsiY = random.randrange(100, SCREEN_HEIGHT - 100)
    if i % 2 == 0: #0,2,4 에서 Cat
        dogcatList.append(Cat((imsiX,imsiY)))
    else: # 1,3 에서 Dog
        dogcatList.append(Dog((imsiX, imsiY)))

고양이 3마리와 강아지 2마리를 생성하여 dogcatList에 담았고 생성되는 위치는 임의의 위치로 정했습니다.

그 다음으로 리스트에 있는 강아지와 고양이를 임의의 방향으로 이동하는 코드를 만들어 보겠습니다.

while True:
    screen.fill((255, 255, 255))
    person.update()
    '''
    cat.action = "Walk"
    cat.dirChange()
    cat.move()
    cat.update()
    '''
    screen.blit(person.image, person.rect)
    for catdog in dogcatList:
        catdog.action = "Walk"
        catdog.dirChange()
        catdog.move()
        catdog.update()
        screen.blit(catdog.image, catdog.rect)
	...

 

실행화면

 

 

 

 

 

 

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기