monster.h
Kod: Zaznacz cały
#ifndef MONSTER_H
#define MONSTER_H
#include "random.h"
#include "weapon.h"
#include "player.h"
#include <string>
class Monster
{
public:
Monster(const std::string& name, int hp, int acc, int xpReward, int armor, const std::string& weaponName,
int lowDamage, int highDamage);
bool isDead();
int getXPReward();
std::string getName();
int getArmor();
void attack(Player& player);
void takeDamage(int damage);
void displayHitPoints();
private:
std::string mName;
int mHitPoints;
int mAccuracy;
int mExpReward;
int mArmor;
Weapon mWeapon;
};
#endif //MONSTER_H
Kod: Zaznacz cały
#ifndef PLAYER_H
#define PLAYER_H
#include "weapon.h"
#include "monster.h"
#include <string>
class Player
{
public:
Player();
bool isDead();
std::string getName();
int getArmor();
void takeDamage(int damage);
void createClass();
bool attack(Monster& monster);
void levelUp();
void rest();
void viewStats();
void victory(int xp);
void gameover();
void displayHitPoints();
private:
std::string mName;
std::string mClassName;
int mAccuracy;
int mHitPoints;
int mMaxHitPoints;
int mExpPoints;
int mNextLevelExp;
int mLevel;
int mArmor;
Weapon mWeapon;
};
#endif //PLAYER_H
Kod: Zaznacz cały
#include "monster.h"
#include <iostream>
using namespace std;
Monster::Monster(const std::string& name, int hp, int acc, int xpReward, int armor, const std::string& weaponName, int lowDamage, int highDamage)
{
mName = name;
mHitPoints = hp;
mAccuracy = acc;
mExpReward = xpReward;
mArmor = armor;
mWeapon.mName = weaponName;
mWeapon.mDemageRange.mLow = lowDamage;
mWeapon.mDemageRange.mHigh = highDamage;
}
bool Monster::isDead()
{
return mHitPoints <=0;
}
int Monster::getXPReward()
{
return mExpReward;
}
std::string Monster::getName()
{
return mName;
}
int Monster::getArmor()
{
return mArmor;
}
void Monster::attack(Player& player)
{
cout<<"A "<<mName<<" attack you "<<"with a "<<mWeapon.mName<<endl;
if(Random(0,20) < mAccuracy)
{
int damage=Random(mWeapon.mDemageRange);
int totalDamage=damage-player.getArmor();
if(totalDamage<=0)
{
cout<<"The monster attack faild to penetrate your armor."<<endl;
}
else
{
cout<<"You are hit for "<<totalDamage<<" Damage!"<<endl;
player.takeDamage(totalDamage);
}
}
else
{
cout << " The "<<mName<<" missed!"<<endl;
}
cout << endl;
}
void Monster::takeDamage(int damage)
{
mHitPoints -=damage;
}
void Monster::displayHitPoints()
{
cout<<mName<<" 's hitpoints = "<<mHitPoints << endl;
}
Kod: Zaznacz cały
#include "player.h"
#include <iostream>
using namespace std;
Player::Player()
{
mName="Default";
mClassName="Default";
mAccuracy=0;
mHitPoints=0;
mMaxHitPoints=0;
mExpPoints=0;
mNextLevelExp=0;
}
bool Player::isDead()
{
return mHitPoints <=0;
}
int Player::getArmor()
{
return mArmor;
}
void Player::takeDamage(int damage)
{
mHitPoints-=damage;
}
void Player::createClass()
{
cout<<"Character Class Generator"<<endl;
cout<<"========================="<<endl;
cout<<"Enter your character name: ";
getline(cin,mName);
cout<<"Pleas select a character class number..."<<endl;
cout<<"1)Fighter 2)Wizard 3)Cleric 4)Thief: ";
int characterNum=1;
cin>>characterNum;
switch(characterNum)
{
case 1:
mClassName="Fighter";
mAccuracy=10;
mHitPoints=20;
mMaxHitPoints=20;
mExpPoints=0;
mNextLevelExp=1000;
mLevel=1;
mArmor=4;
mWeapon.mName="Long Swoard";
mWeapon.mDemageRange.mLow=1;
mWeapon.mDemageRange.mHigh=8;
break;
case 2:
mClassName="Wizard";
mAccuracy=5;
mHitPoints=10;
mMaxHitPoints=10;
mExpPoints=0;
mNextLevelExp=1000;
mLevel=1;
mArmor=1;
mWeapon.mName="Staff";
mWeapon.mDemageRange.mLow=1;
mWeapon.mDemageRange.mHigh=4;
break;
case 3:
mClassName="Cleric";
mAccuracy=8;
mHitPoints=15;
mMaxHitPoints=15;
mExpPoints=0;
mNextLevelExp=1000;
mLevel=1;
mArmor=3;
mWeapon.mName="Flail";
mWeapon.mDemageRange.mLow=1;
mWeapon.mDemageRange.mHigh=6;
break;
default:
mClassName="Thief";
mAccuracy=7;
mHitPoints=12;
mMaxHitPoints=12;
mExpPoints=0;
mNextLevelExp=1000;
mLevel=1;
mArmor=2;
mWeapon.mName="Short Swoard";
mWeapon.mDemageRange.mLow=1;
mWeapon.mDemageRange.mHigh=6;
break;
}
}
bool Player::attack(Monster& monster)
{
int selection=1;
cout<<"1) Attack 2)Run: ";
cin >> selection;
cout <<endl;
switch(selection)
{
case 1:
cout << "You attack an " << monster.getName() << " with a " <<mWeapon.mName << endl;
if(Random(0,20) < mAccuracy)
{
int damage = Random(mWeapon.mDemageRange);
int totalDamage=damage-monster.getArmor();
if(totalDamage<=0)
{
cout<<"Your Attack faild to penetrate " << "the armor"<<endl;
}
else
{
cout<<"You attack for "<<totalDamage<<" damage!"<<endl;
}
}
else
{
cout <<"You Miss"<<endl;
}
cout<<endl;
break;
case 2:
int roll=Random(1,4);
if(roll ==1)
{
cout<<"You ran away!"<<endl;
return true;
}
else
{
cout<<"You could not escape!"<<endl;
break;
}
}
}
void Player::levelUp()
{
if(mExpPoints >=mNextLevelExp)
{
cout <<" You gained a level!"<<endl;
mLevel++;
mNextLevelExp=mLevel * mLevel * 1000;
mAccuracy +=Random(1,3);
mMaxHitPoints += Random(2,6);
mArmor +=Random(1,2);
mHitPoints=mMaxHitPoints;
}
}
void Player::rest()
{
cout << "Resting ..."<<endl;
mHitPoints=mMaxHitPoints;
}
void Player::viewStats()
{
cout << "Player STATS"<<endl;
cout << "============"<<endl;
cout << endl;
cout << "Name = "<< mName <<endl;
cout << "Class = "<< mClassName <<endl;
cout << "Accuracy = "<< mAccuracy <<endl;
cout << "Hitpoints = "<< mHitPoints <<endl;
cout << "MaxHitpoints = "<< mMaxHitPoints <<endl;
cout << "XP = "<< mExpPoints <<endl;
cout << "XP for next Lvl = "<< mNextLevelExp <<endl;
cout << "Level = "<< mLevel <<endl;
cout << "Armor = "<< mArmor <<endl;
cout << "Weapon Name = "<< mWeapon.mName <<endl;
cout << "Weapon Damage = "<< mWeapon.mDemageRange.mLow << "-" << mWeapon.mDemageRange.mHigh <<endl;
cout << endl;
cout << "END PLAYER STATS"<<endl;
cout << "================"<<endl;
cout << endl;
}
void Player::victory(int xp)
{
cout << " You Won the Battle!!!" << endl;
cout << " You win " << xp << " expirencee points!" << endl<<endl;
mExpPoints += xp;
}
void Player::gameover()
{
cout<<"You died in battle..."<<endl;
cout<<endl;
cout<< "===================="<<endl;
cout<< "GAME OVER!"<<endl;
cout<< "Pres 'q' to quit: ";
char q='q';
cin >>q;
cout <<endl;
}
void Monster::displayHitPoints()
{
cout<< mName << " 's hitpoints = " << mHitPoints << endl;
}
main.cpp
Kod: Zaznacz cały
#include <iostream>
#include <string>
#include "player.h"
#include "weapon.h"
#include "monster.h"
using namespace std;
int main()
{
Weapon sword;
Player player;
player.createClass();
sword.mName="miecz";
sword.mDemageRange.mHigh=5;
Monster* ork= new Monster("Ork samo zlo",10,10,10,10,"topur",1,10);
}
Kod: Zaznacz cały
g++ main.cpp weapon.h -o main
In file included from player.h:5,
from main.cpp:3:
monster.h:21: error: ‘Player’ has not been declared
Pozdrawiam
GameBoy