Cómo hacer un programa que lance preguntas aleatorias? en acces, C, etc..

Pues eso quiero hacer un programa tipo "quiero ser millonario" o "trivial pursuit" en algun programa sencillito, ya sea en C, Access u otro parecido. Conoceis algo para poder hacer algo rápido para incluir las preguntas y respuestas.?

algo tipo asi:

Imagen

no tiene que ser tan bonito pero si la idea de la presentacion de preguntas y respuestas.
Visual Basic
Flash + AS
PHP + MySQL
Deduzco que no tienes ni idea de programación, ya que algo así es realmente muy sencillo de hacer... Depende de para que lo quieras tendrás que elegir lenguaje/librerías/herramientas.
Bueno de programación se bastante de C (pero no C++) y bastante de access. Pero librerias gráficas nidea en C, y en access no recuerdo ahora mismo si se puede hacer porque lo toqué hace bastante años.

De los lenguajes que menciona el amigo Zekisoft los he tocado con pinzas, en alguno me he examinado pero hace bastante años y estoy ahora muy perdido, lo que tengo más reciente es C.
Primero tendrás que elegir un lenguaje, después una librería gráfica (gtk, qt, etc) que soporte ese lenguaje (si es que lo quieres hacer con gui), la forma de almacenar las preguntas y las respuestas (base de datos, xml, etc)... Y juntarlo todo.

Lo puedes hacer con cualquier lenguaje, si quieres C pues C. Probablemente sería más rápido y sencillo con python y pyqt. En fin, hay mil posibilidades.
amuchamu escribió:Primero tendrás que elegir un lenguaje, después una librería gráfica (gtk, qt, etc) que soporte ese lenguaje (si es que lo quieres hacer con gui), la forma de almacenar las preguntas y las respuestas (base de datos, xml, etc)... Y juntarlo todo.

Lo puedes hacer con cualquier lenguaje, si quieres C pues C. Probablemente sería más rápido y sencillo con python y pyqt. En fin, hay mil posibilidades.


bueno python lo toqué también hace bastante tiempo, hacerlo en C sin ninguna libreria gráfica no me lleva ni 15 minutos, hacer un programa así no lleva nada de tiempo, el problema viene a la hora de trabajar el apartado gráfico que no tengo mucha idea y cual puede ser la solución más fácil. La cosa es si hacer por base de datos o por simplemente por ficheros.
Yo personalmente (que llevo un tiempo usando python y me encanta) usaría:
+ Python: Sencillo de aprender, con muchísimas librerías a tu disposición y compatible con Windows/Linux/Mac y en general con cualquier SO que tenga un intérprete.
+ Pygame: Podrás gestionar toda la parte gráfica, eventos, música, etc. de forma sencilla y con resultados vistosos. Si prefieres algo mas sencillo optaría por PyQt.
+ SQLite: SGBD muy sencillo pero con potencia de sobra para guardar preguntas, respuestas, usuarios, estadísticas y todo lo que quieras.

Si no quieres usar Python, tiraría por Java+Java2D+algún SGBD sencillito.
Bueno en access sería muy fácil ...

Creas una tabla (Id (Autonumerico) , Pregunta(texto), Rpta 1(texto), Rpta2, Rpa3, Rpa4, RptCorrecta)... Luego usando algo de programación visual basic para aplicaciones y haciendo tu formularios con eventos tienes algo como lo que pides.

Saludos,
Korso10 escribió:Yo personalmente (que llevo un tiempo usando python y me encanta) usaría:
+ Python: Sencillo de aprender, con muchísimas librerías a tu disposición y compatible con Windows/Linux/Mac y en general con cualquier SO que tenga un intérprete.
+ Pygame: Podrás gestionar toda la parte gráfica, eventos, música, etc. de forma sencilla y con resultados vistosos. Si prefieres algo mas sencillo optaría por PyQt.
+ SQLite: SGBD muy sencillo pero con potencia de sobra para guardar preguntas, respuestas, usuarios, estadísticas y todo lo que quieras.

Si no quieres usar Python, tiraría por Java+Java2D+algún SGBD sencillito.


tengo que probar denuevo ese python porque hace tela que no lo toco y estoy perdidísimo ahora, me lo estudiaré en cuanto tenga algo de tiempo aver si soy capaz de hacer algo. Gracias por la sugerencia la tomaré en cuenta.

renzo_yugi escribió:Bueno en access sería muy fácil ...

Creas una tabla (Id (Autonumerico) , Pregunta(texto), Rpta 1(texto), Rpta2, Rpa3, Rpa4, RptCorrecta)... Luego usando algo de programación visual basic para aplicaciones y haciendo tu formularios con eventos tienes algo como lo que pides.

Saludos,


es lo primero que pensé, si en access tiene que ser cosa de 10 minutos haciendos tablas con sus campos como mencionas, pero lo que no acabo de ver es como sería la forma de gestionarlo a la hora de los formularios, es algo que también lo tengo que mirar, pero me parece la opción más rápida y cómoda.

Gracias por el comentario.
Por poder puedes hacerlo en modo consola incluso, hasta con las preguntas hardcoded.

Pero lo suyo sería con una librería gráfica y un xml, txt plano o base de datos si quieres ir añadiendo preguntas de forma cómoda luego.

O incluso en php y jugarlo en el navegador. Base de datos con preguntas, un form y 4 lineas de código para acceder a la bbdd/comprobar relación pregunta-respuesta/controlar la pregunta o fallos acumulados.
Que tal en C#? He hecho varios juegos para windows con el, y me ha dado buenos resultados, por no decir que si tienes conocimientos de java o C++ es jodidamente sencillo.

Sino Python seria la otra elección.
Como han dicho algunos compañeros, primero debes decidir en que lenguaje vas a programarlo.
Si quieres algo sencillo y rápido usa VB o Java o parecidos. Si quieres algo más elaborado escoge C, junto a una buena librería para GUI.

Otra opción que creo que nadie ha comentado es el uso de C + OpenGL / Direct3D. Si vas a hacerlo solo para Windows la implementación de una ventana en D3D (Direct3D) es muy fácil, y mostrar textos y gráficos también lo es. (Y lo mismo para OpenGL si usas GLU)
El único problema que te podría presentar es si quieres usar controles (tipo campos de texto). D3DX lleva alguno, pero son un poco rollo de implementar.

No pretendo hacer spam ni mucho menos, pero en mi foro (verás el link en mi perfil/sig) tengo un tutorial en el qual se hace desde 0 un ahorcado en C, sin uso de gráfica ni nada, solo consola de comandos. Quizás te vaya bien para coger ideas sobre la estructuración de tu juego.
También, si al final te decides por D3D, tengo una librería propia (de hecho de momento solo son archivos de código, no libreria) en C++ para D3D9 que incluyen todos los controles (textbox, checkbox, label, button, etc.).
Echale una ojeada si quieres.


Puestos a comentar, la idea de rintin de hacerlo a base de PHP es muy buena. Conseguirás muy buenos resultados en muy poco tiempo, además de la opción de usar bases de datos MySQL para guardar las preguntas y respuestas. Y podrías hacer una buena interfaz en cuestión de segundos si te manejas bien en CSS.

Lo que viene ahora ya es más paranoia, así que quizás te lo quieras saltar. Y te aviso que la paranoia es grande grande xd

Mira, otra forma de hacerlo, en C, aunque es un poco más complicada y no muy convencional, eso sí, es muy práctica, sería mediante el uso de structs y punteros de memoria.
Imaginate que guardas en un archivo .txt en el siguiente formato:
int: posibles respuestas
int: respuesta correcta
char*: cadena

Podrías definir un par de estructuras de la siguiente forma:
struct cabecera{
int respuestas;
int correcta;
};
struct pregunta{
cabecera cb;
char *pregunta;
char *respuesta[4]; //Asumiend un máximo de 4 respuestas posibles
};

//Código
//Lees el archivo por completo:
FILE *fp = fopen("archivo", "rb"); //Abrimos en modo binario!
fseek(0, SEEK_END);
int size = ftell(fp);
rewind(fp);

char *buffer = (char*)malloc(size);
memset(buffer, 0, size); //Se podría no poner esta linea
fread(buffer, 1, size, fp);

//Leemos preguntas respuestas:
while(buffer){
     pregunta *pg = (pregunta*)buffer;
     //Seguramente fallaría al asignar las cadenas de texto, debido a que son punteros de los cuales no se sabe el tamaño, en cuyo caso haríamos:
/*    buffer += sizeof(cb);
        pg->pregunta = (char*)buffer;
        buffer += strlen(pg->pregunta);
        pg->respuesta[0] = (char*)buffer;
        buffer += strlen(pg->respuesta[0]);
        hasta resp[3], y no usando el código de a continuación
*/
     buffer += sizeof(cb);
     buffer += strlen(pg->pregunta);
     buffer += strlen(pg->respuesta[0]);
     buffer += strlen(pg->respuesta[1]);
     buffer += strlen(pg->respuesta[2]);
     buffer += strlen(pg->respuesta[3]);
}

/* No está probado ni nada, pero a nivel teórico es perfectamente posible. Ten en cuenta que
este sistema es lo mismo que usar una base de datos.
Hay una cosa que no estoy seguro, depende de como guardes las cadenas de texto en el archivo binario sería necesario que en las "buffer += strlen(...)" le añadieras un " + 1"
     "buffer += strlen(pg->respuesta[2]) + 1;"
Luego puedes ir guardando estas preguntas en un vector de la struct pregunta o lo que sea.

11 respuestas