角色

上机实验


#include<iostream>
#include<string>
using namespace std;
int cp;         //定义全局变量,玩家所选择的职业序号
/*定义函数的基础类Cosplay,保存角色的姓名*/
class Cosplay
{
friend class Out; //定义友元类,输出游戏角色信息 
protected: 
char name[50];   //姓名最多为50个字符长度
 string sex;      //性别 男性 女性
  int sexs;       //性别  0  1
  public:
void getCosplay();   
};
void Cosplay::getCosplay()
{
 int a = 1; 
 cout<<"                  欢迎  "<<endl;
 cout<<"请按照喜好创建游戏角色"<<endl;
cout << "请输入您游戏角色的姓名:"; 
 cin >> name;
  while (a)     //性别选项为0 1,输入其他的数字时会提示“性别选择出错,请重新选择”
  {
  cout << "请选择您游戏的性别 0:男性    1:女性";
   cin >> sexs;
   switch (sexs) 
  {
   case 0: sex = "男性";a = 0; break; 
    case 1: sex = "女性";a = 0; break; 
     default:   
 cout << "性别选择出错,请重新选择" << endl; break;
 }
 }
 }
 class Race :public Cosplay
 {
 friend class Out;
 protected: 
  string race;                 //种族
string position;         //职业
int races;                 //种族的选择,在0-4之间
public:
 void getRace();
 };
 void Race::getRace()
 {
 int b = 1; 
 while (b)
  {  cout << "请在之间选择您游戏角色的种族0:人类  1:精灵 2:兽人 3:矮人 4:元素"<<endl;
 cin >> races;switch (races) 
 { 
 case 0:race = "人类;b = 0;        break;          //种族是人类
   case 1: race = "精灵";b = 0;         break;       //种族是精灵
   case 2: race = "兽人";b = 0;         break;      //种族是兽人
case 3: race = "矮人";b = 0;                break;      //种族是矮人
case 4: race = "元素";b = 0;                break;      //种族是元素
default:
cout << "您选择的种族错误!请重新输入" << endl;break;
}}
while (1)
{
cout << "请在0-5之间选择您游戏角色的职业 0:狂战士 1:圣骑士 2:刺客 3:猎手 4:祭司 5:巫师" << endl;
 switch (races)                       //根据种族选择,选择职业
  {case 0:cout << "您所选择的种族是人类,请在下列选项中选择职业!   0   1    2   3   4    5  " << endl;break;
   case 1:cout << " 您所选择的种族是精灵,请在下列选项中选择职业!   2   3   4    5  " << endl;break; 
    case 2:cout << " 您所选择的种族是兽人,请在下列选项中选择职业!   0    3   4      " << endl;break;
     case 3:cout << " 您所选择的种族是矮人,请在下列选项中选择职业!   0   1    4      " << endl;break; 
     case 4:cout << " 您所选择的种族是元素,请在下列选项中选择职业!   4    5  " << endl;break;  
     }
      cin >> cp;                                                           //输入职业序号
      if (races== 0 && (cp>= 0 && cp<= 5)) break;                               //种族是人类的职业选择
 else if (races == 1 && (cp>=2 && cp<=5))break;                         //种族是精灵的职业选择
else if (races == 2 && (cp == 0 || cp == 3 || cp == 4))break;          //种族是兽人的职业选择
 else if (races == 3 && (cp == 0 || cp == 1 || cp == 4))break;       //种族是矮人的职业选择
     else if (races== 4 && (cp>=4 && cp<=5))break;                    //种族是元素的职业选择
     else   cout << "您所选择的职业错误!请重新输入" << endl;
}
if (cp == 0)  position = "狂战士"; 
if (cp == 1)  position = "圣骑士"; 
if (cp == 2)  position = "刺客"
if (cp == 3)  position = "猎手"; 
if (cp == 4)  position = "祭司"; 
if (cp == 5)  position = "巫师";
}
class Attribute:public Race
{
friend class Out;
protected: 
int c,d,e,f;                           //力量、敏捷、体力、智力 
 int g;                                  //智慧
 int h,m;                             //生命值、魔法值
 public:
  void getAttribute(); 
  void getrands(int i, int j, int k, int x, int y);
  }
  void Attribute::getrands(int i,int j,int k,int x,int y)
  {
   int w;
   do
    {
c   =i+rand()%4;         //力量
d   =j+rand()%4;         //敏捷
e   =k+rand()%4;        //体力
f   =x+rand()%4;         //智力
w   =c+d+e+f;             //w是力量、敏捷、体力、智力的相加和
}
while(((100-y)<w)&&(w<100));               //四个随机数,再加上智慧,目的是保证结果为100整
g=100-w;                               //智慧与力量、敏捷、体力、智力相加为100 h=e*20;                               //生命值=体力*20 
m=(f+g)*10;                          //魔法值=(智力+智慧)*10
}
void Attribute::getAttribute ()
{
if(cp==0)  getrands(40,20,30,5, 5);            
 if(cp==1)  getrands(25,15,30,20,10);
 if(cp==2)  getrands(20,35,20,15,10);
  if(cp==3)  getrands(15,40,15,10,20);
   if(cp==4)  getrands(15,20,15,35,15);          
   if(cp==5)  getrands(10,20,10,20,40);
   }
   class Out
   {
   public:
   void show(Cosplay &,Race &,Attribute &);
   };
   void Out::show(Cosplay &f1,Race &f2,Attribute &f3)
   {
   
 cout<<"                      "<<endl;cout<<"游戏角色如下所示:    "<<endl;
 cout<<"                      "<<endl;
 cout<<std::left <<"姓名:     "<<std::left<<f1.name<<endl;
 cout<<"                      "<<endl;
  cout<<std::left <<"性别:     "<<std::left<<f1.sex<<endl;
  cout<<"                      "<<endl;
  cout<<std::left <<"种族:     "<<std::left<<f2.race<<endl; 
  cout<<"                      "<<endl;
  cout<<std::left <<"职业:     "<<std::left<<f2.position<<endl;
  cout<<"                      "<<endl;
  cout<<std::left <<"力量:     "<<std::left<<f3.c <<endl; 
  cout<<"                      "<<endl;
cout<<std::left <<"敏捷:     "<<std::left<<f3.d<<endl; 
cout<<"                      "<<endl;
cout<<std::left <<"体力:     "<<std::left<<f3.e <<endl; 
cout<<"                      "<<endl;
cout<<std::left <<"智力:     "<<std::left<<f3.f <<endl;
cout<<"                      "<<endl;
cout<<std::left <<"智慧:     "<<std::left<<f3.g<<endl;
cout<<"                      "<<endl;
cout<<std::left <<"生命值:   "<<std::left<<f3.h<<endl;
cout<<"                      "<<endl;
cout<<std::left <<"魔法值:   "<<std::left<<f3.m <<endl;
cout<<"                      "<<endl;
}
int main()
{
Cosplay player; 
Race player_race; 
Attribute player_att; 
Out player_show;    
int players;
do {  
player.getCosplay();                 //cosplay基类 
player_race.getRace();             //Race是Cosplay的派生类
player_att.getAttribute();    //Attribute是Race的派生类
player_show.show(player, player_race, player_att);
cout << endl
cout << "您对所设计游戏角色是否满意?"<<endl;
cout<<"是否继续?请选择操作!" << endl;  
   cout << "0.结束  1.继续" << endl;
    cin >> players;
    } 
    while (players);
    return 0;
    }

运行结果

在这里插入图片描述

内容概要:本文介绍了基于Python实现的SSA-GRU(麻雀搜索算法优化门控循环单元)时间序列预测项目。项目旨在通过结合SSA的全局搜索能力和GRU的时序信息处理能力,提升时间序列预测的精度和效率。文中详细描述了项目的背景、目标、挑战及解决方案,涵盖了从数据预处理到模型训练、优化及评估的全流程。SSA用于优化GRU的超参数,如隐藏层单元数、学习率等,以解决传统方法难以捕捉复杂非线性关系的问题。项目还提供了具体的代码示例,包括GRU模型的定义、训练和验证过程,以及SSA的种群初始化、迭代更新策略和适应度评估函数。; 适合人群:具备一定编程基础,特别是对时间序列预测和深度学习有一定了解的研究人员和技术开发者。; 使用场景及目标:①提高时间序列预测的精度和效率,适用于金融市场分析、气象预报、工业设备故障诊断等领域;②解决传统方法难以捕捉复杂非线性关系的问题;③通过自动化参数优化,减少人工干预,提升模型开发效率;④增强模型在不同数据集和未知环境中的泛化能力。; 阅读建议:由于项目涉及深度学习和智能优化算法的结合,建议读者在阅读过程中结合代码示例进行实践,理解SSA和GRU的工作原理及其在时间序列预测中的具体应用。同时,关注数据预处理、模型训练和优化的每个步骤,以确保对整个流程有全面的理解。
内容概要:本文详细介绍了如何使用PyQt5创建一个功能全面的桌面备忘录应用程序,涵盖从环境准备、数据库设计、界面设计到主程序结构及高级功能实现的全过程。首先,介绍了所需安装的Python库,包括PyQt5、sqlite3等。接着,详细描述了SQLite数据库的设计,创建任务表和类别表,并插入默认类别。然后,使用Qt Designer设计UI界面,包括主窗口、任务列表、工具栏、过滤器和日历控件等。主程序结构部分,展示了如何初始化UI、加载数据库数据、显示任务列表以及连接信号与槽。任务管理功能方面,实现了添加、编辑、删除、标记完成等操作。高级功能包括类别管理、数据导入导出、优先级视觉标识、到期日提醒、状态管理和智能筛选等。最后,提供了应用启动与主函数的代码,并展望了扩展方向,如多用户支持、云同步、提醒通知等。 适合人群:零基础或初学者,对Python和桌面应用程序开发感兴趣的开发者。 使用场景及目标:①学习PyQt5的基本使用方法,包括界面设计、信号与槽机制;②掌握SQLite数据库的基本操作,如创建表、插入数据、查询等;③实现一个完整的桌面应用程序,具备增删改查和数据持久化功能;④了解如何为应用程序添加高级特性,如类别管理、数据导入导出、到期日提醒等。 阅读建议:此资源不仅适用于零基础的学习者,也适合有一定编程经验的开发者深入理解PyQt5的应用开发。建议读者跟随教程逐步实践,结合实际操作来理解和掌握每个步骤,同时可以尝试实现扩展功能,进一步提升自己的开发技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值