아두이노 코딩-151: 게임 스페이스 1 인베이더 앱인벤터 코딩

in #kr7 years ago

noname01.png

1980년대 초반 오락기로 등장해 많은 인기를 끌었었던 스페이스 인베이더 게임을 앱 인벤터로 코딩해 보자.
스페이스 인베이더 게임의 개요는 스마트 폰 하단에 위치한 로케트를 터치하여 좌우로 드래그하면 총알이 발사되면 스마트폰 상단에 위치한 우주선을 맞춰 격추 시키는 게임이다.

noname02.png
로케트와 우주선 및 총알은 Drawing and Animation에서 ImageSprite 2개와 Ball 1개를 각각 사용하기로 한다.

Score 3은 2개의 라벨로 구성된다. Score는 내용 변동이 없는 단순히 붙박이 라벨이며 뒤따르는 점수는 블록 코딩 편집에서 변수로 처리되어 그 결과가 수시로 입력된다. 한편 RESET은 버튼이며 누르면 Score 가 0으로 설정된다.

아울러 클럭이 1개 사용되는데 이는 우주선이 한 번씩 위치를 바꾸기 위한 허용 시간이며 지금의 코딩에서는 총알의 속도를 감안하여 많은 스코어를 낼 수 있도록 3초로 설정하였다. 허용 시간을 줄이면 빨리 움직이므로 총알의 속도(Speed) 값을 올려 줄 필요가 있다.

noname03.png

로케트(rocket)와 우주선(saucer)은 인터넷에서 png 이미지 파일을 검색하여 마음에 드는 그래픽 파일을 다운하여 사용하도록 한다. 즉 png 그림 파일이 준비되면 속성 창에서 업로딩 기능을 사용하여 불러 온다.

총알은 이미지 파일이 아니면 Drawing and Animation의 Ball을 사용하여 속성 즉 반경(radius) 과 속도(Speed) 및 색상 설정을 해 주면 된다.

블록 코딩에서 퍼즐을 맞춰 보기로 한다.
스크린을 초기화함에 있어 총알은 발사 시에 볼 수 있어야 하나 스크린 초기화 시에는 거짓(false) 으로 설정하여 볼 수 없도록 한다.
noname04.png

로케트스프라이트는 드래그할 때에 X 좌표 값을 얻어낸다.
아래의 코딩에서는 로케트 스프라이트를 터치했을 때 총알 발사지점의 좌표, 가시성, 속도 및 방향을 설정한다.

noname05.png

이어서 총알 발사 후 총알이 우주선(SaucerSprite)과 부딪힐 때의 조건으로서 총알의 가시성을 즉각 OFF 함과 동시에 로케트의 X 좌표에 로케트 너비의 반만큼을 더하고 Y 좌표는 20 만큼 감한 위치를 잡아 발사 위치로 잡는다. 그리고 Score를 1점 가산한다. 아울러 Clock1에서는 우주선의 폭의 반만큼 좌우 양측경계에서 우주선까지의 거리를 감안하면 캔바스 폭에서 우주선의 폭만큼 감하면 되며 이 범위를 대상으로 우주선의 위치를 게임자가 감을 잡을 수 없도록 난수를 사용하여 설정한다.

noname06.png

마지막으로 RESET 버튼을 누르면 SCORE가 0으로 재설정된다.
블록 편집을 빠져나와 저장 후 QR 코드를 스캔하여 게임을 즐겨 보자.

Sort:  

pairplay 가 kr-dev 컨텐츠를 응원합니다! :)