在Pygame中绘制Continuos线

时间:2016-01-30 10:35:22

标签: python-2.7 pygame drawing

pygame中是否有一个模块可以绘制连续线?我知道pygame.draw.line()pygame.draw.circle(),我现在正在使用的最后一个,但如果我在屏幕上快速绘制而不是在行中,则会产生不同的圆圈。任何人都可以帮忙吗?

1 个答案:

答案 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()

enter image description here

(来源:http://blog.furas.pl/przyklad-rysowania-linii-za-poruszajacym-sie-graczem-w-pygame.html