diff options
author | Fernando Sansberro <sansberro@batovi.com> | 2012-04-21 12:19:39 (GMT) |
---|---|---|
committer | Fernando Sansberro <sansberro@batovi.com> | 2012-04-21 12:19:39 (GMT) |
commit | 0eb075f87d98e8588fa2d8b8bc5f1513d377d8ba (patch) | |
tree | f4712b0a49968fdb950ec1343045ff0715bef6bf | |
parent | 4a59a2320d9b65a997c34c707631fbf5d206a7fa (diff) |
Renamed states folder to game. Some improvements in codebase.
-rw-r--r-- | .project | 17 | ||||
-rw-r--r-- | .pydevproject | 10 | ||||
-rw-r--r-- | .settings/org.eclipse.core.resources.prefs | 14 | ||||
-rw-r--r-- | src/CLEAN.bat | 2 | ||||
-rwxr-xr-x | src/Main.py | 8 | ||||
-rwxr-xr-x | src/api/Button.py | 15 | ||||
-rwxr-xr-x | src/api/Game.py | 60 | ||||
-rw-r--r--[-rwxr-xr-x] | src/api/GameState.py (renamed from src/states/GameState.py) | 32 | ||||
-rwxr-xr-x | src/api/Math.py | 4 | ||||
-rwxr-xr-x | src/api/Mouse.py | 58 | ||||
-rw-r--r-- | src/api/Sprite.py | 111 | ||||
-rwxr-xr-x | src/api/Vector.py | 10 | ||||
-rw-r--r-- | src/assets/images/cursor.png | bin | 0 -> 1346 bytes | |||
-rw-r--r-- | src/game/Area1Game1.py (renamed from src/states/Area1Game1.py) | 16 | ||||
-rw-r--r--[-rwxr-xr-x] | src/game/Area1Game3.py (renamed from src/states/Area1Game3.py) | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | src/game/Area1Game7.py (renamed from src/states/Area1Game7.py) | 14 | ||||
-rw-r--r--[-rwxr-xr-x] | src/game/Area2Game2.py (renamed from src/states/Area2Game2.py) | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | src/game/CreditsState.py (renamed from src/states/CreditsState.py) | 124 | ||||
-rw-r--r--[-rwxr-xr-x] | src/game/MenuState.py (renamed from src/states/MenuState.py) | 316 | ||||
-rw-r--r--[-rwxr-xr-x] | src/game/__init__.py (renamed from src/states/__init__.py) | 0 |
20 files changed, 512 insertions, 301 deletions
diff --git a/.project b/.project new file mode 100644 index 0000000..941ae78 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>CeibalJamEducacionSexual</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.python.pydev.PyDevBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.python.pydev.pythonNature</nature> + </natures> +</projectDescription> diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 0000000..22c8d01 --- /dev/null +++ b/.pydevproject @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?eclipse-pydev version="1.0"?> + +<pydev_project> +<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH"> +<path>/CeibalJamEducacionSexual/src</path> +</pydev_pathproperty> +<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property> +<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Python 2.7</pydev_property> +</pydev_project> diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..e3decf9 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +encoding//src/Main.py=utf-8 +encoding//src/api/Game.py=utf-8 +encoding//src/api/GameState.py=utf-8 +encoding//src/api/Mouse.py=utf-8 +encoding//src/api/Sprite.py=utf-8 +encoding//src/api/Vector.py=utf-8 +encoding//src/assets/data/area1game3_data.py=utf-8 +encoding//src/game/Area1Game1.py=utf-8 +encoding//src/game/Area1Game3.py=utf-8 +encoding//src/game/Area1Game7.py=utf-8 +encoding//src/game/Area2Game2.py=utf-8 +encoding//src/game/CreditsState.py=utf-8 +encoding//src/game/MenuState.py=utf-8 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 Binary files differnew file mode 100644 index 0000000..cb81bbe --- /dev/null +++ b/src/assets/images/cursor.png 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 |