[엔트리파이선]<9>대포 쏘기 게임 만들기

엔트리 실행창을 통한 게임을 만들어 봅시다. 그동안 '엔트리파이선'을 이용해 간단한 데이터를 다루는 것부터 입력과 출력을 활용한 게임을 만들기까지 재밌었나요. 마지막으로 엔트리파이선 장점을 활용해 재밌는 게임 만드는 법을 공유합니다.

엔트리파이선 활용, 대포 쏘기 게임 만들기
<엔트리파이선 활용, 대포 쏘기 게임 만들기>

엔트리파이선은 일반적인 텍스트언어와는 다르게 실행창 시각적 표현이 중심이 되는 언어에요. 실행창 엔트리봇을 움직이거나 모양을 바꾸는 등 다양한 시각 표현을 아주 쉽게 할 수 있죠. 여러분이 좋아하는 게임은 어떤 것이 있나요. 게임에는 다양한 장르와 종류 게임이 있어요.

이번에는 대포를 쏴서 과녁을 맞히는 게임을 만들어 봅시다. 엔트리파이선 실행창을 활용해 오브젝트가 움직이고 상호작용하는 게임을 만들면서 지금까지 우리가 배웠던 내용을 확인합시다.

대포 쏘는 게임은 일반 게임 모습이지만 고려할 요소가 많아요. 먼저 대포로 맞춰야 할 과녁이 있고 날아가는 포탄, 과녁을 맞히기 위한 각도·힘 등이 그 예시가 될 수 있습니다. 요소를 먼저 생각하고 나열해 봐요. 구성 요소가 어떤 식으로 화면에 나타나면 좋을지 고민합시다.

과녁, 각도, 포탄, 포탄이 날아가는 힘, 배경, 땅 등이 요소가 될 수 있겠네요. 구성 요소를 생각했다면 어떤 식으로 배치하고 활용할지 알고리즘을 설계합시다. 알고리즘 설계할 때 각 오브젝트별로 할 수 있지만 전체 흐름을 먼저 설계합니다.

'게임 시작 > (계속 반복하기) 각도 정하기 > 포탄 속도 정하기 > 포탄 각도 적용하기 > 포탄 이동하기'. 게임을 만들기 위한 기본 구조입니다. 각자 좋은 아이디어를 덧붙여 오른쪽에 더 추가할 사항을 작성해도 됩니다.

프로그래밍 할 때 어떤 오브젝트를 사용할지, 그것을 어떻게 배치할지 고민될 때가 많아요. 프로젝트 변수 설정과 오브젝트·명령어 구성은 [표1]과 같습니다.

[그림1] 하트(1) 오트젝트 파이선 코드
<[그림1] 하트(1) 오트젝트 파이선 코드>

포탄 역할을 하는 동그란 버튼을 프로그래밍하기 전에 [그림1]과 같이 룰렛 화살표 명령어와 과녁 역할을 하는 하트(1) 오브젝트 명령어를 살펴봅시다. 하트(1) 오브젝트는 랜덤 위치로 이동한 뒤 10초를 기다려 이동하는 것을 반복해요. 그동안 포탄 역할을 하는 동그란 버튼 오브젝트에 닿는 경우 프로젝트가 다시 실행됩니다.

[그림2] 룰렛화살표 오브젝트 파이선 코드
<[그림2] 룰렛화살표 오브젝트 파이선 코드>

[그림2]처럼 룰렛화살표 오브젝트는 'ang'라는 변수 값에 의해 회전을 하고 'v' 변수 값에 의해 크기가 변하는 것을 알 수 있어요. 룰렛 화살표 방향이 포탄이 날아가는 방향이 되고 크기가 포탄이 날아가는 속도를 뜻합니다.

[그림3] 동그란 버튼 오브젝트 파이선 코드
<[그림3] 동그란 버튼 오브젝트 파이선 코드>

동그란 버튼을 프로그래밍해서 직접 포탄을 날려볼까요. [그림3]과 같이 먼저 동그란 버튼이 날아갈 방향을 설정합시다. 키보드 방향키인 화살표 위, 아래 키를 눌렀을 때 각도가 바뀌도록 해 방향을 바꿔줍시다. 방향은 ang 변수 값을 활용해 위로 눌렸을 때는 1씩 값을 더해주고 아래로 눌렸을 때는 1씩 빼주도록 프로그래밍 합니다.

[그림4] 포탄 속도 코드
<[그림4] 포탄 속도 코드>

포탄이 날아갈 속도도 설정해야 해요. 여러가지 키보드 키를 활용할 수 있겠지만 [그림4]처럼 스페이스 키를 누르는 동안 속도가 올라가도록 프로그래밍 합시다. 방향을 설정했을 때와 같이 스페이스 키가 눌렸을 때 속도 값을 저장하는 변수 v에 값을 더하도록 해요. 포탄 값 세팅이 끝났기 때문에 오브젝트 방향을 룰렛 화살표와 같도록 설정하고, 엔터키가 눌렸을 때 v의 속도로 이동시켜요.

[그림5] while 문 추가. 왼쪽은 들여쓰기 전, 오른쪽 들여쓰기 후.
<[그림5] while 문 추가. 왼쪽은 들여쓰기 전, 오른쪽 들여쓰기 후.>

지금까지 프로그래밍이 계속해서 반복될 수 있도록 while 문을 추가해봅시다. 지금까지 짠 코드가 while 문에 묶일 수 있도록 전체를 한 번에 들여쓰기하기 위해서는 [그림5]처럼 블록처리를 한 뒤 탭(tab)키를 누르면 됩니다.

김슬기 안산선부초 교사

[엔트리파이선]<9>대포 쏘기 게임 만들기
위방향 화살표