Я делал довольно простую игру «Морской бой» для своего школьного проекта (Я ДОЛЖЕН использовать Turbo C ++) и столкнулся с проблемой.Я в основном использую 2D-строку 5х5 в качестве своей доски и скрываю в ней «корабль».То, что я пытаюсь сделать, это то, что всякий раз, когда пользователь делает неправильное предположение, я хочу заменить «O» на доске на «X», но когда я делаю это, «O» в следующем блоке заменяетсяна "/ 0" и показывает как пробел в выводе.Как мне это исправить?
Вот код:
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<stdio.h>
//A function to initialize the board
void start_board(char a[5][5])
{
for(int i=0;i<5;i++)
{ for(int j=0;j<5;j++)
{ strcpy(&a[i][j],"O");
}
}
}
//A function to display the board
void display_board(char a[5][5])
{ for(int i=0;i<5;i++)
{ for(int j=0;j<5;j++)
{ cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
class board
{ public:
char board[5][5];
void start()
{ start_board(board);
}
void display()
{ display_board(board);
}
};
class ship
{ public:
int ship_row, ship_col;
ship()//CONSTRUCTOR FOR PUTTING COORDINATES OF SHIP
{ randomize();
ship_row= random(5);
ship_col=random(5);
cout<<ship_row<<endl<<ship_col;
}
};
class guess: public board, public ship
{ public:
int guess_row,guess_col;
char vboard[5][5];
guess()
{ start_board(vboard);
}
void takeguess();
};
void guess:: takeguess()
{ int count=0;
while(count<3)
{
cout<<endl;
cout<<"Guess a row ";
cin>>guess_row;
cout<<"Guess a column ";
cin>>guess_col;
if(guess_row==ship_row && guess_col==ship_col)
{ cout<<"Congratulations! You sank the battleship!";
break;
}
else if(guess_row>4 || guess_col>4)
{ cout<<"invalid guess";
}
else
{ clrscr();
cout<<"Incorrect Guess!"<<endl;
strcpy(&vboard[guess_row][guess_col],"X");
display_board(vboard);
count+=1;
}
if(count==3)
{ cout<<"GAME OVER!";
}
}
}
void main()
{ clrscr();
board b;
b.start();
b.display();
guess g;
g.takeguess();
getch();
}
Например, если пользователь угадает 0,2, а это не местоположение корабля, вывод будет отображаться:
OOX O
OOOOO
OOOOO
OOOOO
OOOOO
Извините за грязный код (он не полный) и любые ошибки, которые я допустил при написании этого поста, я впервые использую stackoverflow.Спасибо за вашу помощь!