Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: cristiansbd95 en 13 Abril 2016, 16:41 pm



Título: Juego de la Oca
Publicado por: cristiansbd95 en 13 Abril 2016, 16:41 pm
Hola compañeros, voy hacer el juego de la oca en C# como proyecto final y me gustaría saber si alguno de vosotros lo ha hecho y como lo ha hecho si con un vector o una matriz,etc...
El proyecto se ejecuta en una terminal de Windows no tiene gráficos.

Gracias!


Título: Re: Juego de la Oca
Publicado por: MAFUS en 13 Abril 2016, 17:18 pm
Esto va al foro de .NET pero ya te digo: un juego de la oca es un array de 63 casillas. Que sobre un tablero lo veas en espiral es para ahorrar espacio. En verdad es un juego muy sencillo de realizar.


Título: Re: Juego de la Oca
Publicado por: ivancea96 en 13 Abril 2016, 17:20 pm
No lo hice, pero sin duda, yo haría un vector. Al fin y al cabo, es en realidad una línea larga de casillas en espiral.

En fin, N fichas, un turno cada una, y según la casilla en la que caiga, un efecto u otro.

Código
  1. int dado = 4;
  2. jugador[n] += 4;
  3. ...
  4. if(casilla[ jugador[n] ] == Casillas.Muerte)
  5.    jugador[n] = 0;

Así algo que te pueda dar ideas xD

Ya luego, disfruta haciéndolo tú :p


Título: Re: Juego de la Oca
Publicado por: cristiansbd95 en 26 Abril 2016, 14:26 pm
Hola, estoy haciendo el juego y nose como hacer por ejemplo cuando el jugador caiga en la casilla de la prision contar los turnos y hacer que tire el dado el otro jugador, si me pudierais dar ideas seria la ostia.

Gracias


Título: Re: Juego de la Oca
Publicado por: ivancea96 en 26 Abril 2016, 17:59 pm
Puedes guardar en cada jugador un número de turnos sin jugar. Si es 0, juegas. Sino, le restas 1 y vas a otro jugador.


Título: Re: Juego de la Oca
Publicado por: cristiansbd95 en 6 Mayo 2016, 17:25 pm
Hola compañeros, llevo ya un tiempo pensando en como hacerlo pero la verdad es que mi cabeza me va a estallar, el problema es que no se como puedo hacer para manejar los turnos cuando jugador 1 por ejemplo cae en "x" casilla y tiene que tirar dos veces el jugador 2. Os pego el codigo, gracias de antemano.
Código:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 63

void mostrarayuda();
void tirardado(int *jugador1,int *jugador2,int *turno);
void jugar(int *ganador);
void oca_jugador1(int *jugador1,int *tablero,int *turno,int *flag);
void oca_jugador2(int *jugador2,int *tablero,int *turno,int *flag);
void puente(int *jugador1,int *jugador2,int *tablero,int *turno);
void muerte(int *jugador1,int *jugador2,int *tablero,int *turno);
//void posada(int *tablero,int *flag);
void dados(int *jugador1,int *jugador2,int *tablero,int *turno);
void laberinto(int *jugador1,int *jugador2,int *tablero,int *turno);

///Turno == 0 ---Jugador 1
///Turno == 1 ---Jugador 2

void main(){



printf(" :::            :::           ::::::::   ::::::::      :::  \n");
printf(":+:          :+: :+:        :+:    :+: :+:    :+:   :+: :+:\n");
printf("+:+         +:+   +:+       +:+    +:+ +:+         +:+   +:+\n");
printf("+#+        +#++:++#++:      +#+    +:+ +#+        +#++:++#++:\n");
printf("+#+        +#+     +#+      +#+    +#+ +#+        +#+     +#+ \n");
printf("#+#        #+#     #+#      #+#    #+# #+#    #+# #+#     #+# \n");
printf("########## ###     ###       ########   ########  ###     ###\n\n\n");
int opcion;
int ganador=0;




    do {
        system("color 0""A");

        printf("1.- Mostrar ajuda\n");
        printf("2.- Jugar\n");
        printf("0.- Salir\n");

        printf("\nTria una opcion: ");
        fflush(stdin);
        scanf("%d", &opcion);



        switch (opcio) {
            case 1:mostrarayuda();
                break;
            case 2:jugar(&ganador);
                fflush(stdin);
                break;
            case 0:
            default :;
        }
    } while (opcion != 0);


}
void mostrarayuda()
{
    printf("El juego de la oca es un juego de mesa para dos o más jugadores. Cada jugador avanza su ficha por un tablero\n");
    printf("en forma de espiral con 63 casillas con dibujos. Dependiendo de la casilla en la que se caiga, se puede avanzar o \n");
    printf("por el contrario retroceder, y en algunas de ellas está indicado un castigo. En su turno cada jugador tira un dado \n");
    printf("que le indican el número de casillas que debe avanzar. Gana el \n");
    printf("juego el primer jugador que llega a la casilla 63, el jardin de la oca.\n");
    system("pause");
    system("cls");

}
void tirardado(int *jugador1,int *jugador2,int *turno)
{
    int dado;
    srand(time(NULL));
    dado=rand()%6+1;

    if(*turno==0)
    {
         system("color 0""E");
         printf("Turno jugador 1\n");
         system("pause");
         printf("\nResultado de dado: %d\n",dado);
        *jugador1=*jugador1+dado;
        //*jugador1=5;
        printf("posicion vector 1-[%d]",*jugador1);

    }
   else if(*turno==1)
   {
       system("color 0""B");
        printf("Turno jugador 2\n");
        system("pause");
        printf("\nResultado de dado: %d\n",dado);
       *jugador2=*jugador2+dado;
        //*jugador2=63;
       printf("posicion vector 2-[%d]",*jugador2);


   }
}

