9. 게임 기능부분 추가
이제 게임의 어느정도 기능이 구현이 되어져 있습니다.
이제 조금더 가다듬어 완성도를 높여보도록 하겠습니다.
[추가내용]
- state를 추가하여 상태 관리
- 사용자 입력과 답안 확인->score 반영
- O/X 확인
1. State 기능 추가
게임에서 아래와같이 state가 나뉘어서 관리를 하여야 합니다.
- quest : 처음 문제가 제시될 때(이 때는 터치가 되어서 안됨)
- answer : 사용자가 답안을 입력할 때
아래와 같이 변수를 추가합니다.
1 2 3 4 5 6 7 | enum{ state_wait, state_quest, state_answer, }; int state_now; | cs |
다음으로 게임 시작 시 문제가 제시 되므로, app_create()함수에서 아래와 같이 설정합니다.
1 | state_now = state_quest; | cs |
문제가 제시될 때는 터치를 막아야 하므로, 사각형을 터치할 때 호출되는 함수 clicked_rect()에 아래 부분을 추가합니다.
1 | if(state_now==state_quest) return; | cs |
문제제시가 끝난 다음, 사용자의 입력을 받을 수 있도록 state_now를 state_answer로 변경합니다.
timer_quest()함수에 문제제시가 끝난 후 ECORE_CALLBACK_CANCEL을 반환하기전 아래와 같이 설정합니다.
1 2 3 | idx = 0;//idx초기화진행 state_now=state_answer; return ECORE_CALLBACK_CANCEL; | cs |
-이렇게 되면, 처음 문제가 나올 때와 사용자가 입력을 할 때가 구분이 되었습니다. state_wait같은 경우 게임이 끝난 후 대기할 때 상태로 설정을 하면 됩니다.
2. 사용자 답안 확인
이제 만들어진 음계와 사용자의 입력값이 맞는지 확인해보도록 하겠습니다.
답안을 확인할 인트형 배열, 점수를 기록할 인트형 변수를 설정합니다.
1 2 | int answer[5]; int totalScore; | cs |
click_rect()함수에 터치를 answer배열에 기록합니다.
1 | answer[idx++] = num; | cs |
이어서, 5개의 입력이 다되었을 때 정답을 확인하는 부분과, 정답 시 O이미지 표시 후 score반영합니다. x시 게임을 종료합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | if(idx>=5) { dlog_print(DLOG_INFO, "MY_LOG", "5개완료"); bool isSuccess = true; for(int i=0; i<5; i++) { if(quest[i]!=answer[i]) { isSuccess = false; break; } } if(isSuccess) { evas_object_show(ad->img_o);//미리 이미지를 추가 해두세요 state_now = state_quest; dlog_print(DLOG_INFO, "MY_LOG", "성공"); totalScore+=100; setQuest(); ecore_timer_add(1, timer_quest, ad); char score[100]; sprintf(score, "<align=center><font font_size=70>%d</font></align>", totalScore); elm_object_text_set(ad->score, score); } else { evas_object_show(ad->img_x);//미리 x이미지를 추가해두세요 state_now = state_wait; dlog_print(DLOG_INFO, "MY_LOG", "실패"); } } | cs |
문제가 다시 시작되면, 화면에 보여줬던 O 이미지를 지우기 위해 timer_quest()함수에 아래와 같이 추가합니다.
1 | evas_object_hide(ad->img_o); | cs |
* 화면 색 및 배치 버튼 등을 변경해 보았습니다.
지금까지 완성된 모습입니다.
'Software Development > Tizen' 카테고리의 다른 글
[TIZEN]16. 타이젠_간단한게임 만들기9_마무리 (0) | 2015.12.27 |
---|---|
[TIZEN]15. 타이젠_간단한게임 만들기8_naviframe을 이용한 화면전환 (2) | 2015.12.27 |
[TIZEN]13. 타이젠 이미지 삽입 (0) | 2015.12.26 |
[TIZEN]12. 타이젠_간단한게임 만들기6_Animator (0) | 2015.12.26 |
[TIZEN]11. 타이젠_간단한게임 만들기5_Timer (1) | 2015.12.26 |