[준비과정]
[소스 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() { } function loop() { }
[Run 버턴을 클릭합니다]
[설명]
18-23: 라인을 보시면, 우주선의 경우와 마찬가지로 미사일을 일정한 시간마다 동작 시키기 위해서 Repeater를 생성하고 OnInterval 함수를 연결해 주고 있습니다. 아직은 on_RepeatForMissile 함수 안에 아무것도 없기 때문에 어떤 변화도 없습니다.
18: 라인에 보시면 createRepeater 함수의 괄호 안에 2000 이 지정되어 있습니다. 우주선보다 작은 시간 마다 반복 될 것이기 때문에 미사일 처리 속도는 우주선의 처리보다 빠를 것 입니다.
[소스 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 (Keyboard.IsFire && Ship.Visible) { Missile.Left = Ship.Right; Missile.CenterY = Ship.CenterY; Missile.Visible = true; soundFire(); } } function loop() { }
[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(); } } function loop() { }
[Run 버턴을 클릭합니다]
[설명]
24: 라인에서는 미사일의 Left 속성을 한 칸 씩 앞으로 전진 시키고 있습니다.
26: 미사일이 화면 밖으로 나가면 Missile.Visible = false; 가 실행 됩니다. 이로써 23: 라인은 앞으로 더 이상 실행되지 않을 것 입니다.
28: 라인에서는 처음 보는 return 나타났습니다. return이 나타나면, 함수 밖으로 나가게 됩니다. 즉, 함수의 나머지 부분은 실행되지 않습니다.
미사일이 화면에 보이는 경우에는 23: 라인의 조건이 맞아서 24-28: 라인이 실행됩니다. 그러나, 28: 라인이 실행되면 바로 함수가 끝나기 때문에 31-37: 라인은 실행되지 않습니다.
하지만, 미사일이 보이지 않는 경우에는 31-37: 라인만 실행 될 것 입니다.
[마무리]
이로써 미사일 발사 처리까지 완료하였습니다. 새로 나타난 문법들에 유의해서 스스로 코드를 작성해 보시면서 익혀보시기 바랍니다.
아빠! 프로그래밍이 모에요? (2) | 2014.03.27 |
---|---|
슈팅게임 JetBoy #3 (0) | 2014.03.23 |
슈팅게임 JetBoy #1 (2) | 2014.03.23 |
프로그래밍 입문용 개발툴 - HelloWorld (4) | 2014.03.20 |
프로그래밍을 처음하시는 분들을 위한 동영상 강의 (0) | 2014.01.28 |