1. 程式人生 > >C++遊戲系列1-角色類

C++遊戲系列1-角色類

知識點:
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;
}