SlideShare ist ein Scribd-Unternehmen logo
1 von 19
7. SUD 프로젝트 구현(2)
박민근
기본 클래스
• 맵은 우선 10 X 10 타일으로 구성된다.
• 각 타일은 맵정보(MapInfo) 구조체로 구성된다.
• 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다.
• 캐릭터가 이동하면 현재 위치를 출력한다.
• 맵에 랜덤으로 몹을 배치 한다.
• 몹이 위치한 타일에 이동하면 몹과 전투 한다.

• 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다
• 일정한 확률로 피격/회피/방어를 한다.
• 몹에게 죽으면 게임 오버
• 몹에게 이기면 다시 또 이동을 시작한다.
• 맵은 우선 10 X 10 타일으로 구성된다.
• 각 타일은 맵정보(MapInfo) 구조체로 구성된다.
• 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다.
• 캐릭터가 이동하면 현재 위치를 출력한다.
• 맵에 랜덤으로 몹을 배치 한다.
• 몹이 위치한 타일에 이동하면 몹과 전투 한다.

• 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다
• 일정한 확률로 피격/회피/방어를 한다.
• 몹에게 죽으면 게임 오버
• 몹에게 이기면 다시 또 이동을 시작한다.
CGameMap

Stdafx.h
CGameMap
• 맵은 우선 10 X 10 타일으로 구성된다.
• 각 타일은 맵정보(MapInfo) 구조체로 구성된다.
• 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다.
• 캐릭터가 이동하면 현재 위치를 출력한다.
• 맵에 랜덤으로 몹을 배치 한다.
• 몹이 위치한 타일에 이동하면 몹과 전투 한다.

• 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다
• 일정한 확률로 피격/회피/방어를 한다.
• 몹에게 죽으면 게임 오버
• 몹에게 이기면 다시 또 이동을 시작한다.
CCharacter

Enum 열거형
enum 열거형
•
•
•
•
•

타입 종류같은 열거 해야 하는 값들을 저장하는 데이터 타입
내부적으로는 int 형과 같은 4바이트 변수다.
변수안에 들어갈 값들을 제한하여 정한다고 생각하면 된다.
정의된 값들은 디폴트로 0부터 순차적으로 증가한다.
0이 아닌 다른 특정한 값(int형)으로 정의할 수도 있다.
예) 히트 결과
• 함수 반환 값으로 구별이 필요
• Int형으로 반환 => 0 – 미스, 1 – 히트, 2 – 파괴

• enum 형으로 선언
• MISS, HIT, DESTROY
• 반환값으로 enum 형을 반환
PC의 생성
PC 위치 초기화
PC의 이동 처리
실행 결과
• 맵은 우선 10 X 10 타일으로 구성된다.
• 각 타일은 맵정보(MapInfo) 구조체로 구성된다.
• 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다.
• 캐릭터가 이동하면 현재 위치를 출력한다.
• 맵에 랜덤으로 몹을 배치 한다.
• 몹이 위치한 타일에 이동하면 몹과 전투 한다.

• 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다
• 일정한 확률로 피격/회피/방어를 한다.
• 몹에게 죽으면 게임 오버
• 몹에게 이기면 다시 또 이동을 시작한다.
몹(MOB)의 배치
RANDOM

srand() 함수를 호출하여, SEED값을 설정하여 준다
맵 정보 추
가
몹의 생성 및 배
치

안됨!!
스택 메모리에서 삭제된 Mob을
참조하는 버그가 발생!
몹의 생성 및 배
치
몹의 생성 및 배
치
실습)

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

Weitere ähnliche Inhalte

Andere mochten auch

