From 0eb075f87d98e8588fa2d8b8bc5f1513d377d8ba Mon Sep 17 00:00:00 2001 From: Fernando Sansberro Date: Sat, 21 Apr 2012 12:19:39 +0000 Subject: Renamed states folder to game. Some improvements in codebase. --- (limited to 'src') diff --git a/src/CLEAN.bat b/src/CLEAN.bat new file mode 100644 index 0000000..f2bdbc4 --- /dev/null +++ b/src/CLEAN.bat @@ -0,0 +1,2 @@ +del C:\workspace\CeibalJamEducacionSexual\src\api\*.pyc +del C:\workspace\CeibalJamEducacionSexual\src\game\*.pyc \ No newline at end of file diff --git a/src/Main.py b/src/Main.py index 16a6c6f..7d305fa 100755 --- a/src/Main.py +++ b/src/Main.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- -from states.MenuState import CMenuState +import api +import game +import game.MenuState +from game.MenuState import CMenuState +import api.Game from api.Game import CGame -# Test dr git. -sdas def main(): g = CGame() diff --git a/src/api/Button.py b/src/api/Button.py index cc26f80..f78cda2 100755 --- a/src/api/Button.py +++ b/src/api/Button.py @@ -4,7 +4,7 @@ import pygame import api.Label from api.Label import CLabel -import Mouse +from Mouse import * class CButton(CLabel): @@ -39,13 +39,18 @@ class CButton(CLabel): #check for mouse input - if Mouse.get_pressed() == (1, 0, 0): - if self.rect.collidepoint(Mouse.get_position()): + if CMouse().firstPress(): + if self.rect.collidepoint(CMouse().getPos()): + print("first press in button") self.mactive = True #check for mouse release if self.mactive == True: - if Mouse.get_pressed() == (0, 0, 0): + if CMouse().release(): self.mactive = False - if self.rect.collidepoint(Mouse.get_position()): + if self.rect.collidepoint(CMouse().getPos()): + print("release in button") self.mclicked = True + + def destroy(self): + pass diff --git a/src/api/Game.py b/src/api/Game.py index b3fe189..b49b3ff 100755 --- a/src/api/Game.py +++ b/src/api/Game.py @@ -15,16 +15,21 @@ import api.MultiLabel from api.MultiLabel import CMultiLabel import gc +from api.Mouse import CMouse + from gettext import gettext as _ +import Image + class CGame(object): mInstance = None mState = None mScreen = None mBackground = None - mSampleSprite = None - mSprites = None + mAllSprites = None + mMousePointerSprite = None + mMouse = None mGroups = None mMainSprites = None mClock = None @@ -49,15 +54,20 @@ class CGame(object): 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.mMouse.destroy() self.mBackground = None + self.mMousePointerSprite.destroy() + self.mMousePointerSprite = None self.mInstance = None # destroy pygame - pygame.quit() + #pygame.quit() + pygame.mouse.set_visible(True) print "destroy" def init(self): @@ -72,38 +82,22 @@ class CGame(object): 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 - + # Sound system initialization. + pygame.mixer.init() #self.mAllSprites = pygame.sprite.Group() Sprites = [] self.mAllSprites = pygame.sprite.LayeredUpdates(Sprites) - - #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 + pygame.mouse.set_visible(False) + self.mMouse = CMouse() + self.mMousePointerSprite = CSprite() + self.mMousePointerSprite.setImage(Image.loadImage('assets/images/cursor.png', True)) + self.addChild(self.mMousePointerSprite) 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" @@ -121,6 +115,9 @@ class CGame(object): self.doEvents(event) + self.mMouse.update() + self.mMousePointerSprite.setXY(self.mMouse.getX(), self.mMouse.getY()) + #self.mState.preUpdate() self.mState.update() @@ -144,15 +141,17 @@ class CGame(object): """ pass - def setSprites(self, aSpritesArray): - self.mSprites = aSpritesArray +# 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, aLayer=0): + self.mAllSprites.remove(self.mMousePointerSprite) self.mAllSprites.add(aSprite, layer=aLayer) + self.mAllSprites.add(self.mMousePointerSprite) def removeChild(self, aSprite): self.mAllSprites.remove(aSprite) @@ -160,4 +159,7 @@ class CGame(object): def setBackground(self, aBackgroundImage): self.mBackground = None self.mBackground = aBackgroundImage - self.mScreen.blit(self.mBackground, (0, 0)) + self.blitBackground(self.mBackground) + + def blitBackground(self, aBackgroundImage): + self.mScreen.blit(aBackgroundImage, (0, 0)) \ No newline at end of file diff --git a/src/states/GameState.py b/src/api/GameState.py index 1129e2a..42c09c7 100755..100644 --- a/src/states/GameState.py +++ b/src/api/GameState.py @@ -1,16 +1,16 @@ -# -*- coding: utf-8 -*- - -class CGameState(object): - - def __init__(self): - print "CGameState init" - - def update(self): - pass - #print "CGameState update" - - #def render(self): - # print "CGameState render" - - def destroy(self): - print "CGameState destroy" +# -*- coding: utf-8 -*- + +class CGameState(object): + + def init(self): + print "CGameState init" + + def update(self): + pass + #print "CGameState update" + + #def render(self): + # print "CGameState render" + + def destroy(self): + print "CGameState destroy" diff --git a/src/api/Math.py b/src/api/Math.py index e87a08c..196a736 100755 --- a/src/api/Math.py +++ b/src/api/Math.py @@ -30,6 +30,8 @@ def toStandardAngle(aAngle): #------------------------------------------------------------------------------- def radToDeg(aAngle): return aAngle * 180 / math.pi + #return aAngle * 180 / 3.1415927 + #------------------------------------------------------------------------------- # degToRad(). @@ -42,8 +44,8 @@ def radToDeg(aAngle): #------------------------------------------------------------------------------- def degToRad(aAngle): return aAngle * math.pi / 180 + #return aAngle * 3.1415927 / 180 def dist(ax1, ay1, ax2, ay2): return math.sqrt((ax2-ax1)**2 + (ay2-ay1)**2) - diff --git a/src/api/Mouse.py b/src/api/Mouse.py index c487c56..bf0e0c8 100755 --- a/src/api/Mouse.py +++ b/src/api/Mouse.py @@ -2,10 +2,60 @@ import pygame +class CMouse(object): + mInstance = None + mInitialized = False + mPressed = False + #mPressedLeastThanOneFrame = False + mPrevPressed = False -def get_position(): - return pygame.mouse.get_pos() + def __new__(self, *args, **kargs): + if (self.mInstance is None): + self.mInstance = object.__new__(self, *args, **kargs) + self.init(self.mInstance) + #else: + # print "Warning: CMouse(): You are not allowed to instantiate it more than once." + return self.mInstance -def get_pressed(): - return pygame.mouse.get_pressed() + def inst(self): + return self.mInstance + + def init(self): + if (self.mInitialized): + return + self.mInitialized = True + + self.mPressed = False + #self.mPressedLeastThanOneFrame = False + self.mPrevPressed = False + + def getPos(self): + return pygame.mouse.get_pos() + + def getX(self): + return pygame.mouse.get_pos()[0] + + def getY(self): + return pygame.mouse.get_pos()[1] + + def pressed(self): + return self.mPressed + + def firstPress(self): + return self.pressed() and not self.mPrevPressed + + def release(self): + return not self.pressed() and self.mPrevPressed + + def update(self): + #print("mouse update") + #print("x=" + str(self.getX())) + #print("y=" + str(self.getY())) + + self.mPrevPressed = self.mPressed; + self.mPressed = (pygame.mouse.get_pressed() == (1, 0, 0)) + + def destroy(self): + self.mInstance = None + print "destroy" diff --git a/src/api/Sprite.py b/src/api/Sprite.py index 456e45f..201f9a3 100644 --- a/src/api/Sprite.py +++ b/src/api/Sprite.py @@ -9,7 +9,7 @@ import api.Math as CMath import api.Vector from api.Vector import CVector -import api.Mouse as Mouse +from Mouse import * # TODO: Cambiar las conversiones de grados a radianes y viceversa usando las funciones. @@ -26,6 +26,13 @@ class CSprite(pygame.sprite.Sprite): Automatically rotates to point in indicated direction Five kinds of boundary collision """ + + mPos = None + + mOffsetX = 0 + mOffsetY = 0 + + mTimeState = 0 def __init__(self): pygame.sprite.Sprite.__init__(self) @@ -36,10 +43,14 @@ class CSprite(pygame.sprite.Sprite): self.mVel = CVector(0.0, 0.0) self.mAccel = CVector(0.0, 0.0) + # Registration point offset. + self.mOffsetX = 0 + self.mOffsetY = 0 + # Speed of the sprite. self.mSpeed = 0 - - self.maxSpeed = 30 + + self.maxSpeed = 50 self.minSpeed = -3 # TODO: Take this values from a constants class. @@ -55,6 +66,8 @@ class CSprite(pygame.sprite.Sprite): # Action for the sprite when it reaches a border. self.mBoundAction = CSprite.WRAP + + #create a default text image as a placeholder #This will usually be changed by a setImage call #self.font = pygame.font.Font("freesansbold.ttf", 30) @@ -68,8 +81,10 @@ class CSprite(pygame.sprite.Sprite): # Set the position of the image. # oldCenter is used to draw the trace in drawTrace(). # oldCenter is the position of the sprite in the previous frame. - self.oldCenter = (self.mPos.getX(), self.mPos.getY()) - self.rect.center = (self.mPos.getX(), self.mPos.getY()) + #self.oldCenter = (self.mPos.getX(), self.mPos.getY()) + #self.rect.center = (self.mPos.getX(), self.mPos.getY()) + + self.calculatePositionWithOffset() # Angle of rotation in degrees used for movement calculations. self.mAngle = 0 @@ -79,16 +94,24 @@ class CSprite(pygame.sprite.Sprite): self.pressed = False self.states = {} self.currentState = "default" + + self.mTimeState = 0 + + def setRegistrationPointOffset(self, aOffsetX, aOffsetY): + self.mOffsetX = aOffsetX + self.mOffsetY = aOffsetY def setXY(self, aX, aY): #print 'alan', dir(self.mPos) - self.mPos.setX(aX) - self.mPos.setY(aY) - self.rect.center = (self.mPos.getX(), self.mPos.getY()) + self.mPos.setXY(aX, aY) + #self.rect.center = (self.mPos.getX(), self.mPos.getY()) + self.calculatePositionWithOffset() def setVelXY(self, aVelX, aVelY): self.mVel.setXY(aVelX, aVelY) - self.mVel.truncate(self.maxSpeed) + + def setVelVec(self, aVec): + self.mVel.setXY(aVec.getX(), aVec.getY()) def setAccelXY(self, aAccelX, aAccelY): self.mAccel.setXY(aAccelX, aAccelY) @@ -97,7 +120,10 @@ class CSprite(pygame.sprite.Sprite): self.maxSpeed = aMaxSpeed def update(self): - self.oldCenter = self.rect.center + + self.mTimeState += 1 + + #self.oldCenter = self.rect.center # Run the logic for the sprite. self.updateLogic() # Calculate next position based on angle and velocity. @@ -106,7 +132,8 @@ class CSprite(pygame.sprite.Sprite): self.__rotateSpriteImage() self.checkBounds() - self.rect.center = (self.mPos.getX(), self.mPos.getY()) + #self.rect.center = (self.mPos.getX(), self.mPos.getY()) + # TODO: Test this. Need to pass a reference to background to draw. # self.drawTrace((255,0,0)) @@ -118,8 +145,9 @@ class CSprite(pygame.sprite.Sprite): if (self.mVel.getY() > self.maxSpeed): self.mVel.setY(self.maxSpeed) - self.mPos.add(self.mVel) - + self.mPos.add(self.mVel) + + self.calculatePositionWithOffset() #--------------------------------------------------------------------------- # updateLogic(). @@ -226,24 +254,30 @@ class CSprite(pygame.sprite.Sprite): if self.mRotation < 0: self.mRotation = 360 - amt - #--------------------------------------------------------------------------- + #---------------------------------------------------------------------------------------------------------- # setImage(). # Loads the given file name as the master image that then is rotated. - # The sprite must be facing east (angle 0). In the main loop the sprite is - # rotated automatically. + # The sprite must be facing east (angle 0). In the main loop the sprite is rotated automatically. # # Parameters: # aImageFilename: File path of the sprite image to be loaded. # aIsTransparent: If the image is transparent (True) or not (True, by default). # # Returns: Nothing. - #--------------------------------------------------------------------------- - def setImage(self, aImageFilename, aIsTransparent=True): - #TODO: loadImage esta en la clase CImage. + #---------------------------------------------------------------------------------------------------------- + def loadImage(self, aImageFilename, aIsTransparent=True): self.mImageMaster = Image.loadImage(aImageFilename, aIsTransparent) - #self.mImageMaster = self.mImageMaster.convert() - self.image = self.mImageMaster + self.setImage(self.mImageMaster) + #self.image = self.mImageMaster + #self.rect = self.image.get_rect() + #self.rect.center = (self.mPos.getX(), self.mPos.getY()) + + def setImage(self, aImage): + self.mImageMaster = aImage + self.image = aImage self.rect = self.image.get_rect() + #self.rect.center = (self.mPos.getX(), self.mPos.getY()) + self.calculatePositionWithOffset() def setDX(self, dx): """ changes dx value and updates vector """ @@ -363,28 +397,28 @@ class CSprite(pygame.sprite.Sprite): clicked over the sprite, False otherwise """ self.pressed = False - if Mouse.get_pressed() == (1, 0, 0): - if self.rect.collidepoint(Mouse.get_position()): + if CMouse().pressed(): + if self.rect.collidepoint(CMouse().getPos()): self.pressed = True return self.pressed - + def mouseOver(self): - if pygame.mouse.get_pressed() == (0, 0, 0): - if self.rect.collidepoint(pygame.mouse.get_pos()): + if not CMouse().pressed(): + if self.rect.collidepoint(CMouse().getPos()): return True else: return False else: return False - + def clicked(self): """ Boolean function. Returns True only if mouse is pressed and released over sprite """ released = False if self.pressed: - if pygame.mouse.get_pressed() == (0, 0, 0): - if self.rect.collidepoint(pygame.mouse.get_pos()): + if (not CMouse().pressed()): + if self.rect.collidepoint(CMouse().getPos()): released = True return released @@ -551,3 +585,22 @@ class CSprite(pygame.sprite.Sprite): # assume it's continue - keep going forever pass + def destroy(self): + pass + + def calculatePositionWithOffset(self): + self.rect = self.image.get_rect() + self.rect.x = self.mPos.getX() - self.mOffsetX + self.rect.y = self.mPos.getY() - self.mOffsetY + + def getX(self): + return self.mPos.getX() + + def getY(self): + return self.mPos.getY() + + def setTimeState(self, aTimeState): + self.mTimeState = aTimeState + + def getTimeState(self): + return self.mTimeState \ No newline at end of file diff --git a/src/api/Vector.py b/src/api/Vector.py index bd89b9c..e474541 100755 --- a/src/api/Vector.py +++ b/src/api/Vector.py @@ -3,12 +3,12 @@ import math from math import * -EPSILON = 0.000001 - class CVector(object): - #x = 0.0 - #y = 0.0 + x = 0.0 + y = 0.0 + + EPSILON = 0.000001 def __init__(self, aX = 0.0, aY = 0.0): self.x = aX @@ -80,7 +80,7 @@ class CVector(object): self.m = self.magnitude(); # Check division by zero. - if (self.m > EPSILON): + if (self.m > self.EPSILON): self.x /= self.m; self.y /= self.m; diff --git a/src/assets/images/cursor.png b/src/assets/images/cursor.png new file mode 100644 index 0000000..cb81bbe --- /dev/null +++ b/src/assets/images/cursor.png Binary files differ diff --git a/src/states/Area1Game1.py b/src/game/Area1Game1.py index b15bbbf..92eb63b 100644 --- a/src/states/Area1Game1.py +++ b/src/game/Area1Game1.py @@ -3,12 +3,14 @@ import pygame from api.Sprite import CSprite from api.Button import CButton -import api.Mouse as Mouse + +from api.Mouse import * + import api.Math as Math import api.Image as Image from api.Vector import CVector from api.Game import CGame -from states.GameState import CGameState +from api.GameState import CGameState import MenuState from gettext import gettext as _ @@ -62,7 +64,7 @@ class Piece(CSprite): self.setState(STATE_DRAG) elif (self.mState == STATE_DRAG): - x, y = Mouse.get_position() + x, y = CMouse().getPos() self.setXY(x, y) if self.clicked(): d = Math.dist(self.mPos.getX() , self.mPos.getY(), self.mDest.getX(), self.mDest.getY()) @@ -175,25 +177,25 @@ class CArea1Game1(CGameState): # load the pieces # parameters: aParent, aNum, aOrigin, aDestine self.mPiece1 = Piece(self, 0, (824.0, 693.0), (487.0, 169.0)) - self.mPiece1.setImage('assets/images/a1g1/piece1.png', False) + self.mPiece1.loadImage('assets/images/a1g1/piece1.png', False) self.mListPieces[0] = self.mPiece1 CGame().addChild(self.mPiece1) self.mPiece9 = Piece(self, 8, (676.0, 680.0), (776.0, 353.0)) - self.mPiece9.setImage('assets/images/a1g1/piece9.png', False) + self.mPiece9.loadImage('assets/images/a1g1/piece9.png', False) self.mListPieces[8] = self.mPiece9 CGame().addChild(self.mPiece9) # load the options self.mOption1 = CSprite() self.mOption1.setXY(124, 145) - self.mOption1.setImage('assets/images/a1g1/option1.png', False) + self.mOption1.loadImage('assets/images/a1g1/option1.png', False) self.mOption1.update() self.mListOptions[0] = self.mOption1 self.mOption9 = CSprite() self.mOption9.setXY(1079, 347) - self.mOption9.setImage('assets/images/a1g1/option9.png', False) + self.mOption9.loadImage('assets/images/a1g1/option9.png', False) self.mOption9.update() self.mListOptions[8] = self.mOption9 diff --git a/src/states/Area1Game3.py b/src/game/Area1Game3.py index 55eab22..a12da10 100755..100644 --- a/src/states/Area1Game3.py +++ b/src/game/Area1Game3.py @@ -3,7 +3,7 @@ import pygame import random from api.Game import CGame -from states.GameState import CGameState +from api.GameState import CGameState from api.Button import CButton import MenuState from api.Label import CLabel diff --git a/src/states/Area1Game7.py b/src/game/Area1Game7.py index 7540f20..1a6f32f 100755..100644 --- a/src/states/Area1Game7.py +++ b/src/game/Area1Game7.py @@ -6,12 +6,12 @@ import pygame from api.Sprite import CSprite from api.Button import CButton from api.Label import CLabel -import api.Mouse as Mouse +from api.Mouse import * import api.Math as Math import api.Image as Image from api.Vector import CVector from api.Game import CGame -from states.GameState import CGameState +from api.GameState import CGameState import MenuState from gettext import gettext as _ @@ -73,7 +73,7 @@ class Piece(CSprite): self.setState(STATE_DRAG) elif (self.mState == STATE_DRAG): - x, y = Mouse.get_position() + x, y = CMouse().getPos() self.setXY(x, y) if self.clicked(): d = Math.dist(self.mPos.getX() , self.mPos.getY(), self.mDest.getX(), self.mDest.getY()) @@ -192,23 +192,23 @@ class CArea1Game7(CGameState): # load the pieces # parameters: aParent, aNum, aOrigin, aDestine self.mPiece1 = Piece(self, 0, (710.0, 442.0), (198.0, 229.0)) - self.mPiece1.setImage('assets/images/a1g7/piece01.png', False) + self.mPiece1.loadImage('assets/images/a1g7/piece01.png', False) self.mListPieces[0] = self.mPiece1 CGame().addChild(self.mPiece1) self.mPiece9 = Piece(self, 8, (676.0, 680.0), (512.0, 229.0)) - self.mPiece9.setImage('assets/images/a1g7/piece09.png', False) + self.mPiece9.loadImage('assets/images/a1g7/piece09.png', False) self.mListPieces[8] = self.mPiece9 CGame().addChild(self.mPiece9) # sprites for the mouseover events self.mWord01 = CSprite() - self.mWord01.setImage('assets/images/a1g7/fondo01.png', False) + self.mWord01.loadImage('assets/images/a1g7/fondo01.png', False) self.mWord01.setXY(448, 74) CGame().addChild(self.mWord01) self.mWord02 = CSprite() - self.mWord02.setImage('assets/images/a1g7/fondo02.png', False) + self.mWord02.loadImage('assets/images/a1g7/fondo02.png', False) self.mWord02.setXY(410, 152) CGame().addChild(self.mWord02) diff --git a/src/states/Area2Game2.py b/src/game/Area2Game2.py index 40a96af..40a96af 100755..100644 --- a/src/states/Area2Game2.py +++ b/src/game/Area2Game2.py diff --git a/src/states/CreditsState.py b/src/game/CreditsState.py index cb274f4..9982f8b 100755..100644 --- a/src/states/CreditsState.py +++ b/src/game/CreditsState.py @@ -1,62 +1,62 @@ -# -*- coding: utf-8 -*- - -import MenuState -from MenuState import * -import GameState -from GameState import CGameState -import api.MultiLabel -from api.MultiLabel import CMultiLabel -import api.Game -from api.Game import CGame -import api.Button -from api.Button import CButton -import api.Image as CImage - -import pygame - -class CCreditsState(CGameState): - - mBackground = None - mInstructions = None - #mX = 10 - mButtonPlay = None - - def __init__(self): - CGameState.__init__(self) - #self.mInstructions = CMultiLabel() - #CGame().addChild(self.mInstructions) - #print self.mX - - self.mButtonPlay = CButton() - self.mButtonPlay.bgColor = (0x99, 0x99, 0x66) - self.mButtonPlay.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) - self.mButtonPlay.center = (400, 600) - self.mButtonPlay.size = (200, 40) - self.mButtonPlay.text = _('BACK Credits') - CGame().addChild(self.mButtonPlay) - - self.mBackground = CImage.loadImage('assets/images/back_credits.png', False) - CGame().setBackground(self.mBackground) - - def update(self): - #print "menu update" - CGameState.update(self) - - if self.mButtonPlay.clicked: - print "clicked credits" - ms = MenuState.CMenuState() - CGame().setState(ms) - - #def render(self): - # CGameState.render(self) - # print "CMenuState render" - - def destroy(self): - CGameState.destroy(self) - CGame().removeChild(self.mButtonPlay) - self.mButtonPlay = None - self.mBackground = None - print "CMenuState destroy" - - def doEvents(self, aEvent): - print aEvent.type +# -*- coding: utf-8 -*- + +import MenuState +from MenuState import * +import api.GameState +from api.GameState import CGameState +import api.MultiLabel +from api.MultiLabel import CMultiLabel +import api.Game +from api.Game import CGame +import api.Button +from api.Button import CButton +import api.Image as CImage + +import pygame + +class CCreditsState(CGameState): + + mBackground = None + mInstructions = None + #mX = 10 + mButtonBack = None + + def init(self): + CGameState.init(self) + #self.mInstructions = CMultiLabel() + #CGame().addChild(self.mInstructions) + #print self.mX + + self.mButtonBack = CButton() + self.mButtonBack.set_bgColor((0x99, 0x99, 0x66)) + self.mButtonBack.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) + self.mButtonBack.set_center((300, 300)) + self.mButtonBack.set_size((200, 40)) + self.mButtonBack.set_text("Volver") #_('BACK Credits') + CGame().addChild(self.mButtonBack) + + self.mBackground = CImage.loadImage('assets/images/back_credits.png', False) + CGame().setBackground(self.mBackground) + + def update(self): + #print "menu update" + CGameState.update(self) + + if self.mButtonBack.clicked(): + print "clicked back......" + ms = MenuState.CMenuState() + CGame().setState(ms) + + #def render(self): + # CGameState.render(self) + # print "CMenuState render" + + def destroy(self): + CGameState.destroy(self) + CGame().removeChild(self.mButtonBack) + self.mButtonBack = None + self.mBackground = None + print "CMenuState destroy" + + def doEvents(self, aEvent): + print aEvent.type diff --git a/src/states/MenuState.py b/src/game/MenuState.py index b45fcb7..7ede0b7 100755..100644 --- a/src/states/MenuState.py +++ b/src/game/MenuState.py @@ -1,132 +1,184 @@ -# -*- coding: utf-8 -*- - -import pygame - -import states.GameState -from states.GameState import CGameState -import api.MultiLabel -from api.MultiLabel import CMultiLabel -import api.Game -from api.Game import CGame -import api.Button -from api.Button import CButton -import states.CreditsState -from CreditsState import * -import api.Image as Image - -import states.Area1Game1 -from states.Area1Game1 import CArea1Game1 - -import states.Area1Game3 -from states.Area1Game3 import CArea1Game3 - -import states.Area1Game7 -from states.Area1Game7 import CArea1Game7 - -from gettext import gettext as _ - -class CMenuState(CGameState): - - mBackground = None - mInstructions = None - #mX = 10 - mButtonA1G1= None - mButtonA1G3 = None - mExit = None - #def __init__(self): - # ''' - # Constructor - # ''' - - def __init__(self): - CGameState.__init__(self) - #self.mInstructions = CMultiLabel() - #CGame().addChild(self.mInstructions) - #print self.mX - - self.mButtonA1G1 = CButton() - #TODO: Create a function to create image. - self.mButtonA1G1.bgColor = (0x99, 0x99, 0x66) - self.mButtonA1G1.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) - self.mButtonA1G1.set_center((110, 420)) - self.mButtonA1G1.set_size((200, 40)) - self.mButtonA1G1.set_text('A1 - Juego 1') - CGame().addChild(self.mButtonA1G1) - - self.mButtonA1G3 = CButton() - self.mButtonA1G3.bgColor = (0x99, 0x99, 0x66) - self.mButtonA1G3.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) - self.mButtonA1G3.set_center((110, 470)) - self.mButtonA1G3.set_size((200, 40)) - self.mButtonA1G3.set_text('A1 - Juego 3') - CGame().addChild(self.mButtonA1G3) - - self.mButtonA1G7 = CButton() - self.mButtonA1G7.bgColor = (0x99, 0x99, 0x66) - self.mButtonA1G7.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) - self.mButtonA1G7.set_center((110, 520)) - self.mButtonA1G7.set_size((200, 40)) - self.mButtonA1G7.set_text('A1 - Juego 7') - CGame().addChild(self.mButtonA1G7) - - self.mExit = CButton() - self.mExit.bgColor = (0x99, 0x99, 0x66) - self.mExit.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) - self.mExit.set_center((110, 570)) - self.mExit.set_size((200, 40)) - self.mExit.set_text('Exit') - CGame().addChild(self.mExit) - - - self.mBackground = Image.loadImage('assets/images/back_menu.png', False) - CGame().setBackground(self.mBackground) - - def update(self): - #print "menu update" - CGameState.update(self) - - if self.mButtonA1G1.clicked(): - print "clicked A1G1" - #cs = CHelpState() - a1g1 = CArea1Game1() - CGame().setState(a1g1) - - elif self.mButtonA1G3.clicked(): - print "clicked A1G3" - #cs = CHelpState() - a1g3 = CArea1Game3() - CGame().setState(a1g3) - - elif self.mButtonA1G7.clicked(): - print "clicked A1G3" - #cs = CHelpState() - a1g7 = CArea1Game7() - CGame().setState(a1g7) - - elif self.mExit.clicked(): - print 'exit' - CGame().destroy() - exit() - - #def render(self): - # CGameState.render(self) - # print "CMenuState render" - - def destroy(self): - CGameState.destroy(self) - #self.mInstructions.destroy() - self.mInstructions = None - CGame().removeChild(self.mButtonA1G1) - CGame().removeChild(self.mButtonA1G3) - CGame().removeChild(self.mButtonA1G7) - CGame().removeChild(self.mExit) - #self.mButtonPlay.destroy() - self.mButtonA1G1 = None - self.mButtonA1G3 = None - self.mButtonA1G7 = None - self.mExit = None - self.mBackground = None - print "CMenuState destroy" - - def doEvents(self, aEvent): - print aEvent.type +# -*- coding: utf-8 -*- + +import pygame + +import api.GameState +from api.GameState import CGameState +import api.MultiLabel +from api.MultiLabel import CMultiLabel +import api.Game +from api.Game import CGame +import api.Button +from api.Button import CButton +import game.CreditsState +from CreditsState import * +import api.Image as Image + +import game.Area1Game1 +from game.Area1Game1 import CArea1Game1 + +import game.Area1Game3 +from game.Area1Game3 import CArea1Game3 + +import game.Area1Game7 +from game.Area1Game7 import CArea1Game7 + +from gettext import gettext as _ + +class CMenuState(CGameState): + + mBackground = None + mInstructions = None + #mX = 10 + mButtonA1G1= None + mButtonA1G3 = None + + mButtonCredits = None + mButtonPlay = None + mButtonHelp = None + mButtonExit = None + + #def __init__(self): + # ''' + # Constructor + # ''' + + def init(self): + CGameState.__init__(self) + #self.mInstructions = CMultiLabel() + #CGame().addChild(self.mInstructions) + #print self.mX + + self.mButtonCredits = CButton() + self.mButtonCredits.bgColor = (0x99, 0x99, 0x66) + self.mButtonCredits.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) + self.mButtonCredits.set_center((600, 420)) + self.mButtonCredits.set_size((200, 40)) + self.mButtonCredits.set_text('Créditos') + CGame().addChild(self.mButtonCredits) + + self.mButtonPlay = CButton() + self.mButtonPlay.bgColor = (0x99, 0x99, 0x66) + self.mButtonPlay.fgColor = (0xFF, 0xFF, 0xFF) + self.mButtonPlay.font = pygame.font.Font('assets/fonts/fipps.ttf', 28) + self.mButtonPlay.set_center((600, 50)) + self.mButtonPlay.set_size((200, 40)) + self.mButtonPlay.set_text('Jugar') + CGame().addChild(self.mButtonPlay) + + self.mButtonHelp = CButton() + self.mButtonHelp.bgColor = (0x99, 0x99, 0x66) + self.mButtonHelp.font = pygame.font.Font('assets/fonts/fipps.ttf', 32) + self.mButtonHelp.set_center((600, 470)) + self.mButtonHelp.set_size((200, 40)) + self.mButtonHelp.set_text('Ayuda') + CGame().addChild(self.mButtonHelp) + + self.mButtonExit = CButton() + self.mButtonExit.bgColor = (0x99, 0x99, 0x66) + self.mButtonExit.font = pygame.font.Font('assets/fonts/fipps.ttf', 32) + self.mButtonExit.set_center((600, 520)) + self.mButtonExit.set_size((200, 40)) + self.mButtonExit.set_text('Salir') + CGame().addChild(self.mButtonExit) + + self.mButtonA1G1 = CButton() + #TODO: Create a function to create image. + self.mButtonA1G1.bgColor = (0x99, 0x99, 0x66) + self.mButtonA1G1.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) + self.mButtonA1G1.set_center((110, 420)) + self.mButtonA1G1.set_size((200, 40)) + self.mButtonA1G1.set_text('A1 - Juego 1') + CGame().addChild(self.mButtonA1G1) + + self.mButtonA1G3 = CButton() + self.mButtonA1G3.bgColor = (0x99, 0x99, 0x66) + self.mButtonA1G3.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) + self.mButtonA1G3.set_center((110, 470)) + self.mButtonA1G3.set_size((200, 40)) + self.mButtonA1G3.set_text('A1 - Juego 3') + CGame().addChild(self.mButtonA1G3) + + self.mButtonA1G7 = CButton() + self.mButtonA1G7.bgColor = (0x99, 0x99, 0x66) + self.mButtonA1G7.font = pygame.font.Font('assets/fonts/fipps.ttf', 20) + self.mButtonA1G7.set_center((110, 520)) + self.mButtonA1G7.set_size((200, 40)) + self.mButtonA1G7.set_text('A1 - Juego 7') + CGame().addChild(self.mButtonA1G7) + + self.mBackground = Image.loadImage('assets/images/back_menu.png', False) + CGame().setBackground(self.mBackground) + + def update(self): + #print "menu update" + CGameState.update(self) + + if self.mButtonCredits.clicked(): + print "clicked credits" + #cs = CHelpState() + credits = CCreditsState() + CGame().setState(credits) + + elif self.mButtonPlay.clicked(): + print "clicked play" + # game = CLevelState() + # CGame().setState(game) + + elif self.mButtonHelp.clicked(): + print "clicked help" + #cs = CHelpState() + help = CCreditsState() + CGame().setState(help) + + elif self.mButtonExit.clicked(): + print 'exit' + CGame().destroy() + exit() + + elif self.mButtonA1G1.clicked(): + print "clicked A1G1" + #cs = CHelpState() + a1g1 = CArea1Game1() + CGame().setState(a1g1) + + elif self.mButtonA1G3.clicked(): + print "clicked A1G3" + #cs = CHelpState() + a1g3 = CArea1Game3() + CGame().setState(a1g3) + + elif self.mButtonA1G7.clicked(): + print "clicked A1G3" + #cs = CHelpState() + a1g7 = CArea1Game7() + CGame().setState(a1g7) + + #def render(self): + # CGameState.render(self) + # print "CMenuState render" + + def destroy(self): + CGameState.destroy(self) + #self.mInstructions.destroy() + self.mInstructions = None + CGame().removeChild(self.mButtonCredits) + CGame().removeChild(self.mButtonPlay) + CGame().removeChild(self.mButtonHelp) + CGame().removeChild(self.mButtonExit) + CGame().removeChild(self.mButtonA1G1) + CGame().removeChild(self.mButtonA1G3) + CGame().removeChild(self.mButtonA1G7) + #self.mButtonPlay.destroy() + self.mButtonCredits = None + self.mButtonPlay = None + self.mButtonExit = None + self.mButtonExit = None + self.mButtonA1G1 = None + self.mButtonA1G3 = None + self.mButtonA1G7 = None + self.mBackground = None + print "CMenuState destroy" + + def doEvents(self, aEvent): + print aEvent.type \ No newline at end of file diff --git a/src/states/__init__.py b/src/game/__init__.py index e69de29..e69de29 100755..100644 --- a/src/states/__init__.py +++ b/src/game/__init__.py -- cgit v0.9.1