Batalla Naval

carlos david
18 de Septiembre del 2004
Hola,gracias por su atención,

Estoy desarrollando para la universidad un programa de batalla naval en el cual solo juega la máquina mediante números aleatorios. Una matriz de 8*8 la cual se inicia con ceros y luego se marcan con 1´s las posiciones de los barcos; Y otra matriz(jugada) donde se graban las posiciones donde se disparo.(si fue en un barco escribe en esa posición un 2, y si le da al agua genera un 3).

Mi problema es que cuando la máquina genera un numero aleatorio para escoger la posición de disparo, La tercera vez que hace esta operación la máquina ademas de mostrar por pantalla el 3 o el 2 y grabarla en la matriz(jugada), genera otros dos números y los muestra por pantalla,generalmente en la esquina superior izquierda. Estos numeros son diferentes de 0,1,2,3 lo cual genera errores en el funcionamiento del programa porque graba en posiciones donde deberian estar los barcos.



El programa esta desarrollado en Visual c++,aunque tambien lo compile en c++ y sucede lo mismo, trabaja en ambiente windows, adjunto el codigo.

Agradezco de antemano su colaboración y su ayuda.

// proyecto.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<time.h>


int main(int argc, char* argv[])
{

/*funcion para poner valores aleatorios*/
int tablero[8][8],jugada[2][64];
int a,b,f,m,t,x,y,z;

/*llenando el tablero con ceros*/
for(a=0;a<8;a++)
{
for(b=0;b<8;b++)
{
tablero[a][b]=0;
cout<<tablero[a][b];
}
cout<<"n";
}
/*poniendo barcos*/
x=5;
while(x>1)
{
z=rand() % 11;
if(z<5)
{
f=rand() % (8-x);
y=rand() % 8;
}
else
{
srand ( (unsigned)time (NULL));
f=rand() % 8;
y=rand() % (8-x);
}
if(z<5)
{
t=0;
m=x;
while(m>0)
{
m--;
t=tablero[f+m][y]+t;
}
if(t==0)
{
cout<<"n"<<x;
m=x;
while(m>0)
{
m--;
tablero[f+m][y]=1;
}
x--;
}
}
if(z>=5)
{
t=0;
m=x;
while(m>0)
{
m--;
t=tablero[f][y+m]+t;
}
if(t==0)
{
cout<<"n"<<x;
m=x;
while(m>0)
{
m--;
tablero[f][y+m]=1;
}
x--;
}
}
for(a=0;a<8;a++)
{
cout<<"n";
for(b=0;b<8;b++)
{
cout<<tablero[a][b];
}
}
getchar();
}

/*llenando de 0 la matriz de jugadas*/

for(a=0;a<2;a++)
{
for(b=0;b<64;b++)
{
jugada[a][b]=0;
}
cout<<"n";
}



m=0;
f=0;
while(m<14)
{
x=rand() % 8;
y=rand() % 8;
if(tablero[x][y]==0)
{
tablero[x][y]=3;
jugada[f][0]=x;
jugada[f][1]=y;
cout<<"njugada "<<f+1<<":"<<jugada[f][f]<<","<<jugada[f][f+1];
cout<<" no le diste,afine punterian";
f++;
for(a=0;a<8;a++)
{
cout<<"n";
for(b=0;b<8;b++)
{
cout<<tablero[a][b];
}
}
getchar();
}

if(tablero[x][y]==1)
{
tablero[x][y]=3;
jugada[f][0]=x;
jugada[f][1]=y;
cout<<"njugada "<<f+1<<":"<<jugada[f][f]<<","<<jugada[f][f+1];
cout<<" BOOOOOOOOM n";
f++;
m++;
for(a=0;a<8;a++)
{
cout<<"n";
for(b=0;b<8;b++)
{
cout<<tablero[a][b];
}
}
getchar();
}
}

cout<<" n GANASTE EN "<<f<<" JUGADAS";
getchar();
cout<<"n aqui estan las jugadas de 32 en 32";
m=0;
x=0;

while(m<f)
{
cout<<"njugada "<<m+1<<":"<<jugada[m][x]<<","<<jugada[m][x+1];
if(m==31)
{
getchar();
}
m++;
}

getchar();
return 0;
}


ASLA
18 de Septiembre del 2004
ERES DE LA PUCP NO???,JAJAJA