본문 바로가기

개인 프로젝트/앱인벤터

(7)
앱인벤터 11장 확장해보기 이제 제법 복잡한 앱을 완성했으니 스스로도 뿌듯할 것이다. 이제는 다음과 같은 아이디어를 가지고 앱을 확장해보자. [문제 1] 이 앱은 메시지를 보낸 사람을 포함하여 모든 회원에게 메시지를 방송한다. 발신자를 빼고 방송하도록 수정해보자 [문제 2] "탈퇴"라는 문제를 발송하여 모임에서 빠질 수 있게 수정한다 [문제 3] 관리자가 특정 전화번호를 삭제하거나 추가할 수 있게 사용자 인터페이스를 다시 설계하고 기능을 구현한다 [문제 4] 관리자가 특정 전화번호를 지정하면 그 번호는 회원 가입이 안 되도록 앱을 확장한다 [문제 5] 회원 가입과 메시지 수신은 누구나 할 수 있지만, 메시지 발송은 관리자만 할 수 있게 수정한다 [문제 6] 회원 가입과 메시지 수진은 누구나 할 수 있지만, 메시지 발송은 관리자가 ..
앱인벤터 10장 확장해보기 [문제 1] 퀴즈를 만들 때, 문제와 함께 그림도 지정할 수 있게 확장하자 TinyWebDB는 영상을 저장해 주지 않기 때문에 조금 복잡하다. 영상 파일 대신에 영상이 있는 곳의 URL을 지정해야 한다. 앱의 사용자 인터페이스에 URL을 입력하는 텍스트 박스를 추가한다. 다행히 Image 컴포넌트의 Picture 속성에 URL을 설정할 수 있다. [문제 2] 퀴즈 제작자가 문제를 삭제할 수 있게 만들자. 이는 ListPicker를 사용하여 편하게 프로그래밍할 수 있다. 항목은 remove list item 블록을 사용하여 삭제한다. 해당 항목은 문제와 정답 리스트 모두에서 제거해야 하며, 웹 데이터베이스도 갱신해 주어야 한다. ListPicker와 항목 삭제에 대해서는 19장을 참조한다. [문제 3] 퀴..
앱인벤터 9장 확장해보기 [문제 1] 재생 중에 사용자가 [지우기] 버튼을 누르면 어떤 일이 벌어질까? 프로그램 오류가 발생하면서 앱이 멈추어 버릴 것이다. 이를 실행해 보고, 왜 그러는지 곰곰이 생각해 보자. 이 문제를 해결하기 위해서는 음악이 재생되기 시작하면 [지우기] 버튼을 불능으로 설정하는 방법이 있다. PlayButton.Click의 적절한 곳에 [지우기] 버튼을 불능으로 만드는 블록을 추가해 보자. 그렇다면 어디에서 [지우기] 버튼을 다시 살려야 할까? [문제 2] [연주] 버튼도 비슷하다. 재생 중에 사용자가 [연주] 버튼을 클릭하면 무슨 일이 벌어질지 생각해 본다. 적절한 곳에서 [연주] 버튼을 불느응로 만들고, 친절하게 "연주 중입니다."라는 메시지를 보여주자. 어디에서 [연주] 버튼을 다시 살려야 할까? [문..
앱인벤터 8장 확장해보기 [문제 1] 현재 앱은 문제마다 그림만 보여준다. 짧은 소리나 동영상도 같이 보여주도록 확장한다 [문제 2] 현재 앱은 사용자 응답이 정답과 정확히 일치해야 맞은 것으로 간주한다. 이는 융통성이 전혀 없는 방식이다. Text 서랍에 있는 텍스트 처리용 블록을 활용하면 이를 여러 가지로 개선할 수 있다. 예를 들어 대소문자 구분을 없애려면, 사용자 입력과 AnswerList에 있는 정답을 upcase 블록을 이용하여 대문자로 변환한 후 비교하면 된다. 사용자 입력이 정답의 일부로 포함되어 있으면 맞은 것으로 간주할 수도 있다. 그럴 때는 text.contains 블록을 사용하면 된다. 문제마다 여러 개의 정답을 마련해 두고, for each 블록을 이용하여 그중 하나만 일치하면 맞은 것으로 판단할 수도 있..
앱인벤터 7장 확장해보기 [문제 1] 이제 친구들끼리 위치를 공유하는 라는 앱을 만들어 보자. 이는 친구들과 등산을 하거나 공원에서 놀다가 흩어졌을 때 서로를 찾는 시간을 절약할 수 있을 뿐 아니라, 때로는 생명까지도 구할 수 있다. 여기서 여러 명의 위치 데이터를 공유해야 하므로, TinyDB 대신 TinyWebDB를 사용해야 한다. 데이터베이스에 대한 보다 자세한 내용은 22장을 참조한다 [문제 2] 이동한 궤적을 리스트에 기록하는 앱을 만들어 보자. 여기서 새로운 위치는 일정한 시간이 지나거나 일정한 거리를 이동한 후에 기록해야 한다. GPS는 약간만 이동해도 새로운 좌표를 제공하므로, 많은 양의 위치 데이터가 리스트에 저장되어 메모리 낭비 문제가 발생할 수 있기 때문이다. 이 리스트에 대해서는 19장을 참조한다.
앱인벤터 6장 확장해보기 [문제 1] 내 고장, 내 학교, 또는 다음 번 여행지로 생각하는 곳을 관광지로 선정해 앱을 수정한다 [문제 2] ActivityStarter를 이용하여 이메일을 보내거나 YouTube 앱을 구동해보자 [문제 3] (심화 문제) 사용자가 직접 새로운 관광지와 URL을 추가할 수 있는 앱으로 확장해 보자. 이제 관광지 정보를 TinyWebDB에 저장해야 한다. TinyWebDB의 사용법에 대해서는 10장의 , 앱을 참고한다
앱인벤터 5장 확장해보기 [문제 1] 게임이 끝났는데도 불구하고 개구리와 진딧물이 계속 움직인다. GameOver 프로시저에서 이들의 Enabled 속성을 false로 설정하여 움직임을 멈추게 한다. 더불어 RestartButton.Click에서 이들 속성을 true로 바꾸어 주는 것을 잊지 말자 [문제 2] 무당벌레가 살아 있는 시간을 점수로 환산하여 보여주자. 레이블을 추가하고 Clock1.Timer에서 증가시키면 된다. [문제 3] 에너지 막대의 폭을 2로 늘려 보다 잘 보이게 하자. EnergyCanvas의 Height를 2로 설정해야 하며, DrawEnergyLine 프로시저는 폭이 1인 막대를 두 번 그려야 한다. [문제 4] ..