이미 소장하고 있다면 판매해 보세요.
|
1장 안드로이드 개발환경 구축 1
1.1 JDK 설치 3 1.2 안드로이드 스튜디오 설치 5 1.3 안드로이드 SDK 설치 12 1.4 프로젝트 시작 14 1.5 AVD 만들기 17 1.6 안드로이드 스튜디오의 한글 설정 21 1.7 HAXM의 VT 설정 21 2장 안드로이드 프로그래밍의 기초 25 2.1 안드로이드 프로젝트의 시작 27 2.1.1 새로운 프로젝트 만들기 27 2.1.2 Target Device 설정 28 2.1.3 Activity 추가 29 2.2 안드로이드 스튜디오의 구조 32 2.2.1 안드로이드 스튜디오의 구성 32 2.2.2 안드로이드 프로젝트의 구조 33 2.2.3 레이아웃 에디터의 구성 34 2.3 Layout의 구조 35 2.3.1 content_main.xml의 구조 35 2.3.2 Layout의 작성 규칙 37 2.3.3 Layout의 추가 38 2.3.4 activity_main.xml의 구조 39 2.4 MainActivity의 구조 41 2.5 Widget 다루기 42 2.5.1 위젯 추가와 속성 설정 42 2.5.2 Layout의 표시 46 2.5.3 앱의 타이틀 바꾸기 48 2.5.4 버튼의 이벤트 처리 50 2.5.5 EditText 다루기 51 2.5.6 Button의 OnClickListener 56 2.5.7 View의 EditText를 변수에 저장 59 2.5.8 클릭한 버튼의 식별 60 3장 텍스트 기반 게임 63 3.1 숫자 맞추기 65 3.1.1 게임 제작의 목적 65 3.1.2 게임의 처리 조건 65 3.1.3 View Design 65 3.1.4 난수 만들기 67 3.1.5 MainActivity class의 구성 68 3.1.6 전역 변수 만들기 69 3.1.7 Activity의 초기화 부분 70 3.1.8 Button의 Listener 작성 71 3.1.9 게임 결과 판정 72 3.2 제비뽑기 74 3.2.1 게임 제작의 목적 74 3.2.2 게임의 처리 조건 74 3.2.3 View Design 74 3.2.4 버튼에 tag 달기 75 3.2.5 버튼의 Listener 할당하기 76 3.2.6 프로그램의 종료 79 4장 ImageView를 이용한 게임 81 4.1 윷놀이 83 4.1.1 게임 제작의 목적 83 4.1.2 게임의 처리 조건 83 4.1.3 윷놀이의 기본 개념 84 4.1.4 프로젝트에 이미지 추가 84 4.1.5 View Design 85 4.1.6 배열 만들기 87 4.1.7 난수의 발생 빈도 조절 89 4.2 가위바위보 게임 90 4.2.1 게임 제작의 목적 91 4.2.2 게임의 처리 조건 91 4.2.3 프로젝트에 이미지 추가 91 4.2.4 View Design 92 4.2.5 전역 변수 만들기 92 4.2.6 게임 초기화 93 4.2.7 Option Menu 사용하기 94 4.2.8 Button의 Listener와 승패 판정 96 4.2.9 이미지 뒤집기 97 5장 Custom View와 Sprite 99 5.1 Custom View 101 5.1.1 Custom View 만들기 101 5.1.2 Custom View의 생성자 104 5.1.3 GameView의 호출 105 5.1.4 GameView의 작업 영역 구분 108 5.1.5 Custom View의 크기 구하기 109 5.2 Sprite의 출력 112 5.3 Sprite의 이동 116 5.3.1 Handler 사용하기 116 5.3.2 Back Key로 종료하기 119 5.3.3 벽과의 충돌 탐지 119 5.3.4 토끼의 애니메이션 120 5.4 Touch로 Sprite 제어 122 5.4.1 onTouchEvent() 함수 추가 122 5.4.2 터치 위치로 토끼 이동 123 5.4.3 Touch Move로 이동 방향 바꾸기 124 5.4.4 전체 화면 사용하기 125 5.4.5 Custom View의 제어 126 5.4.6 단말기의 방향 설정 130 6장 Canvas와 Bitmap 133 6.1 Canvas 다루기 135 6.1.1 Canvas의 주요 함수 135 6.1.2 Canvas 변형 함수 136 6.2 Bitmap의 회전 141 6.3 아날로그 시계 145 6.4 오뚝이 151 7장 Touch의 판정 157 7.1 사각형 영역의 판정 159 7.1.1 기본 골격 만들기 160 7.1.2 Log 출력 162 7.1.3 터치 판정 영역 만들기 163 7.1.4 점수 판정 164 7.1.5 BulletHole Class 만들기 164 7.1.6 ArrayList 만들기 165 7.1.7 Touch Event 만들기 165 7.1.8 ArrayList 출력 166 7.2 원의 내부 판정 167 7.2.1 원의 공식으로 판정하기 167 7.2.2 Floating Action Button으로 게임 초기화 169 7.3 부채꼴 영역의 판정 170 7.4 다각형 과녁의 판정 173 7.4.1 다각형 내부 판정 174 7.4.2 정다각형 꼭짓점의 좌표 176 7.4.3 다각형 내부와 삼각형 영역 판정 177 8장 Class와 ArrayList 183 8.1 Class 185 8.1.1 Class의 사용 목적 185 8.1.2 Class의 구성 186 8.2 ArrayList 187 8.3 Object의 동적 생성 188 8.3.1 Bubble class 189 8.3.2 GameView 192 8.3.3 Touch Event와 Handler 194 8.3.4 MainActivity 195 8.3.5 Layout 196 9장 이동 방향과 속도 197 9.1 FPS와 Delta Time 199 9.1.1 FPS 199 9.1.2 Delta Time 199 9.2 이동 방향과 속도 200 9.2.1 Bubble Class 200 9.2.2 GameView의 처리 204 9.2.3 잠재적인 위험 요소 제거 207 9.3 파편 만들기 210 9.3.1 Time Class 만들기 211 9.3.2 SmallBubble Class 212 9.3.3 GameView의 ArrayList 214 9.3.4 Bubble Class 215 9.3.5 GameView 217 10장 Thread와 동기화 219 10.1 Thread 221 10.1.1 Process와 Thread 221 10.1.2 Thread 만들기 222 10.1.3 Thread의 인스턴스와 실행 222 10.1.4 Thread에 의한 반복 처리 223 10.1.5 Thread에 의한 에러 225 10.1.6 Thread의 동기화 226 10.1.7 Thread의 지연 229 10.1.8 Thread Safe ArrayList 230 10.1.9 Thread의 완전 종료 231 11장 애니메이션과 사운드 235 11.1 애니메이션 237 11.2 사운드 238 11.2.1 프로젝트에 Audio 파일 추가 238 11.2.2 MediaPlayer 239 11.2.3 SoundPool 239 11.3 참새 사냥 242 11.3.1 참새의 애니메이션 243 11.3.2 참새의 Collision 설정 247 11.3.3 GameView 248 11.4 공용 리소스 만들기 255 12장 중력의 처리 259 12.1 자유 낙하와 반사 261 12.1.1 중력 가속도 261 12.1.2 공용 리소스 만들기 262 12.1.3 Ball Class 263 12.1.4 GameView 265 12.2 포물선 운동 269 12.2.1 포물선 운동의 방정식 269 12.2.2 Rocket Class 270 12.2.3 GameView 273 12.2.4 단말기의 해상도와 Density 276 12.2.5 비트맵 이미지의 Density 설정 277 12.3 걷기와 Jump 279 12.3.1 Boy Class 280 12.3.2 GameView 286 목적지 설정 289 13.1 목적지에서 정지 291 13.1.1 TouchMove의 처리 291 13.1.2 TouchMove로 이동하기 293 13.1.3 Butterfly Class 296 13.1.4 나비의 생성과 이동 302 13.2 목적지와 선형 보간 304 13.2.1 선형 보간 305 13.2.2 공용 함수 Class 만들기 306 13.2.3 공용 리소스 만들기 310 13.2.4 Laser Class 312 13.2.5 X-Wing Class 313 13.2.6 GameView 316 13.2.7 Floating Action Button 제거 319 13.3 가속과 감속 320 13.3.1 가감속과 선형 보간 321 13.3.2 공용 리소스 Class 322 13.3.3 Laser 만들기 323 13.3.4 우주선 만들기 324 13.3.5 GameView 327 14장 Press와 Gesture 331 14.1 Press로 이동 및 발사 333 14.1.1 공용 리소스 Class 334 14.1.2 Poison 만들기 335 14.1.3 거미 만들기 336 14.1.4 GameView 340 14.2 Double Tab으로 점프 343 14.2.1 공용 리소스 만들기 344 14.2.2 Boy Class 345 14.2.3 Gesture Class 349 14.2.4 GameView 351 15장 충돌의 판정과 처리 355 15.1 충돌의 판정 357 15.1.1 사각형과 사각형의 충돌 357 15.1.2 원형과 원형의 충돌 358 15.1.3 사각형과 원형의 충돌 358 15.2 충돌과 상태의 변화 359 15.2.1 Ball Class 360 15.2.2 GameView 362 15.2.3 상태의 전이 365 15.2.4 GameView와 Ball의 처리 373 15.3 충돌과 득점 375 15.3.1 충돌의 판정과 처리 376 15.3.2 프로젝트의 기본 구조 376 15.3.3 공용 리소스 만들기 377 15.3.4 나비 만들기 380 15.3.5 GameView 383 15.3.6 독액 만들기 387 15.3.7 거미 만들기 388 15.3.8 GameView의 처리 391 15.4 충돌과 폭파 393 15.4.1 프로젝트의 기본 구조 394 15.4.2 공용 리소스 만들기 395 15.4.3 MathF Class에 함수 추가 399 15.4.4 X-Wing 만들기 399 15.4.5 GameView 402 15.4.6 Laser 만들기 405 15.4.7 Alien 만들기 409 15.4.8 어뢰 만들기 414 15.4.9 폭파 불꽃 만들기 418 16장 배경 화면 스크롤 423 16.1 배경 하늘과 구름 425 16.1.1 하늘과 초원 만들기 425 16.1.2 구름 만들기 429 16.1.3 토끼 만들기 432 16.2 배경 이미지의 스크롤 436 16.2.1 배경 화면의 스크롤 437 16.2.2 GameView 440 16.2.3 X-Wing 442 16.3 근경과 원경의 스크롤 445 16.3.1 닌자 만들기 446 16.3.2 GameView 448 16.3.3 배경 만들기 451 17장 버튼의 활용 457 17.1 버튼과 멀티 터치 459 17.1.1 멀티 터치의 처리 459 17.1.2 Button Class 460 17.2 버튼으로 제어하기 462 17.2.1 버튼 만들기 463 17.2.2 닌자 만들기 467 17.2.3 배경 하늘 만들기 471 17.2.4 배경 만들기 474 18장 블록 격파 477 18.1 게임의 개요 479 18.1.1 게임의 요구 사항 480 18.1.2 프로젝트의 구성 480 18.2 기본적인 구성 481 18.2.1 게임의 기본 설정 481 18.2.2 게임의 환경 설정 481 18.2.3 공용 리소스 만들기 482 18.2.4 단말기의 진동 설정 485 18.2.5 GameView 485 18.2.6 패들 만들기 490 18.2.7 공 만들기 494 18.2.8 블록 만들기 499 18.3 Stage 만들기 503 18.3.1 Map Design 503 18.3.2 Map 만들기 504 18.3.3 Stage 만들기 505 18.4 Game Over의 처리 508 18.5 게임 시작 화면 만들기 510 18.5.1 View Design 511 18.5.2 게임의 시작과 종료 515 18.5.3 배경 음악의 On/Off 516 18.5.4 게임의 환경 설정 517 19장 슬라이딩 퍼즐 519 19.1 게임의 개요 521 19.1.1 게임의 요구 사항 521 19.1.2 프로젝트의 구성 522 19.2 기본적인 구성 522 19.2.1 게임의 기본 설정 523 19.2.2 게임의 환경 설정 523 19.2.3 View의 구성 524 19.2.4 공용 리소스 만들기 524 19.2.5 타일 만들기 527 19.3 게임의 세부 설정 530 19.3.1 타일 배열 530 19.3.2 타일 섞기와 치환 530 19.3.3 타일의 이동 531 19.3.4 Board 만들기 532 19.3.5 GameView 만들기 535 19.4 타일의 터치와 이동 538 19.4.1 터치한 타일 찾기 539 19.4.2 타일의 이동 540 19.4.3 Touch Event의 처리 542 19.5 진행 시간 표시와 Stage Clear 544 19.5.1 진행 시간 표시 544 19.5.2 Stage Clear 판정 546 19.5.3 Sound와 진동 설정 548 19.6 시작 화면 만들기 549 19.6.1 View Design 549 19.6.2 StartActivity 만들기 553 찾아보기 558 |
|
우리의 레이아웃에는 이름과 비밀번호를 입력받기 위한 EditText가 두 개 있다. 사용자가 이름과 비밀번호를 입력하고 [확인] 버튼을 누르면 입력한 내용을 스낵바에 표시할 것이다. 이렇게 하려면 EditText를 미리 변수로 만들어 둘 필요가 있다. EditText 위젯을 저장할 변수는 버튼의 Listener에서도 통용되어야 하므로 Activity 전체에 통용되는 전역 변수로 작성한다. 전역 변수는 함수보다 먼저 선언해야 하므로 Activity의 첫 부분에 다음의 내용을 입력한다.
_59쪽 Java는 초기화하지 않은 변수는 변수의 타입으로 초기화한다. int나 double 등 수치 변수는 0, boolean은 false, String은 “ ”(null string)이 된다. (...) null은 ‘없음’을 의미하는데, 변수의 값이 없는 것인지 아니면 메모리에 변수를 할당하지 않은 상태인지를 구분할 수 없는 아주 애매한 것이다. 여담이지만 null이라는 개념을 처음 만든 토니 호어(Tony Hoare, Quick Sort를 발명한 사람)가 ‘10억(billion) 달러짜리 실수였다’라고 회고한 적 있다. null을 사용하는 프로그래밍 언어(Java 포함)에서 null과 관련된 버그가 엄청나게 많기 때문이다. _69쪽 안드로이드 기반의 게임을 만들 때 염두에 두어야 하는 것은, 사용자의 단말기의 종류가 제각각이라는 것이다. 따라서 스프라이트나 오브젝트에 절대 좌표를 사용하면 단말기에 따라 표시 위치가 달라진다는 것을 명심해야 한다. 따라서 절대 좌표의 사용은 최대한 자제하고, 대신 스프라이트의 위치 등은 항상 화면의 비율과 자신의 크기 등을 기준으로 처리하는 것이 원칙이다. _120쪽 사용자가 과녁을 터치하면 그 위치에 총알구멍을 표시한다. 사용자가 과녁을 여러 번 터치하면 그만큼 총알구멍을 만들어야 하므로, 총알구멍을 별도의 Class로 구성한다. 이 Class는 터치 좌표와 총알구멍 이미지만 저장하고, 화면 출력은 onDraw()에서 할 것이다. 총알구멍 Class는 별도의 파일(외부 Class)로 만들어도 되고, GameView에 포함된 Inner Class로 만들어도 된다. _164쪽 Java의 switch()문은 조건에 맞는 처리를 한 후 break문이 없으면 자동으로 그다음 문장을 수행한다(Falling Down). Falling Down은 다음 조건의 코드를 자동 수행하므로 중복을 줄여서 간결한 구조를 만들 수 있지만, break가 없다는 것을 주석 등으로 명시하지 않으면 원래 break가 없는 것인지 개발자가 실수로 누락한 것인지를 알 수가 없다. 그러므로 break가 없는 경우에는 그 이유를 주석으로 명확하게 표시해 두면, 프로그램을 디버깅할 때나 다른 사람이 코드를 읽을 때 도움이 될 것이다. ---p.347 |