2016-04-05 28 views
2

ile ortaya çıkıyor. Pygame'i öğrenmeye başladım ve basit bir analog saat kodladım.Basit analog saat yavaşlıyor, daha sonra Pygame

import sys, pygame 
pygame.init() 

white = 255, 255, 255 
size = width, height = 480, 480 
screen = pygame.display.set_mode(size) 

minute_hand = pygame.image.load('minute_hand.png') 
minute_hand_rect = minute_hand.get_rect() 

while 1: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: sys.exit() 

    center = minute_hand_rect.center 
    rotate = pygame.transform.rotate 

    minute_hand = rotate(minute_hand, -1) 
    minute_hand_rect = minute_hand.get_rect(center=center) 

    screen.fill(white) 
    screen.blit(minute_hand, minute_hand_rect) 

    pygame.display.update() 
    pygame.time.delay(100) 

This is my hand_minute

Ama hand_clock sonra bir süre alma ve yavaş yavaş çalışan durur ve şöyle der:

Traceback (most recent call last): 
    File "clock.py", line 21, in <module> 
    minute_hand = rotate(minute_hand, -1) 
pygame.error: Width or height is too large 

Anlaşılan o kadar yanlış bir şey yapıyorum ama rakam yapamadım Yanlış olan ne.

+0

Bunun nedeni, 90 derece dışındaki artışlarla döndüğünüzde, yeni döndürülmüş görüntüyü tutmak için görüntü boyutunuzu büyütecektir – Keatinge

+0

Ekranın boyutunu büyütür, böylece resim için yeterince büyüktür veya daha küçük bir resim kullanır. Racialz'ın dediği gibi, rotasyonlar resmin boyutunu arttırıyor. – marienbad

cevap

0

sorun Bu dönüşüm verileri, tam bir yük bu güncellemeleri her depolanması anlamına gelen, aşağıdaki üretmek için son kare görüntü kullanan minute_hand = rotate(minute_hand, -1)

olup. Aynı zamanda bir 'Yetersiz bellek hatası' ve fark edeceğiniz gibi resim

çözüm orijinal görüntüyü kullanmaya devam ve döndürmek için zamanla bozuk olsun neden bana verdi daha

aşağıda Gösterilen:

import sys, pygame 
pygame.init() 

white = 255, 255, 255 
size = width, height = 480, 480 
screen = pygame.display.set_mode(size) 

minute_hand = pygame.image.load('box4.jpg') 
minute_hand_rect = minute_hand.get_rect() 

angle = 0 

while 1: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: sys.exit() 

    center = minute_hand_rect.center 
    rotate = pygame.transform.rotate 

    new_image = rotate(minute_hand, angle) 
    new_image_rect = new.get_rect(center=center) 

    angle -= 1 
    if angle == -360: 
     angle = 0 

    screen.fill(white) 
    screen.blit(new, new_rect) 

    pygame.display.update() 
    pygame.time.delay(100) 

Bu her karesini değiştirir ve bu yardımcı olur orijinal

Umut uygular bir açı alır.