게임에 적을 포함시키는 것은 플레이어에게 흥미진진하고 도전적인 경험을 제공하는 데 중요한 요소입니다. 적들은 방해물이자 적대자 역할을 하며 게임의 흥미를 높여줍니다. 파이썬 아케이드 라이브러리는 게임에 적을 통합할 수 있는 간단한 솔루션을 제공합니다.

간단한 게임 만들기

원활하고 성공적인 경험을 위해서는 시스템에 Pip이 설치되어 있는지 확인하고, 설치되어 있지 않다면 다음 명령을 사용하여 즉시 설치해야 합니다: “`bash !pip 설치 아케이드==0.25.0 “` Pip이 제대로 설치되었는지 확인한 후 Arcade에서 제공하는 스크립트를 실행하여 PyCharm과 가상 환경 간의 통신을 설정할 수 있습니다.

 pip install arcade 

화살표 키를 사용하여 플레이어의 아바타를 좌우로 이동할 수 있는 간단한 게임을 제작하여 개발을 시작합니다.

이 출판물에 사용된 코드는 앞서 언급한 GitHub 저장소를 통해 액세스할 수 있으며, MIT 라이선스 조건에 따라 무료로 사용할 수 있습니다.

 import arcade

# Window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Player attributes
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = width // 2

    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color.BLUE)

    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_x -= PLAYER_SPEED
        elif key == arcade.key.RIGHT:
            self.player_x += PLAYER_SPEED

    def update(self, delta_time):
        pass

def main():
    window = GameWindow(SCREEN_WIDTH, SCREEN_HEIGHT)
    arcade.run()

if __name__ == "__main__":
    main()

간단한 적 만들기

접촉 시 플레이어가 사망하는 적을 구현하려면 다른 원형 물체를 디스플레이에 도입해야 합니다. 이는 on\_draw 함수 내에서 적의 원을 묘사하고 업데이트 절차에서 pygame.sprite 라이브러리 또는 원 간의 충돌을 결정하는 유사한 수단을 활용하여 플레이어의 원에 대한 근접성을 확인하여 수행 할 수 있습니다.

 # Add to GameWindow class

