C++自学笔记——空闲时间写的代码

这周利用空闲时间写了一点赛尔号对战系统的代码,写了一小半,还没完工,先提交一下。

目前对于精灵玩家的一些数据值已经编写完了,但是都放在一个文件里,有很多重复工作,而且看起来不是很美观,之后回去学习和修改

#include<iostream>
using namespace std;
#include<string>

//上次写完了精灵交换的函数,看下边的战斗函数继续往下写吧


//先定义一下有关精灵和玩家的结构体
struct shu_xing
{
	int ti_li;
	int gong_ji;
	int fang_yu;
	int te_gong;
	int te_fang;
	int su_du;
};
struct zhong_zu
{
	int ti_li;
	int gong_ji;
	int fang_yu;
	int te_gong;
	int te_fang;
	int su_du;
};
struct nu_li
{
	int ti_li;
	int gong_ji;
	int fang_yu;
	int te_gong;
	int te_fang;
	int su_du;
};
struct ji_neng
{
	string name;
	int wei_li;
};
struct jing_ling
{
	string name;
	int level;
	int ge_ti;
	shu_xing shu_xing_zhi;
	zhong_zu zhong_zu_zhi;
	nu_li nu_li_zhi;
	string xing_ge;
	ji_neng ji_neng_1;
	ji_neng ji_neng_2;
	ji_neng ji_neng_3;
	ji_neng ji_neng_4;
};
struct player
{
	jing_ling now;
	jing_ling a[6];
	int sum_health=a[0].shu_xing_zhi.ti_li + 
		a[1].shu_xing_zhi.ti_li + 
		a[2].shu_xing_zhi.ti_li + 
		a[3].shu_xing_zhi.ti_li + 
		a[4].shu_xing_zhi.ti_li + 
		a[5].shu_xing_zhi.ti_li;
};


//定义两个玩家的结构体变量player_1和player_2
player player_1;
player player_2;


//定义所有可选精灵的结构体变量
jing_ling yi_you
{
	"伊优",1,1,{1,1,1,1,1,1},{53,51,53,61,56,40},{1,1,1,1,1,1},"无","钢之爪",0,"猛攻",0, "泡沫光线", 0,"高压水枪",0
};
jing_ling you_li_an
{
	"尤里安",1,1,{1,1,1,1,1,1},{64,66,68,81,76,50},{1,1,1,1,1,1},"无","钢之爪",0,"猛攻",0, "泡沫光线",0, "高压水枪",0
};
jing_ling ba_lu_si
{
	"巴鲁斯",1,1,{1,1,1,1,1,1},{84,86,88,111,101,65},{1,1,1,1,1,1},"无","钢之爪",0,"猛攻",0, "泡沫光线",0, "高压水枪",0
};
jing_ling xiao_huo_hou
{
	"小火猴",1,1,{1,1,1,1,1,1},{44,58,44,58,44,61},{1,1,1,1,1,1},"无","音速拳",0,"全力一击",0,"火焰车",0,"烈焰冲撞",0
}; jing_ling lie_huo_hou
{
	"烈火猴",1,1,{1,1,1,1,1,1},{64,78,52,78,52,81},{1,1,1,1,1,1},"无","音速拳",0,"全力一击",0,"火焰车",0,"烈焰冲撞",0
}; jing_ling lie_yan_xing_xing
{
	"烈焰猩猩",1,1,{1,1,1,1,1,1},{76,104,71,104,71,108},{1,1,1,1,1,1},"无","音速拳",0,"全力一击",0,"火焰车",0,"烈焰冲撞",0
};
jing_ling bu_bu_zhong_zi
{
	"布布种子",1,1,{1,1,1,1,1,1},{55,69,65,45,55,31},{1,1,1,1,1,1},"无","齿突",0,"寄生种子",0,"咬碎",0,"飞叶风暴",0
};
jing_ling bu_bu_cao
{
	"布布草",1,1,{1,1,1,1,1,1},{75,89,85,55,65,41},{1,1,1,1,1,1},"无","齿突",0,"寄生种子",0,"咬碎",0,"飞叶风暴",0
};
jing_ling bu_bu_hua
{
	"布布花",1,1,{1,1,1,1,1,1},{95,109,105,75,85,56},{1,1,1,1,1,1},"无","齿突",0,"寄生种子",0,"咬碎",0,"飞叶风暴",0
};
jing_ling lei_yi
{
	"雷伊",1,1,{1,1,1,1,1,1},{71,108,70,101,77,105},{1,1,1,1,1,1},"无","霹雳斩",0,"白光刃",0,"瞬雷天闪",0,"雷神天明闪",0
};
jing_ling ha_mo_lei_te
{
	"哈莫雷特",1,1,{1,1,1,1,1,1},{125,120,95,95,90,101},{1,1,1,1,1,1},"无","狂龙战吼",0,"龙王闪空破",0,"龙王碎灭阵",0,"回避",0
};
jing_ling gai_ya
{
	"盖亚",1,1,{1,1,1,1,1,1},{105,119,87,96,78,105},{1,1,1,1,1,1},"无","气合斩",0,"擒九域",0,"末日宣告",0,"石破天惊",0
};


