Android

[안드로이드] 안드로이드스튜디오(Android Studio) 고스톱 게임 만들어 보기 제 1탄 게임만들기 예제, 안드로이드 예제, 안드로이드 강좌

정보처리마법사 2016. 10. 6. 18:42
반응형

 

 

[안드로이드] 안드로이드스튜디오(Android Studio) 고스톱 게임 만들어 보기 제 1탄 게임만들기 예제, 안드로이드 예제, 안드로이드 강좌

 

고스톱 게임 만들어 보기 제 1탄

 

안녕하세요 정보처리마법사 입니다.

 

이번 포스팅의 주제는 고스톱 게임 만들기에 관한 내용입니다.

참고서적을 참고하면서 같은 독자의 입장으로 함께 직접 손으로 타이핑하면서 만들어 볼 예정이기 때문에 저와 같이 발생 가능한 여러 에러들을 겪으면서 같이 만들어 보면 되겠습니다.

변수명들은 굳이 똑같이 할 필요 없으며 참고만 하면서 각자 좋아하는 단어를 섞어서 변수명을 만들어 보면 만드는 재미가 더 커질 듯 합니다.

 

일단 고스톱 게임의 단계별 프로젝트 구성은 다음과 같습니다.

 

1.고스톱 게임의 화면을 구성합니다.

2.고스톱 카드의 위치를 설정합니다.

3.카드 이미지를 클래스로 처리합니다.

4.카드를 이동시킵니다.

5.고스톱 게임에 터치 이벤트를 추가합니다.

6.고스톱 알고리즘을 넣어 게임을 완성합니다.

 

먼저 안드로이드 스튜디오 에서 GostopEx 프로젝트를 생성합니다.

File>New>New Project 해서 프로젝트명만 GostopEx으로 하고 저는 나머지는 그냥 Next Next 하고 액티비티 탬플릿을 추가하는 페이지에선 Add No Activity를 선택했습니다.

 

세부설정은 각자 편한대로 하면 됩니다. MinSDK 는 API 14(Android 4.0)로 하였습니다.  MinSDK 는 가능하면 맞춰주시는 게 API에서 지원하지 않아 발생하는 에러가 저와 다르게 뜨지 않습니다. 참고서적엔 API 17로 되어있습니다. 일단 프로젝트를 생성할 때, 패키지명은 굳이 저랑 똑같이 하지 마시고 (초보일 경우)각자 좋아하는 단어로 조합하여 적당히 만들어서 사용하시길 권장 합니다.

 

그리고 AndroidManifest.xml(manifests>AndroidManifest.xml)을 수정해야 합니다.  가로 모드로 설정하기 위해 android:screenOrientation="landscape"속성을 추가합니다. 그리고 화면 밝기를 유지하기 위해 WAKE_LOCK 권한도 추가합니다.

 

10라인, 18라인과 같이 두 landscape속성과 WAKE_LOCK 권한을 추가합니다.

 

 

 

MainActivity.java 파일에서 16라인과 같이 화면의 제목을 없앱니다.

requestWindowFeature(Window.FEATURE_NO_TITLE);

그리고 Full Screen이 되게 처리를 합니다. 이를 위해 GameActivity에서 조회한 가로, 세로의 크기 값을 MainView 클래스의 init 메소드에 전달합니다.(init 메소드는 아직 구현 하지 않았습니다. 빨간 글씨가 있더라도 신경쓰지 않으셔도 됩니다.)  init 메소드를 호출하면서 this를 넘겨줘서 경우에 따라 MainView 클래스가 GameActivity 클래스를 참조해 사용합니다.

 

 

그리고 게임의 화면과 객체 구성을 편하게 처리하기 위해 가상화면을 설정하는 ScreenConfig 클래스를 작성합니다. 가로세로 좌표를 가상 크기의 좌표로 입력하면 실제 화면의 위치에 매핑하는 역할을 합니다.

 

다음은 MainView 클래스를 구현하겠습니다.

일단 File>New>Java Class 해서 MainView.Java 파일을 생성하고 아래와 같이 코딩 하면 됩니다.

 

 

 

 

 

 

 

 

32라인, 화면이 가로 모드이기 때문에 초기의 가로 값을 2000, 세로 값을 1000으로 설정했습니다.

참고로 실제 안드로이드 단말의 종횡비 최근 추세는 16:9 입니다. 

SurfaceView 클래스를 상속받아 구성하고 화면의 위치를 체크하기 위해 고스톱에 사용할 카드 크기의 사각형을 가운데와 모서리에 출력해봅니다.

 

그리고 MainThread 클래스를 생성합니다. 아까 방금 위에서 MainThread 생성자를 호출할 때 그냥 기본 생성자가 아니라 인자를 넘겨주는 생성자를 호출 했으므로 MainThread 생성자를 일단 인자를 받는 생성자로 구현을 해놔야겠지요 그럼 구현을 대충 해보겠습니다.

39라인에 보면 빨간줄이 가 있는건 에러가 아니라 권고 정도의 메시지 입니다.

마우스 커서를 갖다대어 보면 draw rather than onDraw 라고 설명이 나옵니다.

그냥 onDraw 메소드보다 draw 메소드를 쓰는 게 더 좋을 듯 하다 라는 권유정도 입니다.

 

 

그리고 참고서적 안에 내용이 나오지 않았던 레이아웃의 모습입니다.

이 main.xml의 설명이 나와있지 않았기 때문에 코딩하던 내내 main_view 가 빨간색이었죠.

res폴더 아래에 layout 폴더를 만들어 주고 그 안에 main.xml 파일을 하나 생성해 줍니다.

 main.xml 의 모습입니다.

 

자 이제 대충 다 된 것 같으니 에뮬레이터로 애플리케이션을 실행을 한 번 해보겠습니다.

AVD 로는 Nexus_S 를 사용했습니다.

 

자.. 일단 이번 포스팅에서 원하는 결과물이 나왔습니다. 이어서 2탄에서 계속하겠습니다.

게임이 모두 완성이 된 포스팅이 나온 후 따라하시는 게 정신 건강에 좋을 듯 합니다.

 

(정신 건강에도 좋을 뿐 더러 제 스스로 포스팅의 결함을 댓글등의 의견을 반영하여 수시로 수정하기 때문에 완전하지 않을 수 있습니다. 양해 바랍니다.)

 


참고서적 : 나홀로 개발자를 위한 안드로이드 게임 프로그래밍 [ 이병옥 지음 ] [ 에이콘 ]

 

 

이상으로 포스팅을 마칩니다. 감사합니다.

 

 

 

 

잘 못 된 정보가 있으면 말씀해주세요.

공감버튼 클릭은 작성자에게 큰 힘이 됩니다.  행복한 하루 되세요.

 

“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"

반응형