遮天吧 关注:4,485,052贴子:86,295,630

求大神相助,在线等,好人一生平安啊#C++程序设计"类的继承"#

只看楼主收藏回复


奥特曼在与多个小怪兽过招的过程中,不断提升自己的等级。在一切就绪的时候,就可以挑战小怪兽的头Boss了。打败Boss就可以获得最终的胜利。
1. 在怪兽类的基础上,定义和实现一个Boss类。如有必要,请对奥特曼和怪兽类做出相应的修改。
Boss类对怪兽类进行了扩充和修改:
l Boss属性的初始值与一般怪兽不同,其等级为100,生命值为500,经验值是100,攻击力是100,钱数是10001。
l Boss有一个新的方法,即绝招(XP)。该方法将连续攻击奥特曼3次。
l Boss的反击方法(fightback)也与一般怪兽不同,一般情况下受到奥特曼的攻击就会反击一次,但每当受到奥特曼攻击的次数(count)累计5次,就会使用绝招(XP)。
修改游戏框架,在最后加入奥特曼打Boss的环节,从而形成一个较为完整的游戏。


1楼2013-05-06 16:04回复
    求助啊,我写了一个代码,求大神在此基础上改成实验要求的


    6楼2013-05-06 16:05
    回复
      求助啊


      7楼2013-05-06 16:08
      回复
        If one day you decide to leave, please don't return expecting things to be exactly the same as before.—— 如果有一天你决定离开,就请别期望当你回来的那一天,一切还可以和原来一样。


        本楼含有高级字体9楼2013-05-06 16:14
        收起回复
          这么坑爹的实验要求啊,类的继承你自己应该会吧,添加一个新成员函数,override一个fightback函数。用一个成员变量记录被攻击次数。


          10楼2013-05-06 16:16
          收起回复
            人工置顶


            11楼2013-05-06 16:21
            回复
              人工置顶


              12楼2013-05-06 16:32
              回复
                八十万大帝们,求拯救啊


                13楼2013-05-06 16:39
                回复
                  main.cpp
                  #include <iostream>
                  #include <string>
                  using namespace std;#include "Ultraman.h"
                  #include "Monster.h"int main(){
                  cout<<"欢迎来到奥特曼的世界!在奥特曼的世界,打怪兽就是全部!"<<endl;
                  cout<<"现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。"<<endl;
                  cout<<"可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。"<<endl;
                  cout<<"每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。"<<endl<<endl;
                  char ch1=' ',ch2=' ',ch3=' ';
                  Ultraman u(1,0,10,1,0); //生成奥特曼对象并初始化
                  while(ch1!='Y'&&ch1!='y'&&ch1!='N'&&ch1!='n'){
                  cout<<"输入Y,打怪升级!"<<endl;
                  cout<<"输入N,退出游戏!"<<endl;
                  cin>>ch1;
                  cout<<endl;
                  }
                  if(ch1=='N'||ch1=='n')
                  {
                  cout<<"游戏结束!"<<endl;
                  exit(0);
                  } Monster m; //生成怪兽对象
                  while(ch1=='y'||ch1=='Y'){
                  ch1=' ';
                  ch2=' ';
                  ch3=' ';
                  m.get(0,0,0,0,0); //怪兽对象属性初始化
                  while(ch2!='u'&&ch2!='U'&&ch2!='m'&&ch2!='M'&&ch2!='f'&&ch2!='F'&&ch2!='e'&&ch2!='E'){
                  cout<<"请选择:"<<endl;
                  cout<<"u:查看自身状态;";
                  cout<<"m:查看对手状态;";
                  cout<<"f:打怪兽;";
                  cout<<"e:逃跑(将损失一定的生命值)。"<<endl;
                  cin>>ch2;
                  cout<<endl;
                  if(ch2=='u'||ch2=='U') {
                  u.display(); //成员函数调用
                  ch2=' ';
                  }
                  else if(ch2=='m'||ch2=='M') {
                  m.display(); // 成员函数调用
                  ch2=' ';
                  }
                  else if(ch2=='e'||ch2=='E') {
                  u.escape(); // 成员函数调用
                  if(u.getu_hp()<=0){ //成员函数调用,注意调用形式
                  cout<<"您英雄的一生结束了!"<<endl;
                  exit(0);
                  }
                  }
                  else if(ch2=='f'||ch2=='F') {
                  u.u_attack(&m);
                  u.upgrade(); //奥特曼升级,成员函数调用
                  int z=rand()%3+1;
                  switch(z){ //做个小改变,打得不那么单调无聊
                  case 1:
                  cout<<"ultraman say: go to die!"<<endl;
                  cout<<"monster say: oh,shit!"<<endl;
                  break;
                  case 2:
                  cout<<"奥特曼说: 妖怪受死!"<<endl;
                  cout<<"怪兽说: 放屁!"<<endl;
                  break;
                  default:
                  cout<<"12345啊,上山打老虎啊!"<<endl;
                  cout<<"大圣饶命!"<<endl;
                  }
                  cout<<"乒 乒 乓 乓。。。"<<endl;
                  m.m_fightback(&u); //成员函数调用,怪兽和奥特曼均受到攻击
                  u.display();
                  m.display();
                  if(u.getu_hp()<=0) { //成员函数调用,注意调用形式
                  cout<<"您英雄的一生结束了!"<<endl;
                  exit(0);
                  }
                  if(m.getm_hp()<=0) { // 成员函数调用,注意调用形式
                  cout<<"可...恶...,我还会再来的......"<<endl<<endl;
                  cout<<"恭喜你,打败了怪兽!"<<endl;
                  u.win(&m); //奥特曼获胜,成员函数调用
                  }
                  else ch2=' ';
                  }
                  }
                  while(ch3!='u'&&ch3!='U'&&ch3!='y'&&ch3!='Y'&&ch3!='n'&&ch3!='N'){
                  cout<<"是否用钱补血?查看自身状态请输入U,补血请输入Y,否则请输入N。"<<endl;
                  cin>>ch3;
                  cout<<endl;
                  if(ch3=='u'||ch3=='U'){
                  u.display(); //成员函数调用
                  ch3=' ';
                  }
                  if(ch3=='y'||ch3=='Y'){
                  if(u.getu_money()<2)
                  cout<<"对不起,您钱不够,无法补血!"<<endl;
                  else
                  u.restore(); //成员函数调用;
                  break;
                  }
                  if(ch3=='n'||ch3=='N') break;
                  }
                  while(ch1!='y'&&ch1!='Y'&&ch1!='n'&&ch1!='N'){
                  cout<<"继续打怪升级请输入Y,退出游戏请输入N。"<<endl;
                  cin>>ch1;
                  cout<<endl;
                  }
                  if(ch1=='N'||ch1=='n') {
                  cout<<"游戏结束!"<<endl;
                  exit(0);
                  } }
                  }


                  14楼2013-05-06 16:40
                  回复
                    monster.cpp
                    #include <iostream.h>
                    #include <stdlib.h>#include "Monster.h"
                    #include "Ultraman.h"
                    class Ultraman;//用另一种设置初值的方法设置monster的初值
                    void Monster::get(int m_rank,int m_hp,int m_damage,int m_exp,int m_money)
                    {
                    rank=m_rank=rand()%10+1;
                    hp=m_hp=(rand()%rank+1)*5;
                    exp=m_exp=rand()%rank+1;
                    damage=m_damage=rand()%rank+1;
                    money=m_money=rand()%rank+10;
                    } //显示monster的各个属性
                    void Monster::display(){
                    cout<<endl;
                    cout<<" Monster's rank: "<<rank<<endl;
                    cout<<" Monster's exp: "<<exp<<endl;
                    cout<<" Monster's hp: "<<hp<<endl;
                    cout<<" Monster's damage: "<<damage<<endl;
                    cout<<" Monster's money: "<<money<<endl;
                    }//monster被攻击
                    void Monster::m_attacked(Ultraman *u){
                    hp-=u->getu_damage(); //调用Ultraman类中的攻击函数
                    if(money!=0)
                    money--;
                    }//怪兽反击
                    void Monster::m_fightback(Ultraman *u){
                    u -> u_attacked(this);
                    }int Monster::getm_damage(){
                    return damage;
                    }int Monster::getm_hp(){
                    return hp;
                    }int Monster::getm_money(){
                    return money;
                    }int Monster::getm_exp(){
                    return exp;
                    }


                    15楼2013-05-06 16:40
                    回复
                      ultraman.cpp
                      #include <iostream.h>
                      #include <stdlib.h>#include "Monster.h"
                      #include "Ultraman.h"
                      class Ultraman;//用另一种设置初值的方法设置monster的初值
                      void Monster::get(int m_rank,int m_hp,int m_damage,int m_exp,int m_money)
                      {
                      rank=m_rank=rand()%10+1;
                      hp=m_hp=(rand()%rank+1)*5;
                      exp=m_exp=rand()%rank+1;
                      damage=m_damage=rand()%rank+1;
                      money=m_money=rand()%rank+10;
                      } //显示monster的各个属性
                      void Monster::display(){
                      cout<<endl;
                      cout<<" Monster's rank: "<<rank<<endl;
                      cout<<" Monster's exp: "<<exp<<endl;
                      cout<<" Monster's hp: "<<hp<<endl;
                      cout<<" Monster's damage: "<<damage<<endl;
                      cout<<" Monster's money: "<<money<<endl;
                      }//monster被攻击
                      void Monster::m_attacked(Ultraman *u){
                      hp-=u->getu_damage(); //调用Ultraman类中的攻击函数
                      if(money!=0)
                      money--;
                      }//怪兽反击
                      void Monster::m_fightback(Ultraman *u){
                      u -> u_attacked(this);
                      }int Monster::getm_damage(){
                      return damage;
                      }int Monster::getm_hp(){
                      return hp;
                      }int Monster::getm_money(){
                      return money;
                      }int Monster::getm_exp(){
                      return exp;
                      }


                      16楼2013-05-06 16:41
                      回复
                        monster.h
                        class Ultraman;class Monster{
                        private:
                        int rank,exp,hp,damage,money;
                        public:
                        void get(int m_rank,int m_hp,int m_damage,int m_exp,int m_money); //初始化怪兽属性
                        void display(); //显示怪兽的属性
                        void m_attacked(Ultraman *u);
                        void m_fightback(Ultraman *u); //怪兽反击
                        int getm_rank();
                        int getm_exp();
                        int getm_hp();
                        int getm_damage();
                        int getm_money();
                        };


                        17楼2013-05-06 16:42
                        回复
                          ultraman.h
                          class Monster;class Ultraman{
                          private:
                          int rank,exp,hp,damage,money;
                          public:
                          Ultraman(int a,int b,int c,int d,int e);
                          void display(); //显示奥特曼的属性
                          int escape(); //奥特曼逃跑
                          void u_attack(Monster *m); //奥特曼攻击怪兽
                          void u_attacked(Monster *m);
                          void restore(); //奥特曼回血
                          void upgrade(); //奥特曼升级
                          void win(Monster *m);
                          int getu_rank();
                          int getu_exp(); //奥特曼战斗获得经验
                          int getu_hp();
                          int getu_damage();
                          int getu_money();
                          ~Ultraman(){}
                          };


                          18楼2013-05-06 16:43
                          回复
                            怎么修改?


                            19楼2013-05-06 16:43
                            回复
                              等大帝关注


                              20楼2013-05-06 16:51
                              回复