El siguiente programa a petición de uno de nuestros visitantes,se trata del famoso juego de los barquitos,batalla barquitos,batalla naval. El programa que he realizado, podemos decir que es un programa base, fácil de entender y de modificar, sin adornos (gráficos), en modo texto, para que lo puedas usar y modificar a tu gusto. Lo que se trata es de tomar nociones de la base de un programa de este tipo. Aclarar primero que para para poder compilarlo compilarlo en Dev c++, necesitas instalar la librería
(mira en nuestro foro),que como está en su versión 2.0, lo llamareros desde el programa como . No hemos ocultado los barcos del contario (ordenador), para ver como funciona el programa,las casillas <0>, son las casillas en blanco o agua,, los barcos son colocados de forma aleatoria cada partida, marcados en el tablero como <5>, y donde disparamos se marca como <1>,nuestro tablero es el número 1, y el otro es controlado por el ordenador. Aquí tienes el código: // batalla naval por Juan Rodríguez. #include #include #include #include using namespace std; //creamos 2 array para 2 tableros de 16x16 int tablero1[256]; tablero1[256]; int tablero2[256]; tablero2[256]; int resultado; //para saber los barcos que quedan de cada tablero int barcos1=16; int barcos2=16;
//funcion para dibujar en pantalla void dibuja(void){ gotoxy(5,3);cout<<"Tablero 1"; int coordenadax2=2; int coordenaday2=5; int c; for (c=0;c<256;c++){ gotoxy(coordenadax2,coordenaday2); cout<
//funcion para pedir que el usuario dispare void dispara1(int x,int y){ resultado=y*16+x; if (tablero2[resultado]==5) { tablero2[resultado]=1; barcos2-=1; }else{ tablero2[resultado]=1;
}; }; //funcion que hace que dispare el ordenador void dispara2(int x,int y){ resultado=y*16+x; if (tablero1[resultado]==5) { tablero1[resultado]=1; barcos1-=1; }else{ tablero1[resultado]=1; }; }; //programa principal int main(int argc, char *argv[]) { system("CLS");
//cada casilla de cada tablero vale 0 int c; for (c=0;c<256;c++){ tablero1[c]=0; tablero2[c]=0; };
//ahora colocamos nuestros barcos //colocaremos 16 barcos de forma aleatoria //16 para nuestro tablero y 16 para el ordenador int barcox; int barcoy; int cc;
int contadorb=0; //ponemos de semilla para los numeros aleatorios la hora del pc //así siempre es diferente srand(time(NULL)); //hacemos un array para guardar los barcos y que no se repitan int gbarcos[20]; int gbarcos2[20]; //creamos 16 barcos while (contadorb<16) { //obtenemos dos coordenadas aleatorias barcox = rand()%15; barcoy = rand()%15; //lo colocamos dentro del array del tablero1 cc=(barcoy*16)+barcox; if (tablero1[cc]!=5) { tablero1[cc]=5; contadorb+=1; }; }; //ahora para el tablero2 contadorb=0; //creamos 16 barcos while (contadorb<16) { //obtenemos dos coordenadas aleatorias barcox = rand()%15; barcoy = rand()%15;
//lo colocamos dentro del array del tablero1 cc=(barcoy*16)+barcox; if (tablero2[cc]!=5) { tablero2[cc]=5; contadorb+=1; }; }; //ahora dibujamos en pantalla dibuja();
//tenemos que hace un bucle hasta que uno se quede sin barcos int findejuego=0; while (findejuego<=0) { //pedimos al usuario que dispare int disparax; int disparay; cout<<"\n introduzca coordenadax (0-15)"; cin>>disparax; cout<<"\n introduzca coordenaday (0-15)"; cin>>disparay; dispara1(disparax,disparay); //ahora dispara el ordenador disparax = rand()%15; disparay = rand()%15; dispara2(disparax,disparay);
system("CLS");
dibuja(); if (barcos1==0){ cout<<"\n el ordenador gana \n"; findejuego=1;}; if (barcos2==0){ cout<<"\n jugador1 gana \n"; findejuego=1; }; };
system("PAUSE"); return EXIT_SUCCESS; }