Juego de la Oca

Iniciado por cristiansbd95, 13 Abril 2016, 16:41 PM

0 Miembros y 2 Visitantes están viendo este tema.

cristiansbd95

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!

MAFUS

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.

ivancea96

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 (csharp) [Seleccionar]
int dado = 4;
jugador[n] += 4;
...
if(casilla[ jugador[n] ] == Casillas.Muerte)
   jugador[n] = 0;


Así algo que te pueda dar ideas xD

Ya luego, disfruta haciéndolo tú :p

cristiansbd95

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

ivancea96

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.

cristiansbd95

#5
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.


#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;

        }
    }
}