전체 글 2432

스타듀 밸리 1년 봄 11~14일차 일기

오늘은 기필코 저번에 한참을 찾던 안경 쓴 금발 아저씨와 인사를 나눈다는 다짐을 가지고 게임을 시작하였습니다![어디서 많이 본거 같은데...] 어제와는 달리 게임을 시작하자마자 이 사람을 찾았는데, 그는 피에르 상점에서 물건을 파는 사람이었습니다...(등잔 밑이 어둡다는 것은 이럴 때 하는 말이네요 ㅠ) 처음 게임 시작했을 때 여기서 물건을 샀는데, 물건 살 때 하는 대화는 무효로 처리되고 개인적인 얘기로 1:1 대화를 해야 인사했다고 인정되는 것 같습니다.[창구에서 말고 옆으로 가서 대화를 하거나 쉬는 날에 산책할 때 대화를 하시면 됩니다] 마을 사람들과 모두 인사를 나누면 주민에게 선물을 주는 퀘스트가 생깁니다. 저는 대장간에서 일하는 아저씨한테 저번에 잡은 멸치를 주었는데 반응이 시원치 않은 것 보..

OOP 단계별 프로젝트 10

[Account.h]#ifndef __BOUND_CHECK_ARRAY_H__#define __BOUND_CHECK_ARRAY_H__ template class BoundCheckArray{private: T *arr; int arrlen; BoundCheckArray(const BoundCheckArray &arr) //복사 방지 { } BoundCheckArray &operator=(const BoundCheckArray &arr) //대입 방지 { }public: BoundCheckArray(int len = 100); T &operator[](int idx); T operator[](int idx) const; int GetArrLen() const; ~BoundCheckArray();}; temp..

열혈 C++ 프로그래밍 13-2 문제

