Python(2)

김건웅·2026년 1월 4일

이전에 만든 숫자맞추기 게임과 다른 기본적인 게임을 만들어봤습니다.

간단한 게임

틀잡기

  • player_1 생성 (사용자)
  • player_2 생성 (컴퓨터)
  • 각 player 스탯 dict로 만들기
  • def를 사용하여 각 player 함수 적용하기
  • while문으로 게임 진행하기

player_1 생성

먼저 사용자가 플레이할 player_1을 생성하였습니다.
dict {} 를 활용해보았고 아래와 같은 형태로 만들어보았습니다.

HP와 POWER 마지막으로 MP를 기본 스탯으로 설정해보았습니다.
해당 스탯을 사용자가 설정 할수 있는 값으로 만들기 위해 input 을 활용하여 아래와 같이 입력을 받을수 있도록 만들어보았습니다.

띄어쓰기 기준으로 각각 hp,power,mp값들을 입력 받았습니다.

player_2 생성

그 다음으로는 player_2를 생성하였고 위와 같은 방법으로 dict{} 를 사용하여 아래와 같이 생성했습니다.

해당 작업을 하다 보니 사용자가 사용자의 스탯을 너무 높게 설정할수도 있다는 생각에 직업별로 스탯들을 고정시켜놓는게 좋다라고 생각이 들어 player_1을 다시 아래와 같이 생성했습니다.

player_1 변동사항

  • 직업 추가
  • 직업별 스탯 추가
  • 직업 선택 방법

먼저 각 직업들 구상했고 아래와 같이 주석으로 작성한 후 참고했습니다.

직업별 스탯 또한 player의 항목과 똑같이 정하여 바로 적용될수 있게 구상했고 직업 선택 방법으로는 사용자가 직업의 전체단어를 입력함으로 선택하는 방법으로 구상했습니다.

먼저 직업 선택을 하기 위해서는 입력을 받아야 하니 input을 사용하여 아래와 같이 작성을 하였습니다.

질문에서 나온 단어들 중에 원하는 단어를 입력하면 선택이 되는 형태이며 'others'를 추가한 이유는 '엄마'라는 직업을 조금 히든직업 형태로 만들어보고 싶어서 작성했습니다. ^^;;

그후 입력받은 값에 대해 player_1의 스탯을 설정할수있도록 if를 사용하여 각 직업별 스탯을 설정했습니다.

이후 사용자가 공격 또는 체력회복 또는 강화 등의 선택을 하면 해당 스탯이 올라가고 상대방의 체력이 떨어지는 방식을 구상해보았고 최종으로 선택한 내용으론
공격 -> 상대방의 체력을 사용자의 POWER 스탯 만큼 감소시킨다
체력회복 -> 사용자의 MP 스탯에 따라 사용자의 HP가 추가된다
강화 -> 사용자의 MP스탯에 따라 사용자의 POWER 값이 추가된다

위와 같은 방식을 구상해서 함수를 만드는 def를 사용하여 아래와 같이 만들었습니다.
사용자의 선택이 게임 실행 과정에서 "a=input()"형태로 입력을 받을 예정이기에 a의 값에 따라 공격 또는 회복 또는 강화 로 if를 활용하여 작성했습니다.

player_2 변동사항

이후 player_2도 똑같이 행동을 선택할수 있도록 같은 함수를 적용시켰고 함수 명칭은 player_2_playing으로 지정했습니다.

다만 사용자는 선택을 할수 있으나 컴퓨터는 제가 컴퓨터가 스스로 선택을 해야한다라는 생각에 완벽하게 습득하지 못해서 공부중에 있는 random을 사용하여 1 또는 2 또는 3에서 랜덤하게 값을 설정 하도록 했습니다.


게임 playing

이 부분에서는 사용자 또는 상대방의 HP가 0 이 되거나 음수가 될때 까지 반복을 해야하기 때문에 while을 사용하여 반복되도록 했습니다

먼저 "playing = True" 라는 것으로 whlie문이 반복할수 있게 세팅하였고 앞에서 스탯 설정을 위한 사용자의 행동 선택을 a=input()으로 입력을 받았습니다.

그후 사용자의 HP값이 0이거나 음수일때, player_2의 HP값이 0이거나 음수일때 을 출력값을 설정하기 위해 if를 사용하여 사용자가 졌다, 또는 사용자가 이겼다 등을 print로 출력을 했습니다. 또한 두 player의 단 한명만이라도 HP값이 0이거나 음수가 되면 게임은 종료되어야하여 "playing = False"를 사용하여 while문이 끝나도록 했습니다.

두 player의 HP값이 모두 양수 일때는 아직 playing중인 것이므로 if문 마지막에 else : 을 사용하였고 else : 안에는 위에서 설정했던 각 player의 함수를 추가했습니다.
이때 player_2는 사용자가 지정할수 없고 랜덤하게 선택이 되어야 하므로 random과 randint를 사용하여 아래와 같이 추가했습니다.

단 반복 실행한 결과 player_2의 HP값이 0이거나 음수가되었음에도 한번더 추가로 사용자의 선택을 입력하라는 내용이 나왔고 해당 문제를 생각하다보니 else에서 나온 값이 거기서 바로 끝나지 않고 whlie문으로 다시 들어갔다가 선택을 입력 받고 각 player들의 HP 확인해 player_2의 HP 값이 음수인것을 확인을 하고나서야 playing = Fale 가 적용되었습니다.

해결책으로 else : 안에 if문을 아래와 같이 추가하였습니다.

마무리

다시 실행했을때 정상적으로 작동을 하여 전체적인 코드는 아래와 같습니다.



약간의 조잡한 게임을 만들어 보았으며 이번에 사용한 방식(dict,while,if등등)은 게임이 아니더라도 해당 방식을 사용하면 조금 더 다양한 출력을 만들어 낼수 있겠다라는 생각이 들었습니다.
게임으로만 예를 들면 게임 실행 부분과 직업 선택 부분은 다른 부분으로 되어있기 때문에 추후에 추가하고 싶은 직업은 편하게 추가하고 dict만 작성하면 플레이를 할수있을꺼 같다는 생각이 들었습니다.

소소하지만 해당 파일은 저장해두었다가 stage1, stage2,..형식으로 만들어 볼것이며 또한 추가적인 장비 습득 또는 확률적으로 선택발현 등 옵션을 추가해볼 예정입니다.

조잡했던 간단한 게임생성 글을 읽어주셔서 감사합니다.
이만 글을 마치며 더 많이 배울려고 노력하는 초보자 였습니다. ^^;;

0개의 댓글