22. PHP를 이용한 게임 기록 확인

이번 시간에는 DB에 저장된 게임 기록을 PHP를 이용해 확인하는 방법에 대해 알려 드리겠습니다. DB에 저장된 게임 기록을 확인해 보기 위해 phpMyAdmin을 이용합니다. 아래 링크에서 다운 받으시면 됩니다.

phpMyAdmin

phpMyAdmin을 이용해 DB에 저장된 게임 기록을 확인하실 수 있습니다. DB에 저장된 게임 기록을 확인할 수 있도록 PHP 파일을 만들어 주겠습니다.

DB 연결 부분은 지난번 saveScore.php와 동일하게 작성하시면 되기 때문에 생략하겠습니다.

SQL 내용을 위와 같이 작성해 줍니다.

이 후 PHP와 HTML(CSS & JS)을 이용해 테이블을 예쁘게 꾸며주시면 됩니다.(자세한 것은 아래 첨부된 소스 참고하십시오.)

작성한 PHP 파일을 서버에 올려서 열어보면 위와 같이 게임 기록이 저장된 테이블을 확인하실 수 있습니다.

PHP 소스

완성된 게임

1) Animal Cards

2) Finger Runner

21. PHP를 이용한 게임 기록 DB에 저장

이번 시간에는 지난 시간 작성한 PHP 파일을 이용해 게임 기록을 DB에 저장하도록 GameActivity를 수정해 보겠습니다.

지난 번에 게임 플레이 시간을 보여 주기 위해 작성했던 registerUodateHandler() 메서드 안에 게임 기록을 저장하는 saveScore()라는 메서드를 넣어 줍니다.

saveScore() 라는 메서드를 위와 같이 작성하고 게임 기록을 DB에 저장하는 saveRecord() 메서드도 넣어 줍니다.

앱에서 웹서버에 접속하기 위해 HttpClient library가 필요합니다. 아래 링크에서 다운로드 받으시면 됩니다.(처음에 최신 버전인 5.0으로 시도해 봤는데 명령어 같은 게 바뀌었는지 안되서 아래 4.5.12 버전을 사용했습니다. -> 제가 서버관련해서는 아는게 별로 없어 이렇게 저렇게 시도해 보다 찾은 방법이라 설명이 부족한 점 이해 부탁 드립니다.)

Apache HttpClient 4.5.12 download

다운 받은 파일의 압축을 풀어서 나온 파일을 app -> libs 파일에 넣어 줍니다.

새로운 library 추가 후에는 file -> Sync Project with Gradle Files 를 눌러 줘야 사용이 가능합니다.

saveRecord() 메서드를 위와 같이 작성해 주고 지난 시간에 만든 PHP 파일을 서버에 업로드하고 url을 입력해 줍니다.

나머지 필요한 메서드들도 작성해 줍니다. makeHttpPost() 메서드에 params.add() 작성시 name 은 PHP와 동일하게 맞춰 주셔야 합니다.

게임이 인터넷 연결이 가능하도록 AndroidManifest.xml에 INTERNET permission을 추가해 줍니다.

현재 상태에서 앱을 실행해 보면 위와 같이 에러가 발생하는데

build.gradle(Module: app) 에 packagingOptions에 위 내용을 추가해 주면 게임이 정상적으로 실행되는 것을 확인하실 수 있습니다.

이제 게임 기록을 DB에 저장할 수 있게 되었습니다. 다음 시간에는 DB에 저장된 게임 기록은 볼 수 있도록 PHP 파일을 만들어 보겠습니다.

안드로이드 스튜디오 소스

assets

완성된 게임

1) Animal Cards

2) Finger Runner

20. 랭킹 매뉴 만들기(PHP 이용)

이번 시간에는 게임 기록을 서버에 저장하고 서버에 저장된 기록을 웹 페이지에 표시해 webview를 이용해 앱에서 볼 수 있도록 만들어 보겠습니다. 저의 경우 이 부분에서 책이 옛날 책(2003년)이다 보니 책대로 되지 않아 가장 많이 헤맸습니다. 다른 분들은 저처럼 헤매지 않았으면 하는 마음에 이 가이드를 작성하게 되었습니다.

