From 02de66e7d3403af17113b7d7e674eb4bcb96278d Mon Sep 17 00:00:00 2001 From: Alan Aguiar Date: Sun, 26 Feb 2012 23:21:30 +0000 Subject: rename files of class - add losed permissions --- (limited to 'src/api/Game.py') diff --git a/src/api/Game.py b/src/api/Game.py new file mode 100755 index 0000000..40c3179 --- /dev/null +++ b/src/api/Game.py @@ -0,0 +1,155 @@ +import pygame +#from pygame.locals import * +import pygame.font +import pygame.display +import pygame.sprite +import CSuperSprite +from CSuperSprite import * +import CSprite +from CSprite import * +from pygame.locals import * +import CMultiLabel +from CMultiLabel import * +import gc + +class CGame(object): + + mInstance = None + mState = None + mScreen = None + mBackground = None + mSampleSprite = None + mSprites = None + mGroups = None + mMainSprites = None + mClock = None + mQuit = False + + def __new__(self, *args, **kargs): + if (self.mInstance is None): + self.mInstance = object.__new__(self, *args, **kargs) + #self.setState(self.mInstance, aState) + self.init(self.mInstance) + #else: + # print "Warning: CGame(): You are not allowed to instantiate it more than once." + return self.mInstance + + def inst(self): + return self.mInstance + + def setState(self, aState): + if (self.mState != None): + self.mState.destroy() + self.mState = None + print gc.collect(), " deleted objects" + + self.mState = aState + self.mState.init() + + def destroy(self): + if (self.mState != None): + self.mState.destroy() + self.mState = None + self.mBackground = None + self.mInstance = None + print "destroy" + + def init(self): + print "init pygame..." + pygame.init() + #pygame.font.init() + + #screen = pygame.display.set_mode((1200, 900), FULLSCREEN) + self.mScreen = pygame.display.set_mode((1200, 900)) + pygame.display.set_caption("Game") + + self.mBackground = pygame.Surface(self.mScreen.get_size()) + self.mBackground.fill((255, 0, 0)) + + #self.mBackground = CImage.loadImage("assets/images/back_menu.png", False) + + self.mSampleSprite = CSuperSprite(self) + self.mSampleSprite.setSpeed(3) + self.mSampleSprite.setAngle(0) + self.mSampleSprite.boundAction = self.mSampleSprite.WRAP + + + self.mAllSprites = pygame.sprite.Group() + + + #self.mGroups = [] + #self.mSprites = [self.mSampleSprite] + #self.mMainSprites = pygame.sprite.OrderedUpdates(self.mSprites) + #self.mGroups.append(self.mMainSprites) + + self.mS2 = CSprite() + #self.mS2.setDX(10) + self.mS2.velX = 30 + self.mS2.velY = 0 + self.mS2.accelY = 1 + self.mS2.maxSpeed = 200 + + self.mScreen.blit(self.mBackground, (0, 0)) + self.mClock = pygame.time.Clock() + self.mQuit = False + + self.mAllSprites.add(self.mSampleSprite) + self.mAllSprites.add(self.mS2) + + + def gameLoop(self): + print "start game loop here" + while not self.mQuit: + + self.mClock.tick(30) + #print ("FPS: %.0f" % self.mClock.get_fps()) + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.mQuit = True + elif event.type == KEYDOWN: + if event.key == K_ESCAPE: + self.mQuit = True + + self.doEvents(event) + + #self.mState.preUpdate() + self.mState.update() + + self.mAllSprites.clear(self.mScreen, self.mBackground) + self.mAllSprites.update() + self.mAllSprites.draw(self.mScreen) + + #for group in self.mAllSprites: + # group.clear(self.mScreen, self.mBackground) + # group.update() + # group.draw(self.mScreen) + + #self.mState.postUpdate() + + pygame.display.flip() + + def doEvents(self, event): + """ overwrite this method to add your own events. + works like normal event handling, passes event + object + """ + pass + + def setSprites(self, aSpritesArray): + self.mSprites = aSpritesArray + #self.mGroups = [] + #self.mMainSprites = pygame.sprite.OrderedUpdates(self.mSprites) + #self.mGroups.append(self.mMainSprites) + + # Add a sprite to the sprite list. + def addChild(self, aSprite): + self.mAllSprites.add(aSprite) + + def removeChild(self, aSprite): + self.mAllSprites.remove(aSprite) + + def setBackground(self, aBackgroundImage): + self.mBackground = None + self.mBackground = aBackgroundImage + self.mScreen.blit(self.mBackground, (0, 0)) \ No newline at end of file -- cgit v0.9.1