Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

miércoles, 1 de abril de 2015

Extra: Desarrollo Online de un marcador de records para un juego (V): Ahora creando el cliente en Gambas3

Desarrollo Online de un marcador de records para un juego (V): Ahora creando el cliente en Gambas3


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:
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. Public Sub leermarcador(url As String, jugador As String, pais As String, marcador As Integer)
  2.  
  3.   Dim contenidoweb As String
  4.  
  5.   If url = "" Then
  6.     url = "http://www.marcadorjsbsan.hostinazo.com/marcador.php"
  7.   Endif
  8.  
  9.   If jugador = "" And pais = "" And marcador = 0 Then
  10.     'no hago nada
  11.   Else
  12.     url = "http://www.marcadorjsbsan.hostinazo.com/marcador.php?jugador=" &TextBoxJugador.text & "&pais=" & TextBoxpais.text & "&marcador=" &Str$(ValueBoxPuntos.value)
  13.   Endif
  14.  
  15.   Application.busy = 1
  16.   contenidoweb = usandoHttpClient(url)
  17.   Application.busy = 0
  18.   TextAreaContenidoHtML.Text = contenidoweb
  19.  
  20.   limpiarCodigo(contenidoweb)
  21.  
  22. End


4) En esta funcion se llaman a su vez otras funciones
4.1) Funcion que se encarga de leer cualquier página web:
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. Public Function usandoHttpClient(DireccionUrl As String) As String
  3.  
  4.   Dim mihttp As New HttpClient
  5.   Dim contenido As String
  6.   Dim a As Integer = 0 'variable que nos sirve para no se exceda cierto tiempo en la descarga
  7.  
  8.   MiHttp.url = DireccionUrl
  9.   MiHttp.Get()
  10.  
  11.   While (Lof(MiHttp) = False And a < 10)
  12.     'espero 1 segundo o que llegue a>10
  13.     a = a + 1
  14.     Wait 1
  15.   Wend
  16.   If a = 10 Or Lof(MiHttp) = False Then
  17.     message("No ha sido posible conectarse al servidor \n No puedo comprobar si hay nueva versión")
  18.     Return
  19.   Endif
  20.   If Lof(MiHttp) Then
  21.     Read #MiHttp, contenido, Lof(MiHttp)
  22.   End If
  23.   Return contenido
  24.  
  25. End
4.2) Funcion que se encarga de limpiar el codigo (quitar caracteres no necesarios)
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. Public Sub limpiarCodigo(contenidoweb As String)
  3.  
  4.   Dim a As Integer
  5.   Dim lineas As String[]
  6.  
  7.   Dim id As String
  8.   Dim nombre As String
  9.   Dim puntos As String
  10.   Dim pais As String
  11.  
  12.   contenidoweb = Replace$(contenidoweb, "<br>""")
  13.   contenidoweb = Replace$(contenidoweb, "<tr>""")
  14.   contenidoweb = Replace$(contenidoweb, "</tr>""")
  15.   contenidoweb = Replace$(contenidoweb, "<td>""")
  16.   contenidoweb = Replace$(contenidoweb, "</td>""")
  17.   contenidoweb = Replace$(contenidoweb, "<th>""")
  18.   contenidoweb = Replace$(contenidoweb, "</th>""")
  19.   contenidoweb = Replace$(contenidoweb, "<table>""")
  20.   contenidoweb = Replace$(contenidoweb, "</table>""")
  21.   lineas = Split(contenidoweb, "\n\t"""True)
  22.  
  23.   For a = 0 To lineas.Max
  24.     lineas[a] = Trim(lineas[a])
  25.  
  26.   Next
  27.   lineas.Join("\n")
  28.   lineas = Split(contenidoweb, "\n\t"""True)
  29.  
  30.   If lineas[0] = "Connected successfully" Then
  31.     GridView1.rows.count = 0 'limpiamos el gridviews
  32.     For a = 1 To lineas.max Step 4
  33.       id = lineas[a]
  34.       nombre = lineas[+ 1]
  35.       pais = lineas[+ 2]
  36.       puntos = lineas[+ 3]
  37.       rellenagridview(id, nombre, pais, puntos)
  38.  
  39.     Next
  40.  
  41.   Else
  42.     Message.Error("No ha sido posible leer el marcador online")
  43.   Endif
  44.  
  45. End
4,3) Cargar los datos en el gridview:
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2. Public Sub rellenagridview(id As String, nombre As String, pais As String, punto As String)
  3.  
  4.   GridView1.rows.count += 1
  5.  
  6.   GridView1[GridView1.rows.count - 10].text = nombre
  7.   GridView1[GridView1.rows.count - 11].text = pais
  8.   GridView1[GridView1.rows.count - 12].text = punto
  9.  
  10. 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:
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. Public Sub _new()
  2.  
  3. End
  4.  
  5. Public Sub Form_Open()
  6.  
  7.   definegrid()
  8.  
  9. End
  10.  
  11. Public Sub definegrid()
  12.  
  13.   With GridView1
  14.     .header = 3
  15.     .rows.count = 0
  16.     .columns.count = 3
  17.     .Columns[0].title = "Jugador"
  18.     .Columns[1].title = "Pais"
  19.     .Columns[2].title = "Puntos"
  20.     .Columns[0].width = 100
  21.     .Columns[1].width = 100
  22.     .Columns[2].width = 50
  23.     .font.name = "Times"
  24.     .font.size = 12
  25.  
  26.   End With
  27.  
  28. End
  29.  
  30. Public Sub ButtonActualizar_Click()
  31.  
  32.   leermarcador("", TextBoxJugador.text, TextBoxpais.text, ValueBoxPuntos.value)
  33.  
  34. End
  35.  
  36. Public Sub ButtonLeerMarcador_Click()
  37.  
  38.   leermarcador(""""""0)
  39.  
  40. End




Codigo completo del programa:
enlace de descarga: alojado en drive google

Mostrando el marcador en Gambas3

No hay comentarios:

Publicar un comentario en la entrada

A falta de donativos... un poco de publicidad