Bingo

Estoy realizando el juego del bingo, ya tengo el tablero, y puedo insertar los números validando los campos. Pero no se como hacer para que genere los números aleatorios validados y compararlos, ya intente con la función srand(), y compare normalmente las matrices, pero no se es que no estoy aplicando bien la lógica o que el compilador no sirve.
Podrías ayudarme, es para este lunes
1

1 Respuesta

9.825 pts. Estoy de regreso: desde hace tiempo no estaba por el...
Perdona la demora, pero no tenia conexión hasta ahora,, bien, no entiendo mucho lo que me pides, pero te diré que para generar numero aleatoriamente debe primero inicializar la "semilla" para poder generar los números, es la función randomize(), luego generas los números con rand(int maxValue), mira este ejemplo:
#include <iostream.h>
int main(int argc, char* argv[])
{
randomize();
for(int i = 0; i < 100; i++)
cout << random(100) << endl;
system("pause");
return 0;
}
Dime si tienes alguna duda, explicala mejor para ayudarte con mayor facilidad.
Tengo que realizar un juego del bingo, donde se dibuje un tablero de 5*5, y se genere aleatoriamente los números internos del tablero, luego el usuario digita los valores correspondientes a cada columna, los cuales están validados(B números entre 0 y 15, I entre 16 y 30, N van de 31 al 45, G del 46 al 60 y la O del 61 al 75). Esta validación debe corresponder tanto para los valores que ingresa el usuario como para los números generados aleatoriamente. Inmediatamente el usuario digita el numero este se debe buscar dentro del tablero y si esta se debe tachar o algo así. Si se completo todo el tablero, se entiende que gano.
Ese es el problema, tengo el tablero, y la validación de los datos que el usuario digita, pero no he podido hacer que me valide los datos cuando los genera aleatoriamente, ni tachar los valores si aparece en el bingo.
Dime como es que validas lo que tienes, para poder decirte sin que sea muy diferente a lo que tienes, ademas así puedo ver como es que puedes tachar los que se adivinen.
Bueno este es el código que tengo:
#include "stdlib.h"
#include "stdio.h"
#include "conio.h"
#include "graphics.h"
main(){
int numero, cont=0, i, datos[10][10], j, m, bingo[5][5], aux, x, y, a, bingo1[5][5], n;
clrscr();
textcolor(3);
textbackground(8);
gotoxy(25,1);printf("ÉÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍËÍÍÍÍÍÍÍ»\n");
gotoxy(25,2);printf("º B º I º N º G º O º\n");
gotoxy(25,3);printf("ÌÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍ͹\n");
gotoxy(25,4);printf("º º º º º º\n");
gotoxy(25,5);printf("ÌÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍ͹\n");
gotoxy(25,6);printf("º º º º º º\n");
gotoxy(25,7);printf("ÌÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍ͹\n");
gotoxy(25,8);printf("º º ºÛÛÛÛÛÛÛº º º\n");
gotoxy(25,9);printf("ÌÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍ͹\n");
gotoxy(25,10);printf("º º º º º º\n");
gotoxy(25,11);printf("ÌÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÎÍÍÍÍÍÍ͹\n");
gotoxy(25,12);printf("º º º º º º\n");
gotoxy(25,13);printf("ÈÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÊÍÍÍÍÍÍͼ\n");
gotoxy(25,15);
printf("Digite los valores para el tablero");
gotoxy(25,16);
printf("Digite los valores para la columna B (1-15)");
i=0;x=29;y=2;
for(j=0; j<5; j++){
do{
gotoxy((i+1)*29,y+2);
scanf("%d",&bingo1[j]);
}while(bingo1[j]<-1 || bingo1[j]>=15);
y+=2;
}
gotoxy(25,16);
printf("Digite los valores para la columna I (16-30)");
i=1;x=37;y=2;
for(j=0; j<5; j++){
do{
gotoxy(i*x,y+2);
scanf("%d",&bingo1[j]);
y+=2;
}while(bingo1[j]<16 ||bingo1[j]>30);
}
gotoxy(25,16);
printf("Digite los valores para la columna N (31-45)");
i=2;x=45;y=2;
for(j=0; j<5; j++){
if(j!=2){
gotoxy(x*1,y+2);
scanf("%d",&a);
if(a>=31 && a<=45){
bingo1[j]=a;
y+=2;
}
}
else{
bingo1[j]=0;
y+=2;
}
}
gotoxy(25,16);
printf("Digite los valores para la columna G (46-60)");
i=3;x=53;y=2;
for(j=0; j<5; j++){
do{
gotoxy(x*1,y+2);
scanf("%d",&bingo1[j]);
y+=2;
}while(bingo1[j]<46 ||bingo1[j]>60);
}
gotoxy(25,16);
printf("Digite los valores para la columna O (61-75)");
i=4;x=61;y=2;
for(j=0; j<5; j++){
do{
gotoxy(x*1,y+2);
scanf("%d",&bingo1[j]);
y+=2;
}while(bingo1[j]<61 ||bingo1[j]>75);
}
//GENERAR LOS NUMEROS ALEATORIOS
//para la b
j=0; //los numeros aleatorios en un arreglo de 10 posiciones
for(i=1; i<=20; i++){
numero=rand()%15+1;
if(numero>=1 && numero<=15){
datos[cont][j]=numero;
cont++;
}
if(cont==10){
break;
}
}
m=0;//reemplaza con ceros los valores repetidos del arreglo
for(i=0; i<10; i++){
for(j=i+1; j<10;){
if(datos[m]==datos[j][m]){
datos[j][m]=0;
}
j++;
}
}
i=0;m=0;//almacena los 5 valores para el nuevo arreglo, sin contar los ceros
for(j=0; j<10; j++){
bingo[m]=0;
if(datos[j][m]!=0){
bingo[m]=datos[j][m];
i++;
}
if(i==5){
break;
}
}
//para la i
j=1; cont=0;
for(i=1; i<=20; i++){
numero=rand()%30+1;
if(numero>=16 && numero<=30){
datos[cont][j]=numero;
cont++;
}
if(cont==10){
break;
}
}
m=1;
for(i=0; i<10; i++){
for(j=i+1; j<10;){
if(datos[m]==datos[j][m]){
datos[j][m]=0;
}
j++;
}
}
i=0;m=1;
for(j=0; j<10; j++){
bingo[m]=0;
if(datos[j][m]!=0){
bingo[m]=datos[j][m];
i++;
}
if(i==5){
break;
}
}
//para la n
j=2; cont=0;
for(i=1; i<=20; i++){
numero=rand()%45+1;
if(numero>=31 && numero<=45){
datos[cont][j]=numero;
cont++;
}
if(cont==10){
break;
}
}
m=2;
for(i=0; i<10; i++){
for(j=i+1; j<10;){
if(datos[m]==datos[j][m]){
datos[j][m]=0;
}
j++;
}
}
i=0;m=2;
for(j=0; j<10; j++){
bingo[m]=0;
if(datos[j][m]!=0){
bingo[m]=datos[j][m];
i++;
}
if(i==5){
break;
}
}
//para la g
j=3; cont=0;
for(i=1; i<=20; i++){
numero=rand()%60+1;
if(numero>=46 && numero<=60){
datos[cont][j]=numero;
cont++;
}
if(cont==10){
break;
}
}
m=3;
for(i=0; i<10; i++){
for(j=i+1; j<10;){
if(datos[m]==datos[j][m]){
datos[j][m]=0;
}
j++;
}
}
i=0;m=3;
for(j=0; j<10; j++){
bingo[m]=0;
if(datos[j][m]!=0){
bingo[m]=datos[j][m];
i++;
}
if(i==5){
break;
}
}
//para la o
j=4; cont=0;
for(i=1; i<=30; i++){
numero=rand()%75+1;
if(numero>=61 && numero<=75){
datos[cont][j]=numero;
cont++;
}
if(cont==10){
break;
}
}
m=4;
for(i=0; i<10; i++){
for(j=i+1; j<10;){
if(datos[m]==datos[j][m]){
datos[j][m]=0;
}
j++;
}
}
i=0;m=4;
for(j=0; j<10; j++){
bingo[m]=0;
if(datos[j][m]!=0){
bingo[m]=datos[j][m];
i++;
}
if(i==5){
break;
}
}
//imprime los numeros generados
printf("\n");
for(i=0; i<5; i++){
printf("\n");
for(j=0; j<5; j++){
printf("%d\t", bingo[j]);
}
}
//compara si los valores de la matriz del usuario, coincide con la generada
printf("\n");
cont=0;
for(i=0; i<5; i++){ //accedo a la matriz generada
for(j=0; j<5; j++){
aux=bingo[j];
for(m=0; m<5; m++){ //accedo a la matriz del usuario
for(n=0; n<5; n++){
if(aux==bingo1[n][m]){
printf(" x ");
cont++;
}
}
}
}
}
if(cont==24){
textcolor(RED+BLINK);
printf("\nBingo");
}
printf("\n\n");
// gotoxy(30,25); */
printf("Pulse una letra para salir");
getch();
}
Bueno, ahí saldrá un poco desordenado, pero es que no tengo tu mail para enviártelo por ese medio. Ahora lo que encontraras sera el tablero (esos muñequitos que están ahí pintados), ya valida datos y busca pero quiero que tache en el tablero, así como también quiero que si el usuario no digita un numero que este dentro del rango, el cursosr no se salga del lugar donde esta. También quiero que cada vez que inicio un juego cambien los números aleatorios, eso es con la función srand, pero no me ha quedado tiempo de buscarala y que no se salga hasta que el usuario de le esa opción, que supongo que es con un do while, tengo que hacerlo solo con funciones de C y no de C++, lo compile en turbo c.
Gracias
Aun no te escribo porque estoy haciendo los exámenes de la universidad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas