Ir al contenido

publicidad

Foto

Problema para incluir libreria Allegro en un juego de Primitiva(loteria) en C


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
3 respuestas en este tema

#1

Escrito 24 mayo 2010 - 19:58

Buenas, he hecho este programa para el calculo de primitiva (loterias) en C, pero tengo que hacerlo de modo grafico con la libreria Allegro, el caso es que no se como meter el menu principal que tengo en un grafico de allegro, este es mi codigo:
#include
#include
#include
#define tamano 5

int main()
{






printf(" *******************************\n");
printf(" *TRABAJO SISTEMAS OPERATIVOS C*\n");
printf(" *******************************\n");

printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+ Alumno: ***************************** +\n");
printf("+ Profesor: **************************** +\n");
printf("+ Asignatura: Sistemas Operativos +\n");
printf("+ Descripcion del trabajo: Programa para el calculo de primitivas con C +\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

printf("\n ESCRIBA SU NOMBRE A CONTINUACION POR FAVOR: ");
char nombre[30];
fgets(nombre,30,stdin); //nombre del alumno
printf("\n Bienvenido Don/a %s a PRIMIJAVIER",nombre);
printf("\n");

INICIO:{

printf("Seleccione la operacion que desee a continuacion\n")

int m; //definimos una vble para elegir las distintas opciones
printf ("\n Introduzca una opcion: ");
scanf ("%d",&m);

if (m==1)
{
int a; //Aqui tenemos el primer numero de nuestra primitiva
srand (time(NULL));//Esta funcion hace que solo la llame una vez
a = rand () % 24 + 1;
// Para obtener un intervalo entre M y N, la formula que tenemos que aplicar es: (N-M+1)
//Este intervalo se encuentra entre el 24 y el 1 ya que queremos obtener una bola baja.
printf( "\nNuestro primer numero de la primitiva es: %d \n", a);

int b; //Ahora pasamos al segundo numero

b = rand () % 24 + 1; //Al igual que la bola anterior, queremos que est� en una zona baja.

if(b==a) // Esto nos permite que el numero que saquemos ahora no sea igual al anterior.Ya que en la primitiva no se pueden poner dos numeros iguales
{
b = rand () % 24 + 1;
}
else
printf( "\nNuestro segundo numero de la primitiva es: %d \n", b);

int c; //Ahora nos toca el tercer numero
//Este tercer numero estara en el intervalo entre 1 y 49 ya que pueden ser una bola baja o una bola alta.
c = rand () % 49 + 1;
if((c==a)||(c==b))
//Al igual que antes, esta opcion hace que el numero que salga sea distinta a los anteriores.
{
c = rand () % 49 + 1;
}
else
printf( "\nNuestro tercer numero de la primitiva es: %d \n", c);


int d; //Pasamos al cuarto numero

d = rand () % 49 + 1;// Este cuarto numero tambien estara en el intervalo entre 1 y 49 ya que tambien podra ser una bola baja o una bola alta.
if((d==a)||(d==b)||(d==c))// Al igual que antes, esto sirve para no sacar un numero ya sacado anteriormente.

{
d = rand () % 49 + 1;
}
else
printf( "\nNuestro cuarto numero de la primitiva es: %d \n", d);


int e; //Ahora obtenemos el penultimo numero
//Ahora queremos que sea una bola alta, estara en el intervalo entre 25 y 49.
//Ahora podemos quitar la condicion de que no sea igual que a o b, ya que e no puede ser igual a estas, ya que es una bola alta.
e = rand () % 26 + 24;
if((e==c)||(e==c))// Aun asi, tenemos que poner esta condicion ya que puede llegar a ser igual a c o a b.
{
e = rand () % 26 + 24;
}
else
printf( "\nNuestro quinto numero de la primitiva es: %d \n", e);

int f; //Ahora tenemos ya el ultimo numero de nuestra primitiva.
//Al ser de nuevo una bola alta, quitamos la condicion de que sea distinto a a o b.
f = rand () % 26 + 24;
if((f==c)||(f==d)||(f==e))//La misma condicion que antes, no puede ser igual a c, d o e.
{
f = rand () % 26 + 24;
}
else

printf( "\nNuestro sexto numero de la primitiva es: %d \n", f);

//Ahora introduciremos una serie de condiciones, la que viene ahora nos dira la probabilidad de que nuestras bolas sean pares o impares.
int pares=0;
int impares=0;

if(a%2==0)
{
pares++;

}
else
impares++;

if(b%2==0)
{
pares++;

}
else
impares++;

if(c%2==0)
{
pares++;

}
else
impares++;
if(d%2==0)
{
pares++;

}
else
impares++;

if(e%2==0)
{
pares++;

}
else
impares++;

if(f%2==0)
{
pares++;

}
else
impares++;

//

if(pares==0)
{
printf("\n Todas las bolas son pares"
"\n La probabilidad de que suceda esto es de un 1%%\n");
}

else if(pares==1)
{
printf("\n Hay 5 bolas impares y una bola par"
"\n La probabilidad de que suceda esto es de un 9%%\n");
}

else if(pares==2)
{
printf("\n Hay 4 bolas impares y 2 bolas impares"
"\n La probabilidad de que suceda esto es de un 25%%\n");
}

else if(pares==3)
{
printf("\n Hay 3 bolas impares y 3 bolas pares"
"\n La probabilidad de que suceda esto es de un 33%%\n");
}

else if(pares==4)
{
printf("\n Hay 2 bolas impares y 4 bolas pares"
"\n La probabilidad de que suceda esto es de un 23%%\n");
}

else if(pares==5)
{
printf("\n Solo hay una bola impar y 5 bolas pares"
"\n La probabilidad de que suceda esto es de un 7,5%%\n");
}

else
printf("\n No hay ninguna bola impar y 6 bolas pares"
"\n La probabilidad de que suceda esto es de casi un 1%%\n");



//Ahora, pondre una serie de informacion sobre la combinacion de las bolas que saldran en nuestra primitiva.

if((c<=24)&&(d>=25))
{

printf("\n Nuestra combinacion de bolas es de 3 altas y 3 bajas"
"\n La probabilidad de que salga nuestra apuesta es de casi el 33%% \n");
}
else if((c>=24)&&(d<=25))
{

printf("\n Nuestra combinacion de bolas es de 3 altas y 3 bajas"
"\n La probabilidad de que salga nuestra apuesta es de casi el 33%% \n");
}
else if((c<=24)&&(d<=24))
{
printf("\n Nuestra combinacion de bolas es de 3 altas y 3 bajas"
"\n La probabilidad de que salga nuestra apuesta es de casi el 25%% \n");

}
else
printf("\n Nuestra combinacion de bolas es de 3 altas y 3 bajas"
"\n La probabilidad de que salga nuestra apuesta es de casi el 23%% \n");



//Con la proxima condicion servira para saber en que decena se encuentra cada bola.

int primeradecena=0 , segundadecena=0 , terceradecena=0 , cuartadecena=0 , quintadecena=0 ;

//Esta condicion es para el primer numero.

if(a<=9)
{
primeradecena++;
}

else if((a>=10)&&(a<=19))
{
segundadecena++;
}
else
terceradecena++;

//Esta condicion es para el segundo numero

if(b<=9)
{
primeradecena++;
}

else if((b>=10)&&(b<=19))
{
segundadecena++;
}
else
terceradecena++;

//Esta condicion es para el tercer numero

if(c<=9)
{
primeradecena++;
}

else if((c>=10)&&(c<=19))
{
segundadecena++;
}
else if ((c>=20)&&(c<=29))
{
terceradecena++;
}
else if ((c>=30)&&(c<=39))
{
cuartadecena++;
}
else
quintadecena++;

//Esta condicion es para el cuarto numero

if(d<=9)
{
primeradecena++;
}

else if((d>=10)&&(d<=19))
{
segundadecena++;
}
else if ((d>=20)&&(d<=29))
{
terceradecena++;
}
else if ((d>=30)&&(d<=39))
{
cuartadecena++;
}
else
quintadecena++;

//Esta condicion es para el quinto numero

if((e>=25)&&(e<=29))
{
terceradecena++;
}

else if((b>=30)&&(b<=39))
{
cuartadecena++;
}
else
quintadecena++;

//Esta condicion es para el sexto y ultimo numero.

if((f>=25)&&(f<=29))
{
terceradecena++;
}

else if((f>=30)&&(f<=39))
{
cuartadecena++;
}
else
quintadecena++;

// Para saber las probabilidades de que las bolas esten una decena,debemos ordenarlas usando el metodo de la burbuja

int vNumeros[tamano]={primeradecena,segundadecena,terceradecena,cuartadecena,quintadecena};
int j, i, temp;



/* Ordenamos los numeros del vector vNumeros gracias al metodo de la burbuja */
for (i = 0; i < (tamano - 1); i++)
{
for (j = i + 1; j < tamano; j++)
{
if (vNumeros[j] < vNumeros)
{
temp = vNumeros[j];
vNumeros[j] = vNumeros;
vNumeros = temp;
}
}
}


printf("\n El numero de bolas que hay por decenas,Estructura de Decena, es:");
for (i = 0; i < tamano; i++)
{
printf(" %d ", vNumeros);



}
printf("\n La probabilidad de que la Estructura de Decena sea 2-2-1-1 es de casi el 38%%"
"\n La probabilidad de que la Estructura de Decena sea 3-2-1 es de casi el 21%%"
"\n La probabilidad de que la Estructura de Decena sea 3-1-1-1 es del 15%%"
"\n La probabilidad de que la Estructura de Decena sea 2-1-1-1 es del 14%%"
"\n La probabilidad de que la Estructura de Decena sea 2-2-2 es de casi el 6%%"
"\n La probabilidad de que la Estructura de Decena sea 4-1-1 es de casi el 4%%"
"\n La probabilidad de que la Estructura de Decena sea 3-3 es de casi el 1%%"
"\n La probabilidad de que la Estructura de Decena sea 4-2 es de casi el 1%%"
"\n La probabilidad de que la Estructura de Decena sea 5-1 es de casi el 0.5%%"
"\n La probabilidad de que la Estructura de Decena sea 6-0 es casi nula 0.006%%"


);
printf("\n\n");
goto INICIO;
}

}


}


¿alguna solucion? gracias de antemano, lo que quiero es que por ejemplo el menu principal esté de un color, luego al pulsar una de las dos opciones me aparezca la solucion en otro color y así


Saludos

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#2

Escrito 24 mayo 2010 - 21:13

Al ver la cabecera he visto una posible solucion.

Tu la libreria Allegro donde la tienes? Con el resto de librerias del compilador o en la carpeta del proyecto? Porque si es en la carpeta del proyecto tendrias que probar mejor con
#include "allegro.h"

Porque ello hace que busque en la carpeta donde esta el ejecutable. Por si acaso.

Luego, otra cosa que no me gusta naaaaaada de nada: ¿Que hace un goto en c? Si me dices en un lenguaje como Basic que se basa en el uso de gotos vale pero... ¿En c? hace daño a la vista XD Ya estas diviendolo en varias funciones y haciendo un bucle que se repita mientras no se pulse escape.

Y con eso solucionado ya estará bastante mejor para ponerse a mirar mas a fondo el codigo. Yo, mientras no lo hagas, no pienso mirar mas a fondo que lo que he hecho. Y lo hago por tu bien porque es una buena practica de programacion.

Vamos, que si tu mañana vas a presentar ese codigo a una empresa no te cogen ni para hacer fotocopias. Haciendo lo que te sugiero mejora la legibilidad y da un aspecto mas profesional al codigo ;)

