From dbd2fa822639e70753c25bb6e6d9b398e14dc6b0 Mon Sep 17 00:00:00 2001 From: slm Date: Mon, 02 Aug 2010 14:35:20 +0000 Subject: Small changes for DaveSilver. --- (limited to 'devtools/CompleteTestKit') diff --git a/devtools/CompleteTestKit/DrawableFontObject.py b/devtools/CompleteTestKit/DrawableFontObject.py index 56783f1..6fce74b 100644 --- a/devtools/CompleteTestKit/DrawableFontObject.py +++ b/devtools/CompleteTestKit/DrawableFontObject.py @@ -14,3 +14,4 @@ class DrawableFontObject(DrawableObject, pygame.sprite.Sprite): 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 index fca2d02..9b55ceb 100644..100755 --- a/devtools/CompleteTestKit/DrawableObject.py +++ b/devtools/CompleteTestKit/DrawableObject.py @@ -2,24 +2,32 @@ import pygame class DrawableObject(pygame.sprite.Sprite): - def __init__(self,images, textfileName, x = 0, y = 0,): + 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 = [] - - for i in range(len(images)): - self._images.append(images[i].convert()) - self._origImages.append(images[i].convert()) - - self.image = self._images[0] - self.rect = self.image.get_rect() + 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 = images[0].get_width() - self.ySize = images[0].get_width() - self.rect.topleft = (x,y) + self.xSize = 40 + self.ySize = 40 if textfileName != '': @@ -31,93 +39,119 @@ class DrawableObject(pygame.sprite.Sprite): self.animations[animValues[0]] = [int(animValues[1]), int(animValues[2])] currentLine = f.readline() + def addImages(self, images): - for i in range(len(images)): - self._images.append(images[i].convert()) - self._origImages.append(images[i].convert()) + self._images.extend(images) + #self._originals.extend(images) + def goToAnim(self, animName): - if self.animations.get(animName, 0) != 0: - self._current_anim = animName - self._frame = self.animations[animName][0] - self.image = self._images[self._frame] - -# -# Again I took out default values because I don't want the primary function -# of the method to be effectively overridable and have a method that can -# do nothing without raising flags -# I also conformed the parameter naming convention so that it conforms with the -# other methods' naming convention in this object -# JT Jul 28 2010 - def nudge(self, x, y): - self.xPos += x - self.yPos += y - self.rect.right += x - self.rect.top += y - -# -# reworked the loop for efficiency and the if statement logic -# JT Jul 28 2010 - def scale(self, x=None, y=None): - if type(x).__name__=='int': self.xSize = x - if type(y).__name__=='int': self.ySize = y - - for i in range(len(self._images)): - self._origImages[i] = pygame.transform.scale(self._origImages[i], (self.xSize, self.ySize)) - self._images[i] = self._origImages[i] + 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 -# -# I changed rotate to utilize a for instead of a counter/while loop for speed -# JT - Jul 28 2010 def rotate(self,angle): + + cnt = 0 + self.myAngle += angle - for i in range(len(self._images)): - self._images[i] = pygame.transform.rotate(self._origImages[i], self.myAngle) + while cnt < len(self._images): + + self._images[cnt] = pygame.transform.rotate(self._origImages[cnt], self.myAngle) + cnt += 1 def getRotation(self): - return self.myAngle -# -# I don't recommend forcing people to keep images within the screen -# a common trick in bullet hells is to temporarily move image objects off- -# screen when they die so the game isn't constantly loading a new instance of -# a common enemy -# JT - Jul 28 2010 + return self.myAngle + def setPosition(self, x = None, y = None): - if type(x).__name__=='int': self.xPos = x - if type(y).__name__=='int': self.yPos = y - self.rect.topleft = (self.xPos, self.yPos) + + 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 -# -# Added defaul values in case someone wants their color key to be taken from bot.right corner, eg -# JT Jul 28 2010 - def calcColorKey(self, x=0, y=0): - myColorKey = images[0].get_at((x,y)) + 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): - for i in range(len(self._images)): - self._images[i].set_colorkey(aColor) -# -# Set default value to allow the method to be called empty (since t does nothing atm) -# JT Jul 28 2010 - def update(self, t=None): + + 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 \ No newline at end of file + pass + diff --git a/devtools/CompleteTestKit/DynamicDrawableObject.py b/devtools/CompleteTestKit/DynamicDrawableObject.py index 8705fa7..e69cd5f 100644..100755 --- a/devtools/CompleteTestKit/DynamicDrawableObject.py +++ b/devtools/CompleteTestKit/DynamicDrawableObject.py @@ -3,69 +3,62 @@ 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): + def __init__(self,images,textfileName,fps = 2, x = 0, y = 0, xVelocity = 0, yVelocity = 0): - if fps > 0: - self._delay = 1000 / fps - else: - self._delay = 1000 - - self.xSpeed = xVelocity - self.ySpeed = yVelocity - - self._start = pygame.time.get_ticks() - self._last_update = 0 - self._frame = 0 - self.animations = {} - self._current_anim = "" - - DrawableObject.__init__(self, images, textfileName, x, y) + DrawableObject.__init__(self, images, textfileName, fps, x, y, xVelocity, yVelocity) 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 move(self): - self.xPos += self.xSpeed - self.yPos += self.ySpeed - self.rect.right += self.xSpeed - self.rect.top += self.ySpeed - - def update(self, t): # just updates the frame / object + def updateAnim(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] + if timePassed > self._delay: self._frame += timePassed/self._delay + while self._frame >= len(self._images): - 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] + framesPast = self._frame - len(self._images) + self._frame = framesPast - 1 self.image = self._images[self._frame] self._last_update = timePassed%self._delay - else: - self._last_update = timePassed + 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 @@ -73,16 +66,25 @@ class DynamicDrawableObject(DrawableObject, pygame.sprite.Sprite): def nextCurrentAnimFrame(self): - for cnt in range(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] + 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.image = self._images[self._frame] + 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 index 5d8421e..2435cf3 100755 --- a/devtools/CompleteTestKit/FinalDirtyTest.py +++ b/devtools/CompleteTestKit/FinalDirtyTest.py @@ -126,3 +126,4 @@ for trial in range(maxTrial): groupsList[grp].clear(screen, background) print "Trial's average framerate was " , str(1/((time()-start)/maxFrame)) + diff --git a/devtools/CompleteTestKit/Scene.py b/devtools/CompleteTestKit/Scene.py index 320246b..a38cd48 100644 --- a/devtools/CompleteTestKit/Scene.py +++ b/devtools/CompleteTestKit/Scene.py @@ -171,3 +171,4 @@ class Scene(pygame.sprite.RenderUpdates): self._spritelist[cnt][0].nextFrame() cnt += 1 + diff --git a/devtools/CompleteTestKit/reworkFinalDirtyTest.py b/devtools/CompleteTestKit/reworkFinalDirtyTest.py index c483f4f..1682bf0 100644 --- a/devtools/CompleteTestKit/reworkFinalDirtyTest.py +++ b/devtools/CompleteTestKit/reworkFinalDirtyTest.py @@ -44,16 +44,12 @@ for trial in range(maxTrial): for img in range(maxImage)[1:]: surfaceList.append(pygame.image.load( "./Animation Styles/IndividualFrames/bmp16/a2/",img, - "1.bmp").convert())) + "1.bmp").convert()) drawObject[img] = DynamicDrawableObject( surfaceList,infoFilePath,24,img*40,img*40,1,1) drawObject[img].goToAnim("anim1") - if img==1: - scene1[] = Scene( drawObject[img] ) - scenesList.append(scene1) - else: - scene1.addObjects( [ drawObject[img] ] ) - scenesList.append(scene1) + + scenesList.append( Scene( drawObject[img] ) ) # 'scenesList' is a list filled with Scene objects (those inherit/extend Group) @@ -76,3 +72,4 @@ for trial in range(maxTrial): scenesList[grp].clear(screen, background) print "Trial's average framerate was " , str(1/((time()-start)/maxFrame)) + diff --git a/devtools/CompleteTestKit/testKit.py b/devtools/CompleteTestKit/testKit.py index e19530d..ce1c4f5 100755 --- a/devtools/CompleteTestKit/testKit.py +++ b/devtools/CompleteTestKit/testKit.py @@ -585,4 +585,5 @@ while 1: break break -#ILY GEOFF A +#IDLY GEOFF A + -- cgit v0.9.1