diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/api/Game.py | 6 | ||||
-rw-r--r-- | src/api/Globe.py | 2 | ||||
-rwxr-xr-x | src/api/Points.py | 2 | ||||
-rwxr-xr-x | src/api/Sprite.py | 4 | ||||
-rwxr-xr-x | src/api/Sprite2.py | 203 | ||||
-rw-r--r-- | src/game/Area1Game1.py | 5 | ||||
-rw-r--r-- | src/game/Area1Game3.py | 2 | ||||
-rw-r--r-- | src/game/Area1Game4.py | 4 | ||||
-rw-r--r-- | src/game/Area1Game6.py | 15 | ||||
-rw-r--r-- | src/game/Area2Game2.py | 2 | ||||
-rw-r--r-- | src/game/BoyHall.py | 9 | ||||
-rw-r--r-- | src/game/HallState.py | 4 | ||||
-rw-r--r-- | src/game/PresentationState.py | 2 | ||||
-rw-r--r-- | src/game/SelectAreaState.py | 4 | ||||
-rw-r--r-- | src/game/SelectCharacterState.py | 2 | ||||
-rw-r--r-- | src/game/SelectPartidaState.py | 2 |
16 files changed, 224 insertions, 44 deletions
diff --git a/src/api/Game.py b/src/api/Game.py index f4dcaaf..37d0873 100755 --- a/src/api/Game.py +++ b/src/api/Game.py @@ -11,11 +11,7 @@ from pygame.locals import * import api.SuperSprite
from SuperSprite import CSuperSprite
-import api.Sprite
-from api.Sprite import CSprite
-
-
-
+from api.Sprite2 import CSprite
from api.Mouse import CMouse
from gettext import gettext as _
diff --git a/src/api/Globe.py b/src/api/Globe.py index e57931f..6c84b80 100644 --- a/src/api/Globe.py +++ b/src/api/Globe.py @@ -2,7 +2,7 @@ import pygame import Image -from api.Sprite import CSprite +from api.Sprite2 import CSprite path = 'assets/images/dialog/' diff --git a/src/api/Points.py b/src/api/Points.py index 2424709..872b0cb 100755 --- a/src/api/Points.py +++ b/src/api/Points.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import pygame -from api.Sprite import CSprite +from api.Sprite2 import CSprite class CPoints(CSprite): diff --git a/src/api/Sprite.py b/src/api/Sprite.py index 881ecdd..3829225 100755 --- a/src/api/Sprite.py +++ b/src/api/Sprite.py @@ -16,7 +16,7 @@ from Mouse import * # TODO: This class is a rotating sprite. update() in each frame rotates the sprite
# image, so this is inneficient for sprites that does not rotate continuoulsy.
-class CSprite(pygame.sprite.Sprite):
+class CSpriteOLD(pygame.sprite.Sprite):
# TODO: Como defino aca los vectores ?
@@ -635,4 +635,4 @@ class CSprite(pygame.sprite.Sprite): rect = self.image.get_rect()
return (rect[2], rect[3])
else:
- return (0,0)
\ No newline at end of file + return (0,0)
diff --git a/src/api/Sprite2.py b/src/api/Sprite2.py new file mode 100755 index 0000000..edc02a3 --- /dev/null +++ b/src/api/Sprite2.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import pygame
+import math
+import Image
+import api.Math as CMath
+import api.Vector
+from api.Vector import CVector
+
+from Mouse import *
+
+class CSprite(pygame.sprite.Sprite):
+ """ An enhanced Sprite class
+ expects a gameEngine.Scene class as its one parameter
+ Use methods to change image, direction, speed
+ Will automatically travel in direction and speed indicated
+ """
+
+ mPos = None
+
+ mOffsetX = 0
+ mOffsetY = 0
+
+ def __init__(self):
+ pygame.sprite.Sprite.__init__(self)
+
+ self.mPos = CVector(0.0, 0.0)
+ self.mVel = CVector(0.0, 0.0)
+
+ # Registration point offset.
+ self.mOffsetX = 0
+ self.mOffsetY = 0
+
+ # Speed of the sprite.
+ self.mSpeed = 0
+
+ self.maxSpeed = 50
+ self.minSpeed = -3
+
+ self.mactive = False
+ self.mclicked = False
+
+ self.font = pygame.font.Font('assets/fonts/DejaVuSans.ttf', 30)
+ self.mImageMaster = self.font.render(">sprite>", True, (0,0,0), (0xFF, 0xFF, 0xFF))
+
+ # Set the image of the sprite.
+ self.image = self.mImageMaster.copy()
+
+ self.update()
+
+ def setRegistrationPointOffset(self, aOffsetX, aOffsetY):
+ self.mOffsetX = aOffsetX
+ self.mOffsetY = aOffsetY
+
+ def setXY(self, aX, aY):
+ self.mPos.setXY(aX, aY)
+ 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())
+ self.mVel.truncate(self.maxSpeed)
+
+ def setMaxSpeed(self, aMaxSpeed):
+ self.maxSpeed = aMaxSpeed
+
+ def update(self):
+
+ self.mPos.add(self.mVel)
+
+ self.calculatePositionWithOffset()
+
+ self.mclicked = False
+
+ 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 CMouse().release():
+ self.mactive = False
+ if self.rect.collidepoint(CMouse().getPos()):
+ #print("release in button")
+ self.mclicked = True
+
+ def setSpeed(self, speed):
+ """ immediately sets the objects speed to the
+ given value.
+ """
+ self.mSpeed = speed
+
+ def speedUp(self, amount):
+ """ changes speed by the given amount
+ Use a negative value to slow down
+ """
+ self.mSpeed += amount
+ if self.mSpeed < self.minSpeed:
+ self.mSpeed = self.minSpeed
+ if self.mSpeed > self.maxSpeed:
+ self.mSpeed = self.maxSpeed
+
+ def loadImage(self, aImageFilename, aIsTransparent=True):
+ self.mImageMaster = Image.loadImage(aImageFilename, aIsTransparent)
+ self.setImage(self.mImageMaster)
+
+ def setImage(self, aImage):
+ self.mImageMaster = aImage
+ self.image = aImage
+ self.rect = self.image.get_rect()
+ self.calculatePositionWithOffset()
+
+ def setPosition (self, position):
+ """ place the sprite directly at the given position
+ expects an (x, y) tuple
+ """
+ self.mPos.setX(position.getX())
+ self.mPos.setY(position.getY())
+
+ def setSpeedLimits(self, max, min):
+ """ determines maximum and minimum
+ speeds you will allow through
+ speedUp() method. You can still
+ directly set any speed you want
+ with setSpeed() Default values:
+ max: 10
+ min: -3
+ """
+ self.maxSpeed = max
+ self.minSpeed = min
+
+ def dataTrace(self):
+ """ utility method for debugging
+ print major properties
+ extend to add your own properties
+ """
+ print "x: %d, y: %d, speed: %.2f, dx: %.2f, dy: %.2f" % \
+ (self.mPos.x, self.mPos.y, self.mSpeed, self.mAngle, self.dx, self.dy)
+
+ def mouseDown(self):
+ """ boolean function. Returns True if the mouse is
+ clicked over the sprite, False otherwise
+ """
+ self.pressed = False
+ if CMouse().pressed():
+ if self.rect.collidepoint(CMouse().getPos()):
+ self.pressed = True
+ return self.pressed
+
+ def mouseOver(self):
+ 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
+ """
+ return self.mclicked
+
+ def distanceTo(self, point):
+ """ returns distance to any point in pixels
+ can be used in circular collision detection
+ """
+ (pointx, pointy) = point
+ dx = self.mPos.x - pointx
+ dy = self.mPos.y - pointy
+
+ dist = math.sqrt((dx * dx) + (dy * dy))
+ return dist
+
+ def destroy(self):
+ self.font = None
+ self.mImageMaster = None
+ self.image = None
+
+ 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 getSize(self):
+ if self.image:
+ rect = self.image.get_rect()
+ return (rect[2], rect[3])
+ else:
+ return (0,0)
+
diff --git a/src/game/Area1Game1.py b/src/game/Area1Game1.py index 9db176a..726e3a0 100644 --- a/src/game/Area1Game1.py +++ b/src/game/Area1Game1.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import pygame -from api.Sprite import CSprite +from api.Sprite2 import CSprite from api.Button import CButton from api.Points import CPoints from api.Label import CLabel @@ -34,6 +34,7 @@ class Piece(CSprite): RADIUS_COLLISION = 50 + mState = None def __init__(self, aParent, aNum, aOrigin, aDestine): CSprite.__init__(self) @@ -86,8 +87,6 @@ class Piece(CSprite): elif (self.mState == STATE_OK): pass - - def setState(self, aState): if (aState == STATE_STALE): diff --git a/src/game/Area1Game3.py b/src/game/Area1Game3.py index fdbea29..ad969ab 100644 --- a/src/game/Area1Game3.py +++ b/src/game/Area1Game3.py @@ -7,7 +7,7 @@ import api.Image as Image from api.Game import CGame from api.GameState import CGameState from api.Button import CButton -from api.Sprite import CSprite +from api.Sprite2 import CSprite from api.Label import CLabel from api.MultiLabel import CMultiLabel from api.Points import CPoints diff --git a/src/game/Area1Game4.py b/src/game/Area1Game4.py index 1ea901e..30f8970 100644 --- a/src/game/Area1Game4.py +++ b/src/game/Area1Game4.py @@ -7,7 +7,7 @@ import api.Image as Image from api.Game import CGame from api.GameState import CGameState from api.Button import CButton -from api.Sprite import CSprite +from api.Sprite2 import CSprite from api.Label import CLabel from api.MultiLabel import CMultiLabel from api.Points import CPoints @@ -149,6 +149,8 @@ class CArea1Game4(CGameState): CGame().removeChild(self.mLabelQuestion) CGame().removeChild(self.mPoints) CGame().removeChild(self.mBook) + CGame().removeChild(self.mGoodSprite) + CGame().removeChild(self.mBadSprite) self.mButtonBackA1G4 = None self.mBackground = None self.mLabelDefinition = None diff --git a/src/game/Area1Game6.py b/src/game/Area1Game6.py index 4a211b6..5af4769 100644 --- a/src/game/Area1Game6.py +++ b/src/game/Area1Game6.py @@ -3,7 +3,7 @@ import os import sys import pygame -from api.Sprite import CSprite +from api.Sprite2 import CSprite from api.Button import CButton from api.Points import CPoints from api.MultiLabel import CMultiLabel @@ -51,6 +51,7 @@ class Piece(CSprite): RADIUS_COLLISION = 40 + mState = None def __init__(self, aParent, aNum, aOrigin, aDestine): CSprite.__init__(self) @@ -87,7 +88,6 @@ class Piece(CSprite): self.setState(STATE_RETURN) self.mParent.mActivePiece = None - elif (self.mState == STATE_ADJUST): if (CMath.dist(self.mPos.getX() , self.mPos.getY(), self.mDest.getX(), self.mDest.getY()) < self.RADIUS_COLLISION): @@ -108,15 +108,6 @@ class Piece(CSprite): pass - def render(self): - pass - - - def destroy(self): - pass - #eliminar la imagen creada - - def setState(self, aState): if (aState == STATE_STALE): @@ -137,13 +128,11 @@ class Piece(CSprite): vec.mul(dist/self.TIME_ADJUST) self.setVelXY(vec.getX(), vec.getY()) - if (aState == STATE_OK): self.setPosition(self.mDest) self.mVel = CVector(0.0, 0.0) #play(Sonido OK) - self.mState = aState def getState(self): diff --git a/src/game/Area2Game2.py b/src/game/Area2Game2.py index d5d2577..ef33b04 100644 --- a/src/game/Area2Game2.py +++ b/src/game/Area2Game2.py @@ -7,7 +7,7 @@ import api.Image as Image from api.Game import CGame from api.GameState import CGameState from api.Button import CButton -from api.Sprite import CSprite +from api.Sprite2 import CSprite from api.Label import CLabel from api.MultiLabel import CMultiLabel from api.Points import CPoints diff --git a/src/game/BoyHall.py b/src/game/BoyHall.py index 7720909..295a6bb 100644 --- a/src/game/BoyHall.py +++ b/src/game/BoyHall.py @@ -1,15 +1,10 @@ -import api.Sprite -from api.Sprite import CSprite +# -*- coding: utf-8 -*- +from api.Sprite2 import CSprite import api.Image as Image - -import api.Anim from api.Anim import CAnim - from api.Mouse import * - from api.Vector import * - import api.Math as Math class CBoyHall(CSprite): diff --git a/src/game/HallState.py b/src/game/HallState.py index 4e1df7c..c7448f7 100644 --- a/src/game/HallState.py +++ b/src/game/HallState.py @@ -11,9 +11,7 @@ from api.Game import CGame import api.Button from api.Button import CButton import api.Image as CImage - -import api.Sprite -from api.Sprite import CSprite +from api.Sprite2 import CSprite import api.Image as Image diff --git a/src/game/PresentationState.py b/src/game/PresentationState.py index 040e689..e7eeadd 100644 --- a/src/game/PresentationState.py +++ b/src/game/PresentationState.py @@ -12,7 +12,7 @@ import api.Button from api.Button import CButton import game.CreditsState from CreditsState import * -from api.Sprite import CSprite +from api.Sprite2 import CSprite #import game.SelectAreaState #from SelectAreaState import * diff --git a/src/game/SelectAreaState.py b/src/game/SelectAreaState.py index 5bf3020..faaece1 100644 --- a/src/game/SelectAreaState.py +++ b/src/game/SelectAreaState.py @@ -11,9 +11,7 @@ from api.Game import CGame import api.Button from api.Button import CButton import api.Image as CImage - -import api.Sprite -from api.Sprite import CSprite +from api.Sprite2 import CSprite import api.Image as Image diff --git a/src/game/SelectCharacterState.py b/src/game/SelectCharacterState.py index bec0c14..eec97c5 100644 --- a/src/game/SelectCharacterState.py +++ b/src/game/SelectCharacterState.py @@ -9,7 +9,7 @@ from api.Label import CLabel import api.Game from api.Game import CGame from api.Button import CButton -from api.Sprite import CSprite +from api.Sprite2 import CSprite import api.Image as Image diff --git a/src/game/SelectPartidaState.py b/src/game/SelectPartidaState.py index fa4df3a..8164b7e 100644 --- a/src/game/SelectPartidaState.py +++ b/src/game/SelectPartidaState.py @@ -9,7 +9,7 @@ from api.Label import CLabel import api.Game from api.Game import CGame from api.Button import CButton -from api.Sprite import CSprite +from api.Sprite2 import CSprite from SelectCharacterState import CSelectCharacterState |