Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ayuda Con Un Programa Simple En C

Iniciado por farelo, 11 de Febrero de 2005, 06:21:47 PM

« anterior - próximo »

farelo

 Hola, estoy intentando hacer un bingo en c, todo va como quiero salvo que no me cambia de color a los números que previamente me han salido si alguien me pudiese ayudar se lo agradecería mucho, aquí está el código:



#include
#include
#include
#include
#include

int Comenzar_juego(int carton1 [3][9],int carton2 [3][9],int carton3 [3][9],int carton4 [3][9],char jugadores [4][30], int bomboo[90]);
void registrar_jugador(char jugads[4][30], int cont);
void cartones(int carton[3][9],int a,int b,int c,int d,int e, int f, int g, int h, int i,int j,int k, int l,int m, int n, int o, int p, int q, int r, int s,int t, int u, int v,int w, int x); //ceros
void ver_carton(int cartom[3][9],int boombo[90],int aciertos_linea[][3], int jugador);
void mostrar_jug(char jug[3][30], int pos);
int bombo(int bombo[90]);
void vaciar_aciertos(int aciertos_linea[][3]);
void comprobar_aciertos(int carton[3][9],int sacados[90],int aciertos_linea[][3], int jugador);
void marco(int x1, int y1, int x2, int y2);
void creditos();
void vaciar_bombo(int bomboo[90]);
void menu();

