게임에 적을 포함시키는 것은 플레이어에게 흥미진진하고 도전적인 경험을 제공하는 데 중요한 요소입니다. 적들은 방해물이자 적대자 역할을 하며 게임의 흥미를 높여줍니다. 파이썬 아케이드 라이브러리는 게임에 적을 통합할 수 있는 간단한 솔루션을 제공합니다.
간단한 게임 만들기
원활하고 성공적인 경험을 위해서는 시스템에 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 레이블이 붙은 텍스트 객체를 활용할 수 있습니다.
적의 체력 포인트를 통합하면 플레이어에게 난이도 및 전략적 고려 요소가 추가될 수 있습니다. 표시된 체력 값은 시각적으로 확인할 수 있으며 플레이어는 상대의 남은 힘을 모니터링 할 수 있습니다.
체력 표시기를 표시하거나 적의 체력이 고갈되었을 때 패배 기준을 설정하는 등 추가적인 논리적 구조와 그래픽 요소를 통합하여 코드를 더욱 향상시킬 수 있습니다.
적 생성 모범 사례
게임의 적을 제작할 때 플레이어가 흥미롭고 도전적인 전투를 경험할 수 있도록 특정 모범 사례를 준수하는 것이 중요합니다.
다양한 속성
속도, 크기, 생명력, 공격력 등 적 개체 간에 다양한 특성을 구현하는 것은 흥미롭고 역동적인 게임 경험을 유지하는 데 필수적입니다. 이렇게 적의 속성이 다양해지면 플레이어가 전술을 수정해야 하는 도전 과제가 생겨 전반적인 리플레이 가치가 향상됩니다.
고유 행동
게임플레이 메커니즘의 복잡성을 높이고 플레이어에게 도전적인 경험을 제공하려면 각 유형의 적에게 고유한 행동 패턴을 부여하는 것이 중요합니다. 어떤 적들은 뚜렷한 궤적을 따라 움직이는 반면, 어떤 적들은 더 복잡하거나 산발적인 움직임을 보일 수 있습니다. 난이도를 더욱 높이려면 적의 행동을 더욱 직관적이고 예측할 수 없게 만드는 고급 적 AI 알고리즘을 통합하는 것을 고려하세요.
체력 포인트(HP)
적의 체력 시스템을 구현하여 진행 상황과 회복력에 대한 감각을 제공해야 합니다. 이렇게 하면 적들이 여러 번의 공격을 견뎌내고 정복할 수 있습니다. 다양한 적 유형에 다양한 수준의 체력을 할당함으로써 도전의 계층 구조를 확립하여 플레이어가 공격의 우선 순위를 정하고 계획하도록 유도할 수 있습니다.
적으로 게임을 더 재미있게 만들기
게임에 적을 포함하면 플레이어가 자신의 능력을 개발하도록 장려하는 도전을 제공함으로써 전반적인 게임 경험에 크게 기여할 수 있습니다. 이러한 적들은 기본적인 장애물부터 인공 지능으로 제어되는 고급 적까지 다양합니다. 적을 효과적으로 구현하면 플레이어에게 더욱 매력적이고 만족스러운 경험을 제공할 수 있습니다.