Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Últimos temas

Estadísticas del foro
  • Mensajes del foro:1,251
  • Temas del foro:267
  • Miembros:74
  • Último miembro:silex


Enviado por: Shell
23-07-2020, 11:49
Foro: General
- Respuestas (7)

Buenas!.

Pues comencemos. Cool

Algo que solemos hacer cuando queremos desplazar un sprite por llamarlo de alguna forma.
Ejemplo, un cuadrado dentro de un DrawingArea. Es que si lo hacemos con teclado, tenemos
que crear un grupo de sentencias condicionales, si queremos desplazar a la izquierda, a la derecha..etc.
Eso puede alargar el código.

Podemos usar las colecciones. Imaginar que queremos mediante la pulsación de una tecla
cambiar el color de fondo de un DrawingArea. Si, podemos usar las condicionales también.
Pero podemos ahorrarnos eso.

Bien. El primer problema que me encuentro es:
Usar el evento KeyPress del propio DrawingArea para saber que tecla se ha pulsado y donde lo voy a usar ¿ no ?.
Pues no. Se debe usar el evento KeyPress del formulario.

Tenemos un formulario con tan solo un DrawingArea:

GAMBAS
  1. Public Sub Form_KeyPress()
  2.  
  3.   Dim colores As Collection = ["r": Color.red, "a": Color.yellow, "b": Color.blue, "v": Color.Green]
  4.     
  5.   If colores.Exist(Lower(Key.text)) Then drw.Background = colores[Lower(Key.text)]
  6.  



Podía haber añadido que se mostrase la combinación de colores en la barra de títulos, pero ahora no me acuerdo de ColorInfo. Blush

¿ Cómo lograríamos el movimiento si fueran las teclas del cursor ?.

En este código voy a usar para desplazar la figura, los cursores y ademas el ratón. Nos interesa la parte de los cursores.
Como dicen en otro lenguaje...  Rolleyes ...la clase rect es nuestra amiga.

GAMBAS
  1. Const LADO As Integer = 20
  2.  
  3. Private coordenada As Integer[] = [0, 0]
  4. Private unrectangulo As New Rect
  5. Private movimiento As Boolean
  6.  
  7. Public Sub Form_Open()
  8.  
  9.   Me.Title = "Movimiento por mapeado de teclas"
  10.  
  11.   coordenada[0] = (drw.w - LADO) / 2
  12.   coordenada[1] = (drw.h - LADO) / 2
  13.  
  14.  
  15. Public Sub Form_KeyPress()
  16.  
  17.   Dim direccion As Collection = [Str(Key.Left): [-5, 0], Str(Key.Right): [5, 0], Str(Key.up): [0, -5], Str(Key.Down): [0, 5]]
  18.  
  19.   If direccion.Exist(Str(Key.code)) Then
  20.     coordenada[0] += direccion[Key.code][0]
  21.     coordenada[1] += direccion[Key.code][1]
  22.     drw.Refresh
  23.  
  24.  
  25. Public Sub drw_Draw()
  26.  
  27.   With unrectangulo
  28.     .X = coordenada[0]
  29.     .y = coordenada[1]
  30.     .W = LADO
  31.     .H = LADO
  32.  
  33.   Paint.LineWidth = 2
  34.   Paint.Brush = Paint.Color(Color.Green)
  35.   Paint.Rectangle(coordenada[0], coordenada[1], LADO, LADO)
  36.   Paint.Stroke
  37.  
  38.  
  39. Public Sub drw_MouseDown()
  40.  
  41.   If unrectangulo.Contains(Mouse.x, Mouse.Y) Then movimiento = True    
  42.  
  43.  
  44. Public Sub drw_MouseMove()
  45.  
  46.   If movimiento Then
  47.     coordenada[0] = Mouse.x - LADO / 2
  48.     coordenada[1] = Mouse.y - LADO / 2
  49.   drw.Refresh
  50.  
  51.  
  52. Public Sub drw_MouseUp()
  53.  
  54.   movimiento = False
  55.  



Como sabéis la clave de una colección es una cadena que es lo que uso al convertir el código de la tecla pulsada.
Si imprimiésemos una de las teclas del cursor, no veríamos mucho en la consola de Gambas

Y ahora voy a intentar subir el código. Smile

No he usado velocidad. Según sea derecha, izquierda, arriba o abajo. Siempre uso un valor constante de cinco que o bien sumo o resto
a la coordenada x o y. Si lo sé no he usado diagonales...eso seria complicarlo. Tongue

Saludos

Pues no parece que se vea el formato del código de Gambas. Undecided

Imprimir


Enviado por: Shordi
23-07-2020, 10:57
Foro: Sobre gambas-es.org
- Respuestas (12)

Hacía falta y me parece magnífico.

Es curioso que yo, que ya solo soy lector pasivo, sea el primero pero alguien tiene que decirlo:

Gracias Jesús. Magnífico trabajo.

Un saludo a todos.

Imprimir


Enviado por: jguardon
22-07-2020, 23:07
Foro: Sobre gambas-es.org
- Sin respuestas

Bienvenidos a los nuevos foros de gambas-es.org.

Tras un delicado proceso de estudio y evaluación de posibilidades, he decidido dar el paso y cambiar de sistema de foro por los motivos que ya comenté anteriormente. Lamentablemente todos los intentos por importar los contenidos al nuevo foro han fracasado y no merece la pena seguir perdiendo más tiempo en ello, por lo que -no sin bastante esfuerzo- he podido volver a poner en línea el antiguo foro sólo para consultas con la imposibilidad de publicar o registrarse. Es decir, el foro antiguo quedará como herramienta de consulta y referencia por tiempo indefinido (esto quiere decir, mientras pueda funcionar teniendo en cuenta las actualizaciones del servidor). Han sido 11 años hasta la fecha de bastante actividad y valiosísimos contenidos, por lo que haré todo los esfuerzos necesarios por mantenerlo online siempre.

Para futuras referencias, el acceso al foro antiguo es el siguiente: https://foro.gambas-es.org


De ahora en adelante, iré haciendo los ajustes necesarios en este nuevo foro y en base a los problemas que podáis detectar iremos afinando el instrumento.

Espero que todos podamos disfrutar de la sencillez y claridad que se ha pretendido obtener y para cualquier consulta o sugerencia podéis abrir un hilo en el foro de la Comunidad, "Sobre gambas-es"

Para hacer pruebas de publicación y jugar con el nuevo editor de texto, os recomiendo que uséis el foro Off-topic/Sandbox, ya que no es visible al público y además se purga periódicamente.

Saludos

Imprimir