2016-12-23 14 views
1

グラフウィンドウの特定のポイントで実行する必要があるオブジェクトを持つ関数があります。関数をグラフウィンドウで特定のパターンで実行するにはどうすればよいですか?

各行は、500x500のウィンドウであると想定される機能(100x100)を表します。

----- 
--- 
    - 
--- 
----- 

私はそれがこのように実行にする方法を知っている:ネストされたループを使用して

----- 
----- 
----- 
----- 
----- 

def AssortmentOfObjects(size): 
    win =GraphWin("Object assortment", size,size) 
    ypoint = 0 
    for y in range(5): 
     xpoint = 0 
     for x in range(5): 
      Objects(win, xpoint, ypoint) 
      xpoint = xpoint + 100 
     ypoint = ypoint + 100 

明らかに、それらをテッセレーションで実行するためにif文を使用できます。
私はちょっと考えがありません。

答えて

1

描画するポイントを決定する必要があります。何かのように:

if shoulddraw(x,y): 
    Objects(win,xpoint,ypoint) 

と仮定すると、あなたが右に行き、あなたがダウンして行くように、Yが大きくなるにつれてそのxが大きくなっ、それはあなたがたときにyが< = X < = 4-Y(トップを描きたいように見えます半分)または4-y < = -4-x < = y(下半分)。

1

オブジェクトの場合、インデントとその番号(xの範囲)を知る必要があります。あなたは、次の両方を取得することができます:

n = 5 
half = n // 2 
for y in range(n): 
    indent = (half - abs(half-y)) 
    x_count = n - (2 * indent) 
    print(indent, x_count) 

これが印刷されます:

0 5 
1 3 
2 1 
1 3 
0 5 

(すなわち5つの要素を持つ最初の行にゼロインデント、3つの要素を有する第二の1つのインデント、など) 。

関連する問題