[Android] 초보자도 할 수 있다! 안드로이드 자동 가위바위보 게임앱 만들기!

반응형

 

 

 

 

1. 게임 시나리오 

 

시작 화면에서 START 버튼을 누르면 1초에 한 번씩 가위바위보를 하며 게임이 진행된다. STOP 버튼을 누르면 게임종료 팝업이 뜨고 점수가 상단에 뜨면서 결과를 알려준다.

 

 

 

2. UI 설명

 

- txtUp : 게임 방법, 최종 점수 기록

- txtDown : 게임 상태(게임 진행 중, 시작하세요), 승부 결과 기록

- imageArray[] : 가위바위보 이미지 출력

- scoreLeftSide, scoreRigthSide : 현재점수 출력

- button : 게임 START, STOP 

 

 

 

3. 코드 설명

 

1) onCreate 함수

 

변수가 전체적으로 사용되기 때문에 모두 전역변수로 선언하였다버튼을 하나로 사용하기 위하여 boolean형으로 start 변수를 만들어 button을 클릭하면 start 변수의 값이 true일 때에는 button을 클릭하면 게임이 진행되고 false일 때에는 게임이 중단되도록 하였다. score는 프로그램이 끝날 때까지 점수가 유지되도록 static 변수로 선언하였다. 3개의 이미지를 따로 사용하기보다 효율적으로 사용하기 위해 배열을 이용하였다. onCreate()에서 리소스와 변수들을 연결해 주었고 버튼을 클릭하면 이벤트가 일어나도록 하였다.

 

 

2) onClick 함수

 

핸들러가 호출되면 handlerMessage()함수에서는 랜덤으러 선택된 가위바위보 이미지를 띄우고 가위바위보에 따른 점수 계산 함수를 호출하고 텍스트뷰에 점수를 기록한다.0~2부터의 숫자를 랜덤으로 가진 I와 변수를 가위바위보 이미지 배열의 인덱스로 하여 이미지뷰인 imgArr[0]과 imgArr[1]에 띄운다이미지뷰를 비교하는 것이 가장 어려웠는데 이미지뷰 자체를 비교하지는 못한다고 하여 이미지들을 비교하였다가위바위보 이미지 자체를 비교하기 위하여 imgArr[0]과 imgArr[1]을 매개변수로 갖는 점수계산을 하는 함수를 만들었다. integer형 변수인 점수를 string형으로 변형하여 텍스트뷰에 기록했다이 같은 일은 1초에 한 번씩 반복된다.

 

 

 

3) handleMessage 함수

 

핸들러가 호출되면 handlerMessage()함수에서는 랜덤으러 선택된 가위바위보 이미지를 띄우고 가위바위보에 따른 점수 계산 함수를 호출하고 텍스트뷰에 점수를 기록한다.0~2부터의 숫자를 랜덤으로 가진 I와 변수를 가위바위보 이미지 배열의 인덱스로 하여 이미지뷰인 imgArr[0]과 imgArr[1]에 띄운다이미지뷰를 비교하는 것이 가장 어려웠는데 이미지뷰 자체를 비교하지는 못한다고 하여 이미지들을 비교하였다가위바위보 이미지 자체를 비교하기 위하여 imgArr[0]과 imgArr[1]을 매개변수로 갖는 점수계산을 하는 함수를 만들었다. integer형 변수인 점수를 string형으로 변형하여 텍스트뷰에 기록했다이 같은 일은 1초에 한 번씩 반복된다.

 

 

4) whoIsTheWinner 함수

 

함수는 게임 결과를 나타내는 state string형 변수를 리턴한다. 왼쪽의 점수가 더 높으면 '왼쪽 승리', 반대의 경우에는 '오른쪽 승리'를 리턴하며 점수가 같은 경우, '비김'을 리턴한다. 이는 게임 종료 시 상단 텍스트뷰에 표기된다. 

 

 

 

5) calculateScore 함수

 

파라미터로 받은 왼쪽 이미지와 오른쪽 이미지를 비교하여 점수를 내는 함수이다. 이기는 경우 +2점이, 지는 경우에는 -1점이 주어진다. 예를 들어 왼쪽이 주먹일 경우, 오른쪽이 보자기이면 scroeLeft에는 -1점, scoreRight에 +2점을 준다.

 

 

 

 

* 전체 소스코드가 필요하신 분은 댓글 남겨주시면 전달드리겠습니다.

 

 

 

 

 

궁금한 사항은 댓글로 남겨주세요💃💨💫
좋아요와 구독(로그인X)은 힘이 됩니다 🙈🙉

 

 

 

반응형
그리드형

'컴퓨터공학과 > Programming' 카테고리의 다른 글

[c++] 객체와 클래스  (0) 2013.11.30
[c++] 포인터  (0) 2013.11.29
[c++] 함수  (0) 2013.10.09
[JSP] 개발환경구축 - ⑤ JSP 프로그래밍  (0) 2012.07.15
[JSP] 개발환경구축 - ④ Tomcat - Eclipse 연동  (0) 2012.07.15

댓글

❤️김세인트가 사랑으로 키웁니다❤️