Dev - C++ - Ayuda Codigo Batalla Naval C++ con clases

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda Codigo Batalla Naval C++ con clases

Publicado por Constanza (1 intervención) el 05/07/2019 03:59:51
Hoola Buenas.

En un proyecto de universidad , Tenemos que programar la batalla naval en C++ orientado a objetos . Por lo que tenemos :
Una clase Jugador
Una clase Computador
Una clase posiciones_naves
Una clase Tablero
Y otra llamada Juego

Mi problema es que no sabemos como hacer los disparos , ya que la funcion no toma los valores :S
Espero que me puedan ayudar
Estare atenta a sus comentarios

Aqui les presento la clase Juego, Computador y Jugador

->Clase Juego:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "Juego.h"
#include "Jugador.h"
#include "Computador.h"
#include "Tablero.h"
 
 
Jugador jugador_persona;
Computador jugador_computadora;
Tablero tablero_final;
Tablero tablero_final2;
 
void Juego::informacion_Tableros(){
 
jugador_persona.elaboracion_tablero_jugador();
jugador_computadora.ingreso_nave_tablero_computador();
 
}
 
 
 
/*Función que realiza los disparos del usuario y del computador*/
void Juego::disparos_jugador(char tablero_jugador[][15], char tablero_computador[][15]){
 
	int i,j;
	char tablero_disparo_usuario[15][15];
	char tablero_disparo_computador[15][15];
 
	int naves_disponibles_computador=8;
	int naves_disponibles_usuario=8;
 
	int Porta_aviones_usuario=5;
	int Porta_aviones_computador=5;
 
	int Primer_buque_usuario=4;
	int Segundo_buque_usuario=4;
	int Primer_buque_computador=4;
	int Segundo_buque_computador=4;
 
	int Primer_submarino_usuario=3;
	int Segundo_submarino_usuario=3;
	int Primer_submarino_computador=3;
	int Segundo_submarino_computador=3;
 
	int Primera_lancha_usuario=1;
	int Segunda_lancha_usuario=1;
	int Tercera_lancha_usuario=1;
	int Primera_lancha_computador=1;
	int Segunda_lancha_computador=1;
	int Tercera_lancha_computador=1;
 
	int total_porta_aviones=0;
	int total_buques=0;
 
	int coordenada_x=0;
	int coordenada_y=0;
	int jugar=0,a=1;
 
		for(i=0;i<15;i++){
			for(j=0;j<15;j++){
    		tablero_disparo_usuario[i][j]='*';
    		}
		}
	/*Tablero del computador*/
	for(i=0;i<15;i++){
  		for(j=0;j<15;j++){
			tablero_disparo_computador[i][j]='*';
    		}
		}
 
 
	 while(jugar==0){
     	while(a!=0){
 
	std::cout << "\n..:: Turno del jugador ::..\n";
    std::cout << "Ingrese las coordenadas para atacar a su enemigo: ";
    scanf("%d,%d",&coordenada_x,&coordenada_y);
 
    int coordenada_ataque_x=coordenada_x-1;
	int coordenada_ataque_y=coordenada_y-1;
 
 
			if (tablero_computador[coordenada_ataque_x][coordenada_ataque_y]=='P'){
				std::cout << "Se ha dañado el Porta Aviones del Computador\n";
				tablero_disparo_computador[coordenada_ataque_x][coordenada_ataque_y]='P';
				Porta_aviones_computador--;
 
 
			}
		}
	}
}


->Clase Computador

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "Computador.h"
#include "Posiciones_naves.h"
#include "Tablero.h"
Posiciones_naves juego_computador;
Tablero tablero_juego_computador;
char inicializar_tablero_computador[15][15];
 
 
//Funcion que se encarga de forma aleatoria de agregar las naves a un tablero...
void Computador::posicion_naves_computador(char tablero_computador[][15],int tamano_nave, char nave){
 
	int ingreso_posicion_x=0;
	int ingreso_posicion_y=0;
 
	int estado_posicion;
	int por=0;
	int random_orientacion_nave=0;
	int c=0;
 
	//Funcion que se encarga de la orientacion de la nave
	//Retorna 1 y 2...
	srand(time(NULL));
	random_orientacion_nave=rand()%2+1;
 
	//Si el random retorna 1
	//Significa que la nave se va a posicionar en sentido Horizontal...
	if(random_orientacion_nave==1){
		estado_posicion=0;
 
		//Si la variable estado_posicion es 0, significa que el espacio se encuentra vacio..
		while(estado_posicion==0){
 
			//Random para las coordenadas x e y..
			ingreso_posicion_x=rand()%15+1;
			ingreso_posicion_y=rand()%15+1;
 
			//Funcion que comprueba el estado de las coordenadas...
			c=juego_computador.posicion_nave_horizontal(tablero_computador,ingreso_posicion_x,ingreso_posicion_y,tamano_nave);
 
			//Si c ==1 
			//Se dice que se puede ingresar naves a la posicion...
			if(c==1){
				for(por=0;por<tamano_nave;ingreso_posicion_y++,por++){
    				tablero_computador[ingreso_posicion_x][ingreso_posicion_y]=nave;
					}
				estado_posicion=1;
				}
			}
		}
 
	//Si el ramdon retorna un valor 2
	//La nave se orientara en forma vertical	
	if(random_orientacion_nave==2){
		estado_posicion=0;
 
		while(estado_posicion==0){
 
			ingreso_posicion_x=rand()%15+1;
			ingreso_posicion_y=rand()%15+1;
 
			c=juego_computador.posicion_nave_horizontal(tablero_computador,ingreso_posicion_x,ingreso_posicion_y,tamano_nave);
 
			if(c==1){
 
				for(por=0;por<tamano_nave;ingreso_posicion_x++,por++){
    				tablero_computador[ingreso_posicion_x][ingreso_posicion_y]=nave;
					}
				estado_posicion=1;
				}
			}
		}
	}
 
 
	void Computador::ingreso_nave_tablero_computador(){
 
	tablero_juego_computador.crear_tablero(inicializar_tablero_computador);
 
	//Ingreso de los Porta Aviones...	
	posicion_naves_computador(inicializar_tablero_computador,5,'P');
 
	//Ingreso de los 2 Buques...
	posicion_naves_computador(inicializar_tablero_computador,4,'B');
	posicion_naves_computador(inicializar_tablero_computador,4,'B');
 
	//Ingreso de llos 2 Submarinos
	posicion_naves_computador(inicializar_tablero_computador,3,'S');
	posicion_naves_computador(inicializar_tablero_computador,3,'S');
 
	//Ingreso de las 3 Lanchas
	posicion_naves_computador(inicializar_tablero_computador,1,'L');
	posicion_naves_computador(inicializar_tablero_computador,1,'L');
	posicion_naves_computador(inicializar_tablero_computador,1,'L');
 
	tablero_juego_computador.mostrar_tablero(inicializar_tablero_computador);
 
		}


->Y clase Jugador.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include "Jugador.h"
#include "Posiciones_naves.h"
#include "Tablero.h"
 
 
Posiciones_naves juego_usuario;
Tablero tablero_naves_jugador;
char inicializar_tablero_jugador[15][15];
 