/*만약에 Chapter 11을 공부하면서 스마트 포인터도 공부를 했다면, 이문제를 반드시 해결하고 넘어가기 바란다.자! 그럼 문제를 제시하겠다. 우리는 앞서 Chapter 11에서 다음의 형태로 스마트 포인터를 정의하였다.class SmartPtr{private: Point *posptr;public: SmartPtr(Point *ptr) :posptr(ptr) { } Point &operator*() const { return *posptr } Point *operator->() const { return posptr; } ~SmartPtr() { delete posptr; }};이 스마트 포인터를 템플릿으로 정의하여, 어떠한 클래스의 객체도 참조할 수 있는 포인터가 되게하자.그리고는 아래의 Poin..

열혈 C++ 프로그래밍 13-1 문제

[1번 문제]/*인자로 전달되는 두 변수에 저장된 값을 서로 교환하는 SwapData라는 이름의 함수를 템플릿으로 정의해보자.그리고 다음 Point 클래스를 대상으로 값의 교환이 이뤄짐을 확인할 수 있도록 main 함수를 구성해보자class Point{private: int xpos, ypos;public: Point(int x = 0, int y = 0) :xpos(x), ypos(y) { } void ShowPosition() const { cout

스타듀 밸리 1년 봄 1일차~10일차 일기

스타듀 밸리를 처음 시작하면 캐릭터 선택창이 나타납니다.개와 고양이 선택지는 이후에 데려올 애완동물이 개일지, 고양이일지를 선택하는 화면입니다. 놀랐던 점은 피부, 헤어, 셔츠, 악세사리 종류가 각각 20가지가 넘을만큼 선택지가 많았다는 것입니다.(역시 4년의 노력이 엄청나네요) 캐릭터를 설정하고 나면, 캐릭터가 대기업에서 허덕이다가 편지를 읽고 스타듀밸리로 떠나는 화면이 나오는데 특별한 내용은 없으니 과감하게 스킵 버튼을 누르셔도 됩니다!마을에 도착하게 되면 마을주민이자 물건을 판매하는 로빈과 마을촌장인 루이스가 환영을 해줍니다. 환영인사를 다 받고 나면, 집에서 기상하면서 게임이 시작됩니다. 게임이 시작되면 옆에 ! 모양의 퀘스트 모양에 퀘스트가 들어왔다고 뜹니다. 클릭하면 다음과 같은 퀘스트가 나타..

스타듀 밸리(Stardew Valley)

이번에 리뷰할 게임은, 앞서 리뷰한 동물의 숲과 유사한 게임인 스타듀 밸리(Stardew Valley)입니다! [스타듀 밸리 게임 화면] 스타듀 밸리는 에릭 바론이라는 개발자가 4년동안 혼자 만든 게임인데, 플레이를 해보면 4년동안 얼마나 열심히 개발했는지 확인할 수 있습니다.(심지어, bgm과 그래픽도 본인이 다 개발했습니다) 각박한 도시생활을 하다 어릴 적 할아버지가 삶이 힘들 때 열어보라는 편지를 읽은 주인공이 할아버지가 과거 살던 농장으로 돌아와 새 삶을 살아가라는 내용을 보고 한적한 지역인 스타듀 밸리로 오게 되어 게임 이름이 스타듀 밸리가 되었습니다.(정작 마을이름은 팰리컨 마을(Pelican Village)입니다 ㅋㅋ) 동물의 숲과 마찬가지로 정해진 결론이 있는 게임이 아니라 자유롭게 플레이..

OOP 단계별 프로젝트 9

[Account.h]/* 우리가 정의한 Account 클래스는 생성자에서 문자열을 동적 할당하기 때문에, 소멸자 그리고 깊은 복사를 위한 복사생성자와 대입 연산자가 정의되어 있다. 그런데 이번에 적용할 String 클래스는 메모리 공간을 동적 할당하고, 깊은 복사를 진행하는 형태로 복사생성자와 대입 연산자가 정의되어 있기 때문에, 이를 이용하면 Account 클래스의 구현이 한결 간단해진다. 조금 더 자세히 설명하면, Account 클래스의 생성자 내에서의 동적 할당이 불필요해지며, 이로 인해서 직접 정의한 소멸자와 복사 생성자 그리고 대입 연산자가 모두 불필요해진다. 바로 이러한 사실을 확인하고 다음의 결론을 스스로 내리는 것이 이번 프로젝트의 핵심이라 할 수 있다. "적절한 클래스의 등장은 다른 클래..

OOP 단계별 프로젝트 8

[Account.h]/* Account 클래스는 깊은 복사를 진행하도록 복사 생성자가 정의되어 있다. 따라서 대입 연산자도 깊은 복사가 진행되도록 정의하는 것이 좋다. 그리고 AccountHandler 클래스에는 배열이 멤버로 선언되어서 객체의 저장을 주도 하는데, 이를 이번 Chapter에서 정의한 BoundCheckPointPtrArray 배열 클래스로 대체하고자 한다. 물론, 이를 위해서는 약간의 수정이 필요하며, 클래스의 이름도 적당히 변경해야할 필요가 있다. 실제 변경이 발생하는 헤더파일과 소스파일은 다음과 같다 Account.h Account.cpp-> 대입 연산자의 정의 AccountHandler.h-> BoundCheckPointPtrArray 클래스의 적용 따라서 이들 파일에 대한 버전정..

열혈 C++ 프로그래밍 11-1 문제

[1번 문제]/*Chapter 07에서는 예제 HASComposite.cpp를 통해서 다음의 두 클래스를 정의하였다(완전한 클래스의 정의는 예제 참고)class Gun{ ....} class Police{private: int handcuffs; //소유한 수갑의 수 Gun *pistol; //소유하고 있는 권총public: ....}이에 Police 클래스를 대상으로 깊은 복사가 이뤄지도록 대입 연산자와 복사 생성자를 동시에 정의하고 이의 확인을 위해 main 함수도 적절히 정의해보자*/ //HasComposite.cpp/*#include #include using namespace std; class Gun{private: int bullet; //장전된 총알의 수public: Gun(int bnum..