Crear Un Juego A Base De Preguntas Y Respuestas


Ir a la página 1, 2, 3  Siguiente

Objetivo: Crear Un Juego A Base De Preguntas Y Respuestas
buenas,

bueno parece que buenas ideas no me faltan pero si nivel de programación

aparte de hacer una linea de tiempo para facilitar el estudio en el programa VisorRV1960

se me ocurre que hacer un juego a base de preguntas y respuestas con al menos 3 niveles
(seria una forma de aprender divirtiéndose)

para niños, nivel 3
para jovenes, nivel 2
para adultos, nivel 1

con sistema de puntos, veamos que sale.

en principio seria elegir el nivel

en base al nivel las preguntas que se harán y sus respuestas

tablas de mejor puntaje (ranking)

supongo que tendré que hacer una base de datos exclusiva para el juego, poniendo la pregunta y la respuesta correcta...

hay varios sistemas, uno seria hacer la pregunta y esperar un respuesta correcta sino seria un fallo y sin puntos
otra podría ser la pregunta y poner varias respuestas a elegir

que piensan ustedes?

editado:
o tal vez hacer categorías, tipo: niños, jóvenes, adultos y dentro de cada categoría niveles que puedan ir del 1 al 5 sigo esquematizando de como seria el funcionamiento.

editado2:
otra idea es poner tiempo limite en los niveles mas altos para darle emoción jajajaj
en el nivel 4 un minuto para responder y en el nivel 5 solo el tiempo para tipear la respuesta jajajaja.

editado3:
hay que crear una tabla con lista de nombres de los jugadores con un password de ingreso.....

editado4:
después de elegir jugador (si no existe el jugador hacer un sistema de ingreso con nombre y contraseña)
y la categoría empieza el juego, se comienza con nivel 1 haciendo 5 preguntas si responde bien pasa a nivel dos siendo las preguntas mas difíciles y mayor cantidad
pasando por ejemplo de 5 a 10 preguntas así sucesivamente.
si no responde las 5 preguntas termina el juego y se anota el puntaje del jugador en la categoría jugada.

la interfaz de comienzo (croquis)

juegovisorrv1960

editado5:
tal vez sea mejor ponerle a los nombres de categoria : muy facil, facil, normal, dificil, muy dificil, experto.

necesitaria tres grupos de tablas, una tabla para los registros de los usuarios(nombre y passwd)
otra tabla para los records, y grupos de tablas para cada categoria con sus niveles, algo asi:

nombres de tablas:
records
registros

muyfacil1,muyfacil2,muyfacil3 etc
normal1,normal2....etc

los números son el sub nivel dentro del nivel porque cada tabla puede tener hasta miles de preguntas.

en cada tabla de preguntas las celdas podrían ser estas

id numero pregunta respuesta
1 1 En que ciudad nació Jesús? Nazaret
2 2 Como se llama la madre de Jesús María
3 3 Nombres de Cristo Jesús;Hijo del Hombre;Nazareno;Jesucristo ( varias respuestas correctas ) string[]
cuando hay varias respuestas correctas, creamos el string[] con split y despues recorremos el String[] si la respuesta del usuario coincide con alguna de los items del string[] la respuesta es correcta.

tabla registro

id numero usuario contraseña
1 1 Marcelo euh08~~sd
2 2 Adriana adri55511a


tabla records

id nivel sub nivel nombre puntos
1 2 3 Marcelo 320
2 2 2 Adriana 245

editado 6:
cuando se perdería el juego?
si por ejemplo elegimos el nivel 1 habría 10 preguntas en el subnivel 1, 15 en el sub nivel 2 etc

en el primer subnivel 1 si el participante falla en la respuesta 3 veces pierde
y así con los demás pudiendo o no variar el numero de tolerancia a errores según nuestro parecer.

CREATE TABLE "usuarios" ( "idusuario" integer NOT NULL PRIMARY KEY autoincrement,
"usuario" varchar(32) NOT NULL,
"passwd" varchar(16) NOT NULL)


CREATE TABLE "ranking" ( "idranking" integer NOT NULL PRIMARY KEY autoincrement,
"nivel" integer NOT NULL,
"subnivel" integer NOT NULL,
"usuario" varchar(32) NOT NULL,
"puntos" integer NOT NULL
)

CREATE TABLE "muyfacil1" ( "idmf1" integer NOT NULL PRIMARY KEY autoincrement,
"numero" integer NOT NULL,
"pregunta" text NOT NULL,
"respuesta" text NOT NULL,
"formato" text
)


importante: en la columna "formato" daremos una explicación del formato de la respuesta pues algunas pueden ser complejas como dar varios nombres separados por comas o puntos y comas u otras formas complejas de dar la respuesta.

Editado 7:

después de tener mas o menos la interfaz gráfica esquematizada analizamos como continuaremos

primero sera hacer funcionar la conexion a la base de datos




Public Sub Form_Open()
Me.Center
ArmarTabla()
AbrirConexionJuego()
CargarUsuarios()

End


Public Sub ArmarTabla()

CViewPociones.Columns.Count = 5

CViewPociones.Columns[0].Title = "Posición"
CViewPociones.Columns[0].Alignment = 3

CViewPociones.Columns[1].Title = "Categoría"
CViewPociones.Columns[1].Width = 90
CViewPociones.Columns[1].Alignment = 3

CViewPociones.Columns[2].Title = "Nivel"
CViewPociones.Columns[2].Width = 60
CViewPociones.Columns[2].Alignment = 3

CViewPociones.Columns[3].Title = "Nombre Jugador"
CViewPociones.Columns[3].Width = 110
CViewPociones.Columns[3].Alignment = 3
CViewPociones.Columns[3].Expand = True

CViewPociones.Columns[4].Title = "Puntos"
CViewPociones.Columns[4].Width = 60
CViewPociones.Columns[4].Alignment = 3

End

Private Sub AbrirConexionJuego()

ConexionJuego = New Connection

ConexionJuego.Type = "sqlite3"
ConexionJuego.Host = FMain.DirBD
ConexionJuego.Name = "JuegoRV1960"

Try ConexionJuego.Open
If Error Then
Message.Error("El fichero elegido no es una base de datos sqlite")
Return
Else
Print "conexion con exito"
Endif

End

Private Sub CerrarConexionJuego()
If ConexionJuego = Null Then Return
ConexionJuego.Close()
ConexionJuego = Null
End



segundo hacer funcionar la tabla de usuarios:
a- cargar usuarios registrados en el combobox
b- sistema de ingreso de usuarios nuevos
c- sistema de autentificacion de usuarios
a
Private Sub CargarUsuarios()
Dim resultado As Result

resultado = ConexionJuego.Exec("select * from 'usuarios'")

cbxUsuarios.Clear

Do While resultado.Available
usuarios.Add(resultado!usuario)
cbxUsuarios.Add(resultado!usuario)
Print resultado!usuario
resultado.MoveNext
Loop

End


b
Public Sub btnIngresar_Click()

If txtUsuario.Text = "" Or If Len(txtUsuario.Text) < 3 Then
Message.Warning("Nombre de usuario debe tener al menos 3 caracteres!")
txtUsuario.SetFocus
Return
Endif
If txtpasswd.Text = "" Or If Len(txtpasswd.Text) < 5 Then
Message.Warning("Ingrese una contraseña con al menos 5 caracteres!")
txtpasswd.SetFocus
Return
Endif

If NombreExiste() = True Then
Message.Warning("Ya existe el usuario, elija otro nombre!")
txtUsuario.Clear
txtUsuario.SetFocus
Return
' Print "el nombre ya existe"
Else
Print "ingresar nombre"
RegistrarUsuario()
Juego.CargarUsuarios()
Endif

Me.Close

End

Private Sub RegistrarUsuario()
Dim resultado As Result

resultado = Juego.ConexionJuego.Exec("insert into usuarios (idusuario,usuario,passwd) values(&1,&2,&3)", Null, txtUsuario.Text, txtpasswd.Text)

End


Private Function NombreExiste() As Boolean
Dim resultado As Result

resultado = Juego.ConexionJuego.Exec("select usuario from 'usuarios'")

Do While resultado.Available
If Trim$(txtUsuario.Text) = resultado!usuario Then
Return True
Break
Endif
resultado.MoveNext
Loop

Return False

End




c
Private Sub Autentificacion(nombre As String)
Dim resultado As Result
Dim passX As String
Dim usuarioX As String

resultado = ConexionJuego.Exec("select * from 'usuarios'")

Do While resultado.Available
If resultado!usuario = nombre Then
usuarioX = nombre
Print "contraseña de " & nombre & "=" & resultado!passwd
Print "contraseña tipeada=" & txtpasswd.Text
If txtpasswd.Text = resultado!passwd Then
identificacion = True
Break
Else
identificacion = False
Break
Endif
Else
identificacion = False
Endif

resultado.MoveNext
Loop

End

Public Sub btnComenzar_Click()

If Jugando = False Then
If cbxUsuarios.Index = 0 Then
btnComenzar.Text = "Terminar"
Jugando = True
Else
If txtpasswd.Text = "" Then
Message.Error("Ingrese contraseña por favor")
txtpasswd.SetFocus
Return
Endif
Autentificacion(Trim$(cbxUsuarios.Text))
If identificacion = False Then
Message.Error("Contraseña incorrecta, preste atención!")
txtpasswd.Clear
txtpasswd.SetFocus
Return
Endif

txtpasswd.Clear
txtRespuesta.Clear
btnComenzar.Text = "Terminar"
Jugando = True

txtLJugador.Text = cbxUsuarios.Text
MostrarPregunta()
txtRespuesta.SetFocus

Endif
Else
btnComenzar.Text = "Jugar"
txtLJugador.Text = "Invitado"
Jugando = False

Endif



End






tercero sera hacer las consultas sql, para hacer un ramdon a la tabla del nivel elegido o en progreso y así mostrar la pregunta
datos que necesito para hacer una pregunta:
1-que categoría eligió el usuario para saber en que tabla buscar (en los radiobutton ya puse en el evento clic así Categoria="normal" o Categoria="dificil" etc)
2-el nivel dentro de la categoria que empezara en uno y a medida que el usuario pase de nivel se incrementara en uno
3-el numero máximo de preguntas que contiene la tabla (este es el numero que usare con ramdon)

Private Sub MostrarPregunta()
Dim resultado, resultado2, resultado3 As Result
Dim MaxNum As Integer = 1
Dim elegida As Integer

resultado = ConexionJuego.Exec("SELECT numero FROM '" & categoria & Nivel & "'")

Do While resultado.Available
If resultado!numero > MaxNum Then
MaxNum = resultado!numero
Endif
resultado.MoveNext
Loop

Randomize
elegida = Rand(1, MaxNum)

resultado2 = ConexionJuego.Exec("SELECT * FROM '" & categoria & Nivel & "' where numero=" & elegida)

Do While resultado2.Available
Pregunta = resultado2!pregunta
Respuesta = resultado2!respuesta
resultado2.MoveNext
Loop

txtLPregunta.Text = Pregunta

End

Public Sub btnResponder_Click()

If Trim$(txtRespuesta.Text) = Respuesta Then
Print "acertaste"
txtRespuesta.Clear
txtRespuesta.SetFocus
LCDLPuntos.Text += INCREMENTA5
MostrarPregunta()
Else
Print "No es la respuesta"
Dec Vidas
Endif

End






cuarto: al finalizar el juego por errores o por llegar al máximo nivel sin perder jajajaj
hacer funcionar la tabla de ranking ya que tenemos los datos para ingresarlos, usuario, categoría, nivel , nombre, puntos.


Editado 8:

siguen las preguntas:
como plantear preguntas fáciles y difíciles, como agruparlas o catalogarlas?
formas de añadir dificultades a las respuestas ? tiempo, varias respuestas, que mas podría ser?
como hacer que el juego sea divertido y atractivo? tal vez sonidos, efectos visuales ,equilibrio en colores, que mas podría ser?

se escuchan todas las sugerencias


Editado 9:

imaginemos que la gente usa el juego, crea muchos usuarios con contraseñas, tambien la tabla rankins esta llena de anotaciones.....y viene una nueva version del programa, que remplaza todas las tablas de la version anterior....
se borrarian los usuarios creados y las anotaciones, algo que no sera agradable al usuario
entonces bien como resolvemos esto
se me ocurre hacer una nueva base de datos solo con las tablas usuarios y ranking separadas de las tablas de las preguntas. (actualizando solo la tabla de los versículos y la de preguntas.)
que solo se actualizarían si hay modificaciones sustanciales en la tabla....ufa cuando crees que resolves un problema inmediatamente se plantea otro
esto de programar no es nada fácil.....
sigo en las aventuras de programar y resolver planteos de programación.

mas adelante cuando el juego funcione bien y la base de preguntas tenga mas contenido, encriptare las contraseñas de usuarios con md5 asi nadie podra usar una identidad que no le corresponde aun explorando la base de datos sql, con algun programa como infodatabaseSql ajjajajajaj

última edición por v3ctor el Viernes, 31 Julio 2015, 20:38; editado 31 veces
Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
444

Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
Tengo que leerlo con más tiempo. Parece muy interesante.

Saludos

Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
progreso de la interfaz gráfica:

juego3


por ahora vengo resolviendo cuestiones de estructura, pronto empiezo con la interacción de todos los elementos.

Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
Private Function NombreExiste() As Boolean
Dim resultado As Result

resultado = Juego.ConexionJuego.Exec("select usuario from 'usuarios'")

Do While resultado.Available
If Trim$(txtUsuario.Text) = resultado!usuario Then
Return True
Break
Endif
resultado.MoveNext
Loop

Return False

End


primera vez que utilizo y comprendo mejor una funcion que devuelve true o false

la llamo desde aquí:

If NombreExiste() = True Then
Message.Warning("Ya existe el usuario, elija otro nombre!")
txtUsuario.Clear
txtUsuario.SetFocus
Return
' Print "el nombre ya existe"

última edición por v3ctor el Viernes, 24 Julio 2015, 20:32; editado 1 vez
Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
tt

Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
Private Sub MostrarPregunta()
Dim resultado, resultado2, resultado3 As Result
Dim MaxNum As Integer

Print "SELECT MAX(numero) FROM '" & categoria & Nivel & "'"
resultado = ConexionJuego.Exec("SELECT MAX(numero) FROM '" & categoria & Nivel & "'")

Do While resultado.Available
' ?????????????? alguien sabe como obtener el único dato obtenido por MAX(numero)
Loop

' Randomize
' Rand(0, MaxNum)
Print "numero maximo es=" & MaxNum
End

Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
Incluso puedes abreviar más la condición:

If NombreExiste() = True Then


porque NombreExiste al ser una función booleana es lo mismo que si pusieras:

If True Then
...

Así que abreviada sería así:

If NombreExiste() Then


Si por el contrario, queremos comparar con false, invertimos la comparación con Not

If Not NombreExiste() Then


que sería lo mismo que

If False Then
...


Es un poco una cuestión de estilo, porque resulta más legible y te ahorras unos cuantos caracteres que teclear. Es más natural para la gente de habla inglesa y en mi opinión, algo más elegante.

Nota: Cabe señalar que en los nombres de funciones no podemos olvidar el paréntesis final (aunque no tenga argumentos) para obtener el valor devuelto.

Saludos

Perfil MP  
Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
bueno sali del trancazo asi, pues nadie aporto una solución


Private Sub MostrarPregunta()
Dim resultado, resultado2, resultado3 As Result
Dim MaxNum As Integer = 0
Dim elegida As Integer

resultado = ConexionJuego.Exec("SELECT numero FROM '" & categoria & Nivel & "'")

Do While resultado.Available
If resultado!numero > MaxNum Then
MaxNum = resultado!numero
Endif
resultado.MoveNext
Loop

Print "maxnum=" & MaxNum
Randomize
elegida = Rand(0, MaxNum)
Print "Pregunta elegida es=" & elegida
End

Objetivo: Re: Crear Un Juego A Base De Preguntas Y Respuestas
progresos logrados...



Link

Ir a la página 1, 2, 3  Siguiente

Página 1 de 3


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.668s (PHP: -10% SQL: 110%)
Consultas SQL: 47 - Debug off - GZIP Activado