2014-01-18 4 views
0

나는 전통 해상도 240 × 320 (세로 화면)파이 게임 - 실시간 배 규모의 낮은 해상도

과 아케이드 게임을 쓰고 있어요 내가 실시간으로 현대적인 디스플레이로 그 렌더링 할 필요가있다. 이것은 두 배 (1 픽셀 = 4 출력시) 또는 심지어 3 배 (1 픽셀 = 9)가 필요함을 의미합니다.

게임의 크기가 조절되지 않기 때문에 스프라이트 크기를 두 배로 늘릴 수 없습니다. (움직임이 시각 눈금에 "고정"되지 않습니다)

현재 480x 640 픽셀의 게임 창이 있습니다.

저는 모든 게임 스프라이트를 240x320 표면에 blitting하고, 그것을 두 배로 스케일링하고 파이 게임으로 창에 그 표면을 출력합니다. 게임이 너무 많이 늦어졌습니다.

어떻게 이러한 모든 에뮬레이터는 큰 깨끗한 픽셀과 파이 게임으로 좋은 배율 및 3 배율을 할 수 있습니까? SDL이 2D 래스터 화에서 더 나을 것이라고 생각했습니다.() 나는 그 pygame.transform.scale2x을 발견

import pygame 
import sys 
import random 
from Bullet import Bullet 

bullets = [] 

pygame.init() 
fps_clock = pygame.time.Clock() 

# Our final window layer 
window = pygame.display.set_mode((480, 640)) 

# This is the layer that gets scaled 
render_layer = pygame.Surface((240, 320)) 

red = (255, 0, 0) 
white = (255, 255, 255) 
dkred =(127, 0, 0) 

counter = 0; 

# Sprite resources 
bullet_sprite = pygame.image.load("shot1.png") 
bullet_sprite2 = pygame.image.load("shot2.png") 

while True: 
    render_layer.fill(dkred) 

    for i in bullets: 
     i.tick() 
     if i.sprite == "bullet_sprite1": 
      render_layer.blit(bullet_sprite, (i.x - 12, i.y -12)) 
     else: 
      render_layer.blit(bullet_sprite2, (i.x - 12, i.y -12)) 

     pygame.transform.scale2x(render_layer, window) 

     if i.x < 0 or i.y < 0 or i.x > 240 or i.y > 320: 
      i.dead = True 

    bullets = [x for x in bullets if x.dead == False] 
    counter += 3.33 
    for i in range(10): 
     if i % 2 == 0: 
      bullets.append(Bullet(120,120,360.0/10*i - counter, 3, -1, 
            sprite = "bullet_sprite1")) 
     else: 
      bullets.append(Bullet(120,120,360.0/10*i - counter, 3, -1, 
            sprite = "bullet_sprite2")) 
    for e in pygame.event.get(): 

     if e.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() 

     if e.type == pygame.KEYDOWN: 
      if e.key == pygame.K_ESCAPE: 
       pygame.event.post(pygame.event.Event(pygame.QUIT)) 

    pygame.display.update() 
    fps_clock.tick(60) 

답변

1

for 루프에 : 여기

내가 현재 가지고있는 코드입니다. pygame.display.update() 전에 사용 해보세요. 두 개 이상의 총알이있는 경우, 나는 그것이 어떻게 뒤늦게 지체 될 수 있는지 봅니다.