codigo bingo

unefa chuao
20 de Enero del 2009
/* Programa creado para mostrar la funcionabilidad de un bingo
DiseĄado Por: UNEFA Caracas - Venezuela
Escuela: ADS UNEFA PISO 10

*/

/* Unidades Include usada en el programa */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

void cuadro (void);
void cent_frase (char *cadena, int y);
void titulo_pantalla (void);
void carton_casino (int min, int max, int cols);
void carton_jugador (int min, int max, int cols);
void llenar_carton (void);
void mostrar_jugadores (void);
void ent_admin (void);
void inscr_jugador (void);
void cantarficha (char *nombre, int apuesta);
void cantar_ficha (void);
void juhgador_menu (void);

/* Estructura de datos para almacenar a los jugadores */
struct dat_jug {
char nom_jug[20];
char parroq_jug[150];
int ced_jug;
} reg_jug[50];

/* Estructura de datos para alamecenar los cartones del bingo */
int cartoncasino[5][5], cartonjugador[5][5];

/* Variable entera de tipo Global param saber cuantos jugadores
estan almacenados en la estructura REGISTRO
*/
int cant_jug = 0;

/* Función Principal del Programa*/
void main () {
int opc;
do {
textcolor (15);
titulo_pantalla();
cent_frase ("Opciones - Menu Prinncipal", 6);
gotoxy (33, 8); printf ("1 - Administrador");
gotoxy (33, 10); printf ("2 - Jugador");
gotoxy (33, 12); printf ("3 - Salir");
gotoxy (30, 14); printf ("ĘCual es su opción?[ ]");
gotoxy (50, 14); scanf ("%d", &opc);
flushall ();

switch (opc) {
case 1: ent_admin (); break;

case 2: juhgador_menu (); break;
}

} while (opc != 3);
exit (0);
}

/* Función que contiene el Menú de Jugadores */
void juhgador_menu (void) {
int opc;
do {
textcolor (3);
titulo_pantalla ();
cent_frase ("Opciones - Menu de Jugadores", 6);
gotoxy (30, 8); printf ("1 - Inscribir Jugador");
gotoxy (30, 10); printf ("2 - Jugar");
gotoxy (30, 12); printf ("3 - Salir Anterior");
gotoxy (29, 14); printf ("ĘCual es su opción?[ ]");
gotoxy (49, 14); scanf ("%d", &opc);
flushall ();

switch (opc) {
case 1: inscr_jugador (); break;

case 2: cantar_ficha (); break;
}

} while (opc != 3);
}

/* Función que permite crear el juego solicitando el jugador y el apuesta a jugar */
void cantar_ficha (void) {
int ced_jug, verda_falso, pos, apuesta;
verda_falso = 1;
textcolor (7);
titulo_pantalla ();
cent_frase ("Jugando Bingo ", 6);
gotoxy (20, 12); printf ("Introduce la Cédula de Jugador:[ ]");
gotoxy (52, 12); scanf ("%d", &ced_jug);
for (int i = 0; i <= cant_jug && verda_falso != 0; i++) {
if (ced_jug == reg_jug[i].ced_jug) {
pos = i; verda_falso = 0; }
else {
verda_falso = 1;
}
}
if (verda_falso == 0) {
gotoxy (20, 14); printf ("Introduce Monto a Jugar:[ ]");
gotoxy (45, 14); scanf ("%d", &apuesta);
llenar_carton ();
cantarficha (reg_jug[pos].nom_jug, apuesta);
}
else {
cent_frase ("El Cédula del jugador NO se encuentra registrada", 18);
cent_frase ("Presione una tecla para incrinuar...", 23); getch ();
}
}
/* Función para jugar y determinar quien y cuanto gana */
void cantarficha (char *nombre, int apuesta) {
int fichcant, verda_falso, j, ganacasino, ganajugador;
char ficha[75];
textcolor (18);
gotoxy (10, 6); printf ("Jugador: %s", nombre);
randomize ();
verda_falso = j = ganacasino = ganajugador = 0;
for (int filas = 0; filas < 75; filas++) {
ficha[filas] = \'0\';
}
do {
do {
fichcant = rand() % 76;
if (ficha[fichcant] == \'1\') {
fichcant = 0;
}
} while (fichcant < 1);
if (fichcant < 76) {
ficha[fichcant] = \'1\'; j++;
gotoxy(34, 13); printf ("La Ficha");
gotoxy (35, 15); printf ("Es:[ ]");
gotoxy (39, 15); printf ("%d", fichcant);
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 5; y++) {
if (fichcant == cartoncasino[y][x]) {
gotoxy (46 + x * 4, 10 + y * 2);
switch (x) {
case 0: printf ("B "); break;
case 1: printf ("I "); break;
case 2: printf ("N "); break;
case 3: printf ("G "); break;
case 4: printf ("O "); break;
}
cent_frase ("Acertó el Jugador: CASINO", 21);
ganacasino++;
if (ganacasino == 25) {
verda_falso = 1; }
}
}
}
for (int x1 = 0; x1 < 5; x1++) {
for (int y1 = 0; y1 < 5; y1++) {
if (fichcant == cartonjugador[y1][x1]) {
gotoxy (12 + x1 * 4, 10 + y1 * 2);
switch (x1) {
case 0: printf ("B "); break;
case 1: printf ("I "); break;
case 2: printf ("N "); break;
case 3: printf ("G "); break;
case 4: printf ("O "); break;
}
gotoxy (27, 22); printf ("Acertó el Jugador: %s", nombre);
ganajugador++;
if (ganajugador == 25) {
verda_falso = 1; }
}
}
}
}
cent_frase ("Presione una tecla para Continuar...", 23); getch();
cent_frase (" ", 21);
cent_frase (" ", 22);
} while (j <= 75 && verda_falso == 0);
if (ganacasino == 25 && ganajugador == 25) {
cent_frase ("NO HAY GANADORES", 21);}
else {
if (ganacasino == 25) {
cent_frase ("HA GANADO EL JUGADOR CASINO", 21);
gotoxy (32, 22); printf ("Un Total de: %d", apuesta * 2); }
else {
if (ganajugador == 25) {
cent_frase ("HA GANADO EL JUGADOR", 21);
gotoxy(51, 21); printf ("%s", nombre);
gotoxy (32, 22); printf ("Un Total de: %d", apuesta * 2);
}
}
}
getch();
}

