2013-11-09 3 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의 boungs를 클릭해야하는 프로그램 (게임)을 작성하고 있습니다 (위 그림 참조). 마우스 클릭이 사각형의 경계 안에 있는지 확인하고 'y'가 있으면이를 반환하고 그렇지 않으면 'n'을 반환하는 함수를 작성해야합니다.python zelle 그래픽 checkMouse()?

win.getMouse() 및 win.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 

. rectangle은 사용자가 클릭했는지 여부를 알고 자하는 사각형입니다.

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()