19
7. SUD 프프프프 프프 (2) (L) C++ 프프프프프 프프프

[C++ lab] 7. sud 프로젝트 구현(2)

Embed Size (px)

Citation preview

Page 1: [C++ lab] 7. sud 프로젝트 구현(2)

7. SUD 프로젝트 구현 (2)(L) C++ 프로그래밍

박민근

Page 2: [C++ lab] 7. sud 프로젝트 구현(2)

MAP10X10

PCHP/MP행동력아이템

MOBHP/MP스킬AI

게임 매니저

기본 클래스

Page 3: [C++ lab] 7. sud 프로젝트 구현(2)

• 맵은 우선 10 X 10 타일으로 구성된다 . • 각 타일은 맵정보 (MapInfo) 구조체로 구성된다 .

• 캐릭터는 키보드 입력으로 동서남북 (W,A,S,D) 로 이동 한다 . • 캐릭터가 이동하면 현재 위치를 출력한다 .

• 맵에 랜덤으로 몹을 배치 한다 . • 몹이 위치한 타일에 이동하면 몹과 전투 한다 .

• 공격은 정해진 데미지 범위 안에서 (MIN ~ MAX) 데미지를 입힌다 . • 일정한 확률로 피격 / 회피 / 방어를 한다 .

• 몹에게 죽으면 게임 오버• 몹에게 이기면 다시 또 이동을 시작한다 .

Page 4: [C++ lab] 7. sud 프로젝트 구현(2)

• 맵은 우선 10 X 10 타일으로 구성된다 . • 각 타일은 맵정보 (MapInfo) 구조체로 구성된다 .

• 캐릭터는 키보드 입력으로 동서남북 (W,A,S,D) 로 이동 한다 . • 캐릭터가 이동하면 현재 위치를 출력한다 .

• 맵에 랜덤으로 몹을 배치 한다 . • 몹이 위치한 타일에 이동하면 몹과 전투 한다 .

• 공격은 정해진 데미지 범위 안에서 (MIN ~ MAX) 데미지를 입힌다 . • 일정한 확률로 피격 / 회피 / 방어를 한다 .

• 몹에게 죽으면 게임 오버• 몹에게 이기면 다시 또 이동을 시작한다 .

Page 5: [C++ lab] 7. sud 프로젝트 구현(2)

Stdafx.h

CGameMap

Page 6: [C++ lab] 7. sud 프로젝트 구현(2)

CGameMap

Page 7: [C++ lab] 7. sud 프로젝트 구현(2)

• 맵은 우선 10 X 10 타일으로 구성된다 . • 각 타일은 맵정보 (MapInfo) 구조체로 구성된다 .

• 캐릭터는 키보드 입력으로 동서남북 (W,A,S,D) 로 이동 한다 . • 캐릭터가 이동하면 현재 위치를 출력한다 .

• 맵에 랜덤으로 몹을 배치 한다 . • 몹이 위치한 타일에 이동하면 몹과 전투 한다 .

• 공격은 정해진 데미지 범위 안에서 (MIN ~ MAX) 데미지를 입힌다 . • 일정한 확률로 피격 / 회피 / 방어를 한다 .

• 몹에게 죽으면 게임 오버• 몹에게 이기면 다시 또 이동을 시작한다 .

Page 8: [C++ lab] 7. sud 프로젝트 구현(2)

CCharacter

Enum 열거형

Page 9: [C++ lab] 7. sud 프로젝트 구현(2)

enum 열거형• 타입 종류같은 열거 해야 하는 값들을 저장하는 데이터 타입• 내부적으로는 int 형과 같은 4 바이트 변수다 .• 변수안에 들어갈 값들을 제한하여 정한다고 생각하면 된다 . • 정의된 값들은 디폴트로 0 부터 순차적으로 증가한다 .• 0 이 아닌 다른 특정한 값 (int 형 ) 으로 정의할 수도 있다 .

예 ) 히트 결과 • 함수 반환 값으로 구별이 필요

• Int 형으로 반환 => 0 – 미스 , 1 – 히트 , 2 – 파괴

• enum 형으로 선언

• MISS, HIT, DESTROY

• 반환값으로 enum 형을 반환

Page 10: [C++ lab] 7. sud 프로젝트 구현(2)

PC 의 생성

Page 11: [C++ lab] 7. sud 프로젝트 구현(2)

PC 위치 초기화

Page 12: [C++ lab] 7. sud 프로젝트 구현(2)

PC 의 이동 처리

실행 결과

Page 13: [C++ lab] 7. sud 프로젝트 구현(2)

• 맵은 우선 10 X 10 타일으로 구성된다 . • 각 타일은 맵정보 (MapInfo) 구조체로 구성된다 .

• 캐릭터는 키보드 입력으로 동서남북 (W,A,S,D) 로 이동 한다 . • 캐릭터가 이동하면 현재 위치를 출력한다 .

• 맵에 랜덤으로 몹을 배치 한다 . • 몹이 위치한 타일에 이동하면 몹과 전투 한다 .

• 공격은 정해진 데미지 범위 안에서 (MIN ~ MAX) 데미지를 입힌다 . • 일정한 확률로 피격 / 회피 / 방어를 한다 .

• 몹에게 죽으면 게임 오버• 몹에게 이기면 다시 또 이동을 시작한다 .

Page 14: [C++ lab] 7. sud 프로젝트 구현(2)

몹 (MOB) 의 배치

Page 15: [C++ lab] 7. sud 프로젝트 구현(2)

RANDOM

srand() 함수를 호출하여 , SEED 값을 설정하여 준다

Page 16: [C++ lab] 7. sud 프로젝트 구현(2)

맵 정보 추가

몹의 객체를 담고 있다 . 없으면 NULL 로 설정한다 .

맵의 정보 객체를 반환한다 .

Page 17: [C++ lab] 7. sud 프로젝트 구현(2)

안됨 !!스택 메모리에서 삭제된 Mob 을

참조하는 버그가 발생 !

몹의 생성 및 배치

Page 18: [C++ lab] 7. sud 프로젝트 구현(2)

몹의 생성 및 배치

Page 19: [C++ lab] 7. sud 프로젝트 구현(2)

몹의 생성 및 배치

실습 )

랜덤으로 맵사이즈의 ¼ 만큼의 수의 몹을 배치 하라