PPT - 앱 인벤터 2

Download Report

Transcript PPT - 앱 인벤터 2

PART 1
앱 인벤터 프로젝트
03 잡아라! 두더지
두더지 잡기 게임
 추억의 게임기
 동전 넣고 하는 ‘두더지 잡기 게임기’
 구멍에서 튀어나오는 두더지 머리 맞추어 점수 얻는
게임기
 앱 인벤터로 개발해보자.
 1970년대에 고안된 스프라이트 기능
 엘렌 스퍼투스 (이 책의 저자 중 한 명)가 앱 인벤터에
ImageSprite 컴포넌트 추가함
 이 장에서는 Canvas, ImageSprite, Clock 컴포넌트 등
을 이용하여 <두더지 잡기> 앱을 개발
무엇을 개발하는가?
 <두더지 잡기> 앱에서 개발하는 기능들
 두더지가 화면의 임의 위치에 나타나면 1초에 한 번씩
이동
 두더지를 맞추면 폰이 진동하며 “맞춤” 횟수 증가
두더지는 즉시 다른 곳으로 이동
 두더지를 놓치면 “놓침” 횟수 증가
 [다시 하기] 버튼 누르면 점수가 0으로 초기화됨
무엇을 배우는가?
 <두더지 잡기> 앱을 만들며 배우는 것들
 터치하면 알아차리고, 이곳저곳 옮겨 다닐 수 있는 ImageSprite 컴포넌트
 ImageSprite가 옮겨다니는 공간을 제공하는 Canvas 컴포넌트
 스프라이트가 이동하는 시간 간격을 재는 Clock 컴포넌트
 두더지를 맞추면 폰을 진동시키는 Sound 컴포넌트
 누르면 새로운 게임이 시작되는 Button 컴포넌트
 두더지 이동과 같이 반복되는 일을 지원하는 프로시저
 난수 생성
 덧셈과 뺄셈을 계산해 주는 블록
프로젝트 생성
 프로젝트 만들고, 라이브 테스팅 연결
 프로젝트 이름은 “MoleMash”
 Screen1의 Title 속성은 “두더지 잡기”
 두더지 이미지 업로드
 http://appinventor.org/bookFiles/MoleMash/mole.png에서 두더지 이미지 다운로드
 Media 영역에서 [Upload File ..]을 클릭하여 파일을 앱 인벤터에 업로드
컴포넌트 설계
동작 관련 컴포넌트 추가하기
 절차
1. Canvas 컴포넌트 끌어오기
 Canvas1이라는 이름을 캔버스1로 바꿈
2. ImageSprite 컴포넌트 끌어오기
 이름을 두더지로 바꿈
3. Button 컴포넌트 끌어오기
 이름을 리셋버튼으로 바꿈
4. Clock 컴포넌트 끌어오기
 이름을 클록1로 바꿈
5. Sound 컴포넌트 끌어오기
 이름을 사운드1로 바꿈
레이블 컴포넌트 추가하기
 절차
1. HorizontalArrangement 컴포넌트
끌어오기
2. Label 컴포넌트 두 개를 끌어와 수평
배치 (“맞춤” 용)
3. HorizontalArrangement 컴포넌트
끌어오기
4. Label 컴포넌트 두 개를 끌어와 수평
배치 (“놓침” 용)
컴포넌트 동작 프로그래밍
 프로그래밍할 일들
 두더지를 1초에 한 번씩 화면의 임의 위치로 옮겨줌
 사용자가 화면을 터치할 때마다 두더지를 맞추었는지 확인
 결과에 따라 맞춤 또는 놓침 횟수를 갱신
 [다시 하기] 버튼을 누르면 점수를 0으로 초기화
두더지 이동시키기
 지금까지는 앱 인벤터가 제공하는 내장 프로시저 사용
 예) 폰을 떨게 하는 Vibrate 프로시저, 원을 그려주는 DrawCircle 프로시저 등
 ImageSprite를 임의 위치로 옮겨주는 내장 프로시저는 없음
프로그래머가 스스로 프로시저를 만드는 기능 활용
 해결책
 두더지이동이라는 프로시저를 작성
 1초에 한 번씩 두더지이동 프로시저를 호출함
