Desarrollo Online de un marcador de records
para un juego (V):
Ahora creando el cliente en Gambas3
Ayer vimos, como era hacer el cliente en python, (
enlace ) hoy lo vamos ha hacerlo en gambas3.
Estos son los pasos a seguir:
1) Crear un nuevo proyecto en gambas3.
Crear un nuevo proyecto, preferiblemente usando qt4, y elegir la carpeta y escribir el nombre del proyecto. Yo le he puesto "LecturaEscrituraPaginaWeb"
2) Uso de gb.net y gb.net.crul
En la pestaña de Proyecto/Propiedades/Componentes elegir esos componentes que nos permitiran tener acceso a las
clases para lectura de la página web
3) Creamos la funcion que lee los datos:
Public Sub leermarcador(url As String, jugador As String, pais As String, marcador As Integer)
Dim contenidoweb As String
If url = "" Then
url = "http://www.marcadorjsbsan.hostinazo.com/marcador.php"
Endif
If jugador = "" And pais = "" And marcador = 0 Then
'no hago nada
Else
url = "http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=" &TextBoxJugador.text & "&pais=" & TextBoxpais.text & "&marcador=" &Str$(ValueBoxPuntos.value)
Endif
Application.busy = 1
contenidoweb = usandoHttpClient(url)
Application.busy = 0
TextAreaContenidoHtML.Text = contenidoweb
limpiarCodigo(contenidoweb)
End
4) En esta funcion se
llaman a su vez otras funciones
4.1) Funcion que se encarga de leer cualquier página web:
Public Function usandoHttpClient(DireccionUrl As String) As String
Dim mihttp As New HttpClient
Dim contenido As String
Dim a As Integer = 0 'variable que nos sirve para no se exceda cierto tiempo en la descarga
MiHttp.url = DireccionUrl
MiHttp.Get()
While (Lof(MiHttp) = False And a < 10)
'espero 1 segundo o que llegue a>10
a = a + 1
Wait 1
Wend
If a = 10 Or Lof(MiHttp) = False Then
message("No ha sido posible conectarse al servidor \n No puedo comprobar si hay nueva versión")
Return
Endif
If Lof(MiHttp) Then
Read #MiHttp, contenido, Lof(MiHttp)
End If
Return contenido
End
4.2) Funcion que se encarga de limpiar el codigo (quitar caracteres no necesarios)
Public Sub limpiarCodigo(contenidoweb As String)
Dim a As Integer
Dim lineas As String[]
Dim id As String
Dim nombre As String
Dim puntos As String
Dim pais As String
contenidoweb = Replace$(contenidoweb, "<br>", "")
contenidoweb = Replace$(contenidoweb, "<tr>", "")
contenidoweb = Replace$(contenidoweb, "</tr>", "")
contenidoweb = Replace$(contenidoweb, "<td>", "")
contenidoweb = Replace$(contenidoweb, "</td>", "")
contenidoweb = Replace$(contenidoweb, "<th>", "")
contenidoweb = Replace$(contenidoweb, "</th>", "")
contenidoweb = Replace$(contenidoweb, "<table>", "")
contenidoweb = Replace$(contenidoweb, "</table>", "")
lineas = Split(contenidoweb, "\n\t", "", True)
For a = 0 To lineas.Max
lineas[a] = Trim(lineas[a])
Next
lineas.Join("\n")
lineas = Split(contenidoweb, "\n\t", "", True)
If lineas[0] = "Connected successfully" Then
GridView1.rows.count = 0 'limpiamos el gridviews
For a = 1 To lineas.max Step 4
id = lineas[a]
nombre = lineas[a + 1]
pais = lineas[a + 2]
puntos = lineas[a + 3]
rellenagridview(id, nombre, pais, puntos)
Next
Else
Message.Error("No ha sido posible leer el marcador online")
Endif
End
4,3) Cargar los datos en el gridview:
Public Sub rellenagridview(id As String, nombre As String, pais As String, punto As String)
GridView1.rows.count += 1
GridView1[GridView1.rows.count - 1, 0].text = nombre
GridView1[GridView1.rows.count - 1, 1].text = pais
GridView1[GridView1.rows.count - 1, 2].text = punto
End
5) Creamos el entorno gráficoun formulario con los siguientes controles:
- Un gridview para mostrar los datos que vamos a leer.
- Dos textbox para la recogida de datos del jugador y de su pais
- Un valuebox para tomar el dato de la puntuación del jugador
- Dos botones: uno para hacer una consulta al marcador y otro para enviar datos y consultar el marcador.
La diferencia de estos dos botones, es que en uno mandaremos solo la url sin datos, y el otro con datos
Nota:
He añadido un TextArea, para mostrar el contenido de lo que se lee de la página web.
Este es el código a añadir al formulario:
Public Sub _new()
End
Public Sub Form_Open()
definegrid()
End
Public Sub definegrid()
With GridView1
.header = 3
.rows.count = 0
.columns.count = 3
.Columns[0].title = "Jugador"
.Columns[1].title = "Pais"
.Columns[2].title = "Puntos"
.Columns[0].width = 100
.Columns[1].width = 100
.Columns[2].width = 50
.font.name = "Times"
.font.size = 12
End With
End
Public Sub ButtonActualizar_Click()
leermarcador("", TextBoxJugador.text, TextBoxpais.text, ValueBoxPuntos.value)
End
Public Sub ButtonLeerMarcador_Click()
leermarcador("", "", "", 0)
End
Codigo completo del programa:enlace de descarga:
alojado en drive google
|
Mostrando el marcador en Gambas3
|
No hay comentarios:
Publicar un comentario