SlideShare una empresa de Scribd logo
1 de 26
수업전 질문
헤더파일의 Include 제거
Player.h Player.cpp
헤더 파일의 Include는 적을 수록 좋다!!
• 컴파일 속도가 빨라진다. (Include는 파일의 내용을 삽입(!) 하는 것)
• 각 파일간의 의존도(커플링)을 제거 한다.
class Player
배 객체들을 가지고 있다
•Aircraft, Battleship, Cruiser, Destroyer(x2)
내 배들을 배치한다.
상대방의 공격에 피격 체크 결과를 알려준다.
맵 객체들을 가지고 있다.
상대방을 공격 한다.
class Player
배 객체들을 가지고 있다
•Aircraft, Battleship, Cruiser, Destroyer(x2)
내 배들을 배치한다.
상대방의 공격에 피격 체크 결과를 알려준다.
맵 객체들을 가지고 있다.
상대방을 공격 한다.
#pragma once
/// 게임을 진행하는 플레이어 클래스
class Player
{
public:
Player();
~Player();
};
#pragma once
#include "Aircraft.h"
#include "Battleship.h"
#include "Cruiser.h"
#include "Destroyer.h"
/// 게임을 진행하는 플레이어 클래스
class Player
{
public:
Player();
~Player();
protected:
// 배 객체들
Aircraft m_Aircraft;
Battleship m_Battleship;
Cruiser m_Cruiser;
Destroyer m_Destroyer[2];
};
class Player
배 객체들을 가지고 있다
•Aircraft, Battleship, Cruiser, Destroyer(x2)
내 배들을 배치한다.
상대방의 공격에 피격 체크 결과를 알려준다.
맵 객체들을 가지고 있다.
상대방을 공격 한다.
class Player
내 배들의 위치를 출력하자.
int _tmain(int argc, _TCHAR* argv[])
{
Player player;
player.SetupShips();
player.PrintShips();
getchar();
return 0;
}
class Player
배 객체들을 가지고 있다
•Aircraft, Battleship, Cruiser, Destroyer(x2)
내 배들을 배치한다.
상대방의 공격에 피격 체크 결과를 알려준다.
맵 객체들을 가지고 있다.
상대방을 공격 한다.
class GameManager
class GameManager
{
public:
GameManager();
~GameManager();
void Init();
void Start();
protected:
// 우선 1단계.
// 어택커와 디펜더를 구별하고, 한쪽은 공격만, 한쪽은 히트체크만 한다.
Player m_Attacker;
Player m_Defender;
};
결과값의 추가
그런데??
그런데??
CShip::HitCheck()
CShip이 자식 클래스의 종류를
알아야만 한다.
부모가 태어날 자식들을 다 미리 알고
만들어져야 한다는게 말이 될까??
오버라이딩 - 정의
• 부모 클래스의 메소드를 호출한 후에 내용을 추가한다.
• 자식 클래스의 내용을 먼저 처리하고, 부모 메소드를 호출
• 완전히 다른 내용으로 바꾸기
class GameManager
Attacker와 Defender
Attacker는 랜덤으로 공격 한다
Defender는 히트 체크를 한다
진행 상황을 출력한다.
한쪽의 배가 모두 격추 될 때까지 반복한다.
몇턴이 걸렸는지 출력한다.
수업후 질문

Más contenido relacionado

La actualidad más candente

파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어
Chulgyu Shin
 
ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)
Chulgyu Shin
 

La actualidad más candente (13)

우분투 커널 컴파일
우분투 커널 컴파일우분투 커널 컴파일
우분투 커널 컴파일
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
1.intro to k8s
1.intro to k8s1.intro to k8s
1.intro to k8s
 
파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어
 
ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
RZDESK-Docker hackday
RZDESK-Docker hackdayRZDESK-Docker hackday
RZDESK-Docker hackday
 
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and API
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 

Destacado

[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성
MinGeun Park
 
[Pl in c++] 5. 객체지향 프로그래밍
[Pl in c++] 5. 객체지향 프로그래밍[Pl in c++] 5. 객체지향 프로그래밍
[Pl in c++] 5. 객체지향 프로그래밍
MinGeun Park
 
[Pl in c++] 12. learning
[Pl in c++] 12. learning[Pl in c++] 12. learning
[Pl in c++] 12. learning
MinGeun Park
 
[SCON9] 커뮤니케이션 in Game
[SCON9] 커뮤니케이션 in Game[SCON9] 커뮤니케이션 in Game
[SCON9] 커뮤니케이션 in Game
MinGeun Park
 

Destacado (20)

[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성[Pl in c++] 9. 다형성
[Pl in c++] 9. 다형성
 
[Pl in c++] 5. 객체지향 프로그래밍
[Pl in c++] 5. 객체지향 프로그래밍[Pl in c++] 5. 객체지향 프로그래밍
[Pl in c++] 5. 객체지향 프로그래밍
 
Unit Testing and Test Driven Development in Unity3D
Unit Testing and Test Driven Development in Unity3DUnit Testing and Test Driven Development in Unity3D
Unit Testing and Test Driven Development in Unity3D
 
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
[141217 박민근] Visual Studio 2013의 (잘모르는) 유용한 기능들
 
[141015] cedec 2014 참관기 & 강연 리뷰 #2
[141015] cedec 2014 참관기 & 강연 리뷰 #2[141015] cedec 2014 참관기 & 강연 리뷰 #2
[141015] cedec 2014 참관기 & 강연 리뷰 #2
 
[Pl in c++] 12. learning
[Pl in c++] 12. learning[Pl in c++] 12. learning
[Pl in c++] 12. learning
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
[SCON9] 커뮤니케이션 in Game
[SCON9] 커뮤니케이션 in Game[SCON9] 커뮤니케이션 in Game
[SCON9] 커뮤니케이션 in Game
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 
Unity3D 5 의 ugui #1
Unity3D 5 의 ugui #1Unity3D 5 의 ugui #1
Unity3D 5 의 ugui #1
 
Tdd in unity
Tdd in unityTdd in unity
Tdd in unity
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기
 
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술[150523] live2d 그녀들을 움직이게 하는 기술
[150523] live2d 그녀들을 움직이게 하는 기술
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 

Más de MinGeun Park

[Pl in c++] 11. chapter
[Pl in c++] 11. chapter[Pl in c++] 11. chapter
[Pl in c++] 11. chapter
MinGeun Park
 

Más de MinGeun Park (18)

[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 소개 및 활용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
[Pl in c++] 11. chapter
[Pl in c++] 11. chapter[Pl in c++] 11. chapter
[Pl in c++] 11. chapter
 

[Pl in c++] 10. battleship game 5

  • 1.
  • 3.
  • 4.
  • 5. 헤더파일의 Include 제거 Player.h Player.cpp 헤더 파일의 Include는 적을 수록 좋다!! • 컴파일 속도가 빨라진다. (Include는 파일의 내용을 삽입(!) 하는 것) • 각 파일간의 의존도(커플링)을 제거 한다.
  • 6.
  • 7.
  • 8. class Player 배 객체들을 가지고 있다 •Aircraft, Battleship, Cruiser, Destroyer(x2) 내 배들을 배치한다. 상대방의 공격에 피격 체크 결과를 알려준다. 맵 객체들을 가지고 있다. 상대방을 공격 한다.
  • 9. class Player 배 객체들을 가지고 있다 •Aircraft, Battleship, Cruiser, Destroyer(x2) 내 배들을 배치한다. 상대방의 공격에 피격 체크 결과를 알려준다. 맵 객체들을 가지고 있다. 상대방을 공격 한다.
  • 10. #pragma once /// 게임을 진행하는 플레이어 클래스 class Player { public: Player(); ~Player(); }; #pragma once #include "Aircraft.h" #include "Battleship.h" #include "Cruiser.h" #include "Destroyer.h" /// 게임을 진행하는 플레이어 클래스 class Player { public: Player(); ~Player(); protected: // 배 객체들 Aircraft m_Aircraft; Battleship m_Battleship; Cruiser m_Cruiser; Destroyer m_Destroyer[2]; };
  • 11. class Player 배 객체들을 가지고 있다 •Aircraft, Battleship, Cruiser, Destroyer(x2) 내 배들을 배치한다. 상대방의 공격에 피격 체크 결과를 알려준다. 맵 객체들을 가지고 있다. 상대방을 공격 한다.
  • 12. class Player 내 배들의 위치를 출력하자. int _tmain(int argc, _TCHAR* argv[]) { Player player; player.SetupShips(); player.PrintShips(); getchar(); return 0; }
  • 13. class Player 배 객체들을 가지고 있다 •Aircraft, Battleship, Cruiser, Destroyer(x2) 내 배들을 배치한다. 상대방의 공격에 피격 체크 결과를 알려준다. 맵 객체들을 가지고 있다. 상대방을 공격 한다.
  • 14.
  • 16. class GameManager { public: GameManager(); ~GameManager(); void Init(); void Start(); protected: // 우선 1단계. // 어택커와 디펜더를 구별하고, 한쪽은 공격만, 한쪽은 히트체크만 한다. Player m_Attacker; Player m_Defender; };
  • 17.
  • 20. 그런데?? CShip::HitCheck() CShip이 자식 클래스의 종류를 알아야만 한다. 부모가 태어날 자식들을 다 미리 알고 만들어져야 한다는게 말이 될까??
  • 21.
  • 22.
  • 23.
  • 24. 오버라이딩 - 정의 • 부모 클래스의 메소드를 호출한 후에 내용을 추가한다. • 자식 클래스의 내용을 먼저 처리하고, 부모 메소드를 호출 • 완전히 다른 내용으로 바꾸기
  • 25. class GameManager Attacker와 Defender Attacker는 랜덤으로 공격 한다 Defender는 히트 체크를 한다 진행 상황을 출력한다. 한쪽의 배가 모두 격추 될 때까지 반복한다. 몇턴이 걸렸는지 출력한다.