Un saludo.

EDIT::::::::::::::
Y encima creando variables en cualquier parte del codigo!!!
Imagen Enviada

Eso no lo hago yo ni en mis juegos y eso que son el maximo exponente de lo que no hay que hacer al desarrollar -por los gotos en algunos juegos y usar variables globales, y se medio perdona porque es basic-

#3

Escrito 24 mayo 2010 - 21:43

Al ver la cabecera he visto una posible solucion.

Tu la libreria Allegro donde la tienes? Con el resto de librerias del compilador o en la carpeta del proyecto? Porque si es en la carpeta del proyecto tendrias que probar mejor con
#include "allegro.h"

Porque ello hace que busque en la carpeta donde esta el ejecutable. Por si acaso.

Luego, otra cosa que no me gusta naaaaaada de nada: ¿Que hace un goto en c? Si me dices en un lenguaje como Basic que se basa en el uso de gotos vale pero... ¿En c? hace daño a la vista XD Ya estas diviendolo en varias funciones y haciendo un bucle que se repita mientras no se pulse escape.

Y con eso solucionado ya estará bastante mejor para ponerse a mirar mas a fondo el codigo. Yo, mientras no lo hagas, no pienso mirar mas a fondo que lo que he hecho. Y lo hago por tu bien porque es una buena practica de programacion.

