매우 효율적으로 보이지는 않지만, 가장 쉬운 방법은 모든 것을 다시 그리는 것입니다. 많은 게임에서 3D 카드가 없어도 모든 프레임에서 화면이 완전히 그려집니다 (이전 Doom 게임을 기억하십니까?). 따라서 백그라운드 위에 몇 줄을 그릴 경우 파이썬에서도 매우 빠릅니다.
import pygame
import random
SCREEN_WIDTH = 320
SCREEN_HEIGHT = 200
class Line(object):
def __init__(self, start_pos, end_pos, color, width):
object.__init__(self)
self.start_pos = start_pos
self.end_pos = end_pos
self.color = color
self.width = width
def CreateRandomLine():
rnd = random.randrange
start_pos = (rnd(SCREEN_WIDTH), rnd(SCREEN_HEIGHT))
end_pos = (rnd(SCREEN_WIDTH), rnd(SCREEN_HEIGHT))
color = (rnd(255), rnd(255), rnd(255))
width = rnd(10) + 1
return Line(start_pos, end_pos, color, width)
def DrawScene(screen_surface, background_image, lines):
screen_surface.blit(background_image, (0, 0))
for line in lines:
pygame.draw.line(screen_surface, line.color, \
line.start_pos, line.end_pos, line.width)
pygame.init()
screen_surface = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
background_image = pygame.Surface(((SCREEN_WIDTH, SCREEN_HEIGHT)))
background_image.fill((200, 100, 200)) # I kinda like purple.
# Alternatively, if you have a file for your background:
# background_image = pygame.image.load('background.png')
# background_image.convert()
lines = []
for i in range(10):
lines.append(CreateRandomLine())
for frame_id in range(10):
del lines[0] # Remove the oldest line, the one at index 0.
lines.append(CreateRandomLine()) # Add a new line.
DrawScene(screen_surface, background_image, lines)
pygame.display.flip()
pygame.time.wait(1000) # Wait one second between frames.
이 스크립트는 배경에 임의의 줄을 표시
나는 그런 일을 상상한다. 10 프레임, 각 프레임은 1 초 지속됩니다. 각 프레임 사이에 첫 번째 행이 행 목록에서 제거되고 새 행이 추가됩니다.
pygame.time.wait을 제거하고 얼마나 빠르는지 확인하십시오. D.