C++遊戲系列1-角色類
阿新 • • 發佈:2019-01-25
知識點:
1、類的定義、物件
2、建構函式、解構函式
【專案-遊戲中的角色類】
(1)基於下面設計的遊戲中角色類,補充完整需要的成員函式,使角色能一定的規則行動或改變狀態。下面程式碼中包含的是最基本的要求,可以根據你的設計進行擴充。
class Role
{
public:
……
private:
string name;
int blood;
bool life;
};
int main( )
{
Role mary;
mary.setRole("Mary", 4);
mary.show();
mary.attack();
mary.eat(2 );
mary.beAttack();
mary.beAttack();
mary.show();
return 0;
}
[參考解答]
#include <iostream>
using namespace std;
class Role
{
public:
void eat(int d); //吃東西,漲d血
void attack(); //攻擊別人,漲1血
void beAttack(); //被攻擊,失1血,血為0死掉
bool isAlived(); //是否活著
void setRole(string nam, int b); //設定
void show(); //顯示
private:
string name;
int blood;
bool life;
};
void Role::eat(int d) //吃東西,漲d血
{
if(isAlived())
blood+=d;
}
void Role::attack() //攻擊別人,漲1血
{
if(isAlived())
blood++;
}
void Role::beAttack() //被攻擊,失1血,血為0死掉
{
if(isAlived())
blood--;
if (blood==0)
life=false;
}
bool Role::isAlived() //是否活著
{
return life;
}
void Role::setRole(string nam, int b) //設定
{
name=nam;
blood=b;
if(blood>0)
life=true;
else
life=false;
}
void Role::show() //顯示
{
cout<<name<<" has "<<blood<<" blood, it is ";
if(isAlived())
cout<<"alived.";
else
cout<<"dead.";
cout<<endl;
}
int main( )
{
Role mary;
mary.setRole("Mary", 4);
mary.show();
mary.attack();
mary.eat(2);
mary.beAttack();
mary.beAttack();
mary.show();
return 0;
}
(2)設計建構函式,使角色物件在建立時被初始化;設計解構函式,當角色物件被撤消時,提示一句“XXX(名稱)退出江湖…”。可以用下面的程式碼進行測試,執行結果參考右圖:
int main( )
{
Role mary("Mary", 4);
Role jack("Jack", 0);
mary.show();
jack.show();
return 0;
}
[參考解答]
#include <iostream>
using namespace std;
class Role
{
public:
Role(string nam, int b); //建構函式
~Role(); //解構函式
void eat(int d); //吃東西,漲d血
void attack(); //攻擊別人,漲1血
void beAttack(); //被攻擊,失1血,血為0死掉
bool isAlived(); //是否活著
void show(); //顯示
private:
string name;
int blood;
bool life;
};
Role::Role(string nam, int b)
{
name=nam;
blood=b;
if(blood>0)
life=true;
else
life=false;
}
Role::~Role()
{
cout<<name<<"退出江湖..."<<endl;
}
void Role::eat(int d) //吃東西,漲d血
{
if(isAlived())
blood+=d;
}
void Role::attack() //攻擊別人,漲1血
{
if(isAlived())
blood++;
}
void Role::beAttack() //被攻擊,失1血,血為0死掉
{
if(isAlived())
blood--;
if(blood==0)
life=false;
}
bool Role::isAlived() //是否活著
{
return life;
}
void Role::show() //顯示
{
cout<<name<<" has "<<blood<<" blood, it is ";
if(isAlived())
cout<<"alived.";
else
cout<<"dead.";
cout<<endl;
}
int main( )
{
Role mary("Mary", 4);
Role jack("Jack", 0);
mary.show();
jack.show();
return 0;
}