Vamos, que si tu mañana vas a presentar ese codigo a una empresa no te cogen ni para hacer fotocopias. Haciendo lo que te sugiero mejora la legibilidad y da un aspecto mas profesional al codigo ;)

Un saludo.

EDIT::::::::::::::
Y encima creando variables en cualquier parte del codigo!!!
Imagen Enviada

Eso no lo hago yo ni en mis juegos y eso que son el maximo exponente de lo que no hay que hacer al desarrollar -por los gotos en algunos juegos y usar variables globales, y se medio perdona porque es basic-


A ver, el codigo lo tengo que entregar mañana asi que no puedo modificarlo mas.

He probado a poner #include "allegro.h" pero lo unico que he conseguido es que me salga la pantalla de allegro en negro y ya está :?

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#4

Escrito 24 mayo 2010 - 23:10

Bueno, entonces algo es algo. -Yo tengo que entregar mañana un proyecto de c++ y la mierda de eclipse gabab me saca fallos inexistentes, asi que estoy programando de cabeza y sin comprobar... espero acostarme a las 5 o empalmar mañana-

Ahora lo que hay que hacer es encontrar por que no muestra nada.

Yo creo que es porque usas la libreria stdio.h
Prueba a usar los comandos de Allegro para texto para que se muestre:
http://alleg.sourcef...n/alleg018.html

Si en vez de usar allegro usases la consola para que muestre las cosas los comandos printf funcionarian sin problemas, que yo sepa.

Si te es mucho problema quita el allegro y si quieres limpiar la consola para que se muestren las cosas limpias usa Conio.h con el comando system("cls"); cada vez que quieras limpiar la pantalla.

Un saludo.

PD: No te lo tomes a mal que lo que te decia en el anterior comentario era para que te quedase mejor ;)


EDIT::::::::::::::::::::..
En conio.h tienes comandos para cambiar los colores del texto o el color de fondo de la consola. Estos son textcolor y textbackground

Tambien tienes como alternativa al system("cls") el clrscn


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad