私はstackoverflowを初めて使いましたが、より高度なプログラマーからの少しの洞察を期待していました。私は次の学期にコンピュータサイエンスの専攻に専攻し、初心者のPythonプログラミングを学ぶイントロクラスを受講しています。私はすでに以下のプログラムを終了しています(教授のコードの一部を記入してウィンドウの表面に楕円を描くプログラムを作ることでしたが、少しでも悪いことではありません)。私はランダムに設定された楕円の色を持っていますが、プログラムが完全に再起動されるまでは同じ状態を保ちます。すなわち、すべての楕円はプログラムの長さの特定の色です。コードはそのまま書かれているので、各楕円の色を変える方法を理解することはできません。心に留めておいてください、これはすべてキックですが、誰かが特に有益で創造的な気持ちを持っているなら、私はあなたが何を言わなければならないのか興味があります。私が何かを説明できるかどうか私に教えてください。ありがとう!Python/Pygameの反復による図形の異なる色?
import pygame, random, sys
WINDOWWIDTH = 700
WINDOWHEIGHT = 700
BACKGROUNDCOLOR = (150,160,100)
#A different color every run
OVAL_COLOR = (random.randint (0,255),random.randint (0,255),
random.randint (0,255))
pygame.init()
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption("Mobile Ovals")
#The draw variable is used later to indicate the mouse is still pressed
ovals = []
completedOvals = []
finished = False
draw = False
startXY = (-1, -1)
while not finished:
for event in pygame.event.get():
if event.type == pygame.QUIT or (event.type == pygame.KEYUP and
event.key == pygame.K_ESCAPE):
finished = True
elif event.type == pygame.KEYDOWN:
pressed = pygame.key.get_pressed()
if pressed[pygame.K_F4] and (pressed[pygame.K_LALT] or
pressed[pygame.K_RALT]):
finished = True
elif event.type == pygame.MOUSEBUTTONDOWN:
startXY = event.pos
draw = True
elif event.type == pygame.MOUSEBUTTONUP:
draw = False
for oval in ovals:
completedOvals.append (oval)
if draw == True:
del ovals [:]
#The above function ensures only one oval is onscreen at any given time
endXY = event.pos
width = (abs(endXY[0]-startXY[0]))
height = (abs(endXY[1]-startXY[1]))
#The code below allows the user to drag any direction
if endXY[0] < startXY[0]:
left = endXY[0]
else:
left = startXY[0]
if endXY[1] < startXY[1]:
top = endXY[1]
else:
top = startXY[1]
ovals.append (pygame.Rect (left, top, width, height))
windowSurface.fill(BACKGROUNDCOLOR)
for oval in ovals:
pygame.draw.ellipse(windowSurface, OVAL_COLOR, oval)
for completedOval in completedOvals:
pygame.draw.ellipse(windowSurface, OVAL_COLOR, completedOval)
pygame.display.update()
pygame.quit()
正確に。問題は、その問題を解決する方法を理解できないことです。私はループ内にOVAL_COLOR定数を含めようとしましたが、ただちに発色に十分なほど楕円の色が変わります。私は色コードをどこに配置するのかわからないので、 "for all completedOvals"の代わりに、描画されるたびに各楕円の色が変わるだけです。 – jdark135
ええ、繰り返しごとに異なる色を割り当てる必要があります。 – rafuru
私は、そのコードでは、すべての楕円、描画または描画されている色が変化するため、「すべての楕円」の修正または削除を伴わなければならないと思います。 – jdark135