/* Se tiene un tablero de N filas y M columnas para el juego de la batalla naval.
En el mismo todos los barcos se posicionan en forma horizontal. Inicialice todos
los casilleros marcados con "Agua". Escribir un programa con los siguientes módulos:
a) Función Ubicar que reciba como parámetros Fila, Columna (la posición de un
barco) y Tamaño (de un barco). Deberá marcar los casilleros abarcados en el
"tablero" con un número que identifica al barco ubicado. La misma devolverá 0
en caso de que los casilleros estuviesen ocupados o no pueda validar la posición
y 1 en caso contrario */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 3
#define M 3
char A[N][M];
int ubicar (int fil, int co, int ta)
{
int val=1,i;
if (fil>N || co>M || A[fil][co]=='b')
{
val=0;
}
else
{
for (i=1;i<=ta;i++)
{
if (A[fil][co+i]=='b' || A[fil][co-i]=='b')
{
val=0;
}
}
}
return (val);
}
int jugar (int fi,int colu)
{
int val;
if (fi>N || colu>M)
{
val=2;
}
if (A[fi][colu]=='b')
{
A[fi][colu]='t';
val=1;
}
if (A[fi][colu]=='a')
{
val=0;
}
if (A[fi][colu]=='t')
{
val =3
}
return (val);
}
void main ()
{
int op,a,b,fila,col,tam,i,j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
A[i][j]= 'a';
}
}
do
{
printf ("Ingrese 1 para ubicar:\n");
printf ("Ingrese 2 para jugar:\n");
scanf ("%d",&op);
if (op==1)
{
printf ("Ingrese la fila:\n");
scanf ("%d",&fila);
printf ("Ingrese la columna:\n");
scanf("%d",&col);
printf ("ingrese el tamanio:\n");
scanf("%d",&tam);
a=ubicar(fila,col,tam);
if (a==0)
{
printf ("Los datos ingresados son incorrectos\n");
}
else
{
for (i=0;i<=tam;i++)
{
A[fila][col+i]='b';
}
}
}
if (op==2)
{
printf ("Ingrese la fila:\n");
scanf ("%d",&fila);
printf ("Ingrese la columna:\n");
scanf ("%d",&col);
b=jugar(fila,col);
if (b==1 || b==3)
{
printf ("tocado\n");
}
if (b==2)
{
printf ("error\n");
}
if (b==0)
{
printf ("agua\n");
}
}
}
while (op!=3);
}
el hundimiento yo habia hecho algo asi.. en otro programa parecido
int hund(int x, int y)
{
int i,hun=0;
if(A[x][y]=='t' )
{
if (A[x][y+1]=='a' && A[x][y-1]=='a')
{
hun=1;
}
else
{
for (i=1;i<M;i++)
{
if (A[x][y+i]=='t' || A[x][y-i]=='t' )
{
i++;
if (A[x][y+i]=='a' || A[x][y-i]=='a')
{
hun=1;
}
}
}
}
}
return (hun);
}