Galera, tenho que escrever um programa para o jogo batalha naval e estou encontrando dificuldades em como incluir os navios no mapa. Sempre que um navio começa/ termina na borda, ele volta para a ultima coluna da linha anterior ou pula para a primeira coluna da linha seguinte, respectivamente.
Segue uma parte do código:
void Ship::setShip(char ship, int ship_size, char tabPlayer[9][9]){
int coordinate1, coordinate2, auxCol, row, col, optCord = 0;
char position;
bool vertical = true;
cout << "Select the row you want to place: " << endl;
cin >> row;
cout << "Select the collumn you want to place: " << endl;
cin >> col;
cout << "Select the ship direction: vertical or horizontal (V/H). " << endl;
cin >> position;
if (position == 'H' || position == 'h')
vertical = false;
if (vertical == false)
{
coordinate1 = col - (ship_size - 1);
coordinate2 = col + (ship_size - 1);
int min_ = 0 + (ship_size - 1 );
int max_ = 9 - (ship_size - 1 );
if ( col >= min_ && col <= max_ )
{
cout << "For the second coordinate, select one of the options: " << endl;
Se eu executar o comando setShip('A', 5, tabPlayer[9][9]), sendo 'A' o caracter que eu quero inserir, 5 como tamanho do navio e a vetor 2D que irei utilizar, e escolher a row = 3 e col = 4 e setar como posição horizontal, ele calculará automaticamente quais seram as duas possibilidade de posicionar o navio.
As opções serão ou [3][0], ou [3][8]. Se eu escolher a segunda opção, funciona beleza, mas a primeira opção, fica assim:
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - A
A A A A A - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
O mesmo occore quando a última posição fica na borda. Ele pula de linha e escreve. Qual seria o problema? :(
Pergunta
rodrigoamadeus
Galera, tenho que escrever um programa para o jogo batalha naval e estou encontrando dificuldades em como incluir os navios no mapa. Sempre que um navio começa/ termina na borda, ele volta para a ultima coluna da linha anterior ou pula para a primeira coluna da linha seguinte, respectivamente.
Segue uma parte do código:
As opções serão ou [3][0], ou [3][8]. Se eu escolher a segunda opção, funciona beleza, mas a primeira opção, fica assim:
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - A
A A A A A - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
O mesmo occore quando a última posição fica na borda. Ele pula de linha e escreve. Qual seria o problema? :(
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.