实验五:类的继承,派生和多态(2)
#宠物
#include<iostream> #include<string> #include<cstdlib> using namespace std; #ifndef MACHINEPETS_H #define MACHINEPETS_H class MachinePets { public: MachinePets(const string s); virtual string talk() const=0; string getNickname(); virtual ~MachinePets(); private: string nickname; }; #endif MachinePets::MachinePets(const string s):nickname(s) { } string MachinePets::getNickname() { return nickname; } MachinePets::~MachinePets() { } #ifndef PETCATS_H #define PETCATS_H class PetCats:public MachinePets { public: PetCats(const string s); string talk() const; ~PetCats(); }; #endif PetCats::PetCats(const string s):MachinePets(s) { } string PetCats::talk() const { cout<<"words:"; return "wu~"; } PetCats::~PetCats() { } #ifndef PETDOGS_H #define PETDOGS_H class PetDogs:public MachinePets { public: PetDogs(const string s); string talk() const; ~PetDogs(); }; #endif PetDogs::PetDogs(const string s):MachinePets(s) { } string PetDogs::talk() const { cout<<"words:"; return "wang wang~"; } PetDogs::~PetDogs() { } void play(MachinePets *pet) { cout<<pet->getNickname()<<"says"<<pet->talk()<<endl; } int main() { PetCats cat("miku"); PetDogs dog("dahuang"); play(&cat); play(&dog); return 0; }
[修改]
void play(MachinePets *pet) { cout<<pet->getNickname()<<" says "<<pet->talk()<<endl; }
这里说声抱歉,因为本来是插的项目,然后把音频的那段删了,所以,搬过来一言难尽。
[运行结果]
#游戏
//第一空 #ifndef _CONTAINER // Conditional compilation
bool container::useHeal() { //第二空 numOfHeal--; return 1; // use heal successfully }
//第三空,这里默认p为失败者,由于背包里面就定义了小蓝和小红,所以就这样趴~ bag.set(bag.nOfHeal()+p.bag.nOfHeal(),bag.nOfMW()+p.bag.nOfHeal()); p.bag.set(0,0); // set the character's bag, get opponent's items
// display character's job //第四空 void showinfo(player &p1, player &p2)
//第五空 class swordsman : public player // subclass swordsman publicly inherited from base player
//第六空,即将退出 cout<<endl<<setw(50)<<"You're about to quit"<<endl; // player is dead, program is getting to its end, what should we do here?
//第七空,通关 cout<<endl<<setw(50)<<"Clearance"<<endl; // You win, program is getting to its end, what should we do here?
【实验总结】
嗯,这次做的有点匆忙,有什么不太好的地方见谅~不过可以指出来鸭~
说一下这次实验吧,前面验证性的应该是比较基础的,比较容易理解,宠物那道题的音频因为没法插音频文件的原因,就没把那段代码发上来,参考网址见下(有点乱,当时找了蛮多的,翻历史纪录翻不太到最准确的参考地址辽,崩溃,不过这些是当时或多或少参考到的,有点印象):
关于VS系列的:https://blog.csdn.net/qq_29540745/article/details/70856283,顺便放一个导入wav文件的教程:https://blog.csdn.net/Sum7mer/article/details/79003631
另一种:https://blog.csdn.net/u014028070/article/details/42454665
关于报错“无法将参数从“const char ”转换为“LPCWSTR””的问题解决,报错原因和解决方法在文末,这里说明一下,下面附的完整代码问题和后文提到的一样:
https://blog.csdn.net/lindorx/article/details/78724518
再贴一个相关的,有兴趣的话可以看看:https://blog.csdn.net/qq_26422355/article/details/86571401
最后再说明一下,如果像https://blog.csdn.net/qq_42110740/article/details/80200936这么直接写的话,我试了很久都没办法编译成功,类里和main()里报错就这样,但是网上当时很多参考资料都是这样的......但是加一点控制播放的语句就行了(大概是这个意思?就是那个定义个数组然后balabala的)如果有知道原因的大佬可以告诉我一下~
最后那道游戏,emmm,个人感觉其实还是比较容易看得懂的。大概是英语太菜了?有些很长很长的注释全靠百度翻译活命~还有就是最后填的那几个空也是百度翻译过来的,所以看不懂什么意思很正常,我也不太清楚用词恰不恰当,与你无瓜鸭~还有就是插的诸多头文件就没放进来了。
[一个问题]
救救孩子吧,博客园怎么把文件放进来,或者大佬们的运行视频是怎么搞进来的,我录了一下,放不进来,找不到文件在哪插的(PS:我百度过了,被自己傻哭了~)
【评论地址】
https://www.cnblogs.com/lyc1103/p/10958083.html#4277472
https://www.cnblogs.com/1499978329f/p/10946283.html
https://www.cnblogs.com/pink-fairy/p/10962988.html