void jugar(int *ganador)
{
 int i;
 int flag=0;
 int flag2=0;
 int tablero[N];
 int jugador1=0,jugador2=0,turno=0;




while(*ganador !=1 && *ganador !=2)
{
    tirardado(&jugador1,&jugador2,&turno);
    int i;

     for(i=0;i<N;i++)
    {
        tablero[i]=0;
    }

    printf("\n");



        tablero[jugador1]=1;
        tablero[jugador2]=2;


    for(i=0;i<N;i++)
    {
        printf("[%d]",tablero[i]);
    }
    printf("\n");

    system("pause");
    system("cls");

    if(jugador1>=63)
    {
        *ganador=1;
        printf("Jugador 1 Ha ganado!!!Enhorabuena!!!\n");
    }
    else if(jugador2>=63)
    {
        *ganador=2;
        printf("Jugador 2 Ha ganado!!!Enhorabuena!!!\n");

    }

    flag=0;
    flag2=0;


    if(turno==0)
    {

        oca_jugador1(&jugador1,tablero,&turno,&flag);
        puente(&jugador1,&jugador2,tablero,&turno);
        printf("turno %d\n",turno);
        //posada(tablero,&flag2);
        dados(&jugador1,&jugador2,tablero,&turno);
        printf("turno %d\n",turno);
        laberinto(&jugador1,&jugador2,tablero,&turno);
        printf("turno %d\n",turno);
        muerte(&jugador1,&jugador2,tablero,&turno);
        printf("turno %d\n",turno);
        printf("valor de flag: %d\n",flag);
        if(flag==1)
        {
            turno=0;
        }
        else
        {
            turno=1;
        }
    }
    else if(turno==1)
    {

        oca_jugador2(&jugador2,tablero,&turno,&flag);
        puente(&jugador1,&jugador2,tablero,&turno);
        //posada(tablero,&flag2);
        dados(&jugador1,&jugador2,tablero,&turno);
        laberinto(&jugador1,&jugador2,tablero,&turno);
        muerte(&jugador1,&jugador2,tablero,&turno);
        if (flag==1)
        {
            turno=1;
        }
        else
        {
            turno=0;
        }

    }

   /*  if(flag2==1)///flag2 == 1 jugador 1 ha caido en la posada
        {
            //printf("%d",turno);
            printf("Entra flag2 jug1\n");
            for(i=0;i<1;i++)
            {
                turno=0;
                tirardado(&jugador1,&jugador2,&turno);
                tablero[jugador2]=2;

            }
            turno=0;
            //printf("flag %d turno pasa %d",flag,turno);
        }
    if(flag2==2)
    {
            printf("Entra flag2 jug2\n");
            for(i=0;i<1;i++)
            {
                turno=0;
                tirardado(&jugador1,&jugador2,&turno);
                tablero[jugador1]=1;

            }
            flag2=0;
            turno=0;
             //printf("flag %d turno pasa %d",flag,turno);
    }

*/
}


}

 void oca_jugador1(int *jugador1,int *tablero,int *turno,int *flag)
{

    if(tablero[5]==1 || tablero[14]==1 || tablero[23]==1 || tablero[32]==1 || tablero[41]==1 || tablero[50]==1)
    {
        printf("******Jugador 1 -- De oca a oca y tiro por que me toca\n******");
        *jugador1=*jugador1+4;
        *flag=1;
    }
    else if(tablero[9]==1 || tablero[18]==1 || tablero[27]==1 || tablero[36]==1|| tablero[45]==1 || tablero[54]==1)
    {
        printf("*****Jugador 1 -- De oca a oca y tiro por que me toca********\n");
        *jugador1=*jugador1+5;
        *flag=1;


    }
}
void oca_jugador2(int *jugador2,int *tablero,int *turno,int *flag)
{
    if(tablero[5]==2 || tablero[14]==2 || tablero[23]==2 || tablero[32]==2 || tablero[41]==2 || tablero[50]==2)
    {
        printf("******Jugador 2 -- De oca a oca y tiro por que me toca*******\n");
        *jugador2=*jugador2+4;
        *flag=1;


    }
    else if(tablero[9]==2 || tablero[18]==2 || tablero[27]==2 || tablero[36]==2|| tablero[45]==2 || tablero[54]==2)
    {
        printf("*******Jugador 2 -- De oca a oca y tiro por que me toca*******\n");
        *jugador2=*jugador2+5;
        *flag=1;
    }
}

 void muerte(int *jugador1,int *jugador2,int *tablero,int *turno)
{
    if(*turno==0)
    {
        if(tablero[58]==1)
        {
            system("color 0""4");
            printf("****Has caido en la casilla de la muerte,vuelves a la primera casilla!!!!****");
            *jugador1=0;
            tablero[*jugador1]=1;
            *turno=1;
            printf("jugador 1: %d",*jugador1);
        }
    }
    else if(*turno==1)
    {
        if(tablero[58]==2)
        {
            system("color 0""4");
            printf("****Has caido en la casilla de la muerte,vuelves a la primera casilla!!!!****");
            *jugador2=0;
            tablero[*jugador2]=1;
            *turno=0;
        }
    }

}
void dados(int *jugador1,int *jugador2,int *tablero,int *turno)
{
    if(*turno==0)
    {
        if(tablero[26]==1)
        {
            printf("****Jugador 1:De dado a dado y tiro y tiro porque me ha tocado****\n");
            *jugador1=53;
            *turno=1;
        }
        else if(tablero[53]==1)
        {
            printf("****Jugador 1:De dado a dado****\n");
            *jugador1=26;
            *turno=1;
        }

    }


    else if(*turno==1)
    {
        if(tablero[26]==2)
        {
            printf("****Jugador 2:De dado a dado****\n");
            *jugador2=53;
            *turno=0;
        }
        else if(tablero[53]==2)
        {
            printf("****Jugador 2:De dado a dado****\n");
            *jugador2=26;
            *turno=0;
        }

    }
}
void laberinto(int *jugador1,int *jugador2,int *tablero,int *turno)
{
     if(*turno==0)
    {
        if(tablero[42]==1)
        {
            printf("****Jugador 1:Has caido en el laberinto,retrocedes hasta la casilla 30****\n");
            *jugador1=30;
             *turno=1;
        }

    }

    else if(*turno==1)
    {
        if(tablero[42]==2)
        {
            printf("****Jugador 2:Has caido en el laberinto,retrocedes hasta la casilla 30****\n");
            *jugador2=30;
            *turno=0;
        }

    }
}
/*void posada(int *tablero,int *flag2)
{

    if(tablero[19]==1)
        {
            *flag2=1;

        }
    else if(tablero[19]==2)
    {
        {
            *flag2=2;

        }
    }

}
*/
void puente(int *jugador1,int *jugador2,int *tablero,int *turno)
{
    if(*turno==0)
    {
        if(tablero[6]==1)
        {
            printf("*****Jugador 1***De puente a puente me lleva la corriente******\n\n");
            *jugador1=*jugador1+6;

        }
        else if(tablero[12]==1)
        {
            printf("*****Jugador 1***De puente a puente me lleva la corriente******\n\n");
            *jugador1=*jugador1-6;

        }
    }
    else if(*turno==1)
    {
        if(tablero[6]==2)
        {
            printf("*****Jugador 2***De puente a puente me lleva la corriente******\n\n");
            *jugador2=*jugador2+6;

        }
        else if(tablero[12]==2)
        {
            printf("*****Jugador 2***De puente a puente me lleva la corriente******\n\n");
            *jugador2=*jugador2-6;

        }
    }
}