계란을 던져 다가오는 몬스터들을 물리쳐주세요!
계란 농장의 주인인 김씨. 김씨의 닭들을 잡으러 온 몬스터들에게 계란을 던져 몬스터를 쫓아주세요!
$ docker pull dhslrl321/egg-shooting:v2
$ docker run -d -p 80:80
localhost:80
로 들어가서 플레이!
- 게임 시작 전에 검정 화면을 클릭해주세요.
- 그리고 다시 화면을 클릭하면 노래가 나옵니다!
- 몬스터가 나오기 전에 마우스를 클릭해서 궤적을 예측하세요!
- 몬스터를 계란으로 맞춰 없애야합니다.
- 15마리의 몬스터를 잡으면 승리해요!
- 5번의 생명력을 잃으면 패배해요 ..
- Global하게 선언된
lifeCount
값에 따라Select
문의 statement로 들어갑니다. - Project Asset 에서 생명력 이미지를 Load합니다.
lifeCount
의 값이 5라면 5번의RectImage
를 canvas의 x, y 좌표에 따라DrawImageRect
메서드를 통해 그립니다.lifeCount
의 값이 0이 되면 게임이 종료된 것으로 보고 몬스터 객체의visible
을 false로 바꿉니다.- 그리고 gameOver 이미지를 로드하여 Canvas에 그립니다.
monster은
mojo
패키지의unit
객체를 이용합니다.unit
객체의 Image를 Project Asset에서 각기 다른 이미지로 지정합니다.- 각각의
unit
객체의 x좌표와 y 좌표를 서로 다르게 줍니다. - 서로 다른
Respawn을
위해 x좌표를 각각 다른 값을 갖습니다. - 만약 각 몬스터의 x 좌표가 캐릭터를 넘어 화면에 보이지 않는다면 몬스터를 죽이지 못한 것으로 봅니다.
- 몬스터가 죽지 않는다면
lifeCount
를 -1 하고 x, y좌표를 최초의 상태로 되돌립니다.
- 위치가 계속 바뀌어야 하는 계란은
myObject
객체로 정의합니다. - 계란의 투척 속도는 0.7로 지정합니다.
- 계란은 타원의 모양으로 현재 모양에 타원의 끝 접점에
Tan
의해 나온 값을 - 반복하여 회전하는 것 처럼 보입니다. - 회전하며
speed * cos
를 기존의x
에 추가하면서 앞으로 나아갑니다. - 회전하며
speed * sin
를 기존의y
에 추가하면서 위/아래로 움직입니다. bullet
.visible이
true
라면 다른 계란을 투적할 수 없도록 조건을 추가하였습니다.
bullet의
x와 대각선의 길이로cos
값을 구하고 x 좌표를speed * 100
에 곱하여 다음 위치로Render합니다
.bullet의
y와 대각선의 길이로sin
값을 구하고 y 좌표를speed * 100
에 곱하여 다음 위치로Render합니다
.
- Cerberus X 라는 언어가 Monkey X 언어와 호환 동작합니다.
- JS에서
getElementById
로 3 개의 HTML 돔 객체를 불러들입니다. GameConsole
과Spliter
그리고GameCanvas
가 있습니다.GameConsole
과Spliter
은 콘솔과 게임 캔버스를 나누는 역할을 합니다.GameCanvas
는BBCerberusGame
객체에 의해서 Cerberus X 코드들이 실행되고 main 함수로 전달된 canvas 에 해당 코드들이 렌더링 됩니다.