擅长:python、mysql、java
<p>你的问题很简单。设置<code>OVAL_COLOR</code>一次。但是每次引用变量<code>OVAL_COLOR</code>,您并不是在创建一个新的随机颜色,而是在使用创建变量时随机生成的RGB颜色。在</p>
<p>现在,按照程序的结构方式,每次<code>draw</code>变量设置为true时,都要维护一个绘制的所有完整椭圆的列表。如果您将<code>OVAL_COLOR</code>变量放在for循环中,您将随着鼠标的每次移动而更新颜色,从而更改正在绘制的椭圆的颜色,以及重新绘制的所有旧椭圆的颜色。在</p>
<p>一个新的随机椭圆颜色的解决方案是在鼠标按下时设置变量<code>OVAL_COLOR</code>。这样,当你拖动鼠标来调整椭圆时,椭圆的颜色就不会改变。但是,考虑到程序的当前结构,您需要保存分配给已完成椭圆的椭圆颜色,否则每次仍会更改椭圆颜色。在</p>
<hr/>
<p>当按下鼠标按钮时,我们需要一个新的随机颜色为我们的圆圈。生成一个随机值,该值将在每次重新绘制圆时使用。在</p>
<pre><code> elif event.type == pygame.MOUSEBUTTONDOWN:
startXY = event.pos
OVAL_COLOR = (random.randint (0,255),random.randint (0,255),
random.randint (0,255))
draw = True
</code></pre>
<p>松开鼠标按钮后,保存椭圆的坐标,<em>以及用</em>绘制的颜色。在</p>
^{pr2}$
<p>当我们迭代这些完成的椭圆时,每次都用相同的颜色绘制它们。在</p>
<pre><code> for (completedOval, color) in completedOvals:
pygame.draw.ellipse(windowSurface, color, completedOval)
</code></pre>