这周利用空闲时间写了一点赛尔号对战系统的代码,写了一小半,还没完工,先提交一下。
目前对于精灵玩家的一些数据值已经编写完了,但是都放在一个文件里,有很多重复工作,而且看起来不是很美观,之后回去学习和修改
#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);
}
}