두더지이동 프로시저 작성하기
 먼저 안드로이드 폰의 그래픽을 이해하자.
 Canvas의 x(수평) 축은 오른쪽으로 갈수록 증가, y(수평) 축은 아래로 내려갈수록 증가
 좌표 범위
• x 축은 0~캔버스1.Width-1
• y 축은 0~캔버스1.Height-1
 두더지가 Canvas 밖으로 나가지 않으려면
• x 좌표 범위는 0~캔버스1.Width-두더지.Width
• y 좌표 범위는 0~캔버스1.Height-두더지.Height
두더지이동 프로시저 작성하기
 두더지이동 프로시저 작성 절차
1. Procedure 서랍을 연다.
2. to procedure 블록 끌어오기
3. 프로시저 이름을 두더지이동으로 바꾸기
4. call 두더지.MoveTo 블록을 끌어와 두더지이동 블록의 do 홈에 끼움
5. x 좌표를 0~캔버스1.Width-두더지.Width까지 범위의 난수로 설정
6. y 좌표를 0~캔버스1.Height-두더지.Height까지 범위의 난수로 설정
앱이 시작될 때 두더지이동 호출하기
 사용자는 앱이 시작하면 화면에 무엇인가 등장하길 기대함
 Screen1.Initialize는 앱이 시작될 때 자동으로 실행되는 이벤트 처리기 블록
 여기에서 두더지이동 프로시저를 호출하여 사용자 기대에 부응해보자.
 절차
1. Screen1 서랍에서 Screen1.Initialize 블록을 끌어옴
2. Procedure 서랍을 열고 call 두더지이동 블록을 끌어와 Screen1.Initialize에 끼움
1초마다 두더지이동 호출하기
 Clock 컴포넌트에 대한 이해
 TimerEnabled 속성이 체크되어 있으면(즉 true로 설정) TimerInterval 속성 값을 주기로
사용하여 반복 실행됨
 TimerInterval은 밀리초 단위로서, 기본값은 1000(1초)으로 설정됨
 절차
1. 클록1 서랍에서 클록1.Timer 블록 끌어오기
2. Procedure 서랍에서 call 두더지이동 블록을 끌어와 클록1.Timer에 끼움
점수 매기기
 사용자가 두더지를 맞추었는지 검사하는 방법
 사용자가 터치한 곳과 두더지 위치가 일치하는지 검사해야 함
 Canvas.Touched 블록이 자동으로 검사하여 touchedAnySprite라는 매개변수에 저장해둠
 절차
1. 캔버스1 서랍에서 캔버스1.Touched 블록 끌어오기
2. Control 서랍에서 if-then 블록을 꺼내옴
 파란 아이콘을 클릭하여 else 추가한 다음 if-then-else 블록을 캔버스1.Touched 블록에 끼움
점수 매기기
 절차
3. get touchedAnySprite 블록을 끄집어 if-then-else의 if 홈에 끼움
4. then에서 맞춤횟수레이블.Text를 1만큼 증가시킴
5. else에서 놓침횟수레이블.Text를 1만큼 증가시킴
프로시저 추상화
 프로시저 추상화
 명령어 집합을 묶어 이름을 붙이고, 나중에 필요할 때 호출해 사용하는 방식
 컴퓨터 공학에서 매우 중요한 개념
 프로시저를 개발하는 사람과 사용하는 사람이 다른 경우가 대부분
 구체적인 내부 동작 원리를 몰라도 사용할 수 있음
 추상화라는 용어를 사용하는 이유
 모든 공학 분야에서 추상화 사용: 예) 자동차 제작 과정과 운전 과정
 프로시저 추상화의 장점
 프로그램 테스트가 쉬움
 코드에 오류가 있을 때 한 곳만 수정
 프로그램 기능 개선할 때 한 곳만 수정
 라이브러리 제작
 분할 정복 전략 구사
 문서화 용이
점수 초기화
두더지를 맞추었을 때 폰 진동시키기
전체 앱 프로그램
확장해 보기
감사합니다.