• 自己做的游戏,为什么报错啊?求解


    为什么报错啊?有没有人来看看哪里错了,QQL

    #include
    #include
    #include
    #include
    #include
    #include
    #define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
    #include 
    #include 
    #include 
    using namespace std;
    int main()
    {
        int a,b,ljkjd=1,kjkjd=1,infantry=5,tank=0,plane=0,month=1,jd=0; 
        int arr[3]={1,2,3};
        cout<<"    ■■■          ■     ■ ■"<"                    ■■ ■■■■"<"    二战            ■     ■"<"                  ■  ■    ■ ■ ■"<"   ■■■■         ■       ■■ "<"              1.0版本  "<printf("按任意键开始\n");
        getch();
        system("cls");
        //1941年介入战争 
        MessageBox(NULL,"步兵<坦克<飞机,步兵>飞机","注",MB_OK);
        MessageBox(NULL,"准备?","苏军",MB_OK);
        MessageBox(NULL,"开始!","苏军",MB_OK);
        system("cls");
        cout<<"1941年,德军正式向苏联宣战"<getch();
        while(1){
            cout<<"第"<"个月"<"你要:1.生产 2.出击 "<>a;
            if(a==1){
                while(1){
                    cout<<"你要生产(研制)什么?1.步兵(1陆军科技点1攻击) 2.坦克(2陆军科技点2攻击) 3.飞机(3空军科技点2攻击)";
                    cout<"注:研制不会消耗科技点。";
                    cin>>a;
                    if(a==1&&ljkjd>=1){
                        cout<<"成功!步兵lv+1"<printf("按任意键继续\n");
                        getch();
                        system("cls");month+=1;infantry+=1;break;
                    }
                    else{
                        cout<<"陆军科技点不足!"<printf("按任意键继续\n");
                        getch();
                        system("cls");continue;
                    }
                    if(a==2&&ljkjd>=2){
                        cout<<"成功!坦克lv+1"<printf("按任意键继续\n");
                        getch();
                        system("cls");month+=1;tank+=2;break;
                    }
                    else{
                        cout<<"陆军科技点不足!"<printf("按任意键继续\n");
                        getch();
                        system("cls");continue;
                    }
                    if(a==3&&kjkjd>=3){
                        cout<<"成功!飞机lv+1"<printf("按任意键继续\n");
                        getch();
                        system("cls");month+=1;plane+=2;break;
                    }
                    else{
                        cout<<"空军科技点不足!"<printf("按任意键继续\n");
                        getch();
                        system("cls");continue;
                    }
                }
            }
            if(a==2){
                int size=sizeof(arr)/sizeof(arr[0]);
                while(1){
                    std::random_device rd;
                    std::mt19937 gen(rd());
                    std::uniform_int_distribution<> dis(0, size - 1);
                    int randomIndex = dis(gen);
                    int enemy = arr[randomIndex];
                    if(infantry>enemy&&tank>enemy||battleplane>enemy){
                        cout>>"胜利! 获得:陆军科技点*3! 空军科技点*1!"<3;kjkjd+=1;month++;jd+=2;
                        printf("按任意键继续\n");
                        getch();
                        system("cls");break;arr[randomIndex]+=1;
                    }
                    else if(infantry=enemy&&tank=enemy||battleplane=enemy){
                        cout<<"平局!"<printf("按任意键继续\n");
                        getch();
                        system("cls");break;month++;jd+=1;arr[randomIndex]+=1;
                    }
                    else{
                        cout<<"失败!"<printf("按任意键继续\n");
                        getch();
                        system("cls");month++;
                        if(jd>1)
                            jd-=1;break;
                        jd=1;break;
                    }
                }
            }
            if(jd==0&&month==12){
                cout<<"德军直夺莫斯科"<<"--------结局1:灭亡--------";
                printf("按任意键继续\n");
                getch();
                system("cls");
                return 0;
            }
            if(jd==10){
                cout<<"恭喜,首相,您带领苏维埃走向了胜利!"<"共用时:"<" 个月";
                cout<<"再见,首相 您该休息会儿了"<"             ★"<"--------结局2:胜利!-------"<"制作:徐梓煜";
                return 0;
            }
            continue;
        }
        return 0;
    }
    
    

    所以,哪里错了啊!/( QAQ)/

    展开全部

    • 阿里嘎多学长 2024-06-16 17:54
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      您好!我注意到您的代码中有几个潜在的问题,下面我会逐一指出并给出建议:

      1. 变量初始化:您的代码中有一些变量没有初始化,例如 battleplane 变量在 if(a==2){...} 块中被使用,但之前并没有定义或初始化。

      2. cin输入处理:在使用 cin>>a; 后,如果输入的数据不是整数,可能会导致未定义行为。建议使用 cin.fail() 来检查输入是否成功。

      3. 无限循环风险:您的代码中有几个 while(1){...} 循环,如果其中的 break 条件没有满足,可能会导致无限循环。

      4. if语句逻辑:在 if(a==2){...} 块中,您使用了 if(infantry>enemy&&tank>enemy||battleplane>enemy),这里 battleplane 没有定义,并且逻辑判断使用了 &&|| 的组合,这可能会导致逻辑上的混淆。

      5. 未定义的变量或错误的变量使用:如上所述,battleplane 变量未定义。

      6. system("cls"):在某些环境中,system("cls") 可能不起作用,特别是在非Windows系统或某些IDE中。可以考虑使用其他方法清屏,或者在特定环境下使用。

      7. MessageBox函数使用:您的 MessageBox 函数调用看起来是正确的,但请注意,MessageBox 是Windows API函数,只能在Windows环境中使用。

      8. 数组arr的使用:在 if(a==2){...} 块中,您对 arr[randomIndex] 进行了修改,但这个修改并没有反映在后续的逻辑中。

      9. 随机数生成和使用:您的随机数生成逻辑看起来是正确的,但请注意,std::random_devicestd::mt19937 可能需要包含头文件

      10. cout和printf混合使用:在C++中,建议使用 cout 进行输出,因为它提供了更丰富的格式化选项。printf 是C语言的函数,虽然在C++中也可以使用,但不是C++的风格。

      11. 遗漏的分号或大括号:在 cout>>"胜利! 获得:陆军科技点*3! 空军科技点*1!"< 这一行中,cout 前面不应该有 >>

      下面是修改后的代码片段,修复了上述提到的一些问题:

      #include
      // ... 其他头文件 ...
      
      int main() {
          // ... 其他变量定义 ...
      
          int battleplane = 0; // 添加未定义的变量初始化
      
          // ... 其他代码 ...
      
          if(a==2){
              // ... 其他代码 ...
              int size = sizeof(arr) / sizeof(arr[0]);
              while(1){
                  // ... 随机数生成代码 ...
                  if(infantry > enemy && tank > enemy){ // 假设没有 battleplane 变量
                      // ... 胜利逻辑 ...
                      break;
                  }
                  // ... 平局和失败逻辑 ...
              }
          }
      
          // ... 其他代码 ...
      
          return 0;
      }
      

      希望这些修改能帮助您解决问题!如果还有其他问题或者需要进一步的帮助,请随时告诉我。

      展开全部

    • 相关阅读:
      【JavaWeb】火车票管理系统 (一)
      docker 安装 redis、redisinsight、可视化监控ganafa+prometheus
      Tuxera NTFS2023破解版苹果电脑磁盘读写工具
      element 表格多级表头子列固定
      QGraphicsItem自定义绘制,drawContents绘制不出文字
      LearnOpenGL 及 ShaderToy 的 CMake 构建框架
      基于FPGA MIPS CPU设计学习(1)
      MySQL:远程连接数据库(2)
      计算机网络(第二弹) --- 网络传输的基本流程最容易理解的讲述
      100天精通Python(爬虫篇)——第47天:selenium自动化操作浏览器
    • 原文地址:https://ask.csdn.net/questions/8119390