Ayudemne solo a entender un código por favor

Iniciado por piyor6, 1 Junio 2018, 16:53 PM

0 Miembros y 1 Visitante están viendo este tema.

piyor6

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

MAFUS

¿Qué? Los signos de puntuación, ordenar ideas y diferenciar párrafos ayuda a que otros entiendan tu mensaje.

piyor6

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(){

system("color 0A");
iniciar();




    return 0;
}
void imprimir (){
    printf("\t\t\tBATALLA");
    printf("\n\n");

  for(i=1;i<=5;i++){ // Imprime tablero del oponente
        printf("\n\t\t");
        for(j=1;j<=9;j++){
            if(oponente[i][j]==3){
                printf(" #");
            }else{
                if(oponente[i][j]==2){// Imprime 'X' si vale 2

                    printf("  X");
                }else{
                    printf(" -");
                }
            }
        }


    }

        printf("\n\t\t____________________\n");
        gotoxy(38,4);  printf("OPONENTE ");
        printf("\n\n\n\n\n");
   for(i=1;i<=5;i++){ // Imprime el tablero del jugador

        printf("\n\t\t");
        for(j=1;j<=9;j++){
            if(jugador[i][j]==3){
                printf("  #");
            }
            else{
                if(jugador[i][j]==2){ // Imprime 'X' si vale 2 || 'O' si vale 1

                    printf("  X");
                }
                else{
                    if(jugador[i][j]==1){
                        printf("%d",jugador[i][j]);
                        printf(" O");
                    }
                    else{
                        printf(" -");
                    }
                }
            }
        }

    }

    printf("\n\n");
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++){

        i=1+rand()%5;
        j=1+rand()%9;

        while(oponente[i][j]==1){

            i=1+rand()%5; j=1+rand()%9;

        }
            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);
               system("cls");

                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){
                    printf("\n ya existe ");

                    k=k-1;

               }
               jugador[opcion1][opcion2]=1;
               system("cls");

            }


}

}

void borrar(int x,int y){
    gotoxy(x,y); printf("  ");
}





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;

        }
    }

    srand(time(NULL));

    for(k=1;k<=5;k++){ // Distribuye los barcos
        imprimir();

        cuadro();

        i=1+rand()%5; // Distribuye los barcos oponentes
        j=1+rand()%9;
        while(oponente[i][j]==1){
            i=1+rand()%5; j=1+rand()%9;
        }
                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("%d",jugador[i][j]);
            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);

        }



printf("%d",jugador[i][j]);

        if(jugador[opcion1][opcion2]==1){
            gotoxy(2,18);  printf("Ese valor ya existe...\n");
            system("pause");
            k=k-1;
        }
        jugador[opcion1][opcion2]=1;

        system("cls");


    }
        imprimir();

        cuadro();

        printf("\n\n\n");
}


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


MAFUS


DarK_FirefoX

Inicialmente rellenan los tableros con 0.

Luego, en el método iniciar() en la línea 201 se hace esto:

Citaroponente[i][j]=1; // La posicion de los barcos valdra 1

en la 160 también:

Citarjugador[opcion1][opcion2]=1;

en la 236 también:

Citarjugador[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