//Funcion que se encarga del ingreso de las naves al tablero...
//Sin considerar las Especificaciones de cada nave...
void Jugador::ingreso_nave_tablero_jugador(char tablero_jugador[][15],int tamano_nave,char tipo_nave){
 
	int ingreso_posicion_x=0;
	int ingreso_posicion_y=0;
	int estado_posicion;
	int por;
	int opcion_orientacion_barco=0,c=0;
 
	std::cout <<" Tipo de Orientacion del barco \n";
	std::cout <<"[1] Horizontal (---)\n";
	std::cout << "[2] Vertical (|)\n";
	std::cout << " >> ";
	std::cin >> opcion_orientacion_barco;
 
	//Opcion 1 , Es igual a orientacion horizonzal |
	if(opcion_orientacion_barco==1){
 
		estado_posicion=0;
 
		//Mientras estado_posicion sea a sea igual estado_posicion == 0	
		while(estado_posicion==0){
 
			std::cout <<"------------------------------------------\n";
			std::cout <<"El ingreso debe ser a con el formato : X,Y\n";
			std::cout <<"Ejemplo de Formato: 2,5\n";
			std::cout <<"------------------------------------------\n";
 
			std::cout << "Ingrese las coordenadas de INICIO su barco >> ";
			scanf("%d,%d",&ingreso_posicion_x,&ingreso_posicion_y);
 
			//CUALQUIER COSA CAMBIAR ESTA PORQUERIA !
			int real_posicion_y=ingreso_posicion_x-1;
			int real_posicion_x=ingreso_posicion_y-1;
 
 
		//funcion que retorna 1 y o con la finalidad de comprobar si la posicion ingresada se encuentra ocupada 	
		c=juego_usuario.posicion_nave_horizontal(tablero_jugador,real_posicion_x,real_posicion_y,tamano_nave);
 
			//Si la funcion retorna un O ,significa que la posicion se encuentra ocupada...
			if(c==1){
				for(por=0; por<tamano_nave ; real_posicion_y++ , por++){
    				tablero_jugador[real_posicion_x][real_posicion_y]=tipo_nave;
					}
 
				//La posicion se cambia por un 1 , Haciendo referencia a que ya se encuentra ocupada	
				estado_posicion=1;
				}
			else{
				std::cout << "La posicion se encuentra ocupada o se encuentra fuera de rango\n";
				std::cout <<"---------------------------------------------------------------\n";
				}
			}
		}
 
 
	//Opcion 2 , hace referencia a la orientacion vertical del barco ---	
	if(opcion_orientacion_barco==2){
 
		estado_posicion=0;
 
		while(estado_posicion==0){
 
			std::cout <<"------------------------------------------\n";
			std::cout <<"El ingreso debe ser a con el formato : X,Y\n";
			std::cout <<"Ejemplo de Formato: 2,5\n";
			std::cout <<"------------------------------------------\n";
 
			std::cout << "Ingrese las coordenadas de INICIO su barco >> ";
			scanf("%d,%d",&ingreso_posicion_x,&ingreso_posicion_y);
			int real_posicion_y=ingreso_posicion_x-1;
			int real_posicion_x=ingreso_posicion_y-1;
 
 
			//Funcion que retorna 0 y 1 dependendiendo del estado de las naves verticales...
			c=juego_usuario.posicion_nave_vertical(tablero_jugador,real_posicion_x,real_posicion_y,tamano_nave);
 
			if(c==1){
 
				//Ciclo que imprime la nave en el tablero
				for(por=0;por<tamano_nave;real_posicion_x++,por++){
    				tablero_jugador[real_posicion_x][real_posicion_y]=tipo_nave;
				}
				estado_posicion=1;
			}
			else{
 
			std::cout << "La posicion se encuentra ocupada o se encuentra fuera de rango\n";
			std::cout <<"---------------------------------------------------------------\n";				}
 
			}
		}
	//Muentra el tablero con las naves en el tablero...	
	tablero_naves_jugador.mostrar_tablero(tablero_jugador);
	}
 
 
//Funcion que se encarga de poner las naves en el tablero..
//Pero considerando que cada nave tiene especificaciones distintas....
void Jugador::elaboracion_tablero_jugador() {
 
 
		tablero_naves_jugador.crear_tablero(inicializar_tablero_jugador);
		tablero_naves_jugador.mostrar_tablero(inicializar_tablero_jugador);
 
		//Se informa las especificaciones que cada nave tiene
		std::cout <<"--------------------------------------------------\n";
		std::cout <<"INFORMACION DE LAS NAVES\n";
		std::cout <<"[P] Corresponde Porta Aviones ocupando 5 Casillas\n";
		std::cout <<"[B] Corresponde Buque ocupando 4 Casillas\n";
		std::cout <<"[S] Corresponde Submarino ocupando 3 Casillas\n";
		std::cout <<"[L] Corresponde Lancha ocupando 1 Casilla\n";
		std::cout <<"---------------------------------------------------\n";
		std::cout <<"\n";
 
 
		//Se comienza a solicitar el ingreso de las naves..
		//Para luego ingresarlar al tablero...
		std::cout << "Ingreso de 1 Porta Aviones\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,5,'P');
 
		std::cout << "Ingreso de un Primer Buque\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,4,'B');
 
		std::cout << "Ingreso de un Segundo Buque\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,4,'B');
 
		std::cout << "Ingreso de un Primer Submarino\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,3,'S');
 
		std::cout << "Ingreso de un Segundo Submarino\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,3,'S');
 
		std::cout << "Ingreso de una Primera Lancha\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,1,'L');
 
		std::cout << "Ingreso de una Segunda Lancha\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,1,'L');
 
		std::cout << "Ingreso de una Tercera Lancha\n";
		std::cout <<"---------------------------\n";
		ingreso_nave_tablero_jugador(inicializar_tablero_jugador,1,'L');
 
 
 
 
	}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda Codigo Batalla Naval C++ con clases

Publicado por julio (1 intervención) el 03/08/2022 23:52:34
buenas podrias pasarme si es posible el codigo completo del batalla naval?? gracias
es para un tp de la facu
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar