2013-11-09 44 views
0
yes_box = Rectangle(Point(200, 150),Point(350,50)) 
yes_box.setOutline('blue') 
yes_box.setWidth(1) 
yes_box.draw(graphics_win) 









def mouse_check(arg1): 
    ?????? 

嘿,有一个快速的问题,可能真的很明显,但我真的难住了。所以我正在编写一个程序(一个游戏),需要你点击yes_box中的内容(如上所示)。我需要编写一个函数来检查鼠标单击是否在矩形的范围内,如果是,则返回'y';如果不是,则返回'n'。我知道你需要使用win.getMouse()和win.checkMouse()函数,但我不知道如何获得python来确定该点击是否在矩形对象的边界?任何帮助将不胜感激!python zelle图形checkMouse()?

+0

不知道的框架,但不能你的鼠标当前位置和比较它到你用于矩形的坐标? –

+0

看,我不知道我会如何去做这件事。 – NDIrishman23

+0

所以实际的问题是“如何在这个图形框架中获得鼠标指针的位置”? –

回答

0

,你可以使用此功能:

p1 = rectangle.getP1() 
rx1 = p1.getX() 
ry1 = p1.getY() 

p2 = rectangle.getP2() 
rx2 = p2.getX() 
ry2 = p2.getY() 

x1 = point.getX() 
y1 = point.getY() 


if x1>=rx1 and y1<=ry1 and x1<=rx2 and y1>= ry2: 

    return y 
else: 
    return n 

其中点应该是在用户点击了点。矩形是你想知道用户是否点击的矩形。

0

你只需要得到win.getMouse()返回的点,并确保x和y值在边界内。我这样做,下面的inside功能,然后用这个布尔值显示“Y”或“N”的窗口上

from graphics import *  

def inside(test_Point, P1, P2): 
    ''' 
    determines if the test_Point is inside 
    the rectangle with P1 and P2 at opposite corners 

    assumes P1 is upper left and P2 is lower right 
    ''' 
    tX = test_Point.getX() 
    tY = test_Point.getY() 

    # first the x value must be in bounds 
    t1 = (P1.getX() <= tX) and (tX <= P2.getX()) 

    if not t1: 
     return False 
    else: 
     return (P2.getY() <= tY) and (tY <= P1.getY()) 


win = GraphWin("Box", 600, 600) 

yes_box = Rectangle(Point(200, 150), Point(350, 50)) 
yes_box.setOutline('blue') 
yes_box.setWidth(1) 
yes_box.draw(win) 

# where was the mouse clicked? 
t = win.getMouse() 

# is that inside the box? 
if inside(t, yes_box.getP1(), yes_box.getP2()): 
    text = 'y' 
else: 
    text = 'n' 

# draw the 'y' or 'n' on the screen 
testText = Text(Point(200,300), text) 
testText.draw(win) 

exitText = Text(Point(200,350), 'Click anywhere to quit') 
exitText.draw(win) 

win.getMouse() 
win.close()