이 내용을 이해하기 위해서는 PHP, SQL, HTML(CSS & JavaScript) 대해 조금 알고 있는 것이 좋습니다. 이런 내용에 대해 제 설명이 부족해(저도 자세히 설명해 드리고 싶지만 저도 지식이 부족해서 자세히 설명 못해드리는 점 양해 바랍니다.) 이해가 가지 않는 내용이 있으시면 이전에 소개해드린 생활코딩 이라는 사이트에서 무료로 학습이 가능하오니 참고하십시오.

먼저 게임 기록을 저장하는 DB 서버를 구축해야합니다. 저의 경우는 이미 웹호스팅 서비스를 이용하고 있어서 그걸 그대로 이용했습니다. 직접 자신의 컴퓨터를 DB 서버로 만들려면 생활코딩 PHP 설치 강의를 참고하십시오.

DB 서버 구축 후 게임 기록을 저장할 DB와 table을 만들고, 게임 데이터를 서버에 저장하는 PHP를 작성합니다. 코드 작성시 특별히 선호하는 editor가 없으신 분들은 간단히 코드 작성하기 좋은 MS에서 만든 Visual Studio Code 추천 드립니다.

먼저 DB 접속 부분을 먼저 작성합니다. username, password는 보안에 관련된 내용이라 외부에 공개되지 않도록 주의합니다.

SQL을 이용해 DB table에 값을 쓸 수 있도록 작성해 줍니다.

다음 시간에는 게임으로 돌아가 이 PHP 파일을 이용해 게임 기록을 서버에 쓸 수 있도록

PHP 소스

완성된 게임

1) Animal Cards

2) Finger Runner

19. 메인 메뉴 만들기

일반적인 안드로이드 Activity를 이용해 메인 메뉴를 만들어 줍니다. 이 내용은 일반적인 안드로이드 프로그램이라 자세한 내용은 첨부 소스 참고하시고, 게임관련 내용만 설명 드리겠습니다.

나중에 구현할 게임 기록 저장을 위해 editText로 부터 유저 이름을 입력 받습니다.

Start 버튼 클릭시 GameActivity로 이동해 게임을 시작합니다.

Ranking 메뉴는 나중에 작성할 예정이라 버튼만 먼저 만들어 놓습니다.

Exit 버튼은 지난시간에 알려 드린 다이알로그 창을 이용해 구현하시면 됩니다.

안드로이드 스튜디오 소스

assets

완성된 게임

1) Animal Cards

2) Finger Runner

18. 뒤로 가기 버튼 처리

이번 시간에는 뒤로 가기 버튼을 눌렀을 때 다이얼로그 창을 뛰워서 처리하도록 만들어 보겠습니다.

위와 같이 작성해 주면 휴대전화에 있는 뒤로 가기 버튼을 누를면 다이얼 로그 창이 뜨면서 게임을 종료할 것인지 물어보는 메세지가 뜹니다.

‘YES’를 누르면 게임이 종료되고, ‘NO’를 누르면 다시 게임 돌아가도록 아무 내용도 작성하지 않았습니다.

안드로이드 스튜디오 소스

assets

완성된 게임

1) Animal Cards

2) Finger Runner

17. 기록 표시하기

이번 시간에는 게임 플레이 타임을 화면에 실시간으로 보여주도록 만들어 보겠습니다. 현재 4장의 카드만 사용하는 상황에서 플레이 타임이 의미가 없지만 사용하는 카드가 많아지면 게임 시간을 측정해 기록으로 저장해 서로 실력을 겨룰 수 있게 만들면 좀 더 재미 있는 게임이 될 것입니다.

게임 기록을 저장한 text와 게임 시간을 계산하기 위한 변수들을 선언해 줍니다. 폰트는 지난 시간에 만들었던 게임 이름과 같은 폰트를 사용하겠습니다.

카드 터치 영역에 짝이 맞은 카드 수를 계산하는 로직을 작성해 줍니다.

위와 같이 작성해 주면 플레이 타임이 계산되고 화면에 보여집니다. 여기에서 중요한 것은 registerUpdateHandler() 메서드 인데, 이전에는 실행에 지연 시간을 줄 때 사용했었고 이번 시간에는 어떤 조건이 만족하는지 계속 모니터링하는 기능을 이용해 플레이 타임을 계산하는데 사용했습니다.

다음 시간에는 뒤로 가기 버튼 처리 방법에 대해 알려 드리겠습니다.

안드로이드 스튜디오 소스

assets

완성된 게임

1) Animal Cards

2) Finger Runner

