From da21032452884b1076c770c7643f936395beac71 Mon Sep 17 00:00:00 2001 From: slm Date: Wed, 04 Aug 2010 20:05:54 +0000 Subject: Making changes to the test now located in the directory in devtools Dave's Test. Documentation and fully functional demonstration needed. --- diff --git a/MAFH2/drawableobject/DynamicDrawableObject.py b/MAFH2/drawableobject/DynamicDrawableObject.py deleted file mode 100755 index aaf518b..0000000 --- a/MAFH2/drawableobject/DynamicDrawableObject.py +++ /dev/null @@ -1,89 +0,0 @@ -import pygame -from DrawableObject import DrawableObject - -class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): - - def __init__(self,images,textfileName,fps = 2, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - - DrawableObject.__init__(self, images, textfileName, fps, x, y, xVelocity, yVelocity) - - def addImages(self, images): - - self._images.extend(images) - - def updateAnim(self, t): - - timePassed = t + self._last_update - if timePassed > self._delay: - - self._frame += timePassed/self._delay - while self._frame >= len(self._images): - - framesPast = self._frame - len(self._images) - self._frame = framesPast - 1 - - self.image = self._images[self._frame] - self._last_update = timePassed%self._delay - self._last_update = timePassed - - def updateCurrentAnimation(self, t): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == self._current_anim: - - timePassed = t + self._last_update - if timePassed > self._delay: - - if self._frame < self.animations.get(self._current_anim)[0] or self._frame > self.animations.get(self._current_anim)[1]: #checking if I am in the animation and putting me there if I am not - - self._frame = self.animations.get(self._current_anim)[0] - - self._frame += timePassed/self._delay - while self._frame >= self.animations.get(self._current_anim)[1]: - - framesPast = self._frame - self.animations.get(self._current_anim)[1] - self._frame = framesPast - 1 + self.animations.get(self._current_anim)[0] - - self.image = self._images[self._frame] - self._last_update = timePassed%self._delay - self._last_update = timePassed - - cnt = len(animations) - - cnt += 1 - - def nextFrame(self): - - self._frame += 1 - if self._frame >= len(self._images): - - framesPast = self._frame - len(self._images) - self._frame = framesPast - - self.image = self._images[self._frame] - - def nextCurrentAnimFrame(self): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == self._current_anim: - - if self._frame < self.animations[self._current_anim][0] or self._frame > self.animations[self._current_anim][1]: - - self._frame = self.animations[self._current_anim][0] - else: - self._frame += 1 - - if self._frame > self.animations[self._current_anim][1]: - - framesPast = self._frame - self.animations[self._current_anim][1] - self._frame = framesPast - 1 + self.animations[self._current_anim][0] - - self.image = self._images[self._frame] - - cnt = len(anmiations) - - cnt += 1 diff --git a/MAFH2/drawableobject/__init__.py b/MAFH2/drawableobject/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/MAFH2/drawableobject/__init__.py +++ /dev/null diff --git a/MAFH2/fortuneengine/Scene.py b/MAFH2/fortuneengine/Scene.py index 13827d3..47b73e8 100644 --- a/MAFH2/fortuneengine/Scene.py +++ b/MAFH2/fortuneengine/Scene.py @@ -22,12 +22,10 @@ class Scene(pygame.sprite.RenderUpdates): lowestX = 9000 lowestY = 9000 - - cnt = 0 - while cnt < len(self._spritelist): - if self._spritelist[cnt][0].getXPos() < lowestX: lowestX = self._spritelist[cnt][0].getXPos() - if self._spritelist[cnt][0].getYPos() < lowestY: lowestY = self._spritelist[cnt][0].getYPos() - cnt += 1 + + for i in range(len(self._spritelist)): + if self._spritelist[i][0].getXPos() < lowestX: lowestX = self._spritelist[i][0].getXPos() + if self._spritelist[i][0].getYPos() < lowestY: lowestY = self._spritelist[i][0].getYPos() self.xPos = lowestX self.yPos = lowestY @@ -37,11 +35,9 @@ class Scene(pygame.sprite.RenderUpdates): highestX = 0 highestY = 0 - cnt = 0 - while cnt < len(self._spritelist): - if (self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize()) > highestX: highestX = self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize() - if (self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize()) > highestY: highestY = self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize() - cnt += 1 + for i in range(len(self._spritelist)): + if (self._spritelist[i][0].getXPos() + self._spritelist[i][0].getXSize()) > highestX: highestX = self._spritelist[i][0].getXPos() + self._spritelist[i][0].getXSize() + if (self._spritelist[i][0].getYPos() + self._spritelist[i][0].getYSize()) > highestY: highestY = self._spritelist[i][0].getYPos() + self._spritelist[i][0].getYSize() self.xSize = highestX - self.xPos self.ySize = highestY - self.yPos @@ -57,11 +53,9 @@ class Scene(pygame.sprite.RenderUpdates): def setRelativePositions(self): - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][1] = self._spritelist[cnt][0].getXPos() - self.xPos - self._spritelist[cnt][2] = self._spritelist[cnt][0].getYPos() - self.yPos - cnt += 1 + for i in range(len(self._spritelist)): + self._spritelist[i][1] = self._spritelist[i][0].getXPos() - self.xPos + self._spritelist[i][2] = self._spritelist[i][0].getYPos() - self.yPos def removeObject(self, sprite): @@ -86,11 +80,8 @@ class Scene(pygame.sprite.RenderUpdates): def moveObjects(self): - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].move() - cnt += 1 + for i in range(len(self._spritelist)): + self._spritelist[i][0].move() self.calcPosition() self.calcSize() @@ -98,11 +89,11 @@ class Scene(pygame.sprite.RenderUpdates): def moveScene(self, xNudge = 0, yNudge = 0): - cnt = 0 - while cnt < len(self._spritelist): + + for i in range(len(self._spritelist)): - self._spritelist[cnt][0].nudge(xNudge, yNudge) - cnt += 1 + self._spritelist[i][0].nudge(xNudge, yNudge) + self.calcPosition() @@ -111,11 +102,9 @@ class Scene(pygame.sprite.RenderUpdates): if newXPos != None: self.xPos = newXPos if newYPos != None: self.yPos = newYPos - cnt = 0 - while cnt < len(self._spritelist): + for i in range(len(self._spritelist)): - self._spritelist[cnt][0].setPosition(self.xPos + self._spritelist[cnt][1], self.yPos + self._spritelist[cnt][2]) - cnt += 1 + self._spritelist[i][0].setPosition(self.xPos + self._spritelist[i][1], self.yPos + self._spritelist[i][2]) def getXPos(self): return self.xPos @@ -131,10 +120,9 @@ class Scene(pygame.sprite.RenderUpdates): def scaleObjects(self, newXSize = None, newYSize = None): - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(newXSize, newYSize) - cnt += 1 + + for i in range(len(self._spritelist)): + self._spritelist[i][0].scale(newXSize, newYSize) def scaleScene(self, newXSize = None, newYSize = None): @@ -146,13 +134,11 @@ class Scene(pygame.sprite.RenderUpdates): if newXSize != None: xScale = (newXSize * 1.0)/self.xSize if newYSize != None: yScale = (newYSize * 1.0)/self.ySize - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(xScale * self._spritelist[cnt][0].getXSize(), yScale * self._spritelist[cnt][0].getYSize()) - self._spritelist[cnt][1] = xScale * self._spritelist[cnt][1] - self._spritelist[cnt][2] = yScale * self._spritelist[cnt][2] - cnt += 1 + + for i in range(len(self._spritelist)): + self._spritelist[i][0].scale(xScale * self._spritelist[iaw][0].getXSize(), yScale * self._spritelist[i][0].getYSize()) + self._spritelist[i][1] = xScale * self._spritelist[i][1] + self._spritelist[i][2] = yScale * self._spritelist[i][2] self.calcPosition() self.calcSize() @@ -195,8 +181,6 @@ class Scene(pygame.sprite.RenderUpdates): def nextFrame(self): - cnt = 0 - while cnt < len(self._spritelist): + for i in range(len(self._spritelist)): - self._spritelist[cnt][0].nextFrame() - cnt += 1 + self._spritelist[i][0].nextFrame() diff --git a/devtools/CompleteTestKit/DrawableFontObject.py b/devtools/CompleteTestKit/DrawableFontObject.py deleted file mode 100644 index 6fce74b..0000000 --- a/devtools/CompleteTestKit/DrawableFontObject.py +++ /dev/null @@ -1,17 +0,0 @@ -import pygame -from DrawableObject import DrawableObject - -class DrawableFontObject(DrawableObject, pygame.sprite.Sprite): - - def __init__(self,text,font,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - - self.font = font - self.textImage = font.render(text, 1, (255,255,255)) - - DrawableObject.__init__(self, [self.textImage], '', fps, x, y, xVelocity, yVelocity) - - def changeText(self, newText): - - self._images[0] = self.font.render(newText, True, (111,22,45)) - self.image = self._images[0] - diff --git a/devtools/CompleteTestKit/DrawableObject.py b/devtools/CompleteTestKit/DrawableObject.py deleted file mode 100755 index 9b55ceb..0000000 --- a/devtools/CompleteTestKit/DrawableObject.py +++ /dev/null @@ -1,157 +0,0 @@ -import pygame - -class DrawableObject(pygame.sprite.Sprite): - - def __init__(self,images,textfileName,fps = 2, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - pygame.sprite.Sprite.__init__(self) - cnt = 0 - - #self._originals = images - #self._images = images - self._images = [] - self._origImages = [] - while cnt < len(images): - self._images.append(images[cnt].convert()) - self._origImages.append(images[cnt].convert()) - cnt += 1 - self.image = self._images[0] - self._start = pygame.time.get_ticks() - self._delay = 1000 / fps - self._last_update = 0 - self._frame = 0 - self.animations = {} - self._current_anim = "" - self.xPos = x - self.yPos = y - self.xSpeed = xVelocity - self.ySpeed = yVelocity - self.myAngle = 0 - self.xSize = 40 - self.ySize = 40 - - if textfileName != '': - - f = open(textfileName, 'r') - currentLine = f.readline() - while currentLine != '': - - animValues = currentLine.split(",") - self.animations[animValues[0]] = [int(animValues[1]), int(animValues[2])] - currentLine = f.readline() - - - def addImages(self, images): - - self._images.extend(images) - #self._originals.extend(images) - - def goToAnim(self, animName): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == animName: - self._current_anim = animName - self._frame = self.animations[animName][0] - self.image = self._images[self._frame] - cnt = len(animations) - cnt += 1 - - def move(self): - - self.xPos += self.xSpeed - self.yPos += self.ySpeed - - self.image[0].get_rect().move(self.xPos,self.yPos) - - def nudge(self, xNudge = 0, yNudge = 0): - - self.xPos += xNudge - self.yPos += yNudge - - self.image[0].get_rect().move(self.xPos,self.yPos) - - def scale(self, newXSize = None, newYSize = None): - - if newXSize != None: self.xSize = newXSize - if newYSize != None: self.ySize = newYSize - - cnt = 0 - while cnt < len(self._images): - - self._origImages[cnt] = pygame.transform.scale(self._origImages[cnt], (self.xSize, self.ySize)) - self._images[cnt] = self._origImages[cnt] - cnt += 1 - - def getXSize(self): - - return self.xSize - - def getYSize(self): - - return self.ySize - - def rotate(self,angle): - - cnt = 0 - - self.myAngle += angle - while cnt < len(self._images): - - self._images[cnt] = pygame.transform.rotate(self._origImages[cnt], self.myAngle) - cnt += 1 - - def getRotation(self): - - return self.myAngle - - def setPosition(self, x = None, y = None): - - if x != None and x >= 0: self.xPos = x - if y != None and y >= 0: self.yPos = y - - def getXPos(self): - - return self.xPos - - def getYPos(self): - - return self.yPos - - def setSpeed(self, xVelocity = None, yVelocity = None): - - if xVelocity != None: self.xSpeed = xVelocity - if yVelocity != None: self.ySpeed = yVelocity - - def getXSpeed(self): - - return self.xSpeed - - def getYSpeed(self): - - return self.ySpeed - - def calcColorKey(self): - - myColorKey = images[0].get_at((0,0)) - setColorKey(myColorKey) - - def setColorKey(self, aColor): - - cnt = 0 - while cnt < len(self._images): - self._images[cnt].set_colorkey(aColor) - cnt += 1 - - def update(self, t): - pass - - def updateCurrnetAnimation(self, t): - pass - - def nextFrame(self): - pass - - def nextCurrentAnimFrame(self): - pass - diff --git a/devtools/CompleteTestKit/DynamicDrawableObject - depreciated.py b/devtools/CompleteTestKit/DynamicDrawableObject - depreciated.py deleted file mode 100644 index 0686bc5..0000000 --- a/devtools/CompleteTestKit/DynamicDrawableObject - depreciated.py +++ /dev/null @@ -1,110 +0,0 @@ -import pygame -from DrawableObject import DrawableObject - -class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): - - def __init__(self,images,textfileName,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - - DrawableObject.__init__(self, images, textfileName, fps, x, y, xVelocity, yVelocity) - - def addImages(self, images): - - self._images.extend(images) - - # def update(self, t): -# -# timePassed = t + self._last_update -# if timePassed > self._delay: -# -# self._frame += timePassed/self._delay -# while self._frame >= len(self._images): -# -# framesPast = self._frame - len(self._images) -# self._frame = framesPast - 1 -# -# self.image = self._images[self._frame] -# self._last_update = timePassed%self._delay -# self._last_update = timePassed - - def update(self, right, bottom): - - # If we're at the top or bottom of the screen, switch directions. - if (self.yPos + self.ySize) >= bottom or self.yPos < 0: self.ySpeed = self.ySpeed * -1 - if (self.yPos + self.ySize) >= bottom and self.ySpeed > 0: self.ySpeed = self.ySpeed * -1 - if self.yPos < 0 and self.ySpeed < 0: self.ySpeed = self.ySpeed * -1 - - # If we're at the right or left of the screen, switch directions. - if (self.xPos + self.xSize) >= right or self.xPos < 0: self.xSpeed = self.xSpeed * -1 - if (self.xPos + self.xSize) >= right and self.xSpeed > 0: self.xSpeed = self.xSpeed * -1 - if self.xPos < 0 and self.xSpeed < 0: self.xSpeed = self.xSpeed * -1 - - self.move() - - if self._frame < len(self._images) - 1: - self._frame += 1 - else: - self._frame = 0 - - self.image = self._images[self._frame] - - def updateCurrentAnimation(self, t): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == self._current_anim: - - timePassed = t + self._last_update - if timePassed > self._delay: - - if self._frame < self.animations.get(self._current_anim)[0] or self._frame > self.animations.get(self._current_anim)[1]: #checking if I am in the animation and putting me there if I am not - - self._frame = self.animations.get(self._current_anim)[0] - - self._frame += timePassed/self._delay - while self._frame >= self.animations.get(self._current_anim)[1]: - - framesPast = self._frame - self.animations.get(self._current_anim)[1] - self._frame = framesPast - 1 + self.animations.get(self._current_anim)[0] - - self.image = self._images[self._frame] - self._last_update = timePassed%self._delay - self._last_update = timePassed - - cnt = len(animations) - - cnt += 1 - - def nextFrame(self): - - self._frame += 1 - if self._frame >= len(self._images): - - framesPast = self._frame - len(self._images) - self._frame = framesPast - - self.image = self._images[self._frame] - - def nextCurrentAnimFrame(self): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == self._current_anim: - - if self._frame < self.animations[self._current_anim][0] or self._frame > self.animations[self._current_anim][1]: - - self._frame = self.animations[self._current_anim][0] - else: - self._frame += 1 - - if self._frame > self.animations[self._current_anim][1]: - - framesPast = self._frame - self.animations[self._current_anim][1] - self._frame = framesPast - 1 + self.animations[self._current_anim][0] - - self.image = self._images[self._frame] - - cnt = len(anmiations) - - cnt += 1 diff --git a/devtools/CompleteTestKit/DynamicDrawableObject.py b/devtools/CompleteTestKit/DynamicDrawableObject.py deleted file mode 100755 index e69cd5f..0000000 --- a/devtools/CompleteTestKit/DynamicDrawableObject.py +++ /dev/null @@ -1,90 +0,0 @@ -import pygame -from DrawableObject import DrawableObject - -class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): - - def __init__(self,images,textfileName,fps = 2, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - - DrawableObject.__init__(self, images, textfileName, fps, x, y, xVelocity, yVelocity) - - def addImages(self, images): - - self._images.extend(images) - - def updateAnim(self, t): - - timePassed = t + self._last_update - if timePassed > self._delay: - - self._frame += timePassed/self._delay - while self._frame >= len(self._images): - - framesPast = self._frame - len(self._images) - self._frame = framesPast - 1 - - self.image = self._images[self._frame] - self._last_update = timePassed%self._delay - self._last_update = timePassed - - def updateCurrentAnimation(self, t): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == self._current_anim: - - timePassed = t + self._last_update - if timePassed > self._delay: - - if self._frame < self.animations.get(self._current_anim)[0] or self._frame > self.animations.get(self._current_anim)[1]: #checking if I am in the animation and putting me there if I am not - - self._frame = self.animations.get(self._current_anim)[0] - - self._frame += timePassed/self._delay - while self._frame >= self.animations.get(self._current_anim)[1]: - - framesPast = self._frame - self.animations.get(self._current_anim)[1] - self._frame = framesPast - 1 + self.animations.get(self._current_anim)[0] - - self.image = self._images[self._frame] - self._last_update = timePassed%self._delay - self._last_update = timePassed - - cnt = len(animations) - - cnt += 1 - - def nextFrame(self): - - self._frame += 1 - if self._frame >= len(self._images): - - framesPast = self._frame - len(self._images) - self._frame = framesPast - - self.image = self._images[self._frame] - - def nextCurrentAnimFrame(self): - - cnt = 0 - while cnt < len(animations): - - if animations[cnt] == self._current_anim: - - if self._frame < self.animations[self._current_anim][0] or self._frame > self.animations[self._current_anim][1]: - - self._frame = self.animations[self._current_anim][0] - else: - self._frame += 1 - - if self._frame > self.animations[self._current_anim][1]: - - framesPast = self._frame - self.animations[self._current_anim][1] - self._frame = framesPast - 1 + self.animations[self._current_anim][0] - - self.image = self._images[self._frame] - - cnt = len(anmiations) - - cnt += 1 - diff --git a/devtools/CompleteTestKit/FinalDirtyTest.py b/devtools/CompleteTestKit/FinalDirtyTest.py deleted file mode 100755 index 2435cf3..0000000 --- a/devtools/CompleteTestKit/FinalDirtyTest.py +++ /dev/null @@ -1,129 +0,0 @@ -#! /usr/bin/env python -import pygame -from pygame.locals import * -from boxes import BouncingBox -from time import time -from Scene import Scene -from DrawableObject import DrawableObject -from DynamicDrawableObject import DynamicDrawableObject -pygame.init() - -#2345678911234567892123456789312345678941234567895123456789612345678971234567898 -#2345678911234567892123456789312345678941234567895123456789612345678971234567898 - -#GREEN = 0, 192, 0 -screenWidth = 600 -screenHeight = 400 -maxGroup = 1 -maxTrial = 1 # multiple trials, but hard coded in this test -maxFrame=500 #temperary -infoFilePath = 'animInfo.txt' - -screen = pygame.display.set_mode(( screenWidth,screenHeight) ) -pygame.display.set_caption("Testing Custom Objects - FinalDirtyTest.py") -background = pygame.image.load("Room.gif") - -start = time() - -for trial in range(maxTrial): - print "New trial" - screen.blit( background , [0,0] ) - pygame.display.flip() - - start = time() - - ###NOTE: Convert to an encapsulated LOOP### - - surfaceList = [ - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/1.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/2.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/3.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/4.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/5.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/6.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/7.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/8.bmp").convert(), - pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/9.bmp").convert() - ] - - """ Object 1 will be a static image that will not be animating NOTE: once - you pass the list of frames to the object, they and their encapsulated - metadata are no longer only surfaces but are considered instead to be - Sprite Objects - """ - drawObject1 = DrawableObject(surfaceList, infoFilePath, None, 0 , 0 , 1 , 1) - drawObject1.goToAnim("anim1") - - """ 2-4 are dynamic objects that will refresh at varying rates to illustrate - the capabilities of our code to allow users to have varying refresh rate - """ - drawObject2 = DynamicDrawableObject( - surfaceList,infoFilePath,24,40,40,1,1) - drawObject2.goToAnim("anim1") - - drawObject3 = DynamicDrawableObject( - surfaceList,infoFilePath,24,80,80,1,1) - drawObject3.goToAnim("anim1") - - drawObject4 = DynamicDrawableObject( - surfaceList,infoFilePath,24,120,120,1,1) - drawObject4.goToAnim("anim1") - - drawObject5 = DynamicDrawableObject( - surfaceList,infoFilePath,24,160,160,1,1) - drawObject5.goToAnim("anim1") - - group1 = Scene( drawObject1 ) - group1.addObjects( [drawObject2] ) - group1.addObjects( [drawObject3] ) - group1.addObjects( [drawObject4] ) - group1.addObjects( [drawObject5] ) - - ### END: Convert to an encapsulated LOOP### - - """ We only need a single group for this example, but this format of an - ordered list of our scenes/groups will be echoed in our end - implementation. - - Revisit this and possibly simplify: this isn't a tutorial for suggested - techniques, but a test to demonstrate that it can be applied and to - record the data to imply why it's a viable alternative - """ - -# groupsList=[group1] # < --- What the hell and why - - print (time()-start) , - print " -- Time to load and sort animations into groupsListList" - - clock = pygame.time.Clock() - clock.tick() # <--Updates the clock variable in milliseconds - - start = time() - for maxFrame in range(maxFrame): - dirtyList=[] - - """ Move/collision detection, individually blit each image group, add to - dirtyList within the trial, this iterates through a list containing - sublists of surfaces that we want to update. This list contains both - """ - for grp in range(maxGroup): - groupsList[grp].update( clock.get_time() ) - clock.tick() - dirtyList.extend( groupsList[grp].draw(screen) ) - print dirtyList - pygame.display.update(dirtyList) # <-- is there a faster way to place? - - for grp in range(maxGroup): - groupsList[grp].clear(screen, background) - - print "Trial's average framerate was " , str(1/((time()-start)/maxFrame)) - diff --git a/devtools/CompleteTestKit/FontDirtyTest.py b/devtools/CompleteTestKit/FontDirtyTest.py deleted file mode 100644 index 4a37bfa..0000000 --- a/devtools/CompleteTestKit/FontDirtyTest.py +++ /dev/null @@ -1,64 +0,0 @@ -#! /usr/bin/env python -import pygame -from pygame.locals import * -from time import time -from Scene import Scene -from DrawableObject import DrawableObject -from DrawableFontObject import DrawableFontObject -pygame.init() - -FRAME=500 -screenWidth = 600 -screenHeight = 400 -numImages = 1 -maxTrial = 5 # multiple trials, but hard coded in this test -dirtyList=[] - -print "width,height", -print screenWidth, -print ",", -print screenHeight - -screen = pygame.display.set_mode( [int(screenWidth), - int(screenHeight)] ) #Screen Set 600x400 -pygame.display.set_caption("Sprite Speed Test Window") -GREEN = 0, 192, 0 # green -background = pygame.image.load("Room.gif") -screen.blit(background,[0,0]) -pygame.display.flip() -start = time() - -for aTrial in range(maxTrial): - start = time() - - font = pygame.font.SysFont("cmr10", 100) - d = DrawableFontObject("hello world", font) - d.goToAnim("anim1") - - - group1=Scene(d) - groups=[group1] - print (time()-start) , - print " -- Time to load" - - - clock = pygame.time.Clock() - clock.tick() - start = time() - for frame in range(FRAME): - dirtyList=[] - d.changeText(str(frame)) - for image in range(numImages): - #move / collision detection - groups[image].update(clock.get_time()) - clock.tick() - #individually blit each image group - add to list for update - dirtyList.extend(groups[image].draw(screen)) - - #draw the images flip/update - pygame.display.update(dirtyList) - for image in range(numImages): - groups[image].clear(screen, background) - - #print 1/((time()-start)/FRAME) - pygame.display.flip() diff --git a/devtools/CompleteTestKit/OriginalScene - Depreciated.py b/devtools/CompleteTestKit/OriginalScene - Depreciated.py deleted file mode 100644 index 4771f3b..0000000 --- a/devtools/CompleteTestKit/OriginalScene - Depreciated.py +++ /dev/null @@ -1,167 +0,0 @@ -import pygame - -class Scene(pygame.sprite.OrderedUpdates): - - def __init__(self, drawableObjects): - - self._spritelist = [] - RenderUpdates.__init__(self, *sprites) - - - cnt = 0 - while cnt < len(drawableObjects): - self._spritelist.append([drawableObjects[cnt],drawableObjects[cnt].getXPos(),drawableObjects[cnt].getYPos()]) - cnt += 1 - - self.xPos = 0 - self.yPos = 0 - self.xSize = 0 - self.ySize = 0 - - self.calcPosition() - self.calcSize() - self.setRelativePositions() - - def calcPosition(self): - - lowestX = 9000 - lowestY = 9000 - - cnt = 0 - while cnt < len(self._spritelist): - if self._spritelist[cnt][0].getXPos() < lowestX: lowestX = self._spritelist[cnt][0].getXPos() - if self._spritelist[cnt][0].getYPos() < lowestY: lowestY = self._spritelist[cnt][0].getYPos() - cnt += 1 - - self.xPos = lowestX - self.yPos = lowestY - - def calcSize(self): - - highestX = 0 - highestY = 0 - - cnt = 0 - while cnt < len(self._spritelist): - if self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize() > highestX: highestX = self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize() - if self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize() > highestY: highestY = self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize() - cnt += 1 - - self.xSize = highestX - self.xPos - self.ySize = highestY - self.yPos - - def addObjects(self, newDrawableObjects): - - cnt = 0 - while cnt < len(newDrawableObjects): - self._spritelist.append([newDrawableObjects[cnt],newDrawableObjects[cnt].getXPos(),newDrawableObjects[cnt].getYPos()]) - cnt += 1 - - self.calcPosition() - self.calcSize() - self.setRelativePositions() - - def setRelativePositions(self): - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][1] = self._spritelist[cnt][1] - self.xPos - self._spritelist[cnt][2] = self._spritelist[cnt][2] - self.yPos - cnt += 1 - - def removeObject(self, index): - - if index < len(self._spritelist): del self._spritelist[index] - - def getObject(self, index): - - if index < len(self._spritelist): - return self._spritelist[index][0] - - def getListSize(self): - return len(self._spritelist) - - def moveObjects(self): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].move() - cnt += 1 - - self.calcPosition() - self.calcSize() - self.setRelativePositions() - - def moveScene(self, xNudge = 0, yNudge = 0): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].nudge(xNudge, yNudge) - cnt += 1 - - self.calcPosition() - - def setPosition(self, newXPos = None, newYPos = None): - - if newXPos != None: self.xPos = newXPos - if newYPos != None: self.yPos = newYPos - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].setPosition(self.xPos + self._spritelist[cnt][1], self.yPos + self._spritelist[cnt][2]) - cnt += 1 - - def getXPos(self): - return self.xPos - - def getYPos(self): - return self.yPos - - def getXSize(self): - return self.xSize - - def getYSize(self): - return self.ySize - - def scaleObjects(self, newXSize = None, newYSize = None): - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(newXSize, newYSize) - cnt += 1 - - def scaleScene(self, newXSize = None, newYSize = None): - - xScale = 1 - yScale = 1 - - if newXSize != None: xScale = (newXSize * 1.0)/self.xSize - if newYSize != None: yScale = (newYSize * 1.0)/self.ySize - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(xScale * self._spritelist[cnt][0].getXSize(), yScale * self._spritelist[cnt][0].getYSize()) - self._spritelist[cnt][1] = xScale * self._spritelist[cnt][1] - self._spritelist[cnt][2] = yScale * self._spritelist[cnt][2] - cnt += 1 - - self.setPosition() - - def updateAnimations(self, t): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].updateCurrentAnimation(t) - cnt += 1 - - def nextFrame(self): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].nextFrame() - cnt += 1 diff --git a/devtools/CompleteTestKit/Room.gif b/devtools/CompleteTestKit/Room.gif deleted file mode 100644 index 798ebf1..0000000 --- a/devtools/CompleteTestKit/Room.gif +++ /dev/null Binary files differ diff --git a/devtools/CompleteTestKit/Scene.py b/devtools/CompleteTestKit/Scene.py deleted file mode 100644 index a38cd48..0000000 --- a/devtools/CompleteTestKit/Scene.py +++ /dev/null @@ -1,174 +0,0 @@ -import pygame -from pygame.sprite import RenderUpdates - -class Scene(pygame.sprite.RenderUpdates): - - def __init__(self, sprites): - - self._spritelist = [] - self._spritelist.append([sprites, sprites.getXPos(), sprites.getYPos()]) - RenderUpdates.__init__(self, sprites) - - self.xPos = 0 - self.yPos = 0 - self.xSize = 0 - self.ySize = 0 - - self.calcPosition() - self.calcSize() - self.setRelativePositions() - - def calcPosition(self): - - lowestX = 9000 - lowestY = 9000 - - cnt = 0 - while cnt < len(self._spritelist): - if self._spritelist[cnt][0].getXPos() < lowestX: lowestX = self._spritelist[cnt][0].getXPos() - if self._spritelist[cnt][0].getYPos() < lowestY: lowestY = self._spritelist[cnt][0].getYPos() - cnt += 1 - - self.xPos = lowestX - self.yPos = lowestY - - def calcSize(self): - - highestX = 0 - highestY = 0 - - cnt = 0 - while cnt < len(self._spritelist): - if (self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize()) > highestX: highestX = self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize() - if (self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize()) > highestY: highestY = self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize() - cnt += 1 - - self.xSize = highestX - self.xPos - self.ySize = highestY - self.yPos - - def addObject(self, newDrawableObject): - - RenderUpdates.add_internal(self, newDrawableObject) - self._spritelist.append([newDrawableObject, newDrawableObject.getXPos(), newDrawableObject.getYPos()]) - - def addObjects(self, newDrawableObjects): - for sprite in newDrawableObjects: - RenderUpdates.add_internal(self, sprite) - self._spritelist.append([sprite, sprite.getXPos(), sprite.getYPos()]) - - def setRelativePositions(self): - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][1] = self._spritelist[cnt][0].getXPos() - self.xPos - self._spritelist[cnt][2] = self._spritelist[cnt][0].getYPos() - self.yPos - cnt += 1 - - def removeObject(self, sprite): - RenderUpdates.remove_internal(self, sprite) - #self._spritelist.remove(sprite) - - - def getObject(self, index): - - if index < len(self._spritelist): - return self._spritelist[index][0] - - def getListSize(self): - - return len(self._spritelist) - - def getList(self): - - return list(self._spritelist) - - def moveObjects(self): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].move() - cnt += 1 - - self.calcPosition() - self.calcSize() - self.setRelativePositions() - - def moveScene(self, xNudge = 0, yNudge = 0): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].nudge(xNudge, yNudge) - cnt += 1 - - self.calcPosition() - - def setPosition(self, newXPos = None, newYPos = None): - - if newXPos != None: self.xPos = newXPos - if newYPos != None: self.yPos = newYPos - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].setPosition(self.xPos + self._spritelist[cnt][1], self.yPos + self._spritelist[cnt][2]) - cnt += 1 - - def getXPos(self): - return self.xPos - - def getYPos(self): - return self.yPos - - def getXSize(self): - return self.xSize - - def getYSize(self): - return self.ySize - - def scaleObjects(self, newXSize = None, newYSize = None): - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(newXSize, newYSize) - cnt += 1 - - def scaleScene(self, newXSize = None, newYSize = None): - - self.calcPosition() - self.calcSize() - - xScale = 1 - yScale = 1 - - if newXSize != None: xScale = (newXSize * 1.0)/self.xSize - if newYSize != None: yScale = (newYSize * 1.0)/self.ySize - - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(xScale * self._spritelist[cnt][0].getXSize(), yScale * self._spritelist[cnt][0].getYSize()) - self._spritelist[cnt][1] = xScale * self._spritelist[cnt][1] - self._spritelist[cnt][2] = yScale * self._spritelist[cnt][2] - cnt += 1 - - self.calcPosition() - self.calcSize() - self.setPosition() - - def updateAnimations(self, t): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].updateCurrentAnimation(t) - cnt += 1 - - def nextFrame(self): - - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].nextFrame() - cnt += 1 - diff --git a/devtools/CompleteTestKit/animInfo.txt b/devtools/CompleteTestKit/animInfo.txt deleted file mode 100644 index 8af5aef..0000000 --- a/devtools/CompleteTestKit/animInfo.txt +++ /dev/null @@ -1 +0,0 @@ -anim1,0,8 diff --git a/devtools/CompleteTestKit/boxes.py b/devtools/CompleteTestKit/boxes.py deleted file mode 100644 index 56b3623..0000000 --- a/devtools/CompleteTestKit/boxes.py +++ /dev/null @@ -1,35 +0,0 @@ -import pygame - -class BouncingBox(pygame.sprite.Sprite): - def __init__(self, imagesList, initial_position): - pygame.sprite.Sprite.__init__(self) - self.images = imagesList - self.listLen = len(imagesList) - self.listPos = 0 - self.image = imagesList[self.listPos] - self.rect = self.image.get_rect() - self.rect.topleft = initial_position - self.going_down = True # Start going downwards - self.going_right = True # Start going right - - def update(self, right, bottom): - # If we're at the top or bottom of the screen, switch directions. - if self.rect.bottom >= bottom: self.going_down = False - elif self.rect.top <= 0: self.going_down = True - # If we're at the right or left of the screen, switch directions. - if self.rect.right >= right: self.going_right = False - elif self.rect.left <= 0: self.going_right = True - - # Move our position up or down by 2 pixels - if self.going_down: self.rect.top += 2 - else: self.rect.top -= 2 - # Move our position left or right by 2 pixels - if self.going_right: self.rect.right += 2 - else: self.rect.right -= 2 - - if self.listPos < self.listLen - 1: - self.listPos += 1 - else: - self.listPos = 0 - - self.image = self.images[self.listPos] diff --git a/devtools/CompleteTestKit/reworkFinalDirtyTest.py b/devtools/CompleteTestKit/reworkFinalDirtyTest.py deleted file mode 100644 index 1682bf0..0000000 --- a/devtools/CompleteTestKit/reworkFinalDirtyTest.py +++ /dev/null @@ -1,75 +0,0 @@ -#! /usr/bin/env python -import pygame -from pygame.locals import * -from boxes import BouncingBox -from time import time -from Scene import Scene -from DrawableObject import DrawableObject -from DynamicDrawableObject import DynamicDrawableObject -pygame.init() - -#2345678911234567892123456789312345678941234567895123456789612345678971234567898 -#2345678911234567892123456789312345678941234567895123456789612345678971234567898 - -screenWidth = 600 -screenHeight = 400 -maxImage = 5 -maxGroup = 1 # not implemented for the first step - # groups are scenes within our code - our Scene inherits Group and ergo - # functions as such -maxTrial = 1 # multiple trials, but hard coded in this test -maxFrame=500 # temperary -infoFilePath = 'animInfo.txt' - -screen = pygame.display.set_mode(( screenWidth,screenHeight) ) -pygame.display.set_caption("Testing Custom Objects - FinalDirtyTest.py") -background = pygame.image.load("Room.gif") - -start = time() - -for trial in range(maxTrial): - print "New trial" - screen.blit( background , [0,0] ) - pygame.display.flip() - - start = time() - surfaceList = [] - drawObject = [] - scenesList = [] - - drawObject = [ DrawableObject( - surfaceList, infoFilePath, None, 0 , 0 , 1 , 1) ] - drawObject[0].goToAnim("anim1") - - for img in range(maxImage)[1:]: - surfaceList.append(pygame.image.load( - "./Animation Styles/IndividualFrames/bmp16/a2/",img, - "1.bmp").convert()) - drawObject[img] = DynamicDrawableObject( - surfaceList,infoFilePath,24,img*40,img*40,1,1) - drawObject[img].goToAnim("anim1") - - scenesList.append( Scene( drawObject[img] ) ) - -# 'scenesList' is a list filled with Scene objects (those inherit/extend Group) - - print (time()-start) , - print " -- Time to load and sort animations into scenesList" - - clock = pygame.time.Clock() - clock.tick() # <--Updates the clock variable in milliseconds - - start = time() - for maxFrame in range(maxFrame): - dirtyList=[] - - scenesList[1].update( clock.get_time() ) ## hard coded for now - clock.tick() - dirtyList.extend( scenesList[grp].draw(screen) ) - print dirtyList - pygame.display.update(dirtyList) # <-- is there a faster way to place? - - scenesList[grp].clear(screen, background) - - print "Trial's average framerate was " , str(1/((time()-start)/maxFrame)) - diff --git a/devtools/Dave's Test Kit/DODirtyTest.py b/devtools/Dave's Test Kit/DODirtyTest.py index 88e2309..b3d5df3 100644..100755 --- a/devtools/Dave's Test Kit/DODirtyTest.py +++ b/devtools/Dave's Test Kit/DODirtyTest.py @@ -1,24 +1,18 @@ #! /usr/bin/env python import pygame from pygame.locals import * -from time import time +import time from Scene import Scene from DrawableObject import DrawableObject from DynamicDrawableObject import DynamicDrawableObject pygame.init() -FRAME=500 #setting number of frames per trial +FRAME=2500 #setting number of frames per trial screenWidth = 600 #screen width screenHeight = 400 #screen height -numImages = 1 #number of copies of images +numImages = 4 #number of copies of images +numGroups = 1 maxTrial = 5 # multiple trials, but hard coded in this test -dirtyList=[] #list for objects to be updated - -#print the height and width -print "width,height", -print screenWidth, -print ",", -print screenHeight screen = pygame.display.set_mode( [int(screenWidth), int(screenHeight)] ) #Setting the screen size to the given size @@ -48,30 +42,51 @@ surfaceList = [ pygame.image.load( "./Animation Styles/IndividualFrames/bmp16/a2/9.bmp").convert() ] - + for aTrial in range(maxTrial): - start = time()#starting timer + start = time.time()#starting timer - d = DynamicDrawableObject(surfaceList,'', 100) #creating my DynamicDrawableObject object using my previously made images list +#creating my DynamicDrawableObject object using my previously made images list + a = DynamicDrawableObject(surfaceList,'', 72, 40, 40 , 2,2) + b = DynamicDrawableObject(surfaceList,'', 24, 80, 80 , 2,2) + c = DynamicDrawableObject(surfaceList,'', 12,120, 120, 2,2) + d = DynamicDrawableObject(surfaceList,'', 1, 160, 160, 2,2) - group1=Scene(d) #creating my scene - groups=[group1] #creating my array of scenes + sceneList=[Scene(a),] #creating my array of scenes + sceneList[0].addObjects([b,c,d]) + + for sc in range(numGroups): + for img in range(sceneList[sc].getListSize()): + sceneList[sc].getObject(img).setSpeed(2,2) + #printing time to load images and stuff - print (time()-start) , + print (time.time()-start) , print " -- Time to load" - + #setting up timer stuff clock = pygame.time.Clock() clock.tick() - start = time() + start = time.time() + #loop that goes through and upodates my objects for frame in range(FRAME): + time.sleep(.25) dirtyList=[] - for image in range(numImages): - groups[image].update(clock.get_time())#calls the update function for my DDO - clock.tick()#ticks clock - dirtyList.extend(groups[image].draw(screen))#adding stuff that has been updated to my dirty list + for sc in range(numGroups): + + for img in range(sceneList[sc].getListSize()): + thisrect = sceneList[sc].getObject(img).getRectangle() + if thisrect.right>screenWidth or thisrect.left<0: + sceneList[sc].setSpeed( sceneList[sc].getXSpeed()*-1, None ) + if thisrect.bottom>screenHeight or thisrect.top<0: + sceneList[sc].setSpeed( None , sceneList[sc].getYSpeed()*-1 ) + + sceneList[sc].update(clock.get_time()) #calls the update function for my DDO + + clock.tick() #ticks clock + + dirtyList.extend( sceneList[sc].draw(screen) )#adding stuff that has been updated to my dirty list - pygame.display.update(dirtyList)#updates the screen with the dirty list - for image in range(numImages): - groups[image].clear(screen, background)#clears stuff behind images based on given background image. + pygame.display.update(dirtyList) #updates the screen with the dirty list + for sc in range(numGroups): + sceneList[sc].clear(screen, background) #clears stuff behind images based on given background image. diff --git a/devtools/Dave's Test Kit/DynamicDrawableObject.py b/devtools/Dave's Test Kit/DynamicDrawableObject.py index 9c7f2ac..9319c9e 100644 --- a/devtools/Dave's Test Kit/DynamicDrawableObject.py +++ b/devtools/Dave's Test Kit/DynamicDrawableObject.py @@ -4,27 +4,25 @@ from DrawableObject import DrawableObject class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): def __init__(self,images,textfileName,fps = 10, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - self._delay = 1000/fps DrawableObject.__init__(self, images, textfileName, x, y) def addImages(self, images): - self._images.extend(images) def setSpeed(self, xVelocity = None, yVelocity = None): - if xVelocity != None: self.xSpeed = xVelocity if yVelocity != None: self.ySpeed = yVelocity def getXSpeed(self): - return self.xSpeed def getYSpeed(self): - return self.ySpeed - + + def getRectangle(self): + return self.rect + def move(self): self.xPos += self.xSpeed self.yPos += self.ySpeed @@ -32,9 +30,7 @@ class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): self.rect.top += self.ySpeed def update(self, t): - timePassed = t + self._last_update - if (timePassed) > self._delay: if self._frame < self.animations.get(self._current_anim)[0] or self._frame > self.animations.get(self._current_anim)[1]: self._frame = self.animations.get(self._current_anim)[0] diff --git a/devtools/Dave's Test Kit/Scene.py b/devtools/Dave's Test Kit/Scene.py index 13827d3..7aec48c 100644 --- a/devtools/Dave's Test Kit/Scene.py +++ b/devtools/Dave's Test Kit/Scene.py @@ -34,17 +34,17 @@ class Scene(pygame.sprite.RenderUpdates): def calcSize(self): - highestX = 0 - highestY = 0 + highestX = 0 + highestY = 0 - cnt = 0 - while cnt < len(self._spritelist): - if (self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize()) > highestX: highestX = self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize() - if (self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize()) > highestY: highestY = self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize() - cnt += 1 + cnt = 0 + while cnt < len(self._spritelist): + if (self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize()) > highestX: highestX = self._spritelist[cnt][0].getXPos() + self._spritelist[cnt][0].getXSize() + if (self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize()) > highestY: highestY = self._spritelist[cnt][0].getYPos() + self._spritelist[cnt][0].getYSize() + cnt += 1 - self.xSize = highestX - self.xPos - self.ySize = highestY - self.yPos + self.xSize = highestX - self.xPos + self.ySize = highestY - self.yPos def addObject(self, newDrawableObject): RenderUpdates.add_internal(self, newDrawableObject) @@ -52,151 +52,148 @@ class Scene(pygame.sprite.RenderUpdates): def addObjects(self, newDrawableObjects): for sprite in newDrawableObjects: - RenderUpdates.add_internal(self, sprite) - self._spritelist.append([sprite, sprite.getXPos(), sprite.getYPos()]) + RenderUpdates.add_internal(self, sprite) + self._spritelist.append([sprite, sprite.getXPos(), sprite.getYPos()]) def setRelativePositions(self): - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][1] = self._spritelist[cnt][0].getXPos() - self.xPos - self._spritelist[cnt][2] = self._spritelist[cnt][0].getYPos() - self.yPos - cnt += 1 + cnt = 0 + while cnt < len(self._spritelist): + self._spritelist[cnt][1] = self._spritelist[cnt][0].getXPos() - self.xPos + self._spritelist[cnt][2] = self._spritelist[cnt][0].getYPos() - self.yPos + cnt += 1 def removeObject(self, sprite): - for i in self._spritelist: - if i[0] == sprite: - self._spritelist.remove(i) - break - RenderUpdates.remove_internal(self, sprite) + for i in self._spritelist: + if i[0] == sprite: + self._spritelist.remove(i) + break + RenderUpdates.remove_internal(self, sprite) def getObject(self, index): - if index < len(self._spritelist): - return self._spritelist[index][0] + if index < len(self._spritelist): + return self._spritelist[index][0] def getListSize(self): - return len(self._spritelist) + return len(self._spritelist) def getList(self): - return list(self._spritelist) + return list(self._spritelist) def moveObjects(self): - cnt = 0 - while cnt < len(self._spritelist): + cnt = 0 + while cnt < len(self._spritelist): - self._spritelist[cnt][0].move() - cnt += 1 + self._spritelist[cnt][0].move() + cnt += 1 - self.calcPosition() - self.calcSize() - self.setRelativePositions() + self.calcPosition() + self.calcSize() + self.setRelativePositions() def moveScene(self, xNudge = 0, yNudge = 0): - cnt = 0 - while cnt < len(self._spritelist): + cnt = 0 + while cnt < len(self._spritelist): - self._spritelist[cnt][0].nudge(xNudge, yNudge) - cnt += 1 + self._spritelist[cnt][0].nudge(xNudge, yNudge) + cnt += 1 - self.calcPosition() + self.calcPosition() def setPosition(self, newXPos = None, newYPos = None): - if newXPos != None: self.xPos = newXPos - if newYPos != None: self.yPos = newYPos + if newXPos != None: self.xPos = newXPos + if newYPos != None: self.yPos = newYPos - cnt = 0 - while cnt < len(self._spritelist): + cnt = 0 + while cnt < len(self._spritelist): - self._spritelist[cnt][0].setPosition(self.xPos + self._spritelist[cnt][1], self.yPos + self._spritelist[cnt][2]) - cnt += 1 + self._spritelist[cnt][0].setPosition(self.xPos + self._spritelist[cnt][1], self.yPos + self._spritelist[cnt][2]) + cnt += 1 def getXPos(self): - return self.xPos + return self.xPos def getYPos(self): - return self.yPos + return self.yPos def getXSize(self): - return self.xSize + return self.xSize def getYSize(self): - return self.ySize + return self.ySize def scaleObjects(self, newXSize = None, newYSize = None): - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(newXSize, newYSize) - cnt += 1 + cnt = 0 + while cnt < len(self._spritelist): + self._spritelist[cnt][0].scale(newXSize, newYSize) + cnt += 1 def scaleScene(self, newXSize = None, newYSize = None): - self.calcPosition() - self.calcSize() + self.calcPosition() + self.calcSize() - xScale = 1 - yScale = 1 + xScale = 1 + yScale = 1 - if newXSize != None: xScale = (newXSize * 1.0)/self.xSize - if newYSize != None: yScale = (newYSize * 1.0)/self.ySize + if newXSize != None: xScale = (newXSize * 1.0)/self.xSize + if newYSize != None: yScale = (newYSize * 1.0)/self.ySize - cnt = 0 - while cnt < len(self._spritelist): - self._spritelist[cnt][0].scale(xScale * self._spritelist[cnt][0].getXSize(), yScale * self._spritelist[cnt][0].getYSize()) - self._spritelist[cnt][1] = xScale * self._spritelist[cnt][1] - self._spritelist[cnt][2] = yScale * self._spritelist[cnt][2] - cnt += 1 + cnt = 0 + while cnt < len(self._spritelist): + self._spritelist[cnt][0].scale(xScale * self._spritelist[cnt][0].getXSize(), yScale * self._spritelist[cnt][0].getYSize()) + self._spritelist[cnt][1] = xScale * self._spritelist[cnt][1] + self._spritelist[cnt][2] = yScale * self._spritelist[cnt][2] + cnt += 1 - self.calcPosition() - self.calcSize() - self.setPosition() + self.calcPosition() + self.calcSize() + self.setPosition() def update(self, t): - for s in self._spritelist: s[0].update(t); + for s in self._spritelist: s[0].update(t); def draw(self, surface): - spritedict = self.spritedict - surface_blit = surface.blit - dirty = self.lostsprites - self.lostsprites = [] - dirty_append = dirty.append - for s in self._spritelist: - r = spritedict[s[0]] - newrect = surface_blit(s[0].image, s[0].rect) - if r is 0: + spritedict = self.spritedict + surface_blit = surface.blit + dirty = self.lostsprites + self.lostsprites = [] + dirty_append = dirty.append + for s in self._spritelist: + r = spritedict[s[0]] + newrect = surface_blit(s[0].image, s[0].rect) + if r is 0: dirty_append(newrect) - else: - if newrect.colliderect(r): + else: + if newrect.colliderect(r): dirty_append(newrect.union(r)) - else: - dirty_append(newrect) - dirty_append(r) - spritedict[s[0]] = newrect - return dirty + else: + dirty_append(newrect) + dirty_append(r) + spritedict[s[0]] = newrect + return dirty def drawEntireScene(self, surface): - spritedict = self.spritedict - surface_blit = surface.blit - dirty = self.lostsprites - self.lostsprites = [] - dirty_append = dirty.append - for s in self._spritelist: - dirty_append(spritedict[s[0]]) - dirty_append(surface_blit(s[0].image, s[0].rect)) - return dirty + spritedict = self.spritedict + surface_blit = surface.blit + dirty = self.lostsprites + self.lostsprites = [] + dirty_append = dirty.append + for s in self._spritelist: + dirty_append(spritedict[s[0]]) + dirty_append(surface_blit(s[0].image, s[0].rect)) + return dirty def nextFrame(self): + for cnt in range(len(self._spritelist)): - cnt = 0 - while cnt < len(self._spritelist): - - self._spritelist[cnt][0].nextFrame() - cnt += 1 + self._spritelist[cnt][0].nextFrame() -- cgit v0.9.1