问题标题: 名字竞技场c++版6.0

0
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
我要回答