Cursor con Pygame

Publicado por Daphnes Nohansen Hyrule
hace 10 años

<p>hola, buenas noches a todos, esta es la primera vez que posteo en esta comunidad, y queria hacerles una pequeña duda acerca del modulo mouse sobre pygame.</p>

<p>veran, estuve aprendiendo un poco a usar el mouse para mover unos ciertos rectangulos, usando el modulo pygame.mouse() de pygame. y tenia una duda sobre 2 de los metodos de ese modulo</p>

<p>primero, el pygame.mouse.get_pos(), por que siempre se requiere una variable x(o un ancho) y una variable y(o un alto), para que el get_pos() funcione?, como es que realmente funciona el metodo?</p>

<p>segundo, cuando use el get_pos() en un rectangulo, le di las siguentes instrucciones que hicieron que cuando moviera el rectangulo, este hiciera que el cursor siempre quedara al centro de el rectangulo:</p>

<p>r1.left-= r1.width/2<br /> r1.top -= r1.height/2</p>

<p>me pregunta ante este tema, es a que debe que al hacer eso, el mouse quede siempre al centro del rectangulo al moverlo?</p>

<p>cualquier pregunta y respuesta, muchas gracias. :)</p>

videojuegos pygame python
Respuesta de Cristian Olaz
hace 10 años

<p>Hola Daphnes. En cuanto a tu primera consulta creo que estás confundiendo el método <strong>get_pos( )</strong> con <strong>set_pos( )</strong>. El primero <strong>indica</strong> la posición actual del cursor, el segundo <strong>establece</strong> la posición actual del cursor.</p>

<p>Por ejemplo. Dentro del ciclo principal del programa podrías escribir algo como lo siguiente:</p>

<pre class="prettyprint"> while 1: print 'X:', pygame.mouse.get_pos()[ 0 ], '; Y:', pygame.mouse.get_pos()[ 1 ]</pre>

<p>Al ejecutarlo y mover el cursor por encima de la ventana del programa en pygame, verás en la consola la posición X e Y del cursor.</p>

<p>Ahora, si quisieras que el cursor se quedara quieto en una posición, harías lo siguiente:</p>

<pre class="prettyprint"> pygame.mouse.set_pos(( 10, 40 ))</pre>

<p>Esto dejaría al cursor en la posición X: 10, Y: 40.</p>

<hr /><p>Como verás, las posiciones X e Y van de <em>izquierda a derecha</em>, y de <em>arriba hacia abajo</em>, respectivamente. Por ejemplo la posición X:0, Y:0 correspondería a la esquina superior izquierda. Al establecer los atríbutos <strong>left</strong> y <strong>top</strong> del objeto, lo que estamos haciendo es ubicar <strong>la esquina superior izquierda</strong> "dentro" de la pantalla.</p>

<pre class="prettyprint">

obtenemos las coordenadas del cursor

mx, my = pygame.mouse.get_pos( )

ubicamos la esquina superior izquierda del rectángulo

rectangulo.left = mx rectangulo.top = my</pre>

<p>Entonces si quisiéramos que el cursor apunte al centro del rectángulo, deberíamos desplazarlo hacia la izquierda y hacia arriba. ¿ Cuántos píxeles ? La mitad de su ancho y su alto.</p>

<pre class="prettyprint"> rectangulo.left = mx - rectangulo.width/2 rectangulo.top = my - rectangulo.height/2</pre>

<p>Suponiendo que el rectángulo mida 100x100 píxeles, y la posición del cursor sea X:80; Y:120, entonces el rectangulo se ubicaría en:</p>

<p>X:80 - 100/2 = 30</p>

<p>Y: 120 - 100/2 = 70</p>

<p style="text-align:center;"><img alt="" src="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/images/rectangle.jpg" /></p>

<p>Saludos.</p>