Buenas amigos tengo una duda desde ayer pero yo se que alguien con experiencia me la sabría responder lo que pasa esque me tocó hacer de proyecto final un juego de batalla naval y encontré un código en Internet del cual me estoy ayudando pero no entiendo una parte dice que si el valor de jugador es 1 entonces hay barcos si es dos barcos destruidos la única duda mia es ¿en qué parte del código se acomoda los valores a 1 o 2 es decir en que línea de código se define que jugador es 1 para poner así la x
Este es el Link del código https://pastebin.com/QAM2h8PS
¿Qué? Los signos de puntuación, ordenar ideas y diferenciar párrafos ayuda a que otros entiendan tu mensaje.
perdon pero lo escribi de un celular a la carrera pero la duda es.
si copilas ese codigo te as cuenta que cada vez que ingresas las cordenas se crea una O en la poscicion y esto pasa porque el jugador se iguala a 1 como dice en la funcion en la funcion imprimir pero la duda es en que linea de codigo se divide para saber si es 1 o no es 1 copila el codigo para que me entiendas porfa
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
#include <time.h>
#define CORAZONES 3
void gotoxy(int x,int y){
HANDLE hcon=GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwpos;
dwpos.X=x;
dwpos.Y=y;
SetConsoleCursorPosition(hcon, dwpos);
}
void cuadro(){
int i;
//Horizontales
for(i = 1; i < 50; i++){
gotoxy
(i
, 1); printf("%c", 205); //Horizontales Superiores gotoxy
(i
, 20); printf("%c", 205);//Horizontales Inferiores }
//Verticales
for(i = 2; i < 20; i++){
gotoxy
(1, i
); printf("%c", 186); //Verticales Izquierda gotoxy
(50, i
); printf("%c", 186);//Verticales Derecha }
//Esquinas
gotoxy
(1, 1); printf("%c", 201); gotoxy
(1, 20); printf("%c", 200); gotoxy
(50, 1); printf("%c", 187); gotoxy
(50, 20); printf("%c", 188);}
void imprimir();
void llenar();
void borrar(int,int );
void iniciar();
int i, j, k, jugador[100][100], oponente[100][100], opcion1, opcion2, puntajejugador=0, puntajeoponente=0;
int main(){
iniciar();
return 0;
}
void imprimir (){
for(i=1;i<=5;i++){ // Imprime tablero del oponente
for(j=1;j<=9;j++){
if(oponente[i][j]==3){
}else{
if(oponente[i][j]==2){// Imprime 'X' si vale 2
}else{
}
}
}
}
printf("\n\t\t____________________\n"); gotoxy
(38,4); printf("OPONENTE "); for(i=1;i<=5;i++){ // Imprime el tablero del jugador
for(j=1;j<=9;j++){
if(jugador[i][j]==3){
}
else{
if(jugador[i][j]==2){ // Imprime 'X' si vale 2 || 'O' si vale 1
}
else{
if(jugador[i][j]==1){
}
else{
}
}
}
}
}
gotoxy
(38,11); printf("JUGADOR ");
}
void llenar(){
for(i=1;i<=5;i++){
for(j=1;j<=9;j++){
jugador[i][j]=0;
oponente[i][j]=0;
}
}
for(k=1;k<=5;k++){
while(oponente[i][j]==1){
}
oponente[i][j]=1; //la posicion de los barcos valdra 1
gotoxy
(2,17); printf("dame las cordenadas de tus 5 barcos x%d= y%d= \n\n\n",k
,k
); gotoxy
(41,17); scanf("%d",&opcion2
);
cuadro();
while(opcion2<1 || opcion2>9){
gotoxy
(2,18); printf(" ingresa un valor valido (1 a 9) "); borrar(41,17);
gotoxy
(41,17); scanf("%d",&opcion2
);
cuadro();
}
gotoxy
(47,17); scanf("%d",&opcion1
);
cuadro();
while(opcion1<1 || opcion1>5){
gotoxy
(2,18); printf(" ingresa un valor valido (1 a 5) "); borrar(47,17);
gotoxy
(47,17); scanf("%d",&opcion1
);
gotoxy
(2,17); printf("dame las cordenadas de tus 5 barcos x%d= y%d= \n\n\n",k
,k
); cuadro();
if(jugador[opcion1][opcion2]==1){
k=k-1;
}
jugador[opcion1][opcion2]=1;
}
}
}
void borrar(int x,int y){
}
void iniciar(){// Rellena con '0' el arreglo y coloca los barcos
for(i=1;i<=5;i++){ // Llena todo con '0'
for(j=1;j<=9;j++){
jugador[i][j]=0;
oponente[i][j]=0;
}
}
for(k=1;k<=5;k++){ // Distribuye los barcos
imprimir();
cuadro();
i
=1+rand()%5; // Distribuye los barcos oponentes while(oponente[i][j]==1){
}
oponente[i][j]=1; // La posicion de los barcos valdra 1
gotoxy
(2,17); printf("dame las cordenadas de tus 5 barcos x%d= y%d= \n\n\n",k
,k
); gotoxy
(41,17); scanf("%d",&opcion2
); gotoxy
(47,17); scanf("%d",&opcion1
);
while(opcion2<1 || opcion2>9){
printf(" Escoje un valor valido ( 1 a 9 )\n\tX%d", k
); borrar(41,17);
cuadro();
gotoxy
(41,17); scanf("%d", &opcion2
); }
gotoxy
(2,17); printf("dame las cordenadas de tus 5 barcos x%d= y%d= \n\n\n",k
,k
);
while(opcion1<1 || opcion1>5){
printf("\n Escoje un valor valido ( 1 a 5 )\n\tY%d", k
); borrar(47,17);
gotoxy
(47,17); scanf("%d", &opcion1
);
}
if(jugador[opcion1][opcion2]==1){
gotoxy
(2,18); printf("Ese valor ya existe...\n"); k=k-1;
}
jugador[opcion1][opcion2]=1;
}
imprimir();
cuadro();
}
esto es lo que llevo copila esto, yo le puse un printf cuando vaya a imprimir la O para que vea que se comvierte en 1 lo unico que necesito saber es que me expliquen en que linea hace la trasformacion o separacion.
se que primero se iguala el oponente y el jugador a 0 pero no se en que parte se comvierte en 1 para poner la O
Inicialmente rellenan los tableros con 0.
Luego, en el método
iniciar() en la línea
201 se hace esto:
oponente[i][j]=1; // La posicion de los barcos valdra 1
en la
160 también:
jugador[opcion1][opcion2]=1;
en la
236 también:
jugador[opcion1][opcion2]=1;
Y... viendo el
pastebin que referencias hay más código del que muestra, en ese código en el método
main() en la línea
226 está:
oponente[opcion1][opcion2]=2;
y en la
283:
jugador[opcion1][opcion2]=2;
Revisa bien el código de
pastebin que pusiste para que entiendas mejor. Este método
main() es el que se encarga del flujo del juego. Por lo tanto es el encargado de cambiar los valores del tablero cuando se ejecute una acción.
Salu2s