Вы находитесь на странице: 1из 6

El siguiente programa a peticin de uno de nuestros visitantes,se trata del famoso juego de los barquitos,batalla naval.

El programa que he realizado, podemos decir que es un programa base, fcil de entender y de modificar, sin adornos (grficos), 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 poder compilarlo en Dev c++, necesitas instalar la librera <conio.h> (mira en nuestro foro),que como est en su versin 2.0, lo llamareros desde el programa como <conio2.h>. 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 nmero 1, y el otro es controlado por el ordenador. Aqu tienes el cdigo: // batalla naval por Juan Rodrguez. #include <cstdlib> #include <iostream> #include <conio2.h> #include <time.h> using namespace std; //creamos 2 array para 2 tableros de 16x16 int tablero1[256]; int 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<<tablero1[c]; if (coordenadax2==17){coordenadax2=1;coordenaday2++; }; coordenadax2++; }; gotoxy(35,3);cout<<"Tablero 2"; int coordenadax=32; int coordenaday=5; for (c=0;c<256;c++){ gotoxy(coordenadax,coordenaday); cout<<tablero2[c]; if (coordenadax==47){coordenadax=31;coordenaday++; }; coordenadax++; }; };

//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; }

Вам также может понравиться