Hundir la Flota
Publicado por Juan (1 intervención) el 18/01/2022 14:08:14
Hola buenas estoy intentando hacer en C++ el juego de Hundir la Flota, pero estoy atascando intentando señalizar (con una X) las zonas donde el usuario quiere que ponga sus barcos en el tablero (primero horizontal). El problema es que si el tamaño del barco es 5 y lo sitúa en la posición (4,2) la coordenada 4 no la voy a necesitar para nada se mantendrá fija, pero la coordenada 2 si, y por tanto se tendrá que poner una X en la posición (4,2),(4,3)(4,4),(4,5),(4,6), el problema que tengo es que no me sale como hacerlo con un bucle o con un do while
#include <iostream>
#include <string>
#include <cmath>
#include <fstream>
using namespace std;
const int FIL = 10;
const int COL = 10;
typedef int Tablero[FIL][COL];
void MuestraTablero(const Tablero);
//void RellenarTablero(Tablero);
void InicializaDesdeFichero();
void InicializaDesdeTeclado(Tablero);
char Menu()
{
char opcion;
cout<< "a)Leer las posiciones de los barcos desde fichero"<<endl;
cout<< "b)Pedir al usuario las posiciones de los barcos"<<endl;
cout<< "c)Disparar" <<endl;
cout<< "d)Salir" <<endl;
cout<< "Elige una opcion: ";
cin >> opcion;
return opcion;
}
/*
void RellenarTablero(Tablero T){
for(int i=0; i<FIL; i++){ //Filas
for(int j=0; j<COL; j++){ //Columnas
T[i][j] = '-';
}
}
}
*/
void MuestraTablero(const Tablero T){
for(int i=0; i<FIL; i++){ //Filas
for(int j=0; j<COL; j++){ //Columnas
cout<<T[i][j]<<" ";
}
cout<<endl;
}
}
void InicializaDesdeTeclado(Tablero T){
short int num_barcos, coord1, coord2, orientacion, num_barcos, tam_barcos;
short int contador = 1;
unsigned u; //fila
unsigned k; //columna
short int posiciones;
do
{
cout<<"Indique el numero de barcos: ";
cin>>num_barcos;
cout<<endl;
}while(num_barcos>6);
do{
cout<<"Barco "<<contador;
cout<<"\nIntroduce el tamaño del barco: ";
cin>>tam_barcos
cout<<"\nIndique orientacion (Horizontal = 1 , Vertical = 2): ";
cin>>orientacion;
cout<<"Introduzca las coordenas: ";
cout<<"\nCoordenada 1:";
cin>>coord1;
cout<<"Coordenada 2:";
cin>>coord2;
for (unsigned i=0; i<FIL; i++){
for(unsigned j=0; j<COL; j++)
T[i][j] = '-';
}
contador++;
cout<<"Coordenadas "<<"("<<coord1<<","<<coord2<<")";
///////7AQUI ESTÁ MI PROBLEMAAA//////////////////////////////////////////////////
if (orientacion == 1){
do{
suma=
posiciones = tam_barcos - 1;
k += posiciones
T[u][k] = 'X';
}while (k!=suma);
}
MuestraTablero(T);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}while(contador<=num_barcos);
}
/*
void InicializaDesdeFichero(){
ifstream configuracion;
configuracion.open (“config.txt”);
if(!configuracion){
cout<<"Error al abrir el fichero"<<endl;
else
{
}
configuracion.close();
}
}
*/
int main()
{
char op; //opcion del menu
Tablero tab;
//RellenarTablero(tab);
MuestraTablero(tab);
do
{
op = Menu();
switch (op)
{
case 'a':
cout << "Fichero con las posiciones de los barcos?: " << endl;
break;
case 'b':
cout << "Pedir al usuario las posiciones de los barcos" << endl;
InicializaDesdeTeclado(tab);
break;
case 'c':
cout << "Disparar" << endl;
break;
case 'd':
cout << "Salir" << endl;
break;
}
}while (op!= 'a' && op!= 'b' && op!= 'c' && op!= 'd');
return 0;
}
#include <iostream>
#include <string>
#include <cmath>
#include <fstream>
using namespace std;
const int FIL = 10;
const int COL = 10;
typedef int Tablero[FIL][COL];
void MuestraTablero(const Tablero);
//void RellenarTablero(Tablero);
void InicializaDesdeFichero();
void InicializaDesdeTeclado(Tablero);
char Menu()
{
char opcion;
cout<< "a)Leer las posiciones de los barcos desde fichero"<<endl;
cout<< "b)Pedir al usuario las posiciones de los barcos"<<endl;
cout<< "c)Disparar" <<endl;
cout<< "d)Salir" <<endl;
cout<< "Elige una opcion: ";
cin >> opcion;
return opcion;
}
/*
void RellenarTablero(Tablero T){
for(int i=0; i<FIL; i++){ //Filas
for(int j=0; j<COL; j++){ //Columnas
T[i][j] = '-';
}
}
}
*/
void MuestraTablero(const Tablero T){
for(int i=0; i<FIL; i++){ //Filas
for(int j=0; j<COL; j++){ //Columnas
cout<<T[i][j]<<" ";
}
cout<<endl;
}
}
void InicializaDesdeTeclado(Tablero T){
short int num_barcos, coord1, coord2, orientacion, num_barcos, tam_barcos;
short int contador = 1;
unsigned u; //fila
unsigned k; //columna
short int posiciones;
do
{
cout<<"Indique el numero de barcos: ";
cin>>num_barcos;
cout<<endl;
}while(num_barcos>6);
do{
cout<<"Barco "<<contador;
cout<<"\nIntroduce el tamaño del barco: ";
cin>>tam_barcos
cout<<"\nIndique orientacion (Horizontal = 1 , Vertical = 2): ";
cin>>orientacion;
cout<<"Introduzca las coordenas: ";
cout<<"\nCoordenada 1:";
cin>>coord1;
cout<<"Coordenada 2:";
cin>>coord2;
for (unsigned i=0; i<FIL; i++){
for(unsigned j=0; j<COL; j++)
T[i][j] = '-';
}
contador++;
cout<<"Coordenadas "<<"("<<coord1<<","<<coord2<<")";
///////7AQUI ESTÁ MI PROBLEMAAA//////////////////////////////////////////////////
if (orientacion == 1){
do{
suma=
posiciones = tam_barcos - 1;
k += posiciones
T[u][k] = 'X';
}while (k!=suma);
}
MuestraTablero(T);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}while(contador<=num_barcos);
}
/*
void InicializaDesdeFichero(){
ifstream configuracion;
configuracion.open (“config.txt”);
if(!configuracion){
cout<<"Error al abrir el fichero"<<endl;
else
{
}
configuracion.close();
}
}
*/
int main()
{
char op; //opcion del menu
Tablero tab;
//RellenarTablero(tab);
MuestraTablero(tab);
do
{
op = Menu();
switch (op)
{
case 'a':
cout << "Fichero con las posiciones de los barcos?: " << endl;
break;
case 'b':
cout << "Pedir al usuario las posiciones de los barcos" << endl;
InicializaDesdeTeclado(tab);
break;
case 'c':
cout << "Disparar" << endl;
break;
case 'd':
cout << "Salir" << endl;
break;
}
}while (op!= 'a' && op!= 'b' && op!= 'c' && op!= 'd');
return 0;
}
Valora esta pregunta
0