기본적으로 배운것들을 토대로 살을 붙여나가는 형식으로 진행중입니다
[18.01.06]
#0 객체지향적으로 연습중
#1 용사의 이름 설정.
#2 몬스터를 잡으면 경험치와 골드를 얻음
#3 레벨업기능 추가
#4 메뉴 구현
#5 턴제
int main() {
string name;
int select;
// Helmet* helmet = new Helmet();
// Sword* sword = new Sword();
std::cout << "[ 용사가 되자 ]" << std::endl;
std::cout << "용사의 이름을 설정하세요" << std::endl;
std::cin >> name;
Hero* h = new Hero(name);
h->showStat();
select = 0;
while(select != 5){
select = selectMenu();
switch(select){
case 1: { // 전투하기
Goblin *goblin = new Goblin();
Goblin *tempG = goblin;
Hero *tempH = h;
battle(tempH, tempG);
break;
}
case 2: { // 능력치보기
h->showStat();
break;
}
case 3: { //상점가기
std::cout << " 상점가기 " << std::endl;
break;
}
case 4:{ //인벤토리가기
std::cout << " 인벤토리 " << std::endl;
break;
}
case 5: { //나가기
std::cout << "[ 용사가 잠들었습니다 ]" << std::endl;
break;
}
}
}
- class Hero();
-showStat() // 용사의 능력치를 보여주는 함수
- class Goblin();
- class Helmet();
- class Sword();
- int main()
- battle() // 몬스터와 배틀하는 임시적인 공간, 게임에서 이기면 골드와 경험치 획득
#6 기본적으로 클래스 내부 함수들은 private
class Hero{
public:
Hero(){
name = "김용사";
MAXHP = 100;
MAXMP = 150;
MAXEXP = 100;
hp = 100;
mp = 150;
armor = 10;
attack = 20;
exp = 0;
level = 1;
gold = 0;
helmet = nullptr;
sword = nullptr;
}
Hero(string userName){
name = userName;
MAXHP = 100;
MAXMP = 150;
MAXEXP = 100;
hp = 100;
mp = 150;
armor = 10;
attack = 20;
exp = 0;
level = 1;
gold = 0;
helmet = nullptr;
sword = nullptr;
}
~Hero(){
std::cout << "~remove HeroClass" << std::endl;
}
public:
void showStat(){
std::cout << "=============================" << std::endl;
std::cout << "Name : " << name << std::endl;
std::cout << "Level : " << level << std::endl;
std::cout << "HP : " << hp << " / " << MAXHP << std::endl;
std::cout << "MP : " << mp << " / " << MAXMP << std::endl;
std::cout << "Armor : " << armor <<" (+ "<< (helmet == nullptr ? 0 : helmet->getArmor()) << ")" << std::endl;
std::cout << "Attack : " << attack <<" (+ " << (sword == nullptr ? 0 : sword->getAttack()) << ")" << std::endl;
std::cout << "Exp : " << exp << " / " << MAXEXP << std::endl;
std::cout << "Gold : " << gold << std::endl;
std::cout << "=============================" << std::endl;
}
string getName(){
return name;
}
void getHelmet(Helmet *temp){
helmet = temp;
std::cout << "[헬멧 장착완료!]" << std::endl;
}
void getSword(Sword *temp){
sword = temp;
std::cout << "[소드 장착완료!]" << std::endl;
}
int getHp(){
return hp;
}
int getMAXHP(){
return MAXHP;
}
int getMp(){
return mp;
}
int getArmor(){
return armor;
}
int getAttack(){
return attack;
}
int getMoney(){
return gold;
}
void setHp(int tempHp){
hp = tempHp;
}
void setMp(int tempMp){
mp = tempMp;
}
void setMoney(int tempMoney){
if(gold + tempMoney < 0){
gold = 0;
}
else
gold += tempMoney;
}
void setExp(int tempExp){
if(exp + tempExp < 100){
exp += tempExp;
}
if(exp + tempExp >= 100){
exp = exp + tempExp;
exp -= 100;
levelUp();
}
if(exp + tempExp < 0){
exp = exp + tempExp;
exp += 100;
levelDown();
}
}
void levelUp(){
level++;
}
void levelDown(){
level--;
}
private:
string name;
int MAXHP;
int MAXMP;
int MAXEXP;
int hp;
int mp;
int armor;
int attack;
int exp;
int level;
int gold;
Helmet *helmet;
Sword *sword;
};
class를 작성시에 멤버변수들은 맨 아래에 적는것이 좋다고한다.
왜냐하면 다른 사람이 class를 볼때 변수들을 보고 무슨일을 하는 클래스인지 보는것이 아니라
함수를 통해 보기 때문이다.
part2에 추가할 내용
- 상점구현
- 물약섭취
- 헬멧, 검 장착
'개발일지' 카테고리의 다른 글
[Web] Twitter 개발기 (0) | 2018.10.02 |
---|---|
[Unity] 'Toms And Jerry' - 1인 미니게임개발기 (0) | 2018.01.29 |
[개발일지] '용사가 되자' part 3 (0) | 2018.01.16 |
[개발일지] '용사가 되자' part 2 (0) | 2018.01.08 |