私の目的はfindList()
、ポイントとスクリーン サーフェスの指定されたパラメーターを保持するという名前の関数を作成することです。
私の目的は、その点の色を計算し、塗りつぶされた色のリストを返すことです。
たとえば、画面に赤い円があり、点が赤い円の内側にある場合、その円のすべての点を保持するリストを返すことができるようにしたいと考えています。
基本的に、ポイントはそれ以上拡大できなくなるまで、他のすべての色と画面の端を避けて拡大します。関数は、作成されたすべてのポイントのリストを返します。
これが私が試したことです:
def findList(point,screen):
directions=[(0,0)]
myList=[]
myList.append(point)
startColour=screen.get_at(point)
i=0
loop=0
while True:
loop=loop+1
print(loop)
directions=[]
print("Length of myList: "+str(len(myList)))
for i in range(len(myList)):
if myList[i][0]+1<WINDOWWIDTH and screen.get_at((myList[i][0]+1,myList[i [1]))==startColour and myList[i][0]+1 not in myList and myList[i][0]+1 not in directions:
directions.append((myList[i][0]+1,myList[i][1]))
if myList[i][0]-1>0 and screen.get_at((myList[i][0]-1,myList[i][1]))==startColour and myList[i][0]-1 not in myList and myList[i][0]-1 not in directions:
directions.append((myList[i][0]-1,myList[i][1]))
if myList[i][1]+1<WINDOWHEIGHT and screen.get_at((myList[i][0],myList[i][1]+1))==startColour and myList[i][1]+1 not in myList and myList[i][1]+1 not in directions:
directions.append((myList[i][0],myList[i][1]+1))
if myList[i][1]-1>0 and screen.get_at((myList[i][0],myList[i][1]-1))==startColour and myList[i][1]-1 not in myList and myList[i][1]-1 not in directions:
directions.append((myList[i][0],myList[i][1]-1))
print(len(directions))
for i in directions:
myList.append(i)
if len(directions)==0:
break
print("Exited loop.")
return myList
コーディングスタイルがひどいもので、おそらく役に立たないことはわかっていますが、一般的な問題は、機能は(おそらく)機能しますが、骨の折れるほど遅く、私のかわいそうな小さなネットブックが対応できなくなるまで、以前に追加したピクセルを大量に追加するようです. 100,000ポイントで動作しています。
私はわずか 13 歳で、この厄介なコードにひどく混乱しているため、誰かがより良い機能を提案してくれれば、私のプログラムで本当に役に立ちます (if の 4 つの条件に注意してください)。