[준비과정]
[소스 1]
Ship.Visible = true; Ship.Left = 0; Ship.Top = 0; Ship.Start(); var repeaterForShip = createRepeater( 5000 ); repeaterForShip.OnInterval = on_RepeatForShip; function on_RepeatForShip() { if (Keyboard.IsUp) Ship.Top = Ship.Top - 1; if (Keyboard.IsDown) Ship.Top = Ship.Top + 1; if (Ship.Top < 0) Ship.Top = 0; if (Ship.Bottom > Screen.Bottom) Ship.Bottom = Screen.Bottom; } var repeaterForMissile = createRepeater( 2000 ); repeaterForMissile.OnInterval = on_RepeatForMissile; function on_RepeatForMissile() { if (Missile.Visible) { Missile.Left = Missile.Left + 1; if (Missile.IsOutOfScreen) Missile.Visible = false; return; } if (Keyboard.IsFire && Ship.Visible) { Missile.Left = Ship.Right; Missile.CenterY = Ship.CenterY; Missile.Visible = true; soundFire(); } } Asteroids.Start(); var repeaterForAsteroids = createRepeater( 4000 ); repeaterForAsteroids.OnInterval = on_RepeatForAsteroids; function on_RepeatForAsteroids() { Asteroids.Move( 1 ); } function loop() { }
[Run 버턴을 클릭합니다]
[설명]
40-48: 라인이 추가되었습니다. 방식은 동일하기 때문에 특징적인 부분만 설명을 하도록 하겠습니다.
40: 라인에서는 혹성들을 관리하는 콤포넌트인 Asteroids의 애니메이션 동작을 시작하도록 합니다. 화면에 혹성이 나타나면 빙글 빙글 돌게 됩니다.
47: 라인에서는 Repeater에 지정 된 시간마다 한 칸 씩 화면에 보이는 혹성들을 앞으로 이동하게 합니다.
[소스 2]
Ship.Visible = true; Ship.Left = 0; Ship.Top = 0; Ship.Start(); var repeaterForShip = createRepeater( 5000 ); repeaterForShip.OnInterval = on_RepeatForShip; function on_RepeatForShip() { if (Keyboard.IsUp) Ship.Top = Ship.Top - 1; if (Keyboard.IsDown) Ship.Top = Ship.Top + 1; if (Ship.Top < 0) Ship.Top = 0; if (Ship.Bottom > Screen.Bottom) Ship.Bottom = Screen.Bottom; } var repeaterForMissile = createRepeater( 2000 ); repeaterForMissile.OnInterval = on_RepeatForMissile; function on_RepeatForMissile() { if (Missile.Visible) { Missile.Left = Missile.Left + 1; if (Missile.IsOutOfScreen) Missile.Visible = false; return; } if (Keyboard.IsFire && Ship.Visible) { Missile.Left = Ship.Right; Missile.CenterY = Ship.CenterY; Missile.Visible = true; soundFire(); } } Asteroids.Start(); var repeaterForAsteroids = createRepeater( 4000 ); repeaterForAsteroids.OnInterval = on_RepeatForAsteroids; function on_RepeatForAsteroids() { Asteroids.Move( 1 ); if (Asteroids.CheckCollision(Missile)) { Missile.Visible = false; soundBoom(); } if (Asteroids.CheckCollision(Ship)) { Ship.Visible = false; soundBoom(); } } function loop() { }
[Run 버턴을 클릭합니다]
[설명]
새로 추가 된 코드 위주로 설명 드리겠습니다.
49: 라인에 보시면 if 문의 괄호 안에 Asteroids.CheckCollision(Missile) 라고 되어 있습니다. 혹성 중에 하나라도 미사일과 부디치면 괄호 안이 true가 됩니다. 그러면 50-51: 라인이 실행 됩니다. 또한, 충동이 있다면 혹성이 그 자리에 서서 폭발하도록 콤포넌트 내부에서 자동으로 처리해 줍니다.
50: 라인에서는 미사일의 Visible 속성을 false로 변경합니다. 이제 미사일은 화면에 보이지 않게 됩니다.
51: 라인에서는 폭발음을 출력합니다. soundBoom 함수도 JetBoy 프로젝트에서만 제공됩니다.
54: 라인에서는 우주선과 혹성 중에 하나가 부디치면 같은 동작을 하게 됩니다. 이번에는 우주선을 보이지 않도록 하고, 폭발음을 출력합니다.
우주선이 보이지 않으면 게임은 종료되며, 다시 시작하실려면 Run 버텅을 다시 클릭하시면 됩니다.
[소스 3]
Ship.Visible = true; Ship.Left = 0; Ship.Top = 0; Ship.Start(); var repeaterForShip = createRepeater( 5000 ); repeaterForShip.OnInterval = on_RepeatForShip; function on_RepeatForShip() { if (Keyboard.IsUp) Ship.Top = Ship.Top - 1; if (Keyboard.IsDown) Ship.Top = Ship.Top + 1; if (Ship.Top < 0) Ship.Top = 0; if (Ship.Bottom > Screen.Bottom) Ship.Bottom = Screen.Bottom; } var repeaterForMissile = createRepeater( 2000 ); repeaterForMissile.OnInterval = on_RepeatForMissile; function on_RepeatForMissile() { if (Missile.Visible) { Missile.Left = Missile.Left + 1; if (Missile.IsOutOfScreen) Missile.Visible = false; return; } if (Keyboard.IsFire && Ship.Visible) { Missile.Left = Ship.Right; Missile.CenterY = Ship.CenterY; Missile.Visible = true; soundFire(); } } Asteroids.Start(); var repeaterForAsteroids = createRepeater( 4000 ); repeaterForAsteroids.OnInterval = on_RepeatForAsteroids; function on_RepeatForAsteroids() { Asteroids.Move( 1 ); if (Asteroids.CheckCollision(Missile)) { Missile.Visible = false; soundBoom(); } if (Asteroids.CheckCollision(Ship)) { Ship.Visible = false; soundBoom(); } } function shutdown() { Asteroids.Stop(); } function loop() { }
[Run 버턴을 클릭합니다]
[설명]
76-78: 라인이 추가 되었습니다.
76: 라인에 보시면 함수의 이름이 shutdown으로 되어 있습니다. 이 함수는 Stop 버턴이 눌리거나 프로그램이 종료 되었을 때 실행 됩니다. Run 버턴을 클릭하셔도 일단 실행 중에 있었다면, shutdown 함수가 실행 된 이후에 프로그램이 실행 됩니다.
77: 라인은 프로그램이 종료하기 전에 혹성들의 애니메이션 동작을 멈추고, 혹성을 화면에서 사라지도록 합니다.
[마무리]
이로써 JetBoy 게임을 함께 만들어 보았습니다. 프로그래밍 자체가 익숙하지 않으신 분들은 외워서라도 지금까지의 코드를 스스로 작성 할 수 있을 때까지 반복하시길 권합니다. 기본적인 것들이 몸에 배어서 자연스럽게 코드를 작성 할 수 있게되면 앞으로 공부가 보다 쉽고 효율적으로 진행 될 수 있습니다.
cocos2d-x 시작하기 (0) | 2014.04.07 |
---|---|
아빠! 프로그래밍이 모에요? (2) | 2014.03.27 |
슈팅게임 JetBoy #2 (0) | 2014.03.23 |
슈팅게임 JetBoy #1 (2) | 2014.03.23 |
프로그래밍 입문용 개발툴 - HelloWorld (4) | 2014.03.20 |