0

問題は、以下のプログラムを変更して、連続してクリックするたびに画面に追加の四角形が描画されるようにすることです。

修正するプログラムはこちら。

   def main():
win = GraphWin()
shape = Rectangle(Point(50,50), Point(70,70))
shape.setOutline("red")
shape.setFill("red")
shape.draw(win)
for i in range(10):
    p = win.getMouse()
    c = shape.getCenter()
    dx = p.getX() - c.getX()
    dy = p.getY() - c.getY()
    shape.move(dx,dy)
win.close()

これを解決するために、 clone() 関数を使用しました。これが私の解決策です:

 def main():
win = GraphWin()
shape = Rectangle(Point(50,50), Point(70,70))
shape.setOutline("red")
shape.setFill("red")
shape.draw(win)
for i in range(10):
    p = win.getMouse()
    c = shape.getCenter()
    dx = p.getX() - c.getX()
    dy = p.getY() - c.getY()
    pshaw = shape.clone()
    pshaw.move(dx, dy)
win.close()

ただし、プログラムは動作しません。以下に示すように、私が見た他の解決策には、完全に新しい形状を作成することが含まれます: なぜ clone() を使用できないのですか?

    def main():
win = GraphWin()
shape = Rectangle(Point(75,75),Point(125,125))
shape.setOutline('Red')
shape.setFill('Red')
shape.draw(win)

for i in range(5):
    p = win.getMouse()
    tx = p.getX()-25
    ty = p.getY()-25
    bx = p.getX()+25
    by = p.getY()+25

    shape2 = Rectangle(Point(tx,ty),Point(bx,by))
    shape2.setOutline('Red')
    shape2.setFill('Red')
    shape2.draw(win)


ct = Text(Point(100,180),'Click again to quit!')
ct.setStyle('bold')
ct.draw(win)
win.getMouse()
win.close()

主要()

clone() がここで機能しないのはなぜですか? これはそれが作成された目的ではありませんか?ゼロから新しい形状を作成する提案されたソリューションは、私には冗長に思えます。

助けてくれる試みは大歓迎です。事前に感謝したいと思います:)頭がぐるぐる回っています-マスターから学ぶことを楽しみにしています!

4

1 に答える 1