0
已解决
张帆
中级天翼
中级天翼
不知道大家是不是忘了我的Name-computation了,今天,TA更新了!?
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <bits/stdc++.h>
#include <windows.h>
#include <fstream>
#include <iomanip>
using namespace std;
struct j{
string fire;//技能名字
string fine;//对敌人造成的伤害
int paint_cor;
};
struct chacracter{
string name;
int HP,G,Z;
j ay;
int idx,num;
string turn_num;
string wy_num;
int go_upper=0;
string kill;
int times;
int paint_corff;
}; /*
HP:血量
G:攻击力
Z:智力
ay:特技
idx:所在队伍
num:人物编号
*/
int n=1;
chacracter c[110];
j how[30]; //技能
void color(int corcorcor){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),corcorcor);
}
void give_num_to_how_a_fine_work(){
how[1].fire="火球术",how[1].fine="100",how[1].paint_cor=12;
how[2].fire="心灵控制",how[2].fine="10+turn",how[2].paint_cor=5;
how[3].fire="地裂术",how[3].fine="25+every",how[3].paint_cor=6;
how[4].fire="瘟疫",how[4].fine="20+wy",how[4].paint_cor=5;//wy感染
how[5].fire="懒癌",how[5].fine="20+wy",how[5].paint_cor=5;//wy感染
how[6].fire="终极一击",how[6].fine="200+every+wy",how[6].paint_cor=12;
how[7].fire="皇天冲击",how[7].fine="230+every+wy",how[7].paint_cor=6;
how[8].fire="新冠病毒",how[8].fine="280+wy",how[8].fine=3;
how[9].fire="代码冲击",how[9].fine="290+turn",how[9].paint_cor=11;
how[10].fire="文理双翼",how[10].fine="666",how[10].paint_cor=3;
return ;
}
void out(string said){
for(int i=0;i<said.length();i++){
cout<<said[i];
Sleep(50);
}
return ;
}//输入一个字符串,每5毫秒输出一个字符
void ano(){
cout<<"\n";
return ;
}//换行简写
void begin(){
out("欢迎来到NC 6.0");
//ano();
//ano();
ano();
ano();
cout<<"下面请输入名字,按enter+enter分队,禁止外挂,若系统发现外挂,自动退游,最多支持100个名字对战,超出可能会报错。";
ano();
cout<<"按enter+(ctrl+z)+enter(注:分开按)结束输入,开始对战";
ano();
system("pause");
//cout<"\n";
system("cls");
return ;
}//开始对白
void give_num_to_people(int id){
int x=rand()%5+1;
c[id].ay.fire=how[x].fire;
c[id].ay.fine=how[x].fine;
c[id].paint_corff=how[x].paint_cor;
if(c[id].name.find("king",0)!=-1){
c[id].ay.fire=how[6].fire;
c[id].ay.fine=how[6].fine;
c[id].paint_corff=how[6].paint_cor;
}
if(c[id].name.find("dragon",0)!=-1){
c[id].ay.fire=how[7].fire;
c[id].ay.fine=how[7].fine;
c[id].paint_corff=how[7].paint_cor;
}
if(c[id].name.find("covid",0)!=-1){
c[id].ay.fire=how[8].fire;
c[id].ay.fine=how[8].fine;
c[id].paint_corff=how[8].paint_cor;
}
if(c[id].name.find("coder",0)!=-1){
c[id].ay.fire=how[9].fire;
c[id].ay.fine=how[9].fine;
c[id].paint_corff=how[9].paint_cor;
}
if(c[id].name.find("student",0)!=-1){
c[id].ay.fire=how[10].fire;
c[id].ay.fine=how[10].fine;
c[id].paint_corff=how[10].paint_cor;
}
c[id].HP=rand()%201+200;
c[id].G=rand()%41+10;
c[id].Z=rand()%100+1;
return ;
}//对于每一个人物,生成属性。
void in(){
int ans=1;
while(getline(cin,c[n].name)){
if(c[n].name.empty()){
ans++;
} else {
c[n].idx=ans;
c[n].num=n;
c[n].kill="None";
give_num_to_people(n);
n++;
}
//give_num_to_people(n);
//cout<<n<<" "<<c[n].HP<<" "<<c[n].G<<" "<<c[n].Z<<" "<<c[n].idx<<"\n";
}
n--;
if(n<2||n>100){
MessageBox(NULL,"WRONG","name-computation",MB_OK);
MessageBox(NULL,"teams-begong","name-computation",MB_OK);
system("cls");
cout<<"the name team has no number to fight\n";
cout<<"INF\n";
for(int i=1;i<=0x7f7f7f7f;i++){
int pos=rand()%120+1;
//if(pos==0) exit(0);
int flag=rand()%2;
if(flag==1) cout<<pos;
else cout<<(char)pos;
}
system("cls");
exit(0);
}
if(ans==1){//单斗模式
//int poster=1;
for(int i=1;i<=n;i++){
c[i].idx=i;
}
}
return ;
}//输入
void fight_begin_out(){
system("cls");
color(240);
system("cls");
for(int i=1;i<=n;i++){
cout<<(char)(c[i].idx+'A'-1)<<":";
cout<<c[i].name<<" ";
cout<<"HP:"<<c[i].HP<<" ";
cout<<"攻:"<<c[i].G<<" ";
cout<<"智:"<<c[i].Z<<" ";
ano();
}
cout<<"_____________________________________________________\n";
return ;
}//开始输出属性
bool check(){
int pos=0,cnt=0;
for(int i=1;i<=n;i++){
if(c[i].HP>0){
if(c[i].idx!=pos){
pos=c[i].idx;
cnt++;
}
}
}
return cnt>1;
}
int turn(string s){
int sum=0;
for(int i=0;i<s.length();i++){
if(!(s[i]>='0'&&s[i]<='9')) break;
sum=sum*10+(int)(s[i]-'0');
}
return sum;
}
void fight(){
int now_turn;
now_turn=rand()%n;
while(check()){
now_turn=now_turn%n+1;
if(c[now_turn].HP==0) continue;
if(c[now_turn].times%7==0){
c[now_turn].turn_num="";
c[now_turn].wy_num="";
}
int pos=rand()%3+1;//出招与否
int names_you_go=rand()%n+1;
while(c[names_you_go].idx==c[now_turn].idx||c[names_you_go].HP<=0) names_you_go=rand()%n+1;
int yes=rand()%10+1;
if(c[now_turn].turn_num=="yes") names_you_go=now_turn;
switch(pos){
case 3:{//出技能
cout<<c[now_turn].name<<" 使用了 ";
color(c[now_turn].paint_corff+240);
cout<<c[now_turn].ay.fire;
color(0+240);
cout<<",\n";
int flag=c[now_turn].ay.fine.find("every",0);
if(flag==-1){
if(yes==1){
cout<<c[names_you_go].name<<" 回避了攻击 。\n";
} else {
int fight_num=turn(c[now_turn].ay.fine);
//if(!c[now_turn].ay.fire)
cout<<c[names_you_go].name<<" 受到了 ";
color(12+240);
cout<<fight_num;
color(0+240);
cout<<"点伤害";
c[names_you_go].HP-=fight_num;
if(c[names_you_go].HP<0) c[names_you_go].HP=0;
if(c[names_you_go].HP==0){
cout<<" "<<c[names_you_go].name<<"被击倒了";
c[now_turn].go_upper++;
c[names_you_go].kill=c[now_turn].name;
break;
}
if(c[now_turn].ay.fine.find("turn",0)!=-1){
cout<<","<<c[names_you_go].name<<" 被鬼魅了 ";
c[names_you_go].turn_num="yes";
}
if(c[now_turn].ay.fine.find("wy",0)!=-1){
cout<<","<<c[names_you_go].name<<" 被感染了 ";
c[names_you_go].wy_num="yes";
c[names_you_go].kill=c[now_turn].name;
}
}
ano();
} else {
int fight_num=turn(c[now_turn].ay.fine);
for(int i=1;i<=n;i++){
if(c[i].HP<=0) continue;
if(c[i].idx==c[names_you_go].idx){
cout<<" "<<c[i].name<<" 受到了 ";
color(12+240);
cout<<fight_num;
color(0+240);
cout<<"点伤害";
c[i].HP-=fight_num;
if(c[i].HP<=0){
c[i].HP=0;
cout<<","<<c[i].name<<"被击倒了;\n";
c[now_turn].go_upper++;
c[i].kill=c[now_turn].name;
continue;
}
if(c[now_turn].ay.fine.find("turn",0)!=-1){
cout<<","<<c[i].name<<" 被鬼魅了 ";
c[i].turn_num="yes";
}
if(c[now_turn].ay.fine.find("wy",0)!=-1){
cout<<","<<c[i].name<<" 被感染了 ";
c[i].wy_num="yes";
c[i].kill=c[now_turn].name;
}
cout<<"\n";
}
}
}
break;
}
default:{//出普通攻击
cout<<c[now_turn].name<<"发起攻击,";
if(yes==1){
cout<<c[names_you_go].name<<" 回避了攻击 。\n";
} else {
int fight_num=c[now_turn].G;
//if(!c[now_turn].ay.fire)
cout<<" "<<c[names_you_go].name<<" 受到了 ";
color(12+240);
cout<<fight_num;
color(0+240);
cout<<"点伤害";
c[names_you_go].HP-=fight_num;
if(c[names_you_go].HP<0) c[names_you_go].HP=0;
if(c[names_you_go].HP==0){
cout<<" "<<c[names_you_go].name<<"被击倒了\n";
c[now_turn].go_upper++;
c[names_you_go].kill=c[now_turn].name;
}
ano();
}
break;
}
}
if(c[now_turn].wy_num=="yes"){
cout<<" "<<c[now_turn].name<<"病毒发作,收到了";
color(12+240);
cout<<"50";
color(0+240);
cout<<"点伤害,";
c[now_turn].HP-=50;
if(c[names_you_go].HP==0){
cout<<c[now_turn].name<<"被击倒了\n";
}
ano();
}
c[now_turn].times++;
Sleep(500);
cout<<endl;
}
return ;
}
void last_out(){
ano();
ano();
cout<<"输出格式为名字,杀得人数,他被谁杀。";
ano();
ano();
cout<<"胜者:";
int pos=-1;
ano();
for(int i=1;i<=n;i++){
if(c[i].HP>0){
pos=c[i].idx;
break;
}
}
for(int i=1;i<=n;i++){
if(c[i].HP>0) c[i].kill="None";
if(c[i].idx==pos){
color(c[i].idx+240);
cout<<(char)(c[i].idx+'A'-1)<<":";
cout<<c[i].name<<" "<<c[i].go_upper<<" "<<c[i].kill<<"\n";
}
}
ano();
ano();
color(0+240);
cout<<"败者:";
ano();
for(int i=1;i<=n;i++){
if(c[i].HP>0) c[i].kill="None";
if(c[i].idx!=pos){
color(c[i].idx+240);
cout<<(char)(c[i].idx+'A'-1)<<":";
cout<<c[i].name<<" "<<c[i].go_upper<<" "<<c[i].kill<<"\n";
}
}
color(0+240);
return ;
}
int main(){
system("cls");
color(240);
system("cls");
srand((unsigned)time(NULL));
MessageBox(NULL," 作者:石灰\n 组织:酷町创新公社 ","版权声明",MB_OK);
MessageBox(NULL,"欢迎来到Name-computation6.0_c++\n 创新公社官方正版。","石灰×创新公社",MB_OK);
MessageBox(NULL,"此版本在5.0版本中基础上优化了用户体验,\n 给您带来更好的游戏感受。","石灰×创新公社:Name-computation",MB_OK);
give_num_to_how_a_fine_work();
begin();
in();
fight_begin_out();
fight();
last_out();
return 0;
}
0
已采纳
王子桐
高级光能
高级光能
ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
王子桐在2021-04-07 16:43:31追加了内容
???
是BUG吗?
王子桐在2021-04-07 16:43:39追加了内容
???
是BUG吗?
王子桐在2021-04-07 16:55:41追加了内容
A:1 HP:220 攻:44 智:89
B:2 HP:262 攻:12 智:33
C:3 HP:367 攻:29 智:1
D:4 HP:391 攻:18 智:11
E:5 HP:225 攻:31 智:9
_____________________________________________________
2发起攻击, 3 受到了 12点伤害
3发起攻击, 1 受到了 29点伤害
4发起攻击,5 回避了攻击 。
5发起攻击, 4 受到了 31点伤害
1发起攻击, 4 受到了 44点伤害
2发起攻击,3 回避了攻击 。
3 使用了 懒癌,
2 受到了 20点伤害,2 被感染了
4发起攻击, 2 受到了 18点伤害
5发起攻击, 2 受到了 31点伤害
1发起攻击, 2 受到了 44点伤害
2发起攻击,5 回避了攻击 。
2病毒发作,收到了50点伤害,
3发起攻击, 2 受到了 29点伤害
4发起攻击, 3 受到了 18点伤害
5 使用了 地裂术,
2 受到了 25点伤害
1 使用了 火球术,
4 受到了 100点伤害
2发起攻击, 3 受到了 12点伤害
2病毒发作,收到了50点伤害,
3发起攻击, 5 受到了 29点伤害
4发起攻击, 1 受到了 18点伤害
5发起攻击, 4 受到了 31点伤害
1发起攻击,3 回避了攻击 。
2发起攻击, 3 受到了 12点伤害
2病毒发作,收到了50点伤害,
3发起攻击, 4 受到了 29点伤害
4 使用了 瘟疫,
1 受到了 20点伤害,1 被感染了
5 使用了 地裂术,
3 受到了 25点伤害
1发起攻击, 5 受到了 44点伤害
1病毒发作,收到了50点伤害,
2发起攻击, 3 受到了 12点伤害
2病毒发作,收到了50点伤害,
3 使用了 懒癌,
5 受到了 20点伤害,5 被感染了
4发起攻击, 3 受到了 18点伤害
5 使用了 地裂术,
4 受到了 25点伤害
5病毒发作,收到了50点伤害,
1发起攻击, 5 受到了 44点伤害
1病毒发作,收到了50点伤害,
2发起攻击, 4 受到了 12点伤害
2病毒发作,收到了50点伤害,
3发起攻击, 1 受到了 29点伤害
4发起攻击, 3 受到了 18点伤害
5发起攻击, 1 受到了 31点伤害 1被击倒了
5病毒发作,收到了50点伤害,5被击倒了
2发起攻击, 3 受到了 12点伤害
3发起攻击, 4 受到了 29点伤害
4发起攻击, 3 受到了 18点伤害
5 使用了 地裂术,
4 受到了 25点伤害
2发起攻击,4 回避了攻击 。
3发起攻击, 4 受到了 29点伤害
4发起攻击, 3 受到了 18点伤害
5发起攻击, 4 受到了 31点伤害
2发起攻击, 3 受到了 12点伤害
3 使用了 懒癌,
4 受到了 20点伤害 4被击倒了
输出格式为名字,杀得人数,他被谁杀。
胜者:
C:3 1 None
败者:
A:1 0 5
B:2 0 3
D:4 0 3
E:5 1 3
0
0
0
0
0