파이썬을 기반으로 게임에서 명령어 풀(Command Pool)을 구현하면, 사용자가 입력한 명령어를 특정 함수에 연결하여 게임 내에서 동작을 수행할 수 있습니다. 이 구조는 명령어 해석기(Command Interpreter)라고도 하며, 딕셔너리 자료구조함수 참조를 활용하여 구현할 수 있습니다.

명령어 풀의 주요 원리는 명령어를 키(key)로 하고, 그에 해당하는 함수를 값(value)으로 저장하는 방식입니다. 사용자가 명령어를 입력하면 해당 키에 연결된 함수가 실행되도록 하여 다양한 동작을 제어할 수 있습니다.

게임 명령어 풀 구현 방법

  1. 명령어 사전(dictionary): 명령어와 해당 함수의 매핑을 저장하는 딕셔너리를 정의합니다.
  2. 함수 정의: 각 명령어가 실행할 함수들을 정의합니다.
  3. 명령어 처리: 사용자가 입력한 명령어를 받아 해당 함수가 호출되도록 합니다.
  4. 에러 처리: 유효하지 않은 명령어를 처리할 기본적인 예외 처리를 추가합니다.

명령어 풀 예제 코드

아래 예제는 기본적인 게임 명령어 풀을 구현한 코드입니다. move, attack, defend, quit 등 몇 가지 간단한 명령어를 포함하며, 사용자가 명령어를 입력하면 해당 동작이 실행됩니다.

class Game:
    def __init__(self):
        # 명령어와 함수의 매핑
        self.commands = {
            "move": self.move,
            "attack": self.attack,
            "defend": self.defend,
            "quit": self.quit_game
        }
        self.is_running = True

    def move(self, direction):
        print(f"You move {direction}.")

    def attack(self, target):
        print(f"You attack {target}.")

    def defend(self):
        print("You defend yourself.")

    def quit_game(self):
        print("Exiting game...")
        self.is_running = False

    def execute_command(self, command_str):
        parts = command_str.split()
        if not parts:
            print("No command entered.")
            return

        command = parts[0]
        args = parts[1:]

        if command in self.commands:
            # *args로 인수들을 함수에 전달
            self.commands[command](*args)
        else:
            print(f"Unknown command: {command}")

# 예제 실행
game = Game()
while game.is_running:
    command = input("Enter command: ")
    game.execute_command(command)

코드 설명

  1. 명령어와 함수 매핑: self.commands 딕셔너리에서 명령어와 메서드의 매핑을 정의합니다. 예를 들어 "move" 명령어는 self.move 메서드에 연결됩니다.
  2. 명령어 함수들:
    • move: 이동 방향을 인수로 받아서 이동 동작을 출력합니다.
    • attack: 공격 대상을 인수로 받아서 공격 동작을 출력합니다.
    • defend: 방어 동작을 출력합니다.
    • quit_game: 게임을 종료하는 동작을 수행합니다.
  3. 명령어 실행 (execute_command): 사용자가 입력한 명령어를 처리합니다.
    • command_str을 공백 기준으로 분리하여 첫 번째 단어를 command로, 나머지 단어들을 args로 구분합니다.
    • commandself.commands 딕셔너리에 있는지 확인한 후, 존재하면 해당 함수에 *args를 전달하여 실행합니다.
    • 존재하지 않는 명령어일 경우 에러 메시지를 출력합니다.

실행 예시

아래는 프로그램 실행 예시입니다.

Enter command: move north
You move north.

Enter command: attack goblin
You attack goblin.

Enter command: defend
You defend yourself.

Enter command: quit
Exiting game...

응용 가능성

이 명령어 풀 구조는 RPG 게임, 텍스트 기반 어드벤처 게임 등에 활용될 수 있습니다. 딕셔너리를 활용하여 명령어와 동작을 확장할 수 있으며, 게임에 새로운 기능이나 명령어를 쉽게 추가할 수 있는 유연성을 제공합니다.

+ Recent posts