Cosas Que Se Llaman Igual Pero Que Son Diferentes Según El Lenguaje


Subject: Cosas Que Se Llaman Igual Pero Que Son Diferentes Según El Lenguaje
Buenos días!.

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


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


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:

primeraejecucion

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:

segundapasada



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
Description: Diferencias entre la clase Rect de Gambas y Rect de Python. 
Download
Filename: Animacion01.tar.gz
Filesize: 13.9 KB
Downloaded: 62 Time(s)
Animacion01.tar.gz
Description: Diferencias entre la clase Rect de Gambas y Rect de Python. 
Download
Filename: Animacion01.tar.gz
Filesize: 13.9 KB
Downloaded: 62 Time(s)
Animacion01.tar.gz
Description: Diferencias entre la clase Rect de Gambas y Rect de Python. 
Download
Filename: Animacion01.tar.gz
Filesize: 13.9 KB
Downloaded: 62 Time(s)

Subject: Re: Cosas Que Se Llaman Igual Pero Que Son Diferentes Según El Lenguaje
Si desde el punto de vista de gambas, tomamos un objeto rect como una similitud de una ventana.
Al desplazar desde el lado izquierdo, el lado derecho permanece constante.

El objeto rect en gambas va con el componente QT4 independiente de la clase Paint.

En Python el objeto rect va con la librería Pygame. (SDL1). A la hora de crear un objeto rect es muy
parecido a gambas. Claro que al dibujarlo cambia con la clase Paint.

En Pygame: Sin usar figuras rellenas.

Creación:
Citar:

pygame object for storing rectangular coordinates
Rect(left, top, width, height) -> Rect
Rect((left, top), (width, height)) -> Rect
Rect(object) -> Rect


Dibujar:

Citar:

pygame.draw.rect()
draw a rectangle shape
rect(Surface, color, Rect, width=0) -> Rect


En gambas. Con clase Paint:

Creación:

orect = New Rect(x, y, ancho, alto)


Paint.Rectangle(x, y, w, h)


Si usase SDL1/2 con gambas para dibujarlo, la cosa cambiaría...a menos que añada el componente QT4.

Saludos

Subject: Re: Cosas Que Se Llaman Igual Pero Que Son Diferentes Según El Lenguaje
Shell:

Citar:
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.

¿sabes que Benoit no sabe nada de python? Creo que lo comentó una vez en las listas de correo. Por lo tanto, no es de extrañar que pasen esas cosas.

Subject: Re: Cosas Que Se Llaman Igual Pero Que Son Diferentes Según El Lenguaje
jsbsan escribió: [Ver mensaje]
¿sabes que Benoit no sabe nada de python?


¿Por qué debería él ?

Profile PM  
Subject: Re: Cosas Que Se Llaman Igual Pero Que Son Diferentes Según El Lenguaje
Julio:

Citar:

¿sabes que Benoit no sabe nada de python? Creo que lo comentó una vez en las listas de correo. Por lo tanto, no es de extrañar que pasen esas cosas.


Naturalmente. Y no tiene por que. No sé realmente si el enfoca más la clase Rect a otros menesteres.
Pero como usa métodos muy curiosos que son ideales para la creación de juegos, seria de extrañar.

No creo que el solamente lo enfocase a ventanas de la librería QT.

El problema de esto es la costumbre del programador de trabajar muchos años con algo y encontrar algo totalmente distinto
en otro lenguaje. Adaptarse no debe ser nada fácil.

Siempre puedo crear mi propia clase rectángulo. Y picar de un lado y otro.
No creo que sea adecuado usar el componente QT4 y la librería SDL a la vez, por solo la clase Rect.
Con Paint cambia.

Saludos


Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1076s (PHP: -11% SQL: 111%)
SQL queries: 25 - Debug Off - GZIP Enabled