/* Función que incluye los Jugadores en la Estructura de REGISTRO */
void inscr_jugador (void) {
char opc;
do {
textcolor (18);
titulo_pantalla();
gotoxy (25, 6); printf ("Agregando Jugadores");
gotoxy (20, 10); printf ("Introduce la Cédula :[ ]");
gotoxy (44,10); scanf ("%d", «_jug[cant_jug].ced_jug);
gotoxy (20, 12); printf ("Introduce el Nombre :[ ]");
gotoxy (44, 12); scanf ("%s", «_jug[cant_jug].nom_jug);
gotoxy (20, 14); printf ("Introduce la Direccion:[ ]");
gotoxy (44, 14); scanf ("%s", «_jug[cant_jug].parroq_jug);
gotoxy (20, 18); printf ("ĘDeseas introducir otro Jugador (S/N)?[ ]");
opc = getch();
gotoxy (59, 18); printf ("%c", opc); getch();
cant_jug++;
flushall ();
} while (cant_jug < 50 && tolower (opc) == \'s\');
}

/* Función que solicita el Acceso del Administrador al Sistema */
void ent_admin (void) {
int clave[3];
textcolor (5);
titulo_pantalla ();
gotoxy (25, 6); printf ("Acceso de Administradores");
gotoxy (25, 12); printf ("Introduce Clave de Acceso:[ ]");
clave[0] = getch ();
gotoxy (52, 12); printf ("˙");
clave[1] = getch ();
gotoxy (53, 12); printf ("˙");
clave[2] = getch ();
gotoxy (54, 12); printf ("˙");
if (clave[0] == \'1\' && clave[1] == \'2\' && clave[2] == \'3\') {
mostrar_jugadores ();
cent_frase ("Presione cualquier tecla...", 23); getch(); }
else {
cent_frase ("Su Clave de Acceso es INCORRECTA", 16); getch();
}
}

/* Función para Mostrar el listado de los jugadores */
void mostrar_jugadores (void) {
int incr = 0;
textcolor (3);
titulo_pantalla();
gotoxy(12, 8); printf("Cédula");
gotoxy(25, 8); printf("Nombre");
gotoxy(45, 8); printf("Dirección");
do {
gotoxy(12, incr + 10); printf("%d", reg_jug[incr].ced_jug);
gotoxy(25, incr + 10); printf("%s", reg_jug[incr].nom_jug);
gotoxy(45, incr + 10); printf("%s", reg_jug[incr].parroq_jug);
incr++;
} while (incr < cant_jug);
}

/* Función para crear los Cartones del Juego */
void llenar_carton (void) {

for (int filas = 0; filas < 5; filas++) {
for (int cols = 0; cols < 5; cols++) {
cartonjugador[filas][cols] = cartoncasino[filas][cols] = 0;
}
}
carton_jugador (1, 16, 0);
carton_jugador (16, 31, 1);
carton_jugador (31, 46, 2);
carton_jugador (46, 61, 3);
carton_jugador (61, 76, 4);
carton_casino (1, 16, 0);
carton_casino (16, 31, 1);
carton_casino (31, 46, 2);
carton_casino (46, 61, 3);
carton_casino (61, 76, 4);

gotoxy (55, 6); printf ("CASINO");
gotoxy (10, 7); printf ("┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐");
gotoxy (10, 8); printf ("║ B ║ I ║ N ║ G ║ O ║ ║ B ║ I ║ N ║ G ║ O ║");
gotoxy (10, 9); printf ("├═══┼═══┼═══┼═══┼═══┤ ├═══┼═══┼═══┼═══┼═══┤");
gotoxy (10, 10); printf ("║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║");
gotoxy (10, 11); printf ("├═══┼═══┼═══┼═══┼═══┤ ├═══┼═══┼═══┼═══┼═══┤");
gotoxy (10, 12); printf ("║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║");
gotoxy (10, 13); printf ("├═══┼═══┼═══┼═══┼═══┤ ├═══┼═══┼═══┼═══┼═══┤");
gotoxy (10, 14); printf ("║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║");
gotoxy (10, 15); printf ("├═══┼═══┼═══┼═══┼═══┤ ├═══┼═══┼═══┼═══┼═══┤");
gotoxy (10, 16); printf ("║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║");
gotoxy (10, 17); printf ("├═══┼═══┼═══┼═══┼═══┤ ├═══┼═══┼═══┼═══┼═══┤");
gotoxy (10, 18); printf ("║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║");
gotoxy (10, 19); printf ("└═══┴═══┴═══┴═══┴═══┘ └═══┴═══┴═══┴═══┴═══┘");
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 5; y++) {
gotoxy (12 + x * 4, 10 + y * 2); printf ("%d", cartonjugador[y][x]);
}
}
for (int x1 = 0; x1 < 5; x1++) {
for (int y1 = 0; y1 < 5; y1++) {
gotoxy (46 + x1 * 4, 10 + y1 * 2); printf ("%d", cartoncasino[y1][x1]);
}
}
}

/* Función que define los elementos del Cartón del Jugador */
void carton_jugador (int min, int max, int cols) {
int num, verda_falso;

for (int filas = 0; filas < 5; ++filas) {
do {
num = rand() % max;
} while (num < min || num > max);
verda_falso = 0;
for (int i = 0; i < filas; i++){
if (cartonjugador[i][cols] == num) {
verda_falso = 1;
}
}
if (verda_falso == 0) {
cartonjugador[filas][cols] = num; }
else {
filas--;
}
}
}
/* Función que define los elementos del Cartón del Casino */
void carton_casino (int min, int max, int cols) {
int num, verda_falso;

randomize ();
for (int filas = 0; filas < 5; ++filas) {
verda_falso = 0;
do {
num = rand() % max;
} while (num < min || num > max);

for (int i = 0; i < filas; i++){
if (cartonjugador[i][cols] == num) {
verda_falso = 1;
}
if (cartoncasino[i][cols] == num) {
verda_falso = 1;
}
}
if (verda_falso == 0) {
cartoncasino[filas][cols] = num; }
else {
filas--;
}
}
}
/* Función para diseĄar un marco doble linea en pantalla */
void cuadro (void) {
for(int incr = 1; incr <= 80; incr++) {
gotoxy (incr, 1); printf("═");
gotoxy (incr, 24); printf("═");
if (incr <= 24) {
gotoxy (1, incr); printf("║");
gotoxy (80, incr); printf("║");
}
}
gotoxy (1, 1); printf("╔");
gotoxy (80, 1); printf("╗");
gotoxy (1, 24); printf("╚");
gotoxy (80,24); printf("╝");
}

/* Función que permite centrar cualquier frase en la pantalla */
void cent_frase (char *cadena, int y) {
int n, x;

n = strlen(cadena); x = (80-n)/2;
gotoxy (x, y); puts(cadena);
}

/* Función que hace el encabezado de las pantallas */
void titulo_pantalla (void) {
clrscr();
cent_frase ("╔════════════════════════════════════════════════╗", 2);
cent_frase ("║ ║", 3);
cent_frase ("╚════════════════════════════════════════════════╝", 4);
cent_frase ("BINGO CASINO UNEFA CHUAO", 3);
cuadro ();
}