Ampliando el juego 2

Habíamos quedado en agregarle a este juego la posibilidad de llevar puntajes y jugadores.

Luego de muchos intentos, la mejor solución encontrada fue crear una base de datos sqlite2 llamada mibase2, con una tabla llamada jugadores y con solo dos items: Nombre y puntaje.

La base la creamos con el gestor de base de datos tal como hicimos con la agenda(Si no lo recuerdas puedes ver este enlace).Luego la guardamos en la carpeta de datos del proyecto, que se encuentra en el árbol izquierdo del IDE.

Agregamos lo siguiente al principio de FMain

PRIVATE hconn AS Connection
PRIVATE hresul AS result
PUBLIC FUNCTION ConectarBase() AS Boolean

IF hconn <> NULL THEN RETURN FALSE

hconn = NEW Connection
hconn.Host = Application.Path
hconn.name = “mibase2”
hconn.type = “sqlite2”
TRY hconn.Open()
IF ERROR THEN
hconn = NULL
Message.Error(“error al conectar con la base”)
RETURN TRUE
ENDIF
RETURN FALSE

END

Lo único que cambia es el host o ubicación de la base de datos, es la línea destacada en negrita y se refiere a la ubicación dentro del directorio del programa(Application.Path) Esto nos facilita portar el programa a otro equipo sin preocuparnos por las rutas.

Además demos agregar el siguiente código en el evento open de Fmain para que nos muestre los datos:

PUBLIC SUB Form_Open()
DIM Clave AS String
DIM filtro AS String
tabla.Clear ‘limpiar tabla

IF ConectarBase() THEN RETURN

tabla.Columns.Count = 2
tabla.Columns[0].text = “Nombre”
tabla.Columns[0].Width = 120
tabla.Columns[0].Alignment = Align.Center
tabla.Columns[1].text = “puntaje”
tabla.Columns[1].Alignment = Align.Center
tabla.Columns[1].Width = 20

hresul = hconn.Exec(“Select * from jugadores”) ‘consulta sql

DO WHILE hresul.Available

Clave = hresul[“Nombre”]

tabla.Add(Clave, Clave)

tabla[Clave][1] = hresul[“puntaje”]

hresul.MoveNext()

LOOP

END

Donde tabla es un columview y todo este código ya fue explicado en el proyecto de la agenda. Básicamente lo que hace es conectarse a la base y rellenar la tabla con los datos.

Vamos a crear ahora algunos procedimientos para poder llamarlos desde más de un evento sin tener que reescribirlos. Lo ideal sería ponerlos en módulos, pero como no he tenido tiempo de explorar ese tema los voy a crear directamente dentro de los formularios.

En FMain agregamos los siguientes:

Procedimiento asignar

PUBLIC SUB asignar()

DIM Clave AS String
DIM filtro AS String
txtjugador.text = tabla.Current.Key
filtro = txtjugador.text

IF ConectarBase() THEN RETURN

hresul = hconn.Exec(“Select * from jugadores where nombre like ‘” & filtro & “‘”)

Clave = hresul[“Nombre”]

TextBox1.Text = hresul[“puntaje”]

END

Procedimiento actualizar

PUBLIC SUB actualizar()

DIM hresul AS Result

IF tabla.Current = NULL THEN RETURN

IF ConectarBase() THEN RETURN

hresul = hconn.Edit(“jugadores”, “Nombre=&1”,
tabla.Current.Key)
fdata.runedit(hresul)
tabla.Current[0] = hresul[“Nombre”]
tabla.Current[1] = hresul[“puntaje”]
cerrarconexion()
asignar

END

 

Anuncios
Esta entrada fue publicada en programación y etiquetada . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s