Skip to content

2019 OSS 개발자 캠프에서 제작된 결과물로, 작고 귀여운 웹 디펜스 게임 입니다. 계란을 던져 다가오는 몬스터들을 물리쳐주세요!

Notifications You must be signed in to change notification settings

dhslrl321/Egg-Shooting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

본 Repository는 2019년 08월에 열린 OSS 개발자 캠프에서 제작된 결과물을 추후에 보완한 Repository 입니다.

배포 링크로 가서 게임하기

Egg Defence

계란을 던져 다가오는 몬스터들을 물리쳐주세요!

게임 플레이 사진

목차


Intro

계란 농장의 주인인 김씨. 김씨의 닭들을 잡으러 온 몬스터들에게 계란을 던져 몬스터를 쫓아주세요!

게임 설치 방법

$ 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

  • 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합니다.

Deploy

Cerberus 동작 방식

Work

  • Cerberus X 라는 언어가 Monkey X 언어와 호환 동작합니다.
  • JS에서 getElementById로 3 개의 HTML 돔 객체를 불러들입니다.
  • GameConsoleSpliter 그리고 GameCanvas가 있습니다.
  • GameConsoleSpliter 은 콘솔과 게임 캔버스를 나누는 역할을 합니다.
  • GameCanvasBBCerberusGame 객체에 의해서 Cerberus X 코드들이 실행되고 main 함수로 전달된 canvas 에 해당 코드들이 렌더링 됩니다.

배포 구조

Deploy

About

2019 OSS 개발자 캠프에서 제작된 결과물로, 작고 귀여운 웹 디펜스 게임 입니다. 계란을 던져 다가오는 몬스터들을 물리쳐주세요!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published