/********************/
/*Programa pirncipal*/
/********************/
void main()
{

int num_jugadores;
int carton1 [3][9];
int carton2 [3][9];
int carton3 [3][9];
int carton4 [3][9];
char jugadores [4][30];
// bolas sacadas
int bomboo[90];
int linea[4][3];
int sw_cantados[4][3];
int numero;
int sw=0;
int bola=0;
int i;
int contador=0;
char tecla;

num_jugadores=Comenzar_juego(carton1,carton2,carton3,carton4,jugadores,bomboo);
vaciar_bombo(bomboo);
vaciar_aciertos(linea);
vaciar_aciertos(sw_cantados);
do
{
clrscr();
vaciar_bombo(bomboo);
vaciar_aciertos(linea);
mostrar_jug(jugadores,0);
ver_carton(carton1,bomboo,linea,0);
mostrar_jug(jugadores,1);
ver_carton(carton2,bomboo,linea,1);

switch (num_jugadores)
{
case 3:mostrar_jug(jugadores,2);ver_carton(carton3,bomboo,linea,2);break;
case 4:mostrar_jug(jugadores,2);ver_carton(carton3,bomboo,linea,2);
mostrar_jug(jugadores,3);ver_carton(carton4,bomboo,linea,3);break;
}
tecla=getch(); //captura una tecla
switch(tecla)//evaluamos la tecla
{
case 67: //F9: sacar bola


bola=bombo(bomboo);
gotoxy(72,1);
cprintf(" %d ",bola);
getch();
sw=1;

break;
case 0x44://F10: nueva partida
clrscr();
contador=0;
num_jugadores=Comenzar_juego(carton1,carton2,carton3,carton4,jugadores,bomboo);
break;
}


gotoxy(1,2); ver_carton(carton1,bomboo,linea,0);
vaciar_aciertos(linea);
comprobar_aciertos(carton1,bomboo,linea,0);
if((linea[0][0]==5)&&(sw_cantados[0][0]==0))
{
textcolor(BLUE);
gotoxy(41,11); cprintf("El jugador 1 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[0][0]=1;
}
if((linea[0][1]==5)&&(sw_cantados[0][1]==0))
{
textcolor(BLUE);
gotoxy(41,11); cprintf("El jugador 1 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[0][1]=1;
}
if((linea[0][2]==5)&&(sw_cantados[0][2]==0))
{
textcolor(BLUE);
gotoxy(41,11); cprintf("El jugador 1 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[0][2]=1;
}
if((linea[0][0]==5)&&(linea[0][1]==5)&&(linea[0][2]==5))
{
textcolor(BLUE);
gotoxy(41,11); cprintf("El jugador 1 canta BINGO!!,GANA 300 EUROS");
delay(150);
tecla=27;
}

gotoxy(1,5); puts(jugadores[1]);
gotoxy(1,6); ver_carton(carton2,bomboo,linea,1);
comprobar_aciertos(carton2,bomboo,linea,1);
if((linea[1][0]==5)&&(sw_cantados[1][0]==0))
{
textcolor(BLUE);
gotoxy(41,12); cprintf("El jugador 2 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[1][0]=1;
}
if((linea[1][1]==5)&&(sw_cantados[1][1]==0))
{
textcolor(BLUE);
gotoxy(41,12); cprintf("El jugador 2 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[1][1]=1;
}
if((linea[1][2]==5)&&(sw_cantados[1][2]==0))
{
textcolor(BLUE);
gotoxy(41,12); cprintf("El jugador 2 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[1][2]=1;
}
if((linea[1][0]==5)&&(linea[1][1]==5)&&(linea[1][2]==5))
{
textcolor(BLUE);
gotoxy(41,12); cprintf("El jugador 2 canta BINGO!!,GANA 300 EUROS");
delay(150);
tecla=27;
}
if((numero>2)&&(numero<5))
{
gotoxy(1,9); puts(jugadores[2]);
gotoxy(1,10); ver_carton(carton3,bomboo,linea,2);
comprobar_aciertos(carton3,bomboo,linea,2);
if((linea[2][0]==5)&&(sw_cantados[2][0]==0))
{
textcolor(BLUE);
gotoxy(41,13); cprintf("El jugador 3 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[2][0]=1;
}
if((linea[2][1]==5)&&(sw_cantados[2][1]==0))
{
textcolor(BLUE);
gotoxy(41,13); cprintf("El jugador 3 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[2][1]=1;
}
if((linea[2][2]==5)&&(sw_cantados[2][2]==0))
{
textcolor(BLUE);
gotoxy(41,13); cprintf("El jugador 3 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[2][2]=1;
}
if((linea[2][0]==5)&&(linea[2][1]==5)&&(linea[2][2]==5))
{
textcolor(BLUE);
gotoxy(41,13); cprintf("El jugador 3 canta BINGO!!,GANA 300 EUROS");
delay(150);
tecla=27;
}
}
if(numero==4)
{
gotoxy(1,13);puts(jugadores[3]);
gotoxy(1,14);ver_carton(carton4,bomboo,linea,3);
comprobar_aciertos(carton4,bomboo,linea,3);
if((linea[3][0]==5)&&(sw_cantados[3][0]==0))
{
textcolor(BLUE);
gotoxy(41,14); cprintf("%s canta l¡nea!!,GANA 30 EUROS",jugadores[1][3]);
sw_cantados[3][0]=1;
}
if((linea[3][1]==5)&&(sw_cantados[3][1]==0))
{
textcolor(BLUE);
gotoxy(41,14); cprintf("El jugador 4 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[3][1]=1;
}
if((linea[3][2]==5)&&(sw_cantados[3][2]==0))
{
textcolor(BLUE);
gotoxy(41,14); cprintf("El jugador 4 canta l¡nea!!,GANA 30 EUROS");
sw_cantados[3][2]=1;
}
if((linea[3][0]==5)&&(linea[3][1]==5)&&(linea[3][2]==5))
{
textcolor(BLUE);
gotoxy(41,14); cprintf("El jugador 4 canta BINGO!!,GANA 300 EUROS");
delay(150);
tecla=27;
}
}

}while(tecla!=27);//escape

}


/***************************************************************************/
/* Fin del programa pincipal */
/* */
/* Funciones y Procedimientos */
/* */
/* */
/***************************************************************************/


/***************************************************/
/*Carga los cartones y los nombres de los jugadores*/
/***************************************************/
int Comenzar_juego(int carton1 [3][9],int carton2 [3][9],int carton3 [3][9],int carton4 [3][9],char jugadores [4][30], int bomboo[90])
{
int n_jugadores;
_setcursortype(_NORMALCURSOR);//muestra el cursor
do
{
//creditos();
clrscr();
vaciar_bombo(bomboo);
gotoxy(23,9);
textcolor(WHITE);
cprintf("¨Cu ntos jugadores van a jugar? ");
scanf("%d",&n_jugadores);
}while((n_jugadores<2)||(n_jugadores>4));
fflush(stdin);
clrscr();
cartones(carton1,0,0,0,5,0,7,0,8,1,1,1,3,1,6,1,7,2,0,2,4,2,5,2,7);
menu();
gotoxy(1,1);
registrar_jugador(jugadores, 0);
cartones(carton2,0,2,0,4,0,5,0,7,1,1,1,2,1,4,1,6,2,0,2,3,2,5,2,8);
registrar_jugador(jugadores, 1);

switch (n_jugadores)
{
case 3:
cartones(carton3,0,0,0,1,0,3,0,5,1,2,1,4,1,6,1,7,2,1,2,3,2,5,2,8);
registrar_jugador(jugadores, 2);
break;

case 4:
cartones(carton3,0,0,0,1,0,3,0,5,1,2,1,4,1,6,1,7,2,1,2,3,2,5,2,8);
registrar_jugador(jugadores, 2);
cartones(carton4,0,0,0,3,0,5,0,6,1,2,1,4,1,5,1,8,2,0,2,3,2,4,2,6);
registrar_jugador(jugadores, 3);
break;
}
_setcursortype(_NOCURSOR);//oculta el cursor
return n_jugadores;

}


/********************/
/*Vac¡a los aciertos*/
/********************/

void vaciar_aciertos(int aciertos_linea[][3])
{
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
aciertos_linea[j]=0;
}
}



/*****************/
/*Limpia el bombo*/
/*****************/
void vaciar_bombo(int bomboo[90])
{
int i;
for (i=0;i<90;i++)
{ bomboo=0; }
}


/**********************/
/*Carga todo el cart¢n*/
/**********************/
void cartones(int carton[3][9],int a,int b,int c,int d,int e, int f, int g, int h, int i,int j,int k, int l,int m, int n, int o, int p, int q, int r, int s,int t, int u, int v,int w, int x)
{
int ia;
int ja;
int ka;
int rango;
int suma;
int posicion;
int numero_aparecido;
int aparecidos[3][4];
int sw;

//Pone todo el cart¢n con -1
for (ia=0;ia<3;ia++)
{

for(ja=0;ja<9;ja++)
{
carton[ia][ja]=-1;
}
}

//cargar espacios de 0
carton[a]=0;
carton[c][d]=0;
carton[e][f]=0;
carton[g][h]=0;
carton[j]=0;
carton[k][l]=0;
carton[m][n]=0;
carton
  • [p]=0;
    carton[q][r]=0;
    carton[t]=0;
    carton[v]=0;
    carton[w]
    • =0;

      //Pone el n£mero aleatorio a los espacios donde haya 0ïs
      randomize();
      for (ia=0;ia<3;ia++)
      {
      for(ja=0;ja<9;ja++)
      {
      if(carton[ia][ja]!=0)
      {
      switch(ja)
      {
      case 0: rango=9;suma=1;break;
      case 1: rango=10;suma=10;break;
      case 2: rango=10;suma=20;break;
      case 3: rango=10;suma=30;break;
      case 4: rango=10;suma=40;break;
      case 5: rango=10;suma=50;break;
      case 6: rango=10;suma=60;break;
      case 7: rango=10;suma=70;break;
      case 8: rango=11;suma=80;break;
      }
      switch (ia)
      {
      case 0:carton[ia][ja]=random(rango)+suma;
      break;
      case 1: do{
      carton[ia][ja]=random(rango)+suma;
      }while(carton[ia][ja]==carton[ia-1][ja]);
      break;
      case 2:do{
      carton[ia][ja]=random(rango)+suma;
      }while((carton[ia][ja]==carton[ia-1][ja])||(carton[ia][ja]==carton[ia-2][ja]));
      break;
      }
      }
      }//for cols
      } //for fils
      }



      /************************/
      /*Comprueba los aciertos*/
      /************************/

      void comprobar_aciertos(int carton[3][9],int sacados[90],int aciertos_linea[][3], int jugador)
      {
      int i,j,s;
      for(i=0;i<3;i++)
      {
      for(j=0;j<9;j++)
      {
      if(carton[j]!=0)
      {
      for(s=0;s<90;s++)
      {
      if(carton[j]==sacados)
      {
      aciertos_linea[jugador]=aciertos_linea[jugador]+1;
      }
      }
      }//if
      }//for j
      } //for i

      }


      /**************************************/
      /*Registrar el nombre de los jugadores*/
      /**************************************/
      void registrar_jugador(char jugads [][30], int cont)
      {
      textcolor(WHITE);
      cprintf("¨Como te llamas jugador %d? ",cont+1);
      gets(jugads[cont]);

      }


      /*******************************/
      /*Mostrar el nombre del jugador*/
      /*******************************/
      void mostrar_jug(char jug[4][30], int pos)
      {
      textcolor(WHITE);
      cprintf(" %s",jug[pos]);
      printf("\n");
      }


      /**********************************/
      /*Funci¢n que muestra los cartones*/
      /**********************************/
      void ver_carton(int carton[3][9],int boombo[90],int aciertos_linea[][3], int jugador)

      {
      int i;
      int j;
      int s;
      int sw;
      for(i=0;i<3;i++)
      {
      for(j=0;j<9;j++)
      {
      if(carton[j]!=0)
      {
      sw=0;
      for(s=0;s<90;s++)
      {
      if(carton[j]==boombo)
      {
      sw=1;
      }
      }
      if (carton[j]<=9)
      {
      if(sw==1)
      textcolor(GREEN);
      else
      textcolor(RED);
      cprintf(" %d", carton[j]);
      }
      else
      {
      if(sw==1)
      textcolor(GREEN);
      else
      textcolor(RED);
      cprintf(" %d", carton[j]);

      }
      }//if
      else
      printf(" ");
      }//for j
      printf("\n");
      } //for i
      printf("\n\n");
      }


      /***************************/
      /*Carga el random del bombo*/
      /***************************/

      int bombo(int bolas[90])
      {
      int bola;
      int i;
      int sw=0;
      {
      randomize();
      do
      {
      sw=0;
      //antes de generar la bola, el generador de bolas dar  50 vueltas,
      //visualizando n£meros repetidamente
      for(i=0;i<50;i++)
      {
      bola=random(89)+1;
      delay(50);
      gotoxy(72,1);
      cprintf(" %d ",bola);
      }
      //al salir del bucle anterior, "bola" tendr  un valor
      //hemos de comprobar si ese valor ya ha salido, o no (no pueden sacarse bolas con el mismo valor)
      i=0;
      //este bucle recorre el array de bolas extraidas para ver si la bola que acabamos
      //de sacar est  repetida, si lo est  => sw=1, si no =>sw=0
      do
      {
      if(bolas==bola)
      {
      sw=1;
      }
      i++;
      }while((i<90)&&(sw!=1));
      //si la bola no est  repetida (sw=0) la cargamos en la 1¦ posici¢n
      //del array de bolas extraidas que est, libre(tenga un 0)
      //si sw=1, volveremos a generar bola desde el ppio
      if(sw==0)
      {
      sw=0;
      i=0;
      do
      {
      if(bolas==0)
      {
      bolas=bola;
      sw=1;
      }
      i++;
      }while((i<90)&&(sw==0));
      sw=0;//hacemos ,sto para que una vez que hemos cargado la bola
      //romper el do..while de abajo
      }//if
      }while(sw==1);
      return(bola);
      }
      }


      /**********/
      /*Cr,ditos*/
      /**********/
      void creditos()
      {
      printf("Presnt...\n\n Press any key");
      getch();
      }


      /*****************/
      /*Dibuja um marco*/
      /*****************/
      void marco(int x1, int y1, int x2, int y2)
      {
      int i;
      gotoxy(y1,x1);
      printf("É");

      for(i=y1+1;i<=y2-1;i++)
      {
      gotoxy(i,x1);
      printf("Í");
      }

      gotoxy(y2,x1);

      printf("»");
      for(i=x1+1;i<=x2-1;i++)
      {
      gotoxy(y2,i);
      printf("º");
      }

      gotoxy(y2,x2);

      printf("¼");

      for(i=y2-1;i>=y1+1;i--)
      {
      gotoxy(i,x2);
      printf("Í");
      }

      gotoxy(y1,x2);

      printf("È");

      for(i=x2-1;i>=x1+1;i--)
      {
      gotoxy(y1,i);
      printf("º");
      }
      }


      /**************/
      /*Men£ Gr fico*/
      /**************/
      void menu()
      {
      int i;
      for (i=0;i<26;i++)
      { gotoxy(48,i);
      textcolor(WHITE);
      cprintf("³");
      }

      }


      Hay cosas que no se utilizan como el marco y esas cosas gráficas. Muchas gracias







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.