기본 콘텐츠로 건너뛰기

c++ 연습예제(대전게임)`

//main.cpp
#include<iostream>

#include"probability.h"
#include"GameSystem.h"
#include"NormalMan.h"
#include"PowerMan.h"
#include"TankerMan.h"
using namespace std;

enum MyEnum
{
POWER = 1,
TANKER,
NORMAL,
};
int main()
{
Player *player;
GameSystem gameSys;
probability facedMonster(20);
player = new Player;
gameSys.selectPlayer();
switch (gameSys.getSel())
{
case POWER:
player = new PowerMan;
break;
case TANKER:
player = new TankerMan;
break;
case NORMAL:
player = new NormalMan;
break;
case 4:
exit(1);
break;
default:
cout << "Please input 1 ~ 3 nums.\n";
}

gameSys.playMenu();
while (gameSys.getSel() == 1)
{

if (facedMonster.isGotit())
{
Monster monster1;
gameSys.warSystem(*player , monster1);

}
gameSys.playMenu();

}

}

//////////////////////////////////////////////////////////////////////////////////////////////////
//GameSystem.cpp
#include<iostream>
#include"GameSystem.h"
#include"Player.h"
#include"monster.h"
#include"probability.h"
using std::cout;
using std::cin;
using std::endl;
GameSystem::GameSystem()
{
cout << "##############################################\n";
cout << "###############   GAME START   ###############\n";
cout << "##############################################\n";
}
void GameSystem::selectPlayer()
{
cout << "==== Please select a character ====\n";
cout << "1. PowerMan ( HP: 1000 / POWER: 200 / skill: CritialAttack)\n"
<< "2. TankerMan ( HP: 2000 / POWER: 100 / skill: ShieldAttack)\n"
<< "3. NormalMan ( HP: 1500 / POWER: 150 / skill: RunningAway)\n"
<<"4. End the Game\n"
<< "select Number: ";
}

int GameSystem::getSel() {
cin >> sel;
return sel;
}
void GameSystem::playMenu()
{
cout << "===== Play the Game =====\n"
<< "1. Looking For Monster\n"
<< "2. Exit the Game\n";
}

void GameSystem::warSystem( Player& you, Monster& enemy)
{
cout << "You faced an enemy!!\nStart the war!\n";

probability whoFrist;
// $)C 8U@z 4)0!0x0]GRAv
int i = 1;
while (1)
{
cout << "\n\nStart Turn " << i++ << endl;
if (whoFrist.isGotit())
{

cout << "====== Selet Menu ======\n";
cout << "1. Attack\n2. Use Skill\nSelect Number: ";
cin >> sel;
if (sel == 1)
enemy.setHp(enemy.getHp() - you.attack());
else if(sel == 2)
enemy.setHp(enemy.getHp() - you.skill());
if (enemy.getHp() <= 0 )
{
cout << "You killed the monster!!" << endl;
break;
}
else
{
cout << "Enemey's Hp :" << enemy.getHp() << endl;
}


cout << "You got the damage\n";
you.setHp(you.getHp() - enemy.attack());
if (you.getHp() <= 0)
{
cout << "You died !!\nThe End\n";
exit(1);
}
else
{
cout << "Your HP: " << you.getHp() << endl;
}

}
else
{
cout << "You got the damage\n";
you.setHp(you.getHp() - enemy.attack());
if (you.getHp() <= 0)
{
cout << "You died !!\nThe End\n";
exit(1);
}
else
{
cout << "Your HP: " << you.getHp() << endl;
}

cout << "====== Selet Menu ======\n";
cout << "1. Attack\n2. Use Skill\nSelect Number: ";
cin >> sel;
if (sel == 1)
enemy.setHp(enemy.getHp() - you.attack());
else if (sel == 2)
enemy.setHp(enemy.getHp() - you.skill());

if (enemy.getHp() <= 0)
{
cout << "You killed the monster!!" << endl;
cout << "Recovers an HP 500.\n";
you.setHp(you.getHp() + 500);
break;
}
else
{
cout << "Enemey's Hp :" << enemy.getHp() << endl;
}
}
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////
//GameSystem.h
#pragma once
#include"monster.h"
#include"Player.h"
class GameSystem
{
public:
GameSystem();
void selectPlayer();
void playMenu();
void warSystem(Player& you, Monster& enemy);
int getSel();
static void setMovDistance() { movDistance++; };
private:
int sel;
static int movDistance;
};

//////////////////////////////////////////////////////////////////////////////////////////////////
//Monster.cpp
#include<iostream>
#include"monster.h"
using std::cout;
Monster::Monster() :hp(1500), power(150) {
cout << "a monster appeared ! \nHP:1500 / POWER: 150\n";
}
Monster::Monster(int myHp, int myPower) : hp(myHp), power(myPower) {}
int Monster::attack()
{
return power; 
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//Monster.h
#pragma once
class Monster
{
public:
Monster();
Monster(int myHp, int myPower);
int getHp() const { return hp; };
int getPower() const { return power; };
void setHp(int myHp)  { hp = myHp; };
void setPower(int myPower) { power = myPower; };
int attack() ;
private:
int hp;
int power;
};


/////////////////////////////////////////////////////////////////////////////////////////
//Player.cpp
#include"Player.h"
int Player::attack()
{
int damage = power;
return damage;
}

//Player.h
#pragma once
class Player
{
public:
int attack(); //基本攻撃
virtual int skill() { return 0; }; //特徴のスキル

int getHp() const { return hp; };
int getPower() const { return power; };
void setHp(int newHp) { hp = newHp; };
void setPower(int newPower) { power = newPower; };
protected:
int hp;
int power;
};

///////////////////////////////////////////////////////////////////////////////////////////////
//PowerMan.cpp
#include"PowerMan.h"
#include<iostream>
using std::cout;
PowerMan::PowerMan() 
{
cout << "You Selected PowerMan.\nYou can use CriticalAttack[Double Damage]\n";
hp = 1000;
power = 200;
}
//criticalAttack
int PowerMan::skill()
{
cout << "You used CriticalAttack!\n";
int damage;
damage = power * 2;
return damage;
}

//PowerMan.h
#include"PowerMan.h"
#include<iostream>
using std::cout;
PowerMan::PowerMan() 
{
cout << "You Selected PowerMan.\nYou can use CriticalAttack[Double Damage]\n";
hp = 1000;
power = 200;
}
//criticalAttack
int PowerMan::skill()
{
cout << "You used CriticalAttack!\n";
int damage;
damage = power * 2;
return damage;
}

/////////////////////////////////////////////////////////////////////////////////////////
//TankerMan.cpp
#include"TankerMan.h"
#include<iostream>
using std::cout;
TankerMan::TankerMan()
{
cout << "You Selected TankerMan.\nYou can use ShieldAttack[Attack and defense]\n";
hp = 2000;
power = 100;
}

//ShieldAttack
int TankerMan::skill()
{
cout << "You used Shield Attack\n";
int damage;
damage = power;
isShield = true;
return damage;
}

//TankerMan.h
#pragma once
#include"Player.h"
class TankerMan :public Player
{
public:
TankerMan();
virtual int skill();
private:
bool isShield;
};

////////////////////////////////////////////////////////////////////////////////////////////////
//NormalMan.cpp
#include<iostream>
#include"NormalMan.h"
using std::cout;
NormalMan::NormalMan()
{
cout << "You selected NormalMan.\n You can use RunningAway[You can escape from the war]\n";
hp = 1500;
power = 150;
}
int NormalMan::skill()
{
cout << "You used RunningAway!\nescape from this war.\n";
return 1;
}

//NormalMan.h
#pragma once
#include"Player.h"
class NormalMan : public Player
{
public:
NormalMan();
virtual int skill();

};

/////////////////////////////////////////////////////////////////////////////////////////////////
//Probability.cpp
#include"probability.h"
#include<ctime>
#include<cstdlib>
#include<iostream>
using std::cout;
using std::endl;
probability::probability(): percent(50) {};
probability::probability(int myPercent) :percent(myPercent) {};
bool probability::isGotit() 
{
srand((unsigned int)time(NULL));

if ((rand() % 100) < percent)
return true;
else
return false;
}

//Probability.h
#pragma once
//
class probability
{
public:
probability();
probability(int myPercent);
bool isGotit();

private:
int percent;

};

댓글

이 블로그의 인기 게시물

CATIA VBAとは

私も素人なので詳しくわかっているのはないけれども 今一ヶ月前から仕事を始めました。 普通VBAといえばEXCELの方を考える人が一般的だと思います。 VBAはVisual Basic Applicationの訳語で、 Microsoft社が作った言語です。 主にマクロ作りに使用されていて、今の私がしている仕事もそうです。 CATIA側でVBAを使う人があんまりなさそうで、 ネットにも資料が少なかったです。 それでぐぐりながら、CATIA VBA Referenceを参照しながらコーディングをしました。 初心者に見てほしいのはCATIA VBA ReferenceとCATIAの中にあるCATIA VBA HELP、最後にマクロ記録機能です。 この三つを見ながら、しながら作業をすればもっと理解しやすいじゃないかと思います。 まずはCATIA VBA Referenceですが、GOOGLEでそのまま検索すれば出ます。 リンクは http://catiadoc.free.fr/online/interfaces/main.htm です。 こちらでCATIA VBAで使われるオブジェクトとかオブジェクトが持っている関数とかが分かります。 多分VBAはどこから開くのかわかっているとは思うんですが、ツールタブで確認できます。 そして二つ目がCATIA VBA HELPです。 ここにはCATIAオブジェクトの構造とかREFERENCEサイトのように関数とオブジェクトの使い方とかパラメータについて表れています。 最後にマクロ記録機能です。 これは結構いいものですが、私が作ろうとしていることを記録を実行してシミュレーションすればコードが自動で作られます。 これを利用してCATIAのある機能についてAPIがあるかどうか確認もできますし、早くコードを作るのに役に立ちます。 一応ここまでに..‼ 明日出社しなきゃ。。 最初にも言いましたけど、私は素人なので間違った部分が多いかもしれません。 気づきの点がありましたらいつでもどうぞ!