[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,reference[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,referenceMinGeun Park
 
[C++ lab] 1. 수업 내용 및 진행 방법
[C++ lab] 1. 수업 내용 및 진행 방법[C++ lab] 1. 수업 내용 및 진행 방법
[C++ lab] 1. 수업 내용 및 진행 방법MinGeun Park
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉MinGeun Park
 
[C++ lab] 2. hello world
[C++ lab] 2. hello world[C++ lab] 2. hello world
[C++ lab] 2. hello worldMinGeun Park
 
C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)은아 정
 
[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크MinGeun Park
 
[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3MinGeun Park
 
[C++adv] STL 사용법과 주의 사항
[C++adv] STL 사용법과 주의 사항[C++adv] STL 사용법과 주의 사항
[C++adv] STL 사용법과 주의 사항MinGeun Park
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들MinGeun Park
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념Changhwan Yi
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 

Andere mochten auch (12)

[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,reference[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,reference
 
[C++ lab] 1. 수업 내용 및 진행 방법
[C++ lab] 1. 수업 내용 및 진행 방법[C++ lab] 1. 수업 내용 및 진행 방법
[C++ lab] 1. 수업 내용 및 진행 방법
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
 
[C++ lab] 2. hello world
[C++ lab] 2. hello world[C++ lab] 2. hello world
[C++ lab] 2. hello world
 
C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)
 
[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크[C++ lab] 10. 메모리 누수 체크
[C++ lab] 10. 메모리 누수 체크
 
[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3[Pl in c++] 6. battle ship 3
[Pl in c++] 6. battle ship 3
 
[C++adv] STL 사용법과 주의 사항
[C++adv] STL 사용법과 주의 사항[C++adv] STL 사용법과 주의 사항
[C++adv] STL 사용법과 주의 사항
 
[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들[1116 박민근] c++11에 추가된 새로운 기능들
[1116 박민근] c++11에 추가된 새로운 기능들
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
동국대 앱창작터 1일차:Cocos2d-X 소개, 환경설정, 주요개념
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 

Mehr von MinGeun Park

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdfMinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석MinGeun Park
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이MinGeun Park
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBRMinGeun Park
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OTMinGeun Park
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.MinGeun Park
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 MinGeun Park
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기MinGeun Park
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술MinGeun Park
 

Mehr von MinGeun Park (20)

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 

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

  • 1. 7. SUD 프로젝트 구현(2) 박민근
  • 3. • 맵은 우선 10 X 10 타일으로 구성된다. • 각 타일은 맵정보(MapInfo) 구조체로 구성된다. • 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다. • 캐릭터가 이동하면 현재 위치를 출력한다. • 맵에 랜덤으로 몹을 배치 한다. • 몹이 위치한 타일에 이동하면 몹과 전투 한다. • 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다 • 일정한 확률로 피격/회피/방어를 한다. • 몹에게 죽으면 게임 오버 • 몹에게 이기면 다시 또 이동을 시작한다.
  • 4. • 맵은 우선 10 X 10 타일으로 구성된다. • 각 타일은 맵정보(MapInfo) 구조체로 구성된다. • 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다. • 캐릭터가 이동하면 현재 위치를 출력한다. • 맵에 랜덤으로 몹을 배치 한다. • 몹이 위치한 타일에 이동하면 몹과 전투 한다. • 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다 • 일정한 확률로 피격/회피/방어를 한다. • 몹에게 죽으면 게임 오버 • 몹에게 이기면 다시 또 이동을 시작한다.
  • 7. • 맵은 우선 10 X 10 타일으로 구성된다. • 각 타일은 맵정보(MapInfo) 구조체로 구성된다. • 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다. • 캐릭터가 이동하면 현재 위치를 출력한다. • 맵에 랜덤으로 몹을 배치 한다. • 몹이 위치한 타일에 이동하면 몹과 전투 한다. • 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다 • 일정한 확률로 피격/회피/방어를 한다. • 몹에게 죽으면 게임 오버 • 몹에게 이기면 다시 또 이동을 시작한다.
  • 9. enum 열거형 • • • • • 타입 종류같은 열거 해야 하는 값들을 저장하는 데이터 타입 내부적으로는 int 형과 같은 4바이트 변수다. 변수안에 들어갈 값들을 제한하여 정한다고 생각하면 된다. 정의된 값들은 디폴트로 0부터 순차적으로 증가한다. 0이 아닌 다른 특정한 값(int형)으로 정의할 수도 있다. 예) 히트 결과 • 함수 반환 값으로 구별이 필요 • Int형으로 반환 => 0 – 미스, 1 – 히트, 2 – 파괴 • enum 형으로 선언 • MISS, HIT, DESTROY • 반환값으로 enum 형을 반환
  • 13. • 맵은 우선 10 X 10 타일으로 구성된다. • 각 타일은 맵정보(MapInfo) 구조체로 구성된다. • 캐릭터는 키보드 입력으로 동서남북(W,A,S,D)로 이동 한다. • 캐릭터가 이동하면 현재 위치를 출력한다. • 맵에 랜덤으로 몹을 배치 한다. • 몹이 위치한 타일에 이동하면 몹과 전투 한다. • 공격은 정해진 데미지 범위 안에서(MIN ~ MAX) 데미지를 입힌다 • 일정한 확률로 피격/회피/방어를 한다. • 몹에게 죽으면 게임 오버 • 몹에게 이기면 다시 또 이동을 시작한다.
  • 15. RANDOM srand() 함수를 호출하여, SEED값을 설정하여 준다
  • 17. 몹의 생성 및 배 치 안됨!! 스택 메모리에서 삭제된 Mob을 참조하는 버그가 발생!
  • 18. 몹의 생성 및 배 치
  • 19. 몹의 생성 및 배 치 실습) 랜덤으로 맵사이즈의 ¼만큼의 수의 몹을 배치 하라