void shou_menu();
void jing_ling_select(jing_ling* p);
void in_shu_xing(jing_ling* p);
void calculate_shu_xing(jing_ling* p);
int shou_battle_menu();
void battle(jing_ling* p1,jing_ling* p2);
void show_jing_ling_list(player* p);
void jing_ling_change(player* p);









/****************************以下为主函数区****************************/
int main()
{
	cout << "欢迎使用赛尔号精灵对战程序!" << endl << endl;

	//让玩家1选择精灵
	int i;
	cout << "玩家1,请选择你的精灵:" << endl << endl;
	shou_menu();
	for (i = 0; i < 6; i++)
	{
		jing_ling_select(&player_1.a[i]);
	}

	//清屏
	system("cls");

	//让玩家2选择精灵
	cout << "选择成功" << endl << endl 
		<< "玩家2,请选择你的精灵:" << endl << endl;
	shou_menu();
	for (i = 0; i < 6; i++)
	{
		jing_ling_select(&player_2.a[i]);
	}

	//清屏
	system("cls");

	//玩家1为精灵属性赋值
	cout << "玩家1,请为你的六只精灵确定属性" << endl << endl;
	for (int i = 0; i < 6; i++)
	{
		cout << "请为" << player_1.a[i].name << "输入属性:" << endl << endl;
		in_shu_xing(&player_1.a[i]);
		system("cls");
	}

	//玩家2为精灵属性赋值
	cout << "玩家2,请为你的六只精灵确定属性" << endl << endl;
	for (int i = 0; i < 6; i++)
	{
		cout << "请为" << player_2.a[i].name << "输入属性:" << endl << endl;
		in_shu_xing(&player_2.a[i]);
		system("cls");
	}

	//计算两位玩家的精灵的具体属性值
	for (int i = 0; i < 6; i++)
	{
		calculate_shu_xing(&player_1.a[i]);
	}
	for (int i = 0; i < 6; i++)
	{
		calculate_shu_xing(&player_2.a[i]);
	}

	//下面进行战斗环节的编写
	

	cout << "battel start!" << endl;
	do 
	{
		
	} while (player_1.sum_health == 0 || player_2.sum_health);



	system("pause");
	return 0;
}











/*****************************以下为函数的定义*****************************/

//显示菜单函数:
void shou_menu()
{
	cout << "1、伊优 2、尤里安 3、巴鲁斯" << endl <<
		"4、小火猴 5、烈火猴 6、烈焰猩猩" << endl <<
		"7、布布种子 8、布布草 9、布布花" << endl <<
		"10、雷伊 11、哈莫雷特 12、盖亚" << endl;
	cout << endl;
}

//精灵选择函数:
void jing_ling_select(jing_ling* p)
{
	int select;
	cin >> select;
	switch (select)
	{
		case 1:*p = yi_you; break;
		case 2:*p = you_li_an; break;
		case 3:*p = ba_lu_si; break;
		case 4:*p = xiao_huo_hou; break;
		case 5:*p = lie_huo_hou; break;
		case 6:*p = lie_yan_xing_xing; break;
		case 7:*p = bu_bu_zhong_zi; break;
		case 8:*p = bu_bu_cao; break;
		case 9:*p = bu_bu_hua; break;
		case 10:*p = lei_yi; break;
		case 11:*p = ha_mo_lei_te; break;
		case 12:*p = gai_ya; break;
	}
}

