2202_75587406 2023-03-05 12:55 采纳率: 100%
浏览 22
已结题

游戏代码出错了,帮我看下

![img](https://img-mid.csdnimg.cn/release/static/im

#include<windows.h>
#include<ctime>
#include<bits/stdc++.h>
using namespace std;
int ID[10][4],n,name,m;
bool flag=true;
void xianshi(int n,int i){
    if(i<=n){
        cout<<ID[i][1]<<"号玩家 血量:"<<ID[i][2]<<" 防御:"<<ID[i][3]<<endl;
        i++;
        xianshi(n,i);
    }
}
void xuan(char a){
    for(int j=1;j<=n;j++){
            cout<<endl<<j<<"号玩家,请问你要攻击还是增加防御"<<endl<<"请输入:A.攻击 B.增加防御";
            cin>>a; 
            srand(time(0));
            m=rand()%30+20;
            if(a=='A'){
                cout<<j<<"号玩家,请问你要攻击谁";
                cin>>name;
                for(int j=1;j<=n;j++){
                    if(name!=ID[j][1]) flag=false;
                    else{
                        flag=true;
                        break;
                    }
                }
                if(flag==false){
                    cout<<"输入错误,请重新输入"<<endl; 
                    xuan(a);
                } 
                if(ID[name][3]<m){
                    m-=ID[name][3];
                    ID[name][3]=0;
                    if(ID[name][2]<m){
                        cout<<name<<"号玩家淘汰"<<endl;
                        for(int k=1;k<=3;k++){
                            if(name==n){
                                n--;
                                break;
                            }else{
                                swap(ID[name][k],ID[name+1][k]);
                            }
                        }
                    }else{
                        ID[name][2]-=m;
                    }
                }else{
                    ID[name][3]-=m;
                }
                cout<<name<<"号玩目前防御:"<<ID[name][3]<<endl;
                cout<<name<<"号玩目前血量:"<<ID[name][2]<<endl;
            }else{
                ID[j][3]+=m;
                cout<<j<<"号玩目前防御:"<<ID[j][3]<<endl; 
            } 
    }
}
int main(){
    char a;
    cout<<"请输入一共有几名玩家:"<<endl;
    cin>>n;
    if(n<=2){
        cout<<"输入错误,再见";
        return 0;
    } 
    system("cls");
    for(int i=1;i<=n;i++){
        ID[i][1]=i;
        ID[i][2]=100;
        ID[i][3]=100;
    }
    while(n-1){
        xianshi(n,1);
        xuan(a);
        system("cls");
        xianshi(n,1);
        Sleep(1100);
    }
    cout<<ID[1][1]<<"号玩家胜利"<<endl;
    return 0;
}

大家,以上是我的程序,不知道为什么执行第二次后会输出两次
这是执行出来第二次的结果:

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-03-05 13:04
    关注

    “Devil组”引证GPT后的撰写:

    • 第二次输出两次的原因可能是因为程序在第二次循环中调用了两次 xianshi(n,1) 函数,导致玩家信息输出了两次。

    具体来说,可以在 xianshi() 函数中添加一条 cout 语句,输出当前执行的是第几次循环,以便确认循环次数是否符合预期。例如:

    void xianshi(int n,int i){
        static int count = 1; // 添加静态变量记录循环次数
        cout << "第 " << count << " 次循环:" << endl; // 输出当前循环次数
        if(i<=n){
            cout<<ID[i][1]<<"号玩家 血量:"<<ID[i][2]<<" 防御:"<<ID[i][3]<<endl;
            i++;
            xianshi(n,i);
        }
        count++; // 循环次数加1
    }
    
    
    

    这样,每次调用 xianshi() 函数时,都会输出当前是第几次循环。观察输出结果,如果第二次循环确实执行了两次 xianshi() 函数,那么就需要检查循环的调用逻辑,确保每次循环只调用一次 xianshi() 函数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 3月5日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境