<p>添加鼠标位置列表:</p>
<pre class="lang-py prettyprint-override"><code>points = []
</code></pre>
<p>单击鼠标时将位置添加到列表:</p>
<pre class="lang-py prettyprint-override"><code>if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
points.append(e.pos)
</code></pre>
<p>在循环中绘制点:</p>
<pre class="lang-py prettyprint-override"><code>for pos in points:
draw.circle(screen,GREEN, pos, 10)
</code></pre>
<p>如果至少有2个点,则可通过<a href="https://www.pygame.org/docs/ref/draw.html#pygame.draw.lines" rel="nofollow noreferrer">^{<cd1>}</a>绘制点之间的线:</p>
<pre class="lang-py prettyprint-override"><code>if len(points) > 1:
draw.lines(screen, GREEN, False, points)
</code></pre>
<p>根据你前面的问题,我建议如下:</p>
<p><a href="https://i.stack.imgur.com/n1FCG.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/n1FCG.gif" alt=""/></a></p>
<pre class="lang-py prettyprint-override"><code>from pygame import *
init()
size = width, height = 650, 650
screen = display.set_mode(size)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
running = True
myClock = time.Clock()
points = []
# Game Loop
while running:
for e in event.get():
if e.type == QUIT:
running = False
if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
points.append(e.pos)
if e.button == 3:
points = []
screen.fill(BLACK)
if len(points) > 1:
draw.lines(screen, GREEN, False, points)
for pos in points:
draw.circle(screen,GREEN, pos, 10)
display.flip()
myClock.tick(60)
quit()
</code></pre>
<hr/>
<p>或者,单击的位置可以存储(<code>prev_pos</code>)并在下次单击鼠标绘制线时使用。<br/>
我不建议这样做,因为您将丢失有关单击位置的信息:</p>
<pre class="lang-py prettyprint-override"><code>from pygame import *
init()
size = width, height = 650, 650
screen = display.set_mode(size)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
running = True
myClock = time.Clock()
prev_pos = None
# Game Loop
while running:
for e in event.get():
if e.type == QUIT:
running = False
if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
if prev_pos != None:
draw.line(screen, GREEN, prev_pos, e.pos)
prev_pos = e.pos
draw.circle(screen, GREEN, e.pos, 10)
if e.button == 3:
prev_pos = None
screen.fill(BLACK))
display.flip()
myClock.tick(60)
quit()
</code></pre>