본문 바로가기

프로그램/앱인벤터

[문제풀이]앱인벤터2 - "05. 무당벌레추적" 확장하기 P121

앱인벤터2 문제풀이 - 121페이지 "무당벌레추적" 확장하기


1. 게임이 끝났는 데도 불구하고 개구리와 진딧물이 계속 움직인다. GameOver 프로시저에서 이들의 Enabled 속성을 false로 설정하여 움직임멈추게 한다. 더불어 RestartButton.Click에서 이들 속성을 true로 바꾸어 주는 것을 잊지 말자.


  블록탭에서 움직임정지 - when RestartButton.Click doset Flog.Enabled to true 를 추가하고, to GameOver doset Flog.Enabled to falseset Aphid.Enabled to false를 추가한다. 





2. 무당벌레가 살아 있는 시간점수로 환산하여 보여주자. 레이블을 추가하고 Click1.Timer에서 증가시키면 된다. 


  디자이너탭에서 Label을 2개추가 하여 "점수 : 0" 을 만든다. 이 때 레이아웃 VerticalArrangement를 적절히 활용한다.




  블록탭에서 when Clock1.Timer doset 점수레이블.Text to 점수레이블.Text + "10"를 추가하고, to GameOver doset Clock1.TimerEnabled to false 를 추가하고, when RestartButton.Click doset 점수레이블.Text to "0"set Clock1.TimerEnabled to true 를 추가한다.






3. 에너지 막대의 폭을 2로 늘려 보다 잘 보이게 하자. EnergyCanvas의 Height를 2로 설정해야 하며, DrawEnergyLine 프로시저는 폭이 1인 막대를 두번 그려야 한다. 

(Tip. 이 작업에서도 프로시저를 이용한 이점이 드러난다. 프로시저를 만들지 않았다면, 같은 수정 작업을 두 군데 해야한다. 여기서는 프로시저를 사용했기 때문에 해당 프로시저만 수정하면 된다.)


  디자이너탭에서 EnergyCanvas에 Height를 2 pixel로 바꾼다.


  블록탭에서 to DrawEnergyLine do 프로시저에 call EnergyCanvas.DrawLiney1=1(white) / y2=1(red) 로 값을 바꿔준다. (선을 두번 그리는 효과)






4. 자연 영상을 배경으로 사용하고 자연속에서 나는 소리를 활용하여 분위기를 띄워보자. 또한 에너지 수준이 낮아지면 경고음을 들려주자.


  디자이너탭에서 Sound1에 음원파일 3개(배경음악, 종료음, 경고음)를 등록하고, Source는 무엇이든 상관없다. Minimumlnterval(ms) : 10으로 설정한다. 이 때 FieldCanvas에 BackgroundImage도 하나 적합한 것을 추가해둔다. 

Beepsounds.m4abiosound.m4a





블록탭에서 자연속에서 나는 소리를 활용하기 위해, 배경음악을 삽입하려는데, 배경음악은 Screen1.Initialize를 사용하면 된다. 방법은 when Screen1.Initialize doset Sound1.Source to "biosound.m4a(배경음악)"과 call Sound1.Play를 함께 끼워주면 된다.



다른 것들도 마찬가지다. 개구리한테 잡아먹힐 때는, when Ladybug.CollidedWith do의 두번째 if 블럭의 get other = Flog 밑에 thenGameOver 밑에 set Sound1.Source to "frog.wav"와 call Sound1.Play를 함께 끼워주면 된다.



에너지 수준이 낮아지면 경고음은 to UpdateLadybug do의 에너지가 -1개씩 감소하는 부분 밑에 if then 블럭을 추가하여 get global energy = "100" set Sound1.Source to "Beepsounds.m4a"와 call Sound1.Play를 처리해주면 된다.



또한, 다시하기버튼을 눌렀을 때도 배경음악이 나와야 하므로, when RestartButton.Click do 에도 set Sound1.Source to "biosound.m4a(배경음악)"과 call Sound1.Play를 함께 삽입한다.





5. 시간이 지남에 따라 게임이 점점 어려워지도록 설계해 보자. 예를 들어 Frog 컴포넌트의 Speed 속성을 높이고 Interval을 낮추어 개구리가 더 빨리 움직이게 한다. 


블록탭에서 to UpdateFrog do 블록내에  set Flog.Speed toFlog.Speed + "0.05" 와 set Flog.Interval toFlog.Interval - "0.5"를 추가해주고, 


다시하기 버튼 클릭시 시간간격과 속도를 초기화 해야하므로, when RestartButton.Click doset Flog.Interval to "10", set Flog.Speed to "1"로 초기화 해둔다.




6. 무당벌레가 잡아먹히면 화면에서 사라지는 것이 자연스럽다. 잡아먹히면 사라지고, 굶어죽으면 죽은 채로 남아 있도록 수정한다. 


블록탭에서 먼저 무당 벌레가 사라지게 하는 방법은 개구리가 무당벌레를 먹었을 때다. 따라서, 개구리와 무당벌레의 충돌 이벤트를 처리하는 when Ladybug.CollidedWith do 에서  set Ladybug.Visible to false 로 하면 화면상에 무당벌레가 사라지게 된다.


그리고, 다시하기 버튼 클릭시 화면에 무당벌레를 나타나게 하기위해서 when RestartButton.Click do 블럭에 set Ladybug.Visible to true 를 추가하면 된다.

 굶어죽은 경우는 원래 있던 블럭으로 자동 처리되므로 별도로 설정할 필요가 없는데, 이유는 visible로 안보이게, 보이게 이벤트 처리만 해주면 두가지 효과를 볼 수 있기 때문이다.




7. 무당벌레, 진딧물, 개구리를 자신의 취향에 맞게 바꾸어 보자. 예를 들어 호빗, 범고래, 마법사 등으로 바꾸어 보자.


디자이너탭에서 이미지를 3개를 png파일로 만들어 교체해 주면 간단하다.








<출처 :  David Wolber, Hal Abelson, Ellen Spertus, Liz Looney(2015), 

앱인벤터2(초판)(오일석, 이진선 번역, 서울:한빛아카데미. (원서는 2014년에 출판)>