定义一个“大富翁”游戏角色类CRole。
1、描述角色的私有数据成员为:
姓名(char *pName)、金钱(iCash)、存款(iSavings)、得意时口头禅(char *pGoodWords)、沮丧时口头禅(char *pBadWords)、游戏的角色数目( iRoleNum)、游戏角色平均资产(iMoney)。
2、定义相应的成员函数来设置和读取这些私有成员(游戏角色数目和平均资产只能通过计算得到,不能直接设置)。定义成员函数Speak()输出口头禅(根据资产数超过还是低于平均资产而定)。
3、定义构造函数:
(每次构造成功,显示[对象姓名+“角色进入”])、拷贝构造函数和析构函数(每次析构显示[对象姓名+“角色退出”]。
4、在main函数里用该类定义一个对象数组,包括以下5个对象信息(姓名、口头禅)。
孙小美 好的开始是成功的一半! 还给人家啦
钱夫人 你的是我的,我的还是我的! 老娘跟你没完!
沙隆巴斯 阿拉真主,我赞美你! 人生不如意十有八九 再加两个角色A,B及其口头禅(自定)。
5、通过cin依次输入三个角色的现金和存款(要求每个输入前有输入说明提示)。输入完后直接调用speak观看输出结果。输出结果必须按照资产由高到低的角色顺序输出。
代码如下:
头文件(CR.h)代码如下:
#pragma once #include <iostream> using namespace std; class fund { public: static int iMoney;//平均资金 static int sumMoney;//总资金 friend class CRole; //友元类 static int getsumMoney( );//得到总资金 int getiMoney(int m, int i);//得到平均资产 }; class CRole { private: char pName[10]; //角色名 char pGoodWord[100];//好的口头禅 char pBadWord[100];//坏的口头禅 int iCash; //现金 int iSaving;//存款 static int iRoleNum;//角色人数 friend class fund; 友元类 int personmoney;//个人资产 public: friend void setmoney(fund x,CRole &a);//设置现金,存款 friend void Speak(fund x,CRole& a);//输出 int getiRoleNum();//得到角色人数 const char *getpName();//得到角色名 int getpersonmoney();//得到个人资产 CRole(const char* name,const char *pGoodWord,const char *pBadWord);//构造函数,给角色属性赋值 ~CRole();//析构函数 };
讯享网
main文件如下:
讯享网#include"CR.h" #include<string> int CRole::iRoleNum = 0; int fund::iMoney = 0; int fund::sumMoney = 0; int CRole::getiRoleNum()//得到角色人数 { return iRoleNum; } const char *CRole::getpName() { return pName; } CRole::CRole(const char* name, const char* GoodWord, const char* BadWord)//初始化 { iRoleNum++; strcpy_s(pName,name); strcpy_s(pGoodWord, GoodWord); strcpy_s(pBadWord, BadWord); cout << pName << "角色进入游戏" << endl; } CRole::~CRole() { cout << pName << "角色退出" << endl; } void setmoney(fund x,CRole &a) { int x1, x2; cout << a.pName << "的现金和存款是(输入整数,用空格隔开):"<< endl; cin >> x1>>x2; a.iCash = x1; a.iSaving = x2; a.personmoney = x1 + x2; x.sumMoney += x1 + x2; } int fund::getsumMoney() { return sumMoney; } int fund::getiMoney(int m, int i) { return iMoney=m / i; } int CRole::getpersonmoney( ) { return personmoney; } void Speak(fund x,CRole &a) { cout << "角色姓名:" << a.getpName() << " 角色资金:" << a.getpersonmoney(); if (a.getpersonmoney() < x.getiMoney(x.getsumMoney(),a.getiRoleNum())) { cout<<" 口头禅:"<<a.pBadWord<<endl; } else cout << " 口头禅:"<<a.pGoodWord << endl; } void main() { CRole *s[6] = {NULL}; s[0] = new CRole("孙小美", "好的开始是成功的一半","还给人家啦"); s[1] = new CRole("钱夫人", "你的是我的,我的还是我的", "老娘跟你没完"); s[2] = new CRole("沙隆巴斯", "阿拉真主,我赞美你!", "人生不如意十有八九"); s[3] = new CRole("张三", "我爱学习", "学习好难,还是玩游戏吧"); s[4] = new CRole("李四", "我爱运动", "我还是躺着吧"); cout <<"角色人数:"<< s[4]->getiRoleNum()<<endl; fund fd; for(int i = 0;i<s[0]->getiRoleNum();i++) { setmoney(fd,*s[i]); } cout << "总资金为:" << fd.getsumMoney( ) << endl; cout << "角色平均资产是:" << fd.getiMoney(fd.getsumMoney(), s[0]->getiRoleNum()) << endl; //重新排序 for(int i=0;i<5;i++) for (int j = 0; j <5 - i; j++) { if (s[j]->getpersonmoney()<= s[j + 1]->getpersonmoney()) { s[5] = s[j + 1]; s[j + 1] = s[j]; s[j] = s[5]; } } for (int i = 0; i < s[0]->getiRoleNum(); i++) { Speak(fd,*s[i]); } for (int i = 0; i < s[0]->getiRoleNum(); i++) { char tmp; cout<<s[i]->getpName()<<"角色要退出吗?(y/x)"<<endl; cin >> tmp; if (tmp == 'y') { s[i]->~CRole(); } else { cout << s[i]->getpName() << "角色待在游戏里,不退出" << endl; continue; } } }
运行截图如下:

代码仅供参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70980.html