基于主机的游戏无缘无故地崩溃

console based game crashes for no reason

本文关键字:游戏 无缘无故 崩溃 于主机 主机      更新时间:2023-10-16

我试图让一个非常基本的游戏开始,我试图让它只是使游戏的边界女巫将是x的,他们的球员是H,但当我建立和运行它的程序会立即崩溃,请帮助

 #include <iostream>
 using namespace std;
 int cords[2];
 string map[6][6] =
{
 {"X","X","X","X","X","X"},
 {"X"," "," "," "," ","X"},
 {"X"," "," "," "," ","X"},
 {"X"," ","H"," "," ","X"},
 {"X"," "," "," "," ","X"},
 {"X","X","X","X","X","X"}
};
string input;
bool running = true;
void tick(){
if(input == "w"){
cords[1]++;
}
if(input == "s"){
cords[1] = cords[1] - 1;
}
if(input == "a"){
cords[0] = cords[0] - 1;
}
if(input == "d"){
cords[0]++;
   }
    }
void render(){
cout << map[1][1] << map[1][2] << map[1][3] << map[1][4] << map[1][5] << map[1][6]      <<endl
    << map[2][1] << map[2][2] << map[2][3] << map[2][4] << map[2][5] << map[2][6]   <<endl
    << map[3][1] << map[3][2] << map[3][3] << map[3][4] << map[3][5] << map[3][6] <<endl
 << map[4][1] << map[4][2] << map[4][3] << map[4][4] << map[4][5] << map[4][6] <<endl
 << map[5][1] << map[5][2] << map[5][3] << map[5][4] << map[5][5] << map[5][6] <<endl
 << map[6][1] << map[6][2] << map[6][3] << map[6][4] << map[6][5] << map[6][6] <<endl;
 }
 void run(){
 int ticks;
 int frames;
 tick();
 render();

  } 

 int main(){
 while(running == true){
 run();
 cin>> input;
 }
 }

两个map索引必须在0到5之间:map[6][3]不正确,例如

如果你写了一个循环来打印你的2d数组,你可能会避免这个错误:

const int matSize = 6;
for (int i = 0; i < matSize; ++i) 
{ 
    for (int j = 0; j < matSize; ++j ) 
      cout << m[i][j]; 
    cout << "n"; 
}

您应该更改您的板使用stringchar,而不是单个字符串数组:

std::string map[6] = 
{
 "XXXXXX",
 "X    X",
 "X    X",
 "X H  X",
 "X    X",
 "XXXXXX",
};
char map_as_char_array[6][6] =
{
 {'X','X','X','X','X','X'},
 {'X',' ',' ',' ',' ','X'},
 {'X',' ',' ',' ',' ','X'},
 {'X',' ','H',' ',' ','X'},
 {'X',' ',' ',' ',' ','X'},
 {'X','X','X','X','X','X'}
};

string数据类型对于单个字母来说是多余的。

请记住,string类型可以作为单个维度的字符数组访问。