//给精灵各项属性赋值的函数
//精灵性格功能暂未开放
void in_shu_xing(jing_ling* p)
{
	int zhi;
	cout << "请依次输入精灵的等级,个体值,六项努力值:" << endl
		<< "(努力值之和不超过510,努力值顺序请按照体力,攻击,防御,特攻,特防,速度的顺序输入)" << endl;
	for (int i = 0; i < 8; i++)
	{
		cin >> zhi;
		switch (i)
		{
		case 0:
			p->level = zhi; break;
		case 1:
			p->ge_ti = zhi; break;
		case 2:
			p->zhong_zu_zhi.ti_li = zhi; break;
		case 3:
			p->nu_li_zhi.gong_ji = zhi; break;
		case 4:
			p->nu_li_zhi.fang_yu = zhi; break;
		case 5:
			p->nu_li_zhi.te_gong = zhi; break;
		case 6:
			p->nu_li_zhi.te_fang = zhi; break;
		case 7:
			p->nu_li_zhi.su_du = zhi; break;
		}
	}
}


//计算精灵属性具体值的函数
void calculate_shu_xing(jing_ling* p)
{
	p->shu_xing_zhi.ti_li = (p->zhong_zu_zhi.ti_li + p->ge_ti + (p->nu_li_zhi.ti_li / 4)) * (p->level / 100) + 10 + p->level;
	p->shu_xing_zhi.gong_ji = ((p->zhong_zu_zhi.gong_ji * 2) + p->ge_ti + (p->nu_li_zhi.gong_ji / 4)) * (p->level) + 5;
	p->shu_xing_zhi.fang_yu = ((p->zhong_zu_zhi.fang_yu * 2) + p->ge_ti + (p->nu_li_zhi.fang_yu / 4)) * (p->level) + 5;
	p->shu_xing_zhi.te_gong = ((p->zhong_zu_zhi.te_gong * 2) + p->ge_ti + (p->nu_li_zhi.te_gong / 4)) * (p->level) + 5;
	p->shu_xing_zhi.te_fang = ((p->zhong_zu_zhi.te_fang * 2) + p->ge_ti + (p->nu_li_zhi.te_fang / 4)) * (p->level) + 5;
	p->shu_xing_zhi.su_du  = ((p->zhong_zu_zhi.su_du * 2) + p->ge_ti + (p->nu_li_zhi.su_du / 4)) * (p->level) + 5;
}

//显示玩家精灵列表的函数
void show_jing_ling_list(player* p)
{
	cout << "当前精灵位为:" << endl << p->now.name << endl;
	cout << "您的精灵有:" << endl
		<< "1、" << p->a[0].name << "\t"
		<< "2、" << p->a[1].name << "\t"
		<< "3、" << p->a[2].name << "\t"
		<< "4、" << p->a[3].name << "\t"
		<< "5、" << p->a[4].name << "\t"
		<< "6、" << p->a[5].name << "\t" << endl << endl;
}

//精灵交换的函数
void jing_ling_change(player* p)
{
	show_jing_ling_list(p);
	cout << "请输入您想替换的精灵:" << endl;
	int a;
	cin >> a;
	switch (a)
	{
	case 1:
		p->now = p->a[0]; break;
	case 2:
		p->now = p->a[1]; break;
	case 3:
		p->now = p->a[2]; break;
	case 4:
		p->now = p->a[3]; break;
	case 5:
		p->now = p->a[4]; break;
	case 6:
		p->now = p->a[5]; break;
	}

}


//展示战斗时的菜单界面
int shou_battle_menu()
{
	int choice;
	cout << "请选择您的行动:" << endl;
	cout << "1、战斗" << "\t" << "2、更换精灵" << "\t" << "3、投降" << endl << endl;
	cin >> choice;
}

//精灵对战环节的编写
void battle(player* p1, player* p2)
{
	int a;
	a = shou_battle_menu();
	if (a == 1)
	{

	}
	else if (a == 2)
	{
		jing_ling_change(p1);
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值