2017-03-18 7 views
1

Donc, il y a mon code précédent que j'ai corrigé moi-même, mais il y a un autre problème. Le 'jeu' tourne à 60 FPS, mais quand je veux fondre un fond à la place d'un écran noir, le jeu ralentit à 30 fps. Y at-il un moyen de résoudre ce problème?FPS lâche dans Pygame

import math 
import pygame 


class Planete: 
    def __init__(self,rayon,periode,envergure,couleur): 
     self.rayon = rayon 
     self.periode = periode 
     self.couleur = couleur 
     self.envergure = envergure 
     self.omega = (2*math.pi)/self.periode 
     self.i = 0 

    def tourner(self) : 

     self.x = self.rayon*math.cos(self.omega*self.i) 
     self.x2 = int(self.x)+500 
     self.y = self.rayon*math.sin(self.omega*self.i) 
     self.y2 = int(self.y)+200 
     self.i = self.i + 1 

    def dessiner(self): 
     pygame.draw.circle(gameDisplay,(self.couleur),((self.x2, self.y2)), self.envergure) 

pygame.init() 

Terre = Planete(149, 65.25,9,(25,0,250)) 
Mars = Planete(227, 86.98,8,(250,25,0)) 
#Wuut = Planete(195,206,7,(15,30,70)) 
#Jupiter = Planete(80,800,12,(150,50,15)) 


gameDisplay = pygame.display.set_mode((1280,720)) 
background = pygame.image.load("Ecran titre\\principal\\background.jpg") 
menu = pygame.image.load("Ecran titre\\principal\\menu.png") 
clock = pygame.time.Clock() 

gameExit = False 

while not gameExit : 
    Terre.tourner() 
    Mars.tourner() 
    #Wuut.tourner() 
    #Jupiter.tourner() 

    for event in pygame.event.get(): 
     if (event.type == pygame.QUIT): 
      gameExit = True 

    gameDisplay.fill(0) 

    #gameDisplay.blit(background,(0,0)) 

    Terre.dessiner() 
    Mars.dessiner() 
    #Wuut.dessiner() 
    #Jupiter.dessiner() 


    pygame.display.update() 
    clock.tick(60) 
    pygame.display.set_caption("fps: " + str(clock.get_fps())) 

pygame.quit() 
quit() 

Répondre

0

Le fait de fondre une image avec transparence est très lent. Si vous appelez .convert() après l'avoir chargé, ça va le rendre plus rapide. Cela le convertira en un format opaque plus rapide.

background = pygame.image.load("Ecran titre\\principal\\background.jpg").convert()

+0

Merci beaucoup! C'est environ 50 - 55 FPS maintenant, mais il y a quelques petites baisses maintenant et puis –

+0

PyGame n'est pas terriblement rapide puisqu'il n'utilise pas le GPU donc un écran de cette taille va avoir quelques limitations. –