class GameWindow(arcade.Window):
    # ...

    def __init__(self, width, height):
        # ...

        # Enemy attributes
        self.enemy_x = width // 2
        self.enemy_y = height - PLAYER_RADIUS
        self.enemy_radius = 20

    def on_draw(self):
        # ...
        arcade.draw_circle_filled(self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color.RED)

    def update(self, delta_time):
        if self.is_collision(self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
            print("Game Over!")
    
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

적의 플레이어 따라가기

비디오 게임에서 적 캐릭터가 플레이어 캐릭터의 움직임을 따라갈 수 있도록 하는 알고리즘 구현은 많은 게이머가 공통적으로 요구하는 사항입니다. 이는 Python 프로그래밍 언어를 사용하고 “enemy\_follow\_player.py”라는 스크립트 파일을 생성하여 달성할 수 있습니다. update() 함수를 수정하려면 플레이어와 적 캐릭터의 위치 차이를 계산하고 그에 따라 후자의 위치를 업데이트하는 동시에 두 움직임 사이의 지연 또는 지연 시간도 고려해야 합니다. 개발자는 이 스크립트를 통합하여 더욱 인터랙티브하고 몰입감 있는 환경을 만들어 사용자의 게임 경험을 향상시킬 수 있습니다.

 # Add to GameWindow class

class GameWindow(arcade.Window):
    # ...

    def update(self, delta_time):
        if self.player_x < self.enemy_x:
            self.enemy_x -= PLAYER_SPEED
        elif self.player_x > self.enemy_x:
            self.enemy_x += PLAYER_SPEED

        if self.is_collision(self.player_x, self.player_y,
                            self.enemy_x, self.enemy_y,
                            PLAYER_RADIUS, ENEMY_RADIUS):
           print("Game Over!")
  
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

인간 행동과 심리학에 대한 연구는 인간의 사고 과정을 설명하기 위해 다양한 이론과 가설이 제안되면서 오랫동안 관심의 대상이 되어 왔습니다.

이 글도 확인해 보세요:  녹 매크로: 매크로를 사용하여 코드를 개선하는 방법

적 탄환 추가

탄환 형태의 발사체 엔티티를 구현하려면 현재 활성화된 모든 탄환을 추적하기 위한 컨테이너뿐만 아니라 `Bullet` 클래스를 모두 생성해야 합니다. 이는 메인 게임 루프 내에 `bullets` 변수를 정의하고 새 총알이 생성될 때 그에 따라 업데이트함으로써 달성할 수 있습니다. 두 개의 총알이 겹치지 않도록 하려면 각 프레임에서 총알의 위치도 업데이트해야 합니다. 프로그램의 다른 부분을 방해하지 않으면서 이 로직을 “bullets.py”라는 별도의 파일에 포함할 수 있습니다.

 # Add to GameWindow class

class Bullet:
    def __init__(self, x, y, radius, speed):
        self.x = x
        self.y = y
        self.radius = radius
        self.speed = speed

    def update(self):
        self.y -= self.speed

class GameWindow(arcade.Window):
    # ...

    def __init__(self, width, height):
        # ...

        # Enemy attributes
        self.bullets = []
        self.bullet_radius = 5
        self.bullet_speed = 3
        self.bullet_cooldown = 60 # Number of frames between bullet spawns
        self.bullet_timer = 0

    def on_draw(self):
        # ...
        for bullet in self.bullets:
            arcade.draw_circle_filled(bullet.x, bullet.y,
           self.bullet_radius, arcade.color.BLACK)

    def update(self, delta_time):
        # ...

        self.bullet_timer += 1
        if self.bullet_timer >= self.bullet_cooldown:
            self.bullets.append(Bullet(self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
            self.bullet_timer = 0

        for bullet in self.bullets:
            bullet.update()
            if self.is_collision(self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
            print("Game Over!")
    
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

주식 거래에서 복잡한 알고리즘과 인공 지능의 사용은 점점 더 보편화되고 있습니다. 이러한 기술 발전으로 더 빠른 의사결정, 시장 데이터의 효율적인 분석, 방대한 양의 정보를 즉각적으로 처리할 수 있게 되었습니다.

적의 체력 포인트 추가

많은 게임에서 적의 체력 포인트가 도입되면서 게임에 복잡성과 도전의식이 더해져 적들이 여러 번의 공격을 견뎌내고 패배할 수 있게 되었습니다. 이는 플레이어가 게임을 진행하면서 더 큰 성취감을 느낄 수 있도록 하여 전반적인 게임 경험을 향상시킵니다. 이 기능을 구현하려면 “health-point.py”라는 제목의 스크립트를 생성하고 아래에 설명된 필수 수정 사항을 포함하면 됩니다:

 # Window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Player attributes
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Enemy attributes
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = width // 2
        self.player_y = height // 2
        self.enemy_x = width // 2
        self.enemy_y = height - PLAYER_RADIUS
        self.enemy_health = ENEMY_HEALTH
        print(self.enemy_health)
    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x,
                                  self.player_y,
                                  PLAYER_RADIUS,
                                  arcade.color.BLUE)
        if self.enemy_health > 0:
            arcade.draw_circle_filled(self.enemy_x,
                                      self.enemy_y,
                                      ENEMY_RADIUS,
                                      arcade.color.RED)

    def update(self, delta_time):
        if self.is_collision(self.player_x, self.player_y,
                             self.enemy_x, self.enemy_y,
                             PLAYER_RADIUS, ENEMY_RADIUS):
            self.enemy_health -= 10
            print(self.enemy_health)
        

적의 시작 체력 포인트를 나타내는 ENEMY\_HEALTH 변수의 값은 100입니다. 게임 플레이 중에 플레이어가 상대를 만나면 적의 체력을 지정된 양만큼 감소시킬 수 있습니다. 업데이트된 체력 상태를 표시하기 위해 적의 현재 상태를 표시하는 self.health\_text 레이블이 붙은 텍스트 객체를 활용할 수 있습니다.

이 글도 확인해 보세요:  성능 최적화를 위한 자바스크립트 팁과 요령 10가지

적의 체력 포인트를 통합하면 플레이어에게 난이도 및 전략적 고려 요소가 추가될 수 있습니다. 표시된 체력 값은 시각적으로 확인할 수 있으며 플레이어는 상대의 남은 힘을 모니터링 할 수 있습니다.

체력 표시기를 표시하거나 적의 체력이 고갈되었을 때 패배 기준을 설정하는 등 추가적인 논리적 구조와 그래픽 요소를 통합하여 코드를 더욱 향상시킬 수 있습니다.

적 생성 모범 사례

게임의 적을 제작할 때 플레이어가 흥미롭고 도전적인 전투를 경험할 수 있도록 특정 모범 사례를 준수하는 것이 중요합니다.

다양한 속성

속도, 크기, 생명력, 공격력 등 적 개체 간에 다양한 특성을 구현하는 것은 흥미롭고 역동적인 게임 경험을 유지하는 데 필수적입니다. 이렇게 적의 속성이 다양해지면 플레이어가 전술을 수정해야 하는 도전 과제가 생겨 전반적인 리플레이 가치가 향상됩니다.

고유 행동

게임플레이 메커니즘의 복잡성을 높이고 플레이어에게 도전적인 경험을 제공하려면 각 유형의 적에게 고유한 행동 패턴을 부여하는 것이 중요합니다. 어떤 적들은 뚜렷한 궤적을 따라 움직이는 반면, 어떤 적들은 더 복잡하거나 산발적인 움직임을 보일 수 있습니다. 난이도를 더욱 높이려면 적의 행동을 더욱 직관적이고 예측할 수 없게 만드는 고급 적 AI 알고리즘을 통합하는 것을 고려하세요.

체력 포인트(HP)

적의 체력 시스템을 구현하여 진행 상황과 회복력에 대한 감각을 제공해야 합니다. 이렇게 하면 적들이 여러 번의 공격을 견뎌내고 정복할 수 있습니다. 다양한 적 유형에 다양한 수준의 체력을 할당함으로써 도전의 계층 구조를 확립하여 플레이어가 공격의 우선 순위를 정하고 계획하도록 유도할 수 있습니다.

적으로 게임을 더 재미있게 만들기

게임에 적을 포함하면 플레이어가 자신의 능력을 개발하도록 장려하는 도전을 제공함으로써 전반적인 게임 경험에 크게 기여할 수 있습니다. 이러한 적들은 기본적인 장애물부터 인공 지능으로 제어되는 고급 적까지 다양합니다. 적을 효과적으로 구현하면 플레이어에게 더욱 매력적이고 만족스러운 경험을 제공할 수 있습니다.

By 박준영

업계에서 7년간 경력을 쌓은 숙련된 iOS 개발자인 박준영님은 원활하고 매끄러운 사용자 경험을 만드는 데 전념하고 있습니다. 애플(Apple) 생태계에 능숙한 준영님은 획기적인 솔루션을 통해 지속적으로 기술 혁신의 한계를 뛰어넘고 있습니다. 소프트웨어 엔지니어링에 대한 탄탄한 지식과 세심한 접근 방식은 독자에게 실용적이면서도 세련된 콘텐츠를 제공하는 데 기여합니다.