16. 화면에 문자 표시

이번 시간에는 화면에 게임 이름을 표시해 보겠습니다.

Text와 Font를 선언해 주는데, 모두 AndEngine library에 있는 class를 선택합니다.

assets 폴더 안에 font 폴더를 만들고 사용하시고자하는 폰트 파일을 넣어줍니다.

onCreateResources() 메서드 안에 조금 전에 만든 font 폴더을 기본 폴더로 정의해 줍니다.

그림, 소리, 음악 파일들을 정의해 놓은 catch 구문안에 폰트도 정의해 줍니다.(참고로 Color는 android.graphics의 것을 선택합니다.)

onCreateScene() 메서드 안에 위와 같이 작성해 줍니다.

앱을 실행해 보면 위와 같이 게이 이름이 위에 표시되는 것을 확인하실 수 있습니다.

안드로이드 스튜디오 소스

assets

완성된 게임

1) Animal Cards

2) Finger Runner

15. 배경 음악

이번 시간에는 배경 음악을 구현해 보겠습니다. 배경 음악 구현은 이전 시간에 했던 사운드 구현과 거의 비슷하므로 쉽게 따라하실 수 있을 것 같습니다. 소리 효과 구현을 위해 구현해 놓은 mfx 폴더에 사용하시고자 하는 배경 음악 파일을 복사해 넣습니다.

먼저 music을 선언해 줍니다.

onCreateResoures() 메서드 안에 음악 파일들을 위한 기본 폴더를 정의해 주고 사용할 음악 파일도 폴더 안에 복사해 줍니다.

engineOptions에 음악을 추가해 줍니다.

onCreateResources() 메서드 안 사운드 파일 들을 정의했던 catch/try 문 안에 music 파일도 정의해 줍니다.

onCreateScene() 메서드에 위와 같이 작성해 scene이 만들어지면 배경 음악이 재생 되도록 해줍니다.

안드로이드 스튜디오 소스

완성된 게임

1) Animal Cards

2) Finger Runner

14. 소리 효과 구현

이번 시간에는 소리 효과를 추가해 보겠습니다. 동물 카드를 뒤집을 때 해당 동물 소리가 나도록 구현해 보고자 합니다.

assets 폴더 아래에 소리와 음악 파일들을 담을 디렉토리를 만들어 주고 사용하고자하는 파일들을 넣어 줍니다. 참고로 책에는 ogg 파일을 공식적으로 지원한다고 되어 있는데 mp3도 문제 없이 잘 재생이 되었습니다. 하지만 일부 wav 파일은 재생이 안 되는 문제가 있어 지난 시간에 소개해 드린 audacity 소프트 웨어를 이용해 ogg로 변환해 사용했습니다.

Sound를 선언해주고 engineOptions 에 사운드를 추가해 줍니다.

onCreateResources() 메서드 안에 조금 전에 만든 기본 sound folder를 지정해 줍니다. 각각의 동물 소리도 try/catch 구문 안에 작성해 줍니다.

onAreaTouched() 메서드 안에 위와 같이 작성해 주면 카드 터치시 해당 동물 소리가 재생됩니다.

다음 시간에는 배경음악을 구현해 보겠습니다.

안드로이드 스튜디오 소스

완성된 게임

1) Animal Cards

2) Finger Runner

13. 소리/음악 파일 다운로드 및 처리 툴

게임에서 소리 및 음악도 많은 부분을 차지 합니다. 그래서 무료 소리 및 음악 파일을 다운 받을 수 있는 사이트를 몇 곳 소개해 드리겠습니다.

무료 소리 및 음악 다운로드 사이트

1) zapsplat : 무료로는 10분에 파일 3개까지만 다운로드 가능하기 때문에 작업하면서 필요한 파일들은 미리 다운 받아 놓고 작업하시다가 10분 후 또 받고 이런씩으로 사용하시면 됩니다.

2) cc mixter

3) freesound

4) Free Sound Effects

다운 받은 소리들을 사용하다보면 특정 부분만 잘라서 사용한다 던가 편집이 필요한 일이 생기는데 이럴 때 사용할 수 있는 무료 오디오 소프트웨어도 소개해 드리겠습니다.

Audacity

다음 시간에는 소리 및 음악 파일을 게임에 적용시켜 보겠습니다.

완성된 게임

1) Animal Cards

2) Finger Runner