私は、Python 3.6とZelleのgraphics.pyを使って家を描く簡単なプログラムに取り組んでいます。 私はエディタとしてNotepad ++を使用しています。Polygon()の引数としてgraphics.pyのListを渡すにはどうしたらいいですか?
私は自分の任務に関するすべての要件を満たしましたが、景色を追加するとボーナスマークを獲得できるという規定があります。私は当初、私が描いた家の煙突から出てくる煙を加えたいと思っていました。
私はこのような何かを見ている、ポイントのリストを作成してみました:
Smoke = []
for i in range(1, 30):
Smoke.append(Point(554 + i, i**2/3))
for j in range(31, 80):
Smoke.append(Point(554 + j, Smoke[j - 1] + 100/j))
for k in range(79, -1, -1)
Smoke.append(Smoke[k])
これに伴う問題は、私はそう、それを追加する前に、煙の「Y」パラメータ[k]を変更したいということです私がしたように1時00 AMでこれを見ていない方は、「彼らはドンので、私の二つのリストは、(しゃれが意図した)文字通り無意味であることを認識しているだろう
SmokeX = []
SmokeY = []
for i in range (1, 30):
SmokeX.append(Point(554 + i))
SmokeY.append(Point(i**2/3))
for j in range (31, 80):
SmokeX.append(Point(554 + j))
SmokeY.append(Point(SmokeY[j - 1] + 100/j))
for k in range (79, -1, -1):
SmokeX.append(Point(554 + k))
SmokeY.append(Point(SmokeY[k] + 50))
:私は2つのリストを作成することにしました2つのパラメータがあります。いずれのパラメータもNULLに設定できないので、私はこのアプローチを断念しました。
最後に、私はPolygon()がこれらを受け入れることを曖昧な希望で、Pointの代わりにちょうど番号を格納しようとしました。以来、私はgraphics.pyを開いて、Polygon()が非常に厳密な大域であることを発見し、Numberでなく、引数としてPointだけを取ります。これは参照用の完全なhouse.pyファイルです。
from graphics import *
from math import *
def main():
#Initialization
win = GraphWin("House", 800, 800)
win.setBackground(color_rgb(191, 191, 191))
#Main House
HouseBody = Rectangle(Point(100, 300), Point(700, 700))
HouseBody.setFill(color_rgb(96, 96, 96))
#Roof
HouseRoof = Polygon(Point(100, 300), Point(700, 300), Point(400, 200))
HouseRoof.setFill(color_rgb(255, 127, 0))
#Windows
HouseWindowLeft = Circle(Point(200, 450), 60)
HouseWindowLeft.setFill(color_rgb(0, 191, 255))
HouseWindowLeftBarV = Rectangle(Point(198, 390), Point(202, 510))
HouseWindowLeftBarV.setFill(color_rgb(0, 0, 0))
HouseWindowLeftBarH = Rectangle(Point(140, 448), Point(260, 452))
HouseWindowLeftBarH.setFill(color_rgb(0, 0, 0))
HouseWindowRight = Circle(Point(600, 450), 60)
HouseWindowRight.setFill(color_rgb(0, 191, 255))
HouseWindowRightBarV = Rectangle(Point(598, 390), Point(602, 510))
HouseWindowRightBarV.setFill(color_rgb(0, 0, 0))
HouseWindowRightBarH = Rectangle(Point(540, 448), Point(660, 452))
HouseWindowRightBarH.setFill(color_rgb(0, 0, 0))
#Door
HouseDoor = Rectangle(Point(350, 500), Point(450, 700))
HouseDoor.setFill(color_rgb(255, 0, 0))
HouseDoorKnob = Circle(Point(440, 630), 5)
HouseDoorKnob.setFill(color_rgb(0, 0, 0))
#Chimney
HouseChimney = Polygon(Point(550, 250), Point (550, 200), Point(600, 200), Point(600, 267))
HouseChimney.setFill(color_rgb(0, 127, 127))
#Additional Scenery - Smoke
SmokeX = []
SmokeY = []
for i in range (1, 30):
SmokeX.append(554 + i)
SmokeY.append(i**2/3)
for j in range (31, 80):
SmokeX.append(554 + j)
SmokeY.append(SmokeY[j - 1] + 100/j)
for k in range (79, -1, -1):
SmokeX.append(554 + k)
SmokeY.append(SmokeY[k] + 50)
HouseSmoke = Polygon(SmokeX, SmokeY)
HouseSmoke.setFill(color_rgb(255, 255, 255))
#Drawing to Screen
HouseBody.draw(win)
HouseRoof.draw(win)
HouseWindowLeft.draw(win)
HouseWindowLeftBarV.draw(win)
HouseWindowLeftBarH.draw(win)
HouseWindowRight.draw(win)
HouseWindowRightBarV.draw(win)
HouseWindowRightBarH.draw(win)
HouseDoor.draw(win)
HouseDoorKnob.draw(win)
HouseChimney.draw(win)
HouseSmoke.draw(win)
win.getMouse()
win.close()
main()
現在、私はおそらく自分でそれを解決することはできますが、範囲外のインデックスエラーも発生しています。私は、ポイントのリスト[]をどのように生成し、次にそれらをpolygg()に渡してgraphics.pyを使ってシェイプを描くことができるのか本当に興味があります。どんな入力をいただければ幸いですか?