Ayer me lleve la desagradable sorpresa que la clase Rect de gambas no es igual a la clase Rect de Python.
En la clase Rect, tenemos distintas propiedades. Ejemplo: X y Left. Y y Top, etc.
Mientras que en Python X y Left deben ser iguales, al igual que ocurre con Y y Top.
En gambas Left no es igual. Al cambiar esta, el ancho del rectángulo cambia, manteniendo fija la propiedad Right.
En Pyhon Si cambias Left, se desplaza Right, manteniendo el ancho del rectángulo.
No comprendo como en gambas si tenemos un rectángulo con unas propiedades determinadas, ancho y alto.
Se cambian estas al cambiar el lugar del emplazamiento del rectángulo en un área de dibujo.
Así este código traído a gambas desde Python: ( El movimiento del rectángulo siempre va ser en diagonal. Debe ser así.)
' Mover bloque
Select Case bloque["dir"]
Case ABAJOIZQUIERDA
bloque["rect"].left -= VELOCIDADMOVIMIENTO
bloque["rect"].top += VELOCIDADMOVIMIENTO
Case ABAJODERECHA
bloque["rect"].left += VELOCIDADMOVIMIENTO
bloque["rect"].top += VELOCIDADMOVIMIENTO
Case ARRIBAIZQUIERDA
bloque["rect"].left -= VELOCIDADMOVIMIENTO
bloque["rect"].top -= VELOCIDADMOVIMIENTO
Case ARRIBADERECHA
bloque["rect"].left += VELOCIDADMOVIMIENTO
bloque["rect"].top -= VELOCIDADMOVIMIENTO
End Select
Select Case bloque["dir"]
Case ABAJOIZQUIERDA
bloque["rect"].left -= VELOCIDADMOVIMIENTO
bloque["rect"].top += VELOCIDADMOVIMIENTO
Case ABAJODERECHA
bloque["rect"].left += VELOCIDADMOVIMIENTO
bloque["rect"].top += VELOCIDADMOVIMIENTO
Case ARRIBAIZQUIERDA
bloque["rect"].left -= VELOCIDADMOVIMIENTO
bloque["rect"].top -= VELOCIDADMOVIMIENTO
Case ARRIBADERECHA
bloque["rect"].left += VELOCIDADMOVIMIENTO
bloque["rect"].top -= VELOCIDADMOVIMIENTO
End Select
Lo que provocará con el tiempo que el rectángulo vaya aumentando de altura y disminuyendo su anchura.
Y deba ser sustituido por este para que funcione:
Select Case bloque["dir"]
Case ABAJOIZQUIERDA
bloque["rect"].x -= VELOCIDADMOVIMIENTO
bloque["rect"].y += VELOCIDADMOVIMIENTO
Case ABAJODERECHA
bloque["rect"].x += VELOCIDADMOVIMIENTO
bloque["rect"].y += VELOCIDADMOVIMIENTO
Case ARRIBAIZQUIERDA
bloque["rect"].x -= VELOCIDADMOVIMIENTO
bloque["rect"].y -= VELOCIDADMOVIMIENTO
Case ARRIBADERECHA
bloque["rect"].x += VELOCIDADMOVIMIENTO
bloque["rect"].y -= VELOCIDADMOVIMIENTO
End Select
Case ABAJOIZQUIERDA
bloque["rect"].x -= VELOCIDADMOVIMIENTO
bloque["rect"].y += VELOCIDADMOVIMIENTO
Case ABAJODERECHA
bloque["rect"].x += VELOCIDADMOVIMIENTO
bloque["rect"].y += VELOCIDADMOVIMIENTO
Case ARRIBAIZQUIERDA
bloque["rect"].x -= VELOCIDADMOVIMIENTO
bloque["rect"].y -= VELOCIDADMOVIMIENTO
Case ARRIBADERECHA
bloque["rect"].x += VELOCIDADMOVIMIENTO
bloque["rect"].y -= VELOCIDADMOVIMIENTO
End Select
A lo que me refiero es que siendo lenguajes de programación y teniendo tanta similitud en algo,
se empeñan por hacerlas distintas, creando confusión al programador.
Lo curioso del tema es que luego en esta parte del código a la hora de dibujar el rectángulo
y usar propiedades X e Y se pueda dibujar el rectángulo usando las propiedades Left y Top.
Paint.Rectangle(bloque["rect"].left, bloque["rect"].top, bloque["rect"].width, bloque["rect"].height)
Primera Pasada:
Fijaros la similitud entre x y Left. Como cambiando Left, disminuye el ancho del rectángulo y como la propiedad Right queda intacta.
Segunda Pasada:
Os añado el código. He creado un punto de interrupción, podéis ejecutarlo mediante F5.
Ejecutar con F5 ir abajo y pinchar en Observar para ver las propiedades del rectángulo.
( Curioso que las opciones de depuración se almacenen de alguna forma en el proyecto ).
Saludos
Animacion01.tar.gz | ||
Descripción: | Diferencias entre la clase Rect de Gambas y Rect de Python. | Descargar |
Nombre del archivo: | Animacion01.tar.gz | |
Tamaño: | 13.9 KB | |
Descargado: | 60 veces |
Animacion01.tar.gz | ||
Descripción: | Diferencias entre la clase Rect de Gambas y Rect de Python. | Descargar |
Nombre del archivo: | Animacion01.tar.gz | |
Tamaño: | 13.9 KB | |
Descargado: | 60 veces |
Animacion01.tar.gz | ||
Descripción: | Diferencias entre la clase Rect de Gambas y Rect de Python. | Descargar |
Nombre del archivo: | Animacion01.tar.gz | |
Tamaño: | 13.9 KB | |
Descargado: | 60 veces |