Juego de los barcos
Os dejo una versi贸n muy cutre para que os sirva de base si ten茅is que hacer el juego de los barquitos en C++. No hay control de errores, los barcos pueden solaparse, en fin, es muy cutre, pero me aburr铆a y lo hice en 10 minutos (literalmente)... A lo mejor a alguien le puede servir.
Un saludo:
JaVinci
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream.h>
#define PLAYER_1 0
#define PLAYER_2 1
#define TAM 10
char Tableros[2][TAM][TAM];
bool eog=false;
void InicializaTableros(){
int i,j,k;
for(i=0;i<2;i++){
for(j=0;j<TAM;j++){
for(k=0;k<TAM;k++){
Tableros[i][j][k]='-';
}
}
}
}
void MuestraTableros(){
int i,j;
for(i=0;i<TAM;i++){
for(j=0;j<TAM;j++){
cout << Tableros[PLAYER_1][i][j];
}
cout << " ";
for(j=0;j<TAM;j++){
cout << Tableros[PLAYER_2][i][j];
}
cout << endl;
}
}
void ColocaBarco(int lng, int x, int y, int orient, int jugador){
int i;
switch(orient){
case 'o':
for(i=0;i<lng;i++){
Tableros[jugador][x-1][y-1-i]='O';
}
break;
case 'e':
for(i=0;i<lng;i++){
Tableros[jugador][x-1][y-1+i]='O';
}
break;
case 's':
for(i=0;i<lng;i++){
Tableros[jugador][x-1+i][y-1]='O';
}
break;
case 'n':
for(i=0;i<lng;i++){
Tableros[jugador][x-1-i][y-1]='O';
}
break;
}
}
void ColocaPiezas(int jugador){
int x1=-1,y1=-1;
int x2=-1,y2=-1;
int x3=-1,y3=-1;
int x4=-1,y4=-1;
char orientacion1=' ';
char orientacion2=' ';
char orientacion3=' ';
char orientacion4=' ';
cout << endl << "***************" << endl;
if(jugador==PLAYER_1){
cout << "** JUGADOR 1 **" << endl;
}
else{
cout << "** JUGADOR 2 **" << endl;
}
cout << "***************" << endl << endl;
cout << endl << "El de 4 (x): ";
cin >> x4;
cout << "El de 4 (y): ";
cin >> y4;
cout << "El de 4 (n-s-e-o): ";
cin >> orientacion4;
ColocaBarco(4,x4,y4,orientacion4,jugador);
cout << endl << "El de 3 (x): ";
cin >> x3;
cout << "El de 3 (y): ";
cin >> y3;
cout << "El de 3 (n-s-e-o): ";
cin >> orientacion3;
ColocaBarco(3,x3,y3,orientacion3,jugador);
cout << endl << "El de 2 (x): ";
cin >> x2;
cout << "El de 2 (y): ";
cin >> y2;
cout << "El de 2 (n-s-e-o): ";
cin >> orientacion2;
ColocaBarco(2,x2,y2,orientacion2,jugador);
cout << endl << "El de 1 (x): ";
cin >> x1;
cout << "El de 1 (y): ";
cin >> y1;
ColocaBarco(1,x1,y1,'n',jugador);
}
void CompruebaFinDeJuego(int jugador){
int i,j;
bool quedaAlgoVivo=false;
for(i=0;i<TAM;i++){
for(j=0;j<TAM;j++){
if(Tableros[jugador][i][j]=='O') quedaAlgoVivo=true;
}
}
if(!quedaAlgoVivo) eog=true;
}
void Dispara(int jugador){
int x,y;
cout << endl << "***************" << endl;
if(jugador==PLAYER_1){
cout << "** JUGADOR 1 **" << endl;
}
else{
cout << "** JUGADOR 2 **" << endl;
}
cout << "***************" << endl << endl;
cout << "Disparo (x): ";
cin >> x;
cout << "Disparo (y): ";
cin >> y;
switch(jugador){
case PLAYER_1:
switch(Tableros[PLAYER_2][x-1][y-1]){
case '-':
Tableros[PLAYER_2][x-1][y-1]=' ';
cout << endl << "AGUA" << endl << endl;
break;
case 'O':
Tableros[PLAYER_2][x-1][y-1]='*';
cout << endl << "TOCADO" << endl << endl;
CompruebaFinDeJuego(PLAYER_2);
break;
}
break;
case PLAYER_2:
switch(Tableros[PLAYER_1][x-1][y-1]){
case '-':
Tableros[PLAYER_1][x-1][y-1]='路';
cout << endl << "AGUA" << endl << endl;
break;
case 'O':
Tableros[PLAYER_1][x-1][y-1]='*';
cout << endl << "TOCADO" << endl << endl;
CompruebaFinDeJuego(PLAYER_1);
break;
}
break;
}
}
void main(void){
InicializaTableros();
MuestraTableros();
ColocaPiezas(PLAYER_1);
ColocaPiezas(PLAYER_2);
MuestraTableros();
while(!eog){
Dispara(PLAYER_1);
MuestraTableros();
if(eog){
cout << endl << "GANA EL JUGADOR 1" << endl << endl;
break;
}
Dispara(PLAYER_2);
MuestraTableros();
if(eog){
cout << endl << "GANA EL JUGADOR 2" << endl << endl;
break;
}
}
}
Un saludo:
JaVinci
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream.h>
#define PLAYER_1 0
#define PLAYER_2 1
#define TAM 10
char Tableros[2][TAM][TAM];
bool eog=false;
void InicializaTableros(){
int i,j,k;
for(i=0;i<2;i++){
for(j=0;j<TAM;j++){
for(k=0;k<TAM;k++){
Tableros[i][j][k]='-';
}
}
}
}
void MuestraTableros(){
int i,j;
for(i=0;i<TAM;i++){
for(j=0;j<TAM;j++){
cout << Tableros[PLAYER_1][i][j];
}
cout << " ";
for(j=0;j<TAM;j++){
cout << Tableros[PLAYER_2][i][j];
}
cout << endl;
}
}
void ColocaBarco(int lng, int x, int y, int orient, int jugador){
int i;
switch(orient){
case 'o':
for(i=0;i<lng;i++){
Tableros[jugador][x-1][y-1-i]='O';
}
break;
case 'e':
for(i=0;i<lng;i++){
Tableros[jugador][x-1][y-1+i]='O';
}
break;
case 's':
for(i=0;i<lng;i++){
Tableros[jugador][x-1+i][y-1]='O';
}
break;
case 'n':
for(i=0;i<lng;i++){
Tableros[jugador][x-1-i][y-1]='O';
}
break;
}
}
void ColocaPiezas(int jugador){
int x1=-1,y1=-1;
int x2=-1,y2=-1;
int x3=-1,y3=-1;
int x4=-1,y4=-1;
char orientacion1=' ';
char orientacion2=' ';
char orientacion3=' ';
char orientacion4=' ';
cout << endl << "***************" << endl;
if(jugador==PLAYER_1){
cout << "** JUGADOR 1 **" << endl;
}
else{
cout << "** JUGADOR 2 **" << endl;
}
cout << "***************" << endl << endl;
cout << endl << "El de 4 (x): ";
cin >> x4;
cout << "El de 4 (y): ";
cin >> y4;
cout << "El de 4 (n-s-e-o): ";
cin >> orientacion4;
ColocaBarco(4,x4,y4,orientacion4,jugador);
cout << endl << "El de 3 (x): ";
cin >> x3;
cout << "El de 3 (y): ";
cin >> y3;
cout << "El de 3 (n-s-e-o): ";
cin >> orientacion3;
ColocaBarco(3,x3,y3,orientacion3,jugador);
cout << endl << "El de 2 (x): ";
cin >> x2;
cout << "El de 2 (y): ";
cin >> y2;
cout << "El de 2 (n-s-e-o): ";
cin >> orientacion2;
ColocaBarco(2,x2,y2,orientacion2,jugador);
cout << endl << "El de 1 (x): ";
cin >> x1;
cout << "El de 1 (y): ";
cin >> y1;
ColocaBarco(1,x1,y1,'n',jugador);
}
void CompruebaFinDeJuego(int jugador){
int i,j;
bool quedaAlgoVivo=false;
for(i=0;i<TAM;i++){
for(j=0;j<TAM;j++){
if(Tableros[jugador][i][j]=='O') quedaAlgoVivo=true;
}
}
if(!quedaAlgoVivo) eog=true;
}
void Dispara(int jugador){
int x,y;
cout << endl << "***************" << endl;
if(jugador==PLAYER_1){
cout << "** JUGADOR 1 **" << endl;
}
else{
cout << "** JUGADOR 2 **" << endl;
}
cout << "***************" << endl << endl;
cout << "Disparo (x): ";
cin >> x;
cout << "Disparo (y): ";
cin >> y;
switch(jugador){
case PLAYER_1:
switch(Tableros[PLAYER_2][x-1][y-1]){
case '-':
Tableros[PLAYER_2][x-1][y-1]=' ';
cout << endl << "AGUA" << endl << endl;
break;
case 'O':
Tableros[PLAYER_2][x-1][y-1]='*';
cout << endl << "TOCADO" << endl << endl;
CompruebaFinDeJuego(PLAYER_2);
break;
}
break;
case PLAYER_2:
switch(Tableros[PLAYER_1][x-1][y-1]){
case '-':
Tableros[PLAYER_1][x-1][y-1]='路';
cout << endl << "AGUA" << endl << endl;
break;
case 'O':
Tableros[PLAYER_1][x-1][y-1]='*';
cout << endl << "TOCADO" << endl << endl;
CompruebaFinDeJuego(PLAYER_1);
break;
}
break;
}
}
void main(void){
InicializaTableros();
MuestraTableros();
ColocaPiezas(PLAYER_1);
ColocaPiezas(PLAYER_2);
MuestraTableros();
while(!eog){
Dispara(PLAYER_1);
MuestraTableros();
if(eog){
cout << endl << "GANA EL JUGADOR 1" << endl << endl;
break;
}
Dispara(PLAYER_2);
MuestraTableros();
if(eog){
cout << endl << "GANA EL JUGADOR 2" << endl << endl;
break;
}
}
}
