2016-04-30 1 views
0

J'essaie d'obtenir un rectangle pour se déplacer le long de l'axe X, mais checkMouse() ne fonctionne pas. Que faut-il faire pour le faire fonctionner?Comment obtenir un rectangle pour se déplacer le long de l'axe X en utilisant checkMouse()?

from graphics import* 
import time 
from random import randrange 

wd=GraphWin("Catch A Ball",500,500) 
wd.setBackground("lightblue") 

p1=220 #size of rectangle 
p2=250 

for i in range(1): 
spt1=Point(p1,480) 
spt2=Point(p2,500) 
rct=Rectangle(spt1,spt2) 
rct.setOutline("black") 
rct.setFill("black") 
rct.draw(wd) 

p=wd.checkMouse() 
c=rct.getCenter() 
dx=p.getX() - c.getX() 
dy=p.getY() - c.getY() 
rct.move(dx,0) 

Répondre

0

Vous manque une boucle et je recommande de travailler avec getMouse() d'abord jusqu'à ce que vous avez besoin de passer à checkMouse():

from graphics import * 

window = GraphWin("Catch A Ball", 500, 500) 
window.setBackground("lightblue") 

point1 = Point(220, 480) # size of rectangle 
point2 = Point(250, 500) 

rectangle = Rectangle(point1, point2) 
rectangle.setFill("black") 
rectangle.draw(window) 

while True: 
    point = window.getMouse() 

    if point is not None: # so we can switch to checkMouse() if desired 
     center = rectangle.getCenter() 
     dx = point.getX() - center.getX() 
     dy = point.getY() - center.getY() 
     rectangle.move(dx, 0) 

Vous devez ajouter une sorte d'action/événement pour briser sur la boucle infinie while True:.