所以,我正在制作用户与计算机战舰游戏,使用10x10阵列作为主板。我想在船上随机放置两艘船(一个尺寸为5个阵列,另一个尺寸为4个)。我做的是随机生成0或1,0是垂直放置,1是水平放置。然后使用while循环我检查生成的数字是否适合板和大小为4的船上我还必须检查生成的数字是否已用于第一艘船。我使用单独的功能做到了这一点。当一艘船垂直放置时,该程序会出现问题,我无法弄清楚原因。当它垂直放置时,它只能制造一艘尺寸为3的船。 这是代码:
void startShips(int ships[][2]){
srand(time(NULL));
int n1,n2;
n1 = rand()%2;
n2 = rand()%2;
//0=vertical, 1=horizontal
if(n1==0){
do{
ships[0][0]= rand()%10;
ships[0][1]= rand()%10;
ships[1][0]= ships[0][0]+1;
ships[1][1]= ships[0][1];
ships[2][0]= ships[0][0]+2;
ships[2][1]= ships[0][1];
ships[3][0]= ships[0][0]+3;
ships[3][1]= ships[0][1];
ships[4][0]= ships[0][0]+4;
ships[4][1]= ships[0][1];
}while(ships[4][0]>9);
}
if(n1==1){
do{
ships[0][0]= rand()%10;
ships[0][1]= rand()%10;
ships[1][0]= ships[0][0];
ships[1][1]= ships[0][1]+1;
ships[2][0]= ships[0][0];
ships[2][1]= ships[0][1]+2;
ships[3][0]= ships[0][0];
ships[3][1]= ships[0][1]+3;
ships[4][0]= ships[0][0];
ships[4][1]= ships[0][1]+4;
}while(ships[4][1]>9);
}
if(n2==0){
do{
ships[5][0]= rand()%10;
ships[5][1]= rand()%10;
ships[6][0]= ships[5][0]+1;
ships[6][1]= ships[5][1];
ships[7][0]= ships[5][0]+2;
ships[7][1]= ships[5][1];
ships[8][0]= ships[5][0]+3;
ships[8][1]= ships[0][1];
}while((ships[8][0]>9) ||
(checkShip(ships)==1)
);
}
if(n2==1){
do{
ships[5][0]= rand()%10;
ships[5][1]= rand()%10;
ships[6][0]= ships[5][0];
ships[6][1]= ships[5][1]+1;
ships[7][0]= ships[5][0];
ships[7][1]= ships[5][1]+2;
ships[8][0]= ships[5][0];
ships[8][1]= ships[0][1]+3;
}while((ships[8][1]>9) ||
(checkShip(ships)==1)
);
}
}
int checkShip(int ships[][2]){
int i;
for(i=0;i<5 ; i++){
if((ships[5][0]==ships[i][0])&&(ships[5][1]==ships[i][1])){
return 1;
break;}
}
for(i=0;i<5 ; i++){
if((ships[6][0]==ships[i][0])&&(ships[6][1]==ships[i][1])){
return 1;
break;}
}
for(i=0;i<5 ; i++){
if((ships[7][0]==ships[i][0])&&(ships[7][1]==ships[i][1])){
return 1;
break;}
}
for(i=0;i<5 ; i++){
if((ships[8][0]==ships[i][0])&&(ships[8][1]==ships[i][1])){
return 1;
break;}
}
return 0;
}
答案 0 :(得分:1)
您的垂直处理似乎有错字
...
ships[7][1]= ships[5][1];
ships[8][0]= ships[5][0]+3;
ships[8][1]= ships[0][1];
^^^^^^^