2013-11-09 73 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()