C++ “武将游戏”开发

完整源码

#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <iomanip>
#include <list>
#include <ctime> 
#include <windows.h>
//可以使用color(颜色代号修改输出字体颜色) 
#define color(A) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),A)
#define W FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE 
#define R FOREGROUND_INTENSITY|FOREGROUND_RED
#define G FOREGROUND_INTENSITY|FOREGROUND_GREEN
#define B FOREGROUND_INTENSITY|FOREGROUND_BLUE
#define Y FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN
#define P FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE
#define Q FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE
using namespace std;
struct general
{
   
   
	string name;
	int info[4];
};

list<general> l;//数据结构使用STL序列式容器中的list,储存武将结构体 
list<general>::iterator it;//遍历list需要使用的迭代器变量 
int cc,order4;

void Error()//输入不符合约定调用的报错函数 
{
   
   
	color(R); 
	cout<<"键入参数错误!!!请检查输入。"<<endl; 
}

bool cmp(general x,general y)//武将链表排序调用sort,这是具体排序规则的cmp函数 
{
   
   
	if(cc==1)//cc==1姓名字典序排序 
	{
   
   
		if(order4==1)
		return x.name<y.name;//升序 
		else
		return x.name>y.name;//降序 
	}
	else
	{
   
   
		if(order4==1)
		return x.info[cc-2]<y.info[cc-2];
		else
		return x.info[cc-2]>y.info[cc-2];
	}
}

void Add_general()//初始化函数 
{
   
   
	srand((int)time(0));//随机数种子 
	color(R);
	cout<<"请选择武将信息键入方式:1.自定义输入 2.系统大量随机输入"<<endl;color(W);
	int order1;cin>>order1;
	if(order1==1)
	{
   
   
		color(R);cout<<"开始自定义键入,依次键入武将姓名、年龄、武力值、智力值、体力值(以#结束):"<<endl;color(W); 
		while(1)//自定义循环输入 
		{
   
   
			general temp1;
			cin>>temp1.name;
			if(temp1.name=="#")//以'#'结束输入 
			break;
			cin>>temp1.info[0];cin>>temp1.info[1];cin>>temp1.info[2];cin>>temp1.info[3];
			l.push_back(temp1);
		}
	}
	else if(order1==2)
	{
   
   
		color(R);cout<<"请输入随机输入规模:"<<endl;color(W);
		int num1;cin>>num1;
		for(int i=0;i<num1;i++)//随机数输入 
		{
   
   
			general p1;
			int len1=rand()%10+3;//字符串长度随机3~12 
			char ch1[len1];
			int j;
			for(j=0;j<len1;j++)
			{
   
   
				if(rand()%2)//大小写随机 
				ch1[j]=rand()%26+65;//利用ASCII码由数字转字符 
				else
				ch1[j]=rand()%26+97;
			}
			ch1[j]='\0';//需手动添加一维字符数组截止符'\0' 
			p1.name=ch1;//一维字符数组转string型 
			p1.info[0]=rand()%53+18;p1.info[1]=rand()%201;p1.info[2]=rand()%201;p1.info[3]=rand()%201;//各属性随机输入 
			l.push_back(p1);
		}
		color(R);cout<<"随机输入成功!"<<endl;
	}
	else
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值