pygame中是否有一个模块可以绘制连续线?我知道pygame.draw.line()
和pygame.draw.circle()
,我现在正在使用的最后一个,但如果我在屏幕上快速绘制而不是在行中,则会产生不同的圆圈。任何人都可以帮忙吗?
答案 0 :(得分:0)
记住上一个位置并使用pygame.draw.line()
从旧位置到新位置绘制线条。
-
我的旧例子 - 使用键left/right
来改变移动点的方向
import pygame
import math
# === constants === (UPPER_CASE names)
RED = (255, 0 , 0)
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# === main ===
# --- init ---
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
screen_rect = screen.get_rect()
# --- objects ---
# convert tuple to list
pos_new = list(screen_rect.center)
pos_old = list(screen_rect.center)
speed = 5.0
angle = 0.0
# --- mainloop ---
clock = pygame.time.Clock()
running = True
while running:
# --- events ---
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
angle -= 10
if keys[pygame.K_RIGHT]:
angle += 10
# --- updates ---
if angle >= 360:
angle -= 360
elif angle < 0:
angle += 360
pos_new[0] += int(speed * math.cos(math.radians(angle)))
pos_new[1] += int(speed * math.sin(math.radians(angle)))
# --- draws ---
if pos_new != pos_old:
pygame.draw.line(screen, RED, pos_new, pos_old)
pos_old = pos_new[:]
pygame.display.flip()
# --- FPS ---
clock.tick(25)
# --- the end ---
pygame.quit()
(来源:http://blog.furas.pl/przyklad-rysowania-linii-za-poruszajacym-sie-graczem-w-pygame.html)