본문 바로가기

코딩

파이썬으로 행맨 만들기 1 - 입력 받고 저장하기

이번 포스팅은 강의입니다!

생각해보면 제가 프로그래밍을 할 때 가장 재미있었고 시간을 많이 투자했을 때가 게임들을 만들었을 때였습니다. 아무리 알고리즘이나 라이브러리 등을 배울 때가 재미있었다고 해도 게임을 만들 때보다는 재밌지 않았거든요. 그래서 써보는 게임 프로그래밍 강의! 재미있게 봐주세요.

 

이번 강의는 따로 라이브러리는 필요하지 않아요. 게임도 터미널 안에서 할 것이기 때문에 라이브러리는 사용하지 않아요.

 

준비물: 코드 에디터, 파이썬

네, 이게 끝이에요.

 

먼저 행맨 게임이 뭔지 알아야겠죠? 행맨은 영어 단어를 맞히는 게임으로, 글자 수만큼 밑줄이 있고 알파벳에서 한 글자를 골라서 그 글자가 단어 안에 있을 때 고른 글자를 있는 대로 다 넣고 없을 땐 기회가 한번 사라지는 게임이에요. 원래는 사형장에 사형당하는 그리는데 이번 프로그램에서는 단어 선택 횟수만 표시할 거예요.

 

이제 한번 코드를 봐볼까요?

플레이어 입력 받는 함수

파이썬을 조금만 해보셨어도 이게 무슨 코드인지는 아시겠죠? 주석에 써져있는 대로 word는 게임에 쓰일 단어, opportunity는 플레이어가 알파벳을 고를 수 있는 횟수, 그리고 알파벳은 아직 입력을 못 받았으니까 빈 문자. 이렇게 3개의 중요 변수들을 지정해주었어요.

 

이제 getInput함수를 봐볼까요?

getInput함수는 이름 그대로 플레이어 입력을 받는 함수예요. global 키워드를 이용해서 함수 바깥에 있는 변수에 접근할 수 있게 해 줬습니다. 먼저 서식을 터미널에 출력해주고, 파이썬 함수인 input()으로 플레이어 입력을 쉽게 받을 수 있죠. 이제 받은 입력이 알파벳이 맞는지 아닌지 체크해볼 거예요. 여기서 저는 ord라는 파이썬 함수를 사용했는데 ord는 인수로 문자를 받은 뒤 그걸 아스키 값으로 변환해주는 함수예요.

아스키 코드표

위에 있는 아스키코드표에 나와있듯이 a에서 z는 97과 122 사이에 위치해 있어요. 그래서 만약 입력을 받았는데 그 값의 아스키 값이 97보다 작거나 122보다 크면 알파벳이 아니라고 출력한 뒤에 같은 함수를 한 번 더 실행하는 거죠. 또, 입력이 한 글자보다 길면 알파벳이 아니니까 다시 실행. 만약 입력이 알파벳이 맞다면 맨 처음에 지정한 alphabet 변수에다가 입력값을 넣어주면 되겠지요. 

 

이 코드를 실행해보면?

잘 실행이 되는게 보이시죠?

이제 입력을 받았으니 다음으론 단어 안에 알파벳이 있는지 없는지 체크해야겠죠?

그건 2편에서 해보아요.