Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.c>
- #include <time.h>
- #include <string.h>
- #include <windows.h>
- #define TAM 25
- #define TAMj2 25
- #define TAMj3 25
- #define CS YELLOW
- #define CSJ2 RED
- #define CSJ3 BLUE
- typedef struct{
- int carton[TAM];
- int JugadorGanador[25];
- int BOLA[75];
- char nombre[10];
- }BINGO[4];
- void Jugador1(BINGO *,int, int);
- void Jugador2(BINGO *,int, int);
- void Jugador3(BINGO *,int, int);
- void Matrizj1(BINGO *, int );
- void Matrizj2(BINGO *, int, int, int, int);
- void Matrizj3(BINGO *, int, int, int, int );
- int Numrep(int, int[]);
- void numero_aleatorio(BINGO *,int, int, int );
- int sacarbola();
- char Iterador(int);
- int Ganador(BINGO *,int);
- int NumDifHorizontal(int);
- int NumDifDiagonal(int);
- NumDifVertical(int);
- int main()
- {
- int C_Usuarios;
- int C_Cartones = 0,C_Cartonesj2=0,C_Cartonesj3 = 0;
- BINGO *p,*p2,*p3,bola[75];
- p = (BINGO*)malloc(TAM*sizeof(BINGO));
- p2 = (BINGO*)malloc(TAMj2*sizeof(BINGO));
- p3 = (BINGO*)malloc(TAMj3*sizeof(BINGO));
- gotoxy(40,3);
- textbackground(WHITE);
- textcolor(BLACK);
- printf("Hola Bienvenidos al BINGO!!\n");
- while(C_Usuarios <= 1 || C_Usuarios > 3){
- gotoxy(40,5);
- textbackground(BLACK);
- textcolor(LIGHTRED);
- printf("%cCuantos usuarios jugaran?\n\n",168);
- scanf("%d",&C_Usuarios);
- system("CLS");
- }
- if( C_Usuarios == 2){
- while(C_Cartones < 1 || C_Cartones > 4){
- printf("Seleccione Cantidad de cartones para Jugador 1: ");
- scanf("%d",&C_Cartones);
- system("CLS");
- if(C_Cartones > 1 && C_Cartones < 4){
- p = realloc(p,(C_Cartones*sizeof(BINGO)));
- }
- }
- while(C_Cartonesj2 < 1 || C_Cartonesj2 > 4){
- printf("\n\nSeleccione Cantidad de cartones para Jugador 2: ");
- scanf("%d",&C_Cartonesj2);
- system("CLS");
- if(C_Cartonesj2 > 1 && C_Cartonesj2 < 4){
- p2 = realloc(p2,(C_Cartonesj2*sizeof(BINGO)));
- }
- }
- }
- else{
- while(C_Cartones < 1 || C_Cartones > 4){
- printf("Seleccione Cantidad de cartones para Jugador 1: ");
- scanf("%d",&C_Cartones);
- system("CLS");
- if(C_Cartones > 1 && C_Cartones < 4){
- p = realloc(p,(C_Cartones*sizeof(BINGO)));
- }
- }
- while(C_Cartonesj2 < 1 || C_Cartonesj2 > 4){
- printf("\n\nSeleccione Cantidad de cartones para Jugador 2: ");
- scanf("%d",&C_Cartonesj2);
- system("CLS");
- if(C_Cartonesj2 > 1 && C_Cartonesj2 < 4){
- p2 = realloc(p2,(C_Cartonesj2*sizeof(BINGO)));
- }
- }
- while(C_Cartonesj3 < 1 || C_Cartonesj3 > 4){
- printf("\n\nSeleccione Cantidad de cartones para Jugador 3: ");
- scanf("%d",&C_Cartonesj3);
- system("CLS");
- if(C_Cartonesj3 > 1 && C_Cartonesj3 < 4){
- p3 = realloc(p3,(C_Cartonesj3*sizeof(BINGO)));
- }
- }
- }
- if(C_Usuarios == 2){
- Jugador1(p,C_Cartones,2);
- Jugador2(p2,C_Cartonesj2,2);}
- else{
- Jugador1(p,C_Cartones,3);
- Jugador2(p2,C_Cartonesj2,3);
- Jugador3(p3,C_Cartonesj3,3);
- }
- int Win = 0;
- char tecla,letra;
- int var = 0,ind = 0,RCartones = 1,x,y,sacarbola = 0,n = 99, llama, cont = 0;
- while(Win == 0){
- tecla = getch();
- while(sacarbola == 0 && ind < 75)
- {
- n=(rand()%75)+1;
- sacarbola = Numrep2(n,bola);
- if(sacarbola == 1){
- bola[ind]->BOLA[ind] = n;
- ind = 76;
- }
- ind++;
- }
- sacarbola = 0;
- letra = Iterador(n);
- gotoxy(40,2);
- textbackground(MAGENTA);
- textcolor(WHITE);
- printf("{...[%c-%d]...}",letra,n);
- for(ind = 0;ind<TAM*C_Cartones;ind++){
- if(p[0]->carton[ind] == n ){
- p[3]->JugadorGanador[ind] = 1;
- if(p[0]->carton[ind] == 00){
- p[3]->JugadorGanador[ind] = 1;
- }
- }
- }
- for(ind = 0;ind<TAM*C_Cartonesj2;ind++){
- if(p2[1]->carton[ind] == n){
- p2[3]->JugadorGanador[ind] = 1 ;
- if(p2[1]->carton[ind] == 00){
- p2[3]->JugadorGanador[ind] = 1;
- }
- }
- }
- for(ind = 0;ind<TAM*C_Cartonesj3;ind++){
- if(p3[2]->carton[ind] == n){
- p3[3]->JugadorGanador[ind] = 1;
- if(p3[2]->carton[ind] == 00){
- p3[3]->JugadorGanador[ind] = 1;
- }
- }
- }
- if(C_Cartones == 1){
- printf("\n\n\n");
- llama = Ganador(p,0);
- if(llama == 1){
- gotoxy(10,3);
- printf("[BINGO]");
- printf("\n\n\n");
- }
- Matrizj1(p,0);
- }
- if(C_Cartones > 1){
- var = 0,ind = 0;
- printf("\n\n\n");
- while(ind < C_Cartones){
- llama = Ganador(p,var);
- if(llama == 1){
- gotoxy(10,3);
- printf("[BINGO]");
- printf("\n\n");
- var = 0; ind++;
- }
- Matrizj1(p,var);
- ind++;
- var += 25;
- }
- }
- if( C_Cartonesj2 == 1){
- llama = Ganador(p2,0);
- if(llama == 1){
- gotoxy(25,3);
- printf("[BINGO]");
- }
- x=25,y=5;
- Matrizj2(p2,0,x,y,1);
- }
- if(C_Cartonesj2 > 1){
- x = 25; y = 5; var = 0; ind = 0; RCartones = 1;
- while(ind < C_Cartonesj2){
- llama = Ganador(p2,var);
- if(llama == 1){
- gotoxy(25,3);
- printf("[BINGO]");
- x = 25; y = 5; var = 0; ind++;
- }
- if(RCartones == 4){
- x = 50; y = 5;
- }
- Matrizj2(p2,var,x,y,RCartones);
- RCartones++;
- var += 25;
- ind++;
- y += 6;
- }
- }
- if(C_Cartonesj3 == 1){
- llama = Ganador(p3,0);
- if(llama == 1){
- gotoxy(60,3);
- printf("[BINGO]");
- printf("\n\n\n");
- }
- x = 60; y = 5;
- Matrizj3(p3,0,x,y,1);
- }
- if(C_Cartonesj3 > 1){
- x = 60; y = 5; var = 0; ind = 0; RCartones = 1;
- while(ind < C_Cartonesj3){
- llama = Ganador(p3,0);
- if(llama == 1){
- gotoxy(60,3);
- printf("[BINGO]");
- printf("\n\n\n");
- var = 0; ind++;
- }
- if(RCartones == 4){
- x = 80; y = 5;
- }
- Matrizj3(p3,var,x,y,RCartones);
- RCartones++;
- var += 25;
- ind++;
- y += 6;
- }
- }
- }
- return 0;
- }
- void Jugador1(BINGO *p,int Cant, int CUsuarios){
- int J1 = 1;
- printf("\n\n\nJugador 1(BETA)\n");
- numero_aleatorio(p,J1,Cant,CUsuarios);
- textcolor(YELLOW);
- }
- void Jugador2(BINGO *p,int cant, int CUsuarios){
- int J2 = 2;
- CUsuarios--;
- gotoxy(25,4);
- textbackground(BLACK);
- printf("Jugador 2(BETA)");
- textbackground(BLUE);
- textcolor(LIGHTRED);
- numero_aleatorio(p,J2,cant,CUsuarios);
- textcolor(YELLOW);
- textbackground(BLACK);
- }
- void Jugador3(BINGO *p3,int Cant, int CUsuarios){
- int J3 = 3;
- CUsuarios -=2;
- gotoxy(60,4);
- printf("Jugador 3(BETA)");
- textcolor(WHITE);
- textbackground(LIGHTRED);
- numero_aleatorio(p3,J3,Cant,CUsuarios);
- textcolor(YELLOW);
- }
- void numero_aleatorio(BINGO *p,int Turno, int NumCarton, int C_Jugadores){
- int b[5],i[5],n[5],g[5],o[5];
- int num,llama = 0,ind,array,CCartones = 1;
- int veces,x,y;
- if(Turno == 2)
- x = 25,y=5;
- if(Turno == 3)
- x = 60,y=5;
- while(NumCarton != 0){
- srand(time(NULL));
- // b
- for(ind=0;ind<5;ind++){
- while(llama == 0){
- num = 1 + rand()%((15+1)-1);
- llama = Numrep(num,b);
- if(llama == 1){
- b[ind] = num;
- }
- }//while
- llama = 0;
- }
- if(CCartones == 1){
- array = 0;
- veces = 0;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = b[ind];}
- if(Turno == 2){p[1]->carton[array] = b[ind];}
- if(Turno == 3){p[2]->carton[array] = b[ind];}
- array += 5;
- }
- }
- if(CCartones == 2){
- array = 25;
- veces = array;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = b[ind];}
- if(Turno == 2){p[1]->carton[array] = b[ind];}
- if(Turno == 3){p[2]->carton[array] = b[ind];}
- array += 5;
- }
- }
- if(CCartones == 3){
- array = 50;
- veces = array;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = b[ind];}
- if(Turno == 2){p[1]->carton[array] = b[ind];}
- if(Turno == 3){p[2]->carton[array] = b[ind];}
- array += 5;
- }
- }
- if(CCartones == 4){
- array = 75;
- veces = array;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = b[ind];}
- if(Turno == 2){p[1]->carton[array] = b[ind];}
- if(Turno == 3){p[2]->carton[array] = b[ind];}
- array += 5;
- }
- }
- // i
- for(ind=0;ind<5;ind++){
- while(llama == 0){
- num = 16 + rand()%((30+1)-16);
- if(ind == 0 && Turno == 1){
- i[ind] = 22;
- ind++;
- }
- if(ind == 0 && Turno == 2){
- i[ind] = 16;
- ind++;
- }
- llama = Numrep(num,i);
- if(llama == 1){
- i[ind] = num;
- }
- }
- llama = 0;
- //while
- }
- if(CCartones == 1){
- array = 1;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = i[ind];}
- if(Turno == 2){p[1]->carton[array] = i[ind];}
- if(Turno == 3){p[2]->carton[array] = i[ind];}
- array += 5;
- }
- }
- if(CCartones == 2){
- array = 26;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = i[ind];}
- if(Turno == 2){p[1]->carton[array] = i[ind];}
- if(Turno == 3){p[2]->carton[array] = i[ind];}
- array += 5;
- }
- }
- if(CCartones == 3){
- array = 51;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = i[ind];}
- if(Turno == 2){p[1]->carton[array] = i[ind];}
- if(Turno == 3){p[2]->carton[array] = i[ind];}
- array += 5;
- }
- }
- if(CCartones == 4){
- array = 76;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = i[ind];}
- if(Turno == 2){p[1]->carton[array] = i[ind];}
- if(Turno == 3){p[2]->carton[array] = i[ind];}
- array += 5;
- }
- }
- // n
- for(ind=0;ind<5;ind++){
- if(ind == 2){
- n[ind] = 00;
- ind++;}
- while(llama == 0){
- num = 31 + rand()%((45+1)-31);
- llama = Numrep(num,n);
- if(llama == 1){
- n[ind] = num;
- }
- }
- llama = 0;
- //while
- }
- if(CCartones == 1){
- array = 2;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = n[ind];}
- if(Turno == 2){p[1]->carton[array] = n[ind];}
- if(Turno == 3){p[2]->carton[array] = n[ind];}
- array += 5;
- }
- }
- if(CCartones == 2){
- array = 27;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = n[ind];}
- if(Turno == 2){p[1]->carton[array] = n[ind];}
- if(Turno == 3){p[2]->carton[array] = n[ind];}
- array += 5;
- }
- }
- if(CCartones == 3){
- array = 52;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = n[ind];}
- if(Turno == 2){p[1]->carton[array] = n[ind];}
- if(Turno == 3){p[2]->carton[array] = n[ind];}
- array += 5;
- }
- }
- if(CCartones == 4){
- array = 77;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = n[ind];}
- if(Turno == 2){p[1]->carton[array] = n[ind];}
- if(Turno == 3){p[2]->carton[array] = n[ind];}
- array += 5;
- }
- }
- // g
- for(ind=0;ind<5;ind++){
- while(llama == 0){
- num = 46 + rand()%((60+1)-46);
- llama = Numrep(num,g);
- if(llama == 1){
- g[ind] = num;
- }
- }
- llama = 0;
- //while
- }
- if(CCartones == 1){
- array = 3;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = g[ind];}
- if(Turno == 2){p[1]->carton[array] = g[ind];}
- if(Turno == 3){p[2]->carton[array] = g[ind];}
- array += 5;
- }
- }
- if(CCartones == 2){
- array = 28;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = g[ind];}
- if(Turno == 2){p[1]->carton[array] = g[ind];}
- if(Turno == 3){p[2]->carton[array] = g[ind];}
- array += 5;
- }
- }
- if(CCartones == 3){
- array = 53;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = g[ind];}
- if(Turno == 2){p[1]->carton[array] = g[ind];}
- if(Turno == 3){p[2]->carton[array] = g[ind];}
- array += 5;
- }
- }
- if(CCartones == 4){
- array = 78;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = g[ind];}
- if(Turno == 2){p[1]->carton[array] = g[ind];}
- if(Turno == 3){p[2]->carton[array] = g[ind];}
- array += 5;
- }
- }
- // o
- for(ind=0;ind<5;ind++){
- while(llama == 0){
- num = 61 + rand()%((75+1)-61);
- llama = Numrep(num,o);
- if(llama == 1){
- o[ind] = num;
- }
- }
- llama = 0;
- //while
- }
- if(CCartones == 1){
- array = 4;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = o[ind];}
- if(Turno == 2){p[1]->carton[array] = o[ind];}
- if(Turno == 3){p[2]->carton[array] = o[ind];}
- array += 5;
- }
- }
- if(CCartones == 2){
- array = 29;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = o[ind];}
- if(Turno == 2){p[1]->carton[array] = o[ind];}
- if(Turno == 3){p[2]->carton[array] = o[ind];}
- array += 5;
- }
- }
- if(CCartones == 3){
- array = 54;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = o[ind];}
- if(Turno == 2){p[1]->carton[array] = o[ind];}
- if(Turno == 3){p[2]->carton[array] = o[ind];}
- array += 5;
- }
- }
- if(CCartones == 4){
- array = 79;
- for(ind = 0;ind<5;ind++){
- if(Turno == 1){p[0]->carton[array] = o[ind];}
- if(Turno == 2){p[1]->carton[array] = o[ind];}
- if(Turno == 3){p[2]->carton[array] = o[ind];}
- array += 5;
- }
- }
- if(Turno == 1){
- Matrizj1(p,veces);
- }
- if(Turno == 2){
- if(CCartones == 4){
- x = 50; y = 5;
- }
- Matrizj2(p,veces,x,y,CCartones);
- }
- if(Turno == 3){
- if(CCartones == 4){
- x = 80; y = 5;
- }
- Matrizj3(p ,veces,x,y,CCartones);
- }
- NumCarton--;
- CCartones++;
- y += 6;
- }// while
- }
- void Matrizj1(BINGO *J1, int RetornoMatriz){
- int Fila,Column, volver = 0,indMatriz = RetornoMatriz, llama;
- textcolor(LIGHTRED);
- textbackground(BLACK);
- printf("| B | I | N | G | O|\n");
- //Sleep(500);
- for(Fila=0;Fila<5;Fila++){
- for(Column=0;Column<5;Column++){
- if(J1[3]->JugadorGanador[RetornoMatriz] == 1){
- textbackground(CS);
- }
- printf("|%.2d|",J1[0]->carton[RetornoMatriz]);
- textbackground(BLACK);
- RetornoMatriz++;
- }
- printf("\n");}
- indMatriz += 5;
- }
- void Matrizj2(BINGO *J2, int RetornoMatriz, int x, int y, int Cartones){
- int Fila,Column, volver = 0,indMatriz = RetornoMatriz;
- gotoxy(x,y);
- textbackground(BLUE);
- textcolor(LIGHTRED);
- printf("| B | I | N | G | O|\n");
- y++;
- for(Fila=0;Fila<5;Fila++){
- for(Column=0;Column<5;Column++){
- gotoxy(x,y);
- if(J2[3]->JugadorGanador[RetornoMatriz] == 1){
- textbackground(CSJ2);
- }
- printf("|%.2d|",J2[1]->carton[RetornoMatriz]);
- textbackground(BLUE);
- RetornoMatriz++;
- x += 4;
- }
- printf("\n");
- y++;
- x = 25;
- indMatriz += 5;
- if(Cartones == 4){
- x = 50;
- }
- }
- }
- void Matrizj3(BINGO *J3, int RetornoMatriz, int x, int y, int Cartones){
- int Fila,Column;
- gotoxy(x,y);
- textcolor(WHITE);
- textbackground(LIGHTRED);
- printf("| B | I | N | G | O|\n");
- y++;
- for(Fila=0;Fila<5;Fila++){
- for(Column=0;Column<5;Column++){
- gotoxy(x,y);
- if(J3[3]->JugadorGanador[RetornoMatriz] == 1){
- textbackground(CSJ3);
- }
- printf("|%.2d|",J3[2]->carton[RetornoMatriz]);
- textbackground(LIGHTRED);
- RetornoMatriz++;
- x += 4;
- }
- printf("\n");
- y++;
- x = 60;
- if(Cartones == 4){
- x = 80;
- }
- }
- }
- int Numrep(int Num_guardado, int arreglo[]){
- int indice;
- for(indice =0;indice<5;indice++){
- if(arreglo[indice] == Num_guardado){
- return 0;
- }
- }
- return 1;
- }
- int Numrep2(int Num_guardado, BINGO arreglo[]){
- int indice;
- for(indice =0;indice<75;indice++){
- if(arreglo[3][indice].BOLA[indice] == Num_guardado){
- return 0;
- }
- }
- return 1;
- }
- char Iterador(int Bola){
- char Bingo;
- if(Bola > 0 && Bola <= 15){
- Bingo = 'B';}
- if(Bola > 15 && Bola <= 30 ){
- Bingo = 'I';
- }
- if(Bola > 30 && Bola <= 45){
- Bingo = 'N';}
- if(Bola > 45 && Bola <= 60 ){
- Bingo = 'G';
- }
- if(Bola > 60 && Bola <= 75){
- Bingo = 'O';
- }
- return Bingo;
- }
- int NumDifHorizontal(int Num){
- int ind;
- for(ind = 2;ind<100;ind += 5){
- if( Num == ind){
- return 1;
- }
- }
- for(ind = 3;ind<100;ind += 5){
- if( Num == ind){
- return 1;
- }
- }
- for(ind = 4;ind<100;ind += 5){
- if( Num == ind){
- return 1;
- }
- }
- return 0;
- }
- int Ganador(BINGO *J1, int indMatriz){
- int ind,ind2;
- //Comprobar si hay cuatro en línea en horizontal
- for(ind = 0;ind < 100;ind++){
- if((*J1[3]).JugadorGanador[indMatriz] == 1 && (*J1[3]).JugadorGanador[indMatriz+1] == 1
- && (*J1[3]).JugadorGanador[indMatriz+2] == 1 && (*J1[3]).JugadorGanador[indMatriz+3] == 1
- && (*J1[3]).JugadorGanador[indMatriz+4] == 1 ){
- return 1;
- }
- indMatriz +=5;
- }
- //Comprobar si hay cuatro en línea en vertical
- for(ind = 0;ind < 25;ind++){
- if((*J1[3]).JugadorGanador[indMatriz] == 1 && (*J1[3]).JugadorGanador[indMatriz+5] == 1
- && (*J1[3]).JugadorGanador[indMatriz+10] == 1 && (*J1[3]).JugadorGanador[indMatriz+15] == 1
- && (*J1[3]).JugadorGanador[indMatriz+20] == 1){
- return 1;
- }
- indMatriz+=1;
- }
- //Comprobar si hay cuatro en línea en diagonal 1
- for(ind = 0;ind < 25;ind++){
- if((*J1[3]).JugadorGanador[indMatriz] == 1 && (*J1[3]).JugadorGanador[indMatriz+6] == 1
- && (*J1[3]).JugadorGanador[indMatriz+12] == 1 && (*J1[3]).JugadorGanador[indMatriz+18] == 1
- && (*J1[3]).JugadorGanador[indMatriz+24] == 1){
- return 1;
- }
- }
- //Comprobar si hay 5 en línea en diagonal 2
- for(ind = 0;ind < 25;ind++){
- if((*J1[3]).JugadorGanador[indMatriz+4] == 1 && (*J1[3]).JugadorGanador[indMatriz+8] == 1
- && (*J1[3]).JugadorGanador[indMatriz+12] == 1 && (*J1[3]).JugadorGanador[indMatriz+16] == 1
- && (*J1[3]).JugadorGanador[indMatriz+20] == 1){
- return 1;
- }
- }
- //Comprobar si hay 5 en línea en diagonal 2
- for(ind = 0;ind < 25;ind++){
- if((*J1[3]).JugadorGanador[indMatriz+4] == 1 && (*J1[3]).JugadorGanador[indMatriz+8] == 1
- && (*J1[3]).JugadorGanador[indMatriz+12] == 1 && (*J1[3]).JugadorGanador[indMatriz+16] == 1
- && (*J1[3]).JugadorGanador[indMatriz+20] == 1){
- return 1;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement