def __init__(self, gameDisplay, gameWidth, gameHeight, FPS, stateID): StateBase.__init__(self, gameDisplay, gameWidth, gameHeight, FPS, stateID) self.initMap(gameDisplay) self.themeSound = MySound("res/sounds/gamePlayTheme2.ogg") self.enemy1Num = 2 self.enemy2Num = 1 self.enemy3Num = 1 self.myClockRef = MyClock(FPS) self.setUpState(gameDisplay, gameWidth, gameHeight, FPS) self.cPlayerDead = 0 self.myScoreRef = MyScore() self.myTextWriterRef = MyTextWriter(gameDisplay, gameWidth, gameHeight) self.scoreSummonBoss = 2000
def __init__(self, gameDisplay, gameWidth, gameHeight, FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.HP = 3000 self.speed = 30 self.power = 10 self.slashSound = MySound("res/sounds/slashSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.initSP() self.myClockRef = MyClock(FPS) self.initBeam(gameDisplay, gameWidth, gameHeight) self.score = 0 self.myTextWriterRef = MyTextWriter(gameDisplay, gameWidth, gameHeight)
def __init__(self, gameDisplay, gameWidth, gameHeight, FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.myClockRef = MyClock(FPS) self.boomSound = MySound("res/sounds/boomSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.x = self.gameWidth self.y = self.gameHeight / 2 self.isAlive = False self.randomRebornTime = randint(4, 10) self.randomShootTime = randint(3, 6) self.power = 10 self.randomBoundaryTop = self.gameHeight / 2 - randint(100, 300) self.randomBoundaryBot = self.gameHeight / 2 + randint(100, 300) self.moveUP = True self.moveDown = True self.isBoss = False
def __init__(self,gameDisplay,gameWidth,gameHeight,FPS,stateID): StateBase.__init__(self,gameDisplay, gameWidth, gameHeight,FPS,stateID) self.initMap(gameDisplay) self.themeSound = MySound("res/sounds/gamePlayTheme2.ogg") self.enemy1Num = 2 self.enemy2Num = 1 self.enemy3Num = 1 self.myClockRef = MyClock(FPS) self.setUpState(gameDisplay,gameWidth,gameHeight,FPS) self.cPlayerDead = 0 self.myScoreRef = MyScore() self.myTextWriterRef = MyTextWriter(gameDisplay, gameWidth, gameHeight) self.scoreSummonBoss = 2000
def __init__(self,gameDisplay,gameWidth,gameHeight,FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.HP = 3000 self.speed = 30 self.power = 10 self.slashSound = MySound("res/sounds/slashSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.initSP() self.myClockRef = MyClock(FPS) self.initBeam(gameDisplay, gameWidth, gameHeight) self.score = 0 self.myTextWriterRef = MyTextWriter(gameDisplay,gameWidth,gameHeight)
def __init__(self,gameDisplay,gameWidth,gameHeight,FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.myClockRef = MyClock(FPS) self.boomSound = MySound("res/sounds/boomSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.x = self.gameWidth self.y = self.gameHeight/2 self.isAlive = False self.randomRebornTime = randint(4,10) self.randomShootTime = randint(3,6) self.power = 10 self.randomBoundaryTop = self.gameHeight/2 - randint(100,300) self.randomBoundaryBot = self.gameHeight/2 + randint(100,300) self.moveUP = True self.moveDown = True self.isBoss = False
class Enemy: def __init__(self, gameDisplay, gameWidth, gameHeight, FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.myClockRef = MyClock(FPS) self.boomSound = MySound("res/sounds/boomSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.x = self.gameWidth self.y = self.gameHeight / 2 self.isAlive = False self.randomRebornTime = randint(4, 10) self.randomShootTime = randint(3, 6) self.power = 10 self.randomBoundaryTop = self.gameHeight / 2 - randint(100, 300) self.randomBoundaryBot = self.gameHeight / 2 + randint(100, 300) self.moveUP = True self.moveDown = True self.isBoss = False def render(self): self.SP.loop(self.x, self.y, -1) self.beam.renderEnemyBeam() def update(self): self.myClockRef.update() if not self.isAlive and self.myClockRef.isSec(self.randomRebornTime): self.setPos(self.gameWidth, randint(1, self.gameHeight - 225)) if self.isAlive: self.enemyMove() self.enemyShoot() if self.getHP() < 0: self.isAlive = False self.resetPos() self.beam.updateEnemyBeam() def enemyMove(self): if self.x > self.gameWidth / 2 + 175: self.x -= self.speed else: if self.moveUP: self.y -= self.speed if self.y < self.randomBoundaryTop or self.y < 0: self.moveUP = False self.moveDown = True elif self.moveDown: self.y += self.speed if self.y > self.randomBoundaryBot or self.y > self.gameHeight - 225: self.moveDown = False self.moveUP = True def enemyShoot(self): if self.myClockRef.isSec(self.randomShootTime): self.beam.setPos(self.x - 100, self.y + 100) def getHP(self): return self.HP def HPdamage(self, damage): #self.damageSound.play() self.HP -= damage def setPos(self, x, y): self.isAlive = True self.x = x self.y = y def resetPos(self): self.boomSound.play() self.speed += 0.5 self.x = self.gameWidth self.y = -500 self.HP = self.maxHP self.randomRebornTime = randint(1, 10) self.randomShootime = randint(2, 10) self.randomBoundaryTop = self.gameHeight / 2 - randint(100, 300) self.randomBoundaryBot = self.gameHeight / 2 + randint(100, 300) def initSP(self, path, total, width, height): self.SP = MySprite(self.gameDisplay, path, total, width, height)
class State_GamePlay(StateBase): def __init__(self, gameDisplay, gameWidth, gameHeight, FPS, stateID): StateBase.__init__(self, gameDisplay, gameWidth, gameHeight, FPS, stateID) self.initMap(gameDisplay) self.themeSound = MySound("res/sounds/gamePlayTheme2.ogg") self.enemy1Num = 2 self.enemy2Num = 1 self.enemy3Num = 1 self.myClockRef = MyClock(FPS) self.setUpState(gameDisplay, gameWidth, gameHeight, FPS) self.cPlayerDead = 0 self.myScoreRef = MyScore() self.myTextWriterRef = MyTextWriter(gameDisplay, gameWidth, gameHeight) self.scoreSummonBoss = 2000 def renderState(self): self.renderMap() self.renderEnemy() self.renderPlayer() def updateState(self): self.myClockRef.update() self.playThemeSound(self.themeSound) self.updatePlayer() if self.summonEnemy or self.myClockRef.isSec(5): self.summonEnemy = True self.updateEnemy() self.checkCollide() for player in self.playerList: if player.score > self.scoreSummonBoss: self.summonBoss() self.updateScore() self.checkGameOver(self.gameDisplay, self.gameWidth, self.gameHeight, self.FPS) def summonBoss(self): for enemy in self.enemyList: enemy.isBoss = False def checkGameOver(self, gameDisplay, gameWidth, gameHeight, FPS): cPlayerDead = 0 for player in self.playerList: if player.HP <= 0: cPlayerDead += 1 if cPlayerDead == len(self.playerList): self.setUpState(gameDisplay, gameWidth, gameHeight, FPS) self.themeSound.stop() self.setCurrentStateID(self.nextStateId) def initSP(self, gameDisplay): pass def renderMapLayer(self, mapLayerList, mapLayerPosXList, mapLayerPosYList, speed): mapLayerList[0].renderImg(mapLayerPosXList[0], mapLayerPosYList[0]) mapLayerList[1].renderImg(mapLayerPosXList[1], mapLayerPosYList[1]) for i in range(len(mapLayerPosXList)): mapLayerPosXList[i] -= speed if mapLayerPosXList[i] < -2 * self.gameWidth: mapLayerPosXList[i] = 2 * self.gameWidth - speed def initMap(self, gameDisplay): self.fadeOutBG = MySprite(gameDisplay, "res/images/fadeOut.png") self.initMap1Layer1(gameDisplay) self.initMap1Layer2(gameDisplay) def initMap1Layer1(self, gameDisplay): self.map1Layer1 = MySprite(gameDisplay, "res/images/map1Layer1.png") self.map1Layer1List = [ self.map1Layer1, self.map1Layer1, self.map1Layer1 ] self.map1Layer1PosXList = [0, 2 * self.gameWidth] self.map1Layer1PosYList = [0, 0] def initMap1Layer2(self, gameDisplay): self.map1Layer2 = MySprite(gameDisplay, "res/images/map1Layer2.png") self.map1Layer2List = [ self.map1Layer2, self.map1Layer2, self.map1Layer2 ] self.map1Layer2PosXList = [0, 2 * self.gameWidth] self.map1Layer2PosYList = [0, 0] def renderMap(self): self.renderMapLayer(self.map1Layer2List, self.map1Layer2PosXList, self.map1Layer2PosYList, 1) self.renderMapLayer(self.map1Layer1List, self.map1Layer1PosXList, self.map1Layer1PosYList, 2) self.renderFadeIn() def renderFadeIn(self): self.fadeOutBG.setFadeOutImg(10) self.fadeOutBG.renderImgConvert(0, 0) def initEnemy(self, gameDisplay, gameWidth, gameHeight, FPS): self.enemyList = [] self.enemyBeamList = [] for i in range(self.enemy1Num): enemy1Ref = Enemy1(gameDisplay, gameWidth, gameHeight, FPS) self.enemyList.append(enemy1Ref) self.enemyBeamList.append(enemy1Ref.beam) for i in range(self.enemy2Num): enemy2Ref = Enemy2(gameDisplay, gameWidth, gameHeight, FPS) self.enemyList.append(enemy2Ref) self.enemyBeamList.append(enemy2Ref.beam) for i in range(self.enemy3Num): enemy3Ref = Enemy3(gameDisplay, gameWidth, gameHeight, FPS) self.enemyList.append(enemy3Ref) self.enemyBeamList.append(enemy3Ref.beam) enemyBoss1Ref = EnemyBoss1(gameDisplay, gameWidth, gameHeight, FPS) self.enemyList.append(enemyBoss1Ref) self.enemyBeamList.append(enemyBoss1Ref.beam) enemyBoss2Ref = EnemyBoss2(gameDisplay, gameWidth, gameHeight, FPS) self.enemyList.append(enemyBoss2Ref) self.enemyBeamList.append(enemyBoss2Ref.beam) enemyBoss3Ref = EnemyBoss3(gameDisplay, gameWidth, gameHeight, FPS) self.enemyList.append(enemyBoss3Ref) self.enemyBeamList.append(enemyBoss3Ref.beam) def renderEnemy(self): for enemy in self.enemyList: enemy.render() def updateEnemy(self): for enemy in self.enemyList: if not enemy.isBoss: enemy.update() def checkCollidePlayerAndEnemy(self): for player in self.playerList: for sp in player.SPList: for enemy in self.enemyList: if sp.isCollide(enemy.SP): if player.currentMotion == 5: enemy.HPdamage(player.power) if enemy.HP < 0: player.score += enemy.score else: if player.currentMotion != 6: player.HPdamage(enemy.power) def checkCollidePlayerAndEnemyBeam(self): for player in self.playerList: for sp in player.SPList: for beam in self.enemyBeamList: if sp.isCollide(beam.enemyBeamSP): if player.currentMotion != 6: player.HPdamage(beam.power) beam.resetPos() def checkCollidePlayerBeamAndEnemy(self): for player in self.playerList: for beam in player.beamList: for enemy in self.enemyList: if beam.beamSP.isCollide(enemy.SP): enemy.HPdamage(beam.power) beam.resetPos() if enemy.HP < 0: player.score += enemy.score def checkCollide(self): self.checkCollidePlayerAndEnemy() self.checkCollidePlayerAndEnemyBeam() self.checkCollidePlayerBeamAndEnemy() def renderPlayer(self): for player in self.playerList: player.render() def updatePlayer(self): for player in self.playerList: player.update() def initPlayer(self): pass def setUpState(self, gameDisplay, gameWidth, gameHeight, FPS): self.initPlayer(gameDisplay, gameWidth, gameHeight, FPS) self.initEnemy(gameDisplay, gameWidth, gameHeight, FPS) self.fadeOutBG.resetCountAndDelay() self.summonEnemy = False def updateScore(self): pass
class State_GamePlay(StateBase): def __init__(self,gameDisplay,gameWidth,gameHeight,FPS,stateID): StateBase.__init__(self,gameDisplay, gameWidth, gameHeight,FPS,stateID) self.initMap(gameDisplay) self.themeSound = MySound("res/sounds/gamePlayTheme2.ogg") self.enemy1Num = 2 self.enemy2Num = 1 self.enemy3Num = 1 self.myClockRef = MyClock(FPS) self.setUpState(gameDisplay,gameWidth,gameHeight,FPS) self.cPlayerDead = 0 self.myScoreRef = MyScore() self.myTextWriterRef = MyTextWriter(gameDisplay, gameWidth, gameHeight) self.scoreSummonBoss = 2000 def renderState(self): self.renderMap() self.renderEnemy() self.renderPlayer() def updateState(self): self.myClockRef.update() self.playThemeSound(self.themeSound) self.updatePlayer() if self.summonEnemy or self.myClockRef.isSec(5): self.summonEnemy = True self.updateEnemy() self.checkCollide() for player in self.playerList: if player.score > self.scoreSummonBoss: self.summonBoss() self.updateScore() self.checkGameOver(self.gameDisplay, self.gameWidth,self.gameHeight,self.FPS) def summonBoss(self): for enemy in self.enemyList: enemy.isBoss = False def checkGameOver(self,gameDisplay, gameWidth, gameHeight, FPS): cPlayerDead = 0 for player in self.playerList: if player.HP <= 0 : cPlayerDead += 1 if cPlayerDead == len(self.playerList): self.setUpState(gameDisplay, gameWidth, gameHeight, FPS) self.themeSound.stop() self.setCurrentStateID(self.nextStateId) def initSP(self,gameDisplay): pass def renderMapLayer(self,mapLayerList,mapLayerPosXList,mapLayerPosYList,speed): mapLayerList[0].renderImg(mapLayerPosXList[0],mapLayerPosYList[0]) mapLayerList[1].renderImg(mapLayerPosXList[1],mapLayerPosYList[1]) for i in range(len(mapLayerPosXList)): mapLayerPosXList[i] -= speed if mapLayerPosXList[i] < -2*self.gameWidth: mapLayerPosXList[i] = 2*self.gameWidth-speed def initMap(self,gameDisplay): self.fadeOutBG = MySprite(gameDisplay,"res/images/fadeOut.png") self.initMap1Layer1(gameDisplay) self.initMap1Layer2(gameDisplay) def initMap1Layer1(self,gameDisplay): self.map1Layer1 = MySprite(gameDisplay,"res/images/map1Layer1.png") self.map1Layer1List = [self.map1Layer1,self.map1Layer1,self.map1Layer1] self.map1Layer1PosXList = [0,2*self.gameWidth] self.map1Layer1PosYList = [0,0] def initMap1Layer2(self,gameDisplay): self.map1Layer2 = MySprite(gameDisplay,"res/images/map1Layer2.png") self.map1Layer2List = [self.map1Layer2,self.map1Layer2,self.map1Layer2] self.map1Layer2PosXList = [0,2*self.gameWidth] self.map1Layer2PosYList = [0,0] def renderMap(self): self.renderMapLayer(self.map1Layer2List,self.map1Layer2PosXList,self.map1Layer2PosYList,1) self.renderMapLayer(self.map1Layer1List,self.map1Layer1PosXList,self.map1Layer1PosYList,2) self.renderFadeIn() def renderFadeIn(self): self.fadeOutBG.setFadeOutImg(10) self.fadeOutBG.renderImgConvert(0, 0) def initEnemy(self,gameDisplay,gameWidth,gameHeight,FPS): self.enemyList = [] self.enemyBeamList = [] for i in range(self.enemy1Num): enemy1Ref = Enemy1(gameDisplay,gameWidth,gameHeight,FPS) self.enemyList.append(enemy1Ref) self.enemyBeamList.append(enemy1Ref.beam) for i in range(self.enemy2Num): enemy2Ref = Enemy2(gameDisplay,gameWidth,gameHeight,FPS) self.enemyList.append(enemy2Ref) self.enemyBeamList.append(enemy2Ref.beam) for i in range(self.enemy3Num): enemy3Ref = Enemy3(gameDisplay,gameWidth,gameHeight,FPS) self.enemyList.append(enemy3Ref) self.enemyBeamList.append(enemy3Ref.beam) enemyBoss1Ref = EnemyBoss1(gameDisplay,gameWidth,gameHeight,FPS) self.enemyList.append(enemyBoss1Ref) self.enemyBeamList.append(enemyBoss1Ref.beam) enemyBoss2Ref = EnemyBoss2(gameDisplay,gameWidth,gameHeight,FPS) self.enemyList.append(enemyBoss2Ref) self.enemyBeamList.append(enemyBoss2Ref.beam) enemyBoss3Ref = EnemyBoss3(gameDisplay,gameWidth,gameHeight,FPS) self.enemyList.append(enemyBoss3Ref) self.enemyBeamList.append(enemyBoss3Ref.beam) def renderEnemy(self): for enemy in self.enemyList: enemy.render() def updateEnemy(self): for enemy in self.enemyList: if not enemy.isBoss: enemy.update() def checkCollidePlayerAndEnemy(self): for player in self.playerList: for sp in player.SPList: for enemy in self.enemyList: if sp.isCollide(enemy.SP): if player.currentMotion == 5: enemy.HPdamage(player.power) if enemy.HP < 0: player.score += enemy.score else: if player.currentMotion != 6: player.HPdamage(enemy.power) def checkCollidePlayerAndEnemyBeam(self): for player in self.playerList: for sp in player.SPList: for beam in self.enemyBeamList: if sp.isCollide(beam.enemyBeamSP): if player.currentMotion != 6: player.HPdamage(beam.power) beam.resetPos() def checkCollidePlayerBeamAndEnemy(self): for player in self.playerList: for beam in player.beamList: for enemy in self.enemyList: if beam.beamSP.isCollide(enemy.SP): enemy.HPdamage(beam.power) beam.resetPos() if enemy.HP < 0: player.score += enemy.score def checkCollide(self): self.checkCollidePlayerAndEnemy() self.checkCollidePlayerAndEnemyBeam() self.checkCollidePlayerBeamAndEnemy() def renderPlayer(self): for player in self.playerList: player.render() def updatePlayer(self): for player in self.playerList: player.update() def initPlayer(self): pass def setUpState(self,gameDisplay,gameWidth,gameHeight,FPS): self.initPlayer(gameDisplay, gameWidth, gameHeight, FPS) self.initEnemy(gameDisplay,gameWidth,gameHeight,FPS) self.fadeOutBG.resetCountAndDelay() self.summonEnemy = False def updateScore(self): pass
class Player: def __init__(self,gameDisplay,gameWidth,gameHeight,FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.HP = 3000 self.speed = 30 self.power = 10 self.slashSound = MySound("res/sounds/slashSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.initSP() self.myClockRef = MyClock(FPS) self.initBeam(gameDisplay, gameWidth, gameHeight) self.score = 0 self.myTextWriterRef = MyTextWriter(gameDisplay,gameWidth,gameHeight) def render(self): self.renderSP() self.renderBeam() self.renderHP() self.renderScore() def renderHP(self): pass def update(self): self.myClockRef.update() if self.HP > 0: self.handle_basicMove() self.handle_AtkMove() self.handle_ChangeWeapon() self.resetMove() else: self.x = -3000 self.y = -3000 self.currentMotion = 0 self.updateBeam() def getHP(self): return self.HP def HPdamage(self,damage): self.damageSound.play() self.HP -= damage def moveUp(self): if self.y > 0: self.y -= self.speed def moveDown(self): if self.y < self.gameHeight-175: self.y += self.speed def moveRight(self): if self.x < self.gameWidth-450: self.x += self.speed def moveLeft(self): if self.x > 0: self.x -= self.speed def initSP(self): pass def initBeam(self): pass def handle_basicMove(self): pass def handle_AtkMove(self): pass def handle_ChangeWeapon(self): pass def updateBeam(self): pass def resetMove(self): if self.currentMotion != 0: if self.myClockRef.isSec(1): self.currentMotion = 0 def renderBeam(self): pass def renderSP(self): pass def renderScore(self): pass
class Enemy: def __init__(self,gameDisplay,gameWidth,gameHeight,FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.myClockRef = MyClock(FPS) self.boomSound = MySound("res/sounds/boomSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.x = self.gameWidth self.y = self.gameHeight/2 self.isAlive = False self.randomRebornTime = randint(4,10) self.randomShootTime = randint(3,6) self.power = 10 self.randomBoundaryTop = self.gameHeight/2 - randint(100,300) self.randomBoundaryBot = self.gameHeight/2 + randint(100,300) self.moveUP = True self.moveDown = True self.isBoss = False def render(self): self.SP.loop(self.x,self.y,-1) self.beam.renderEnemyBeam() def update(self): self.myClockRef.update() if not self.isAlive and self.myClockRef.isSec(self.randomRebornTime): self.setPos(self.gameWidth,randint(1,self.gameHeight-225)) if self.isAlive: self.enemyMove() self.enemyShoot() if self.getHP() < 0 : self.isAlive = False self.resetPos() self.beam.updateEnemyBeam() def enemyMove(self): if self.x > self.gameWidth/2 + 175: self.x -= self.speed else: if self.moveUP: self.y -= self.speed if self.y < self.randomBoundaryTop or self.y < 0: self.moveUP = False self.moveDown = True elif self.moveDown: self.y += self.speed if self.y > self.randomBoundaryBot or self.y > self.gameHeight-225: self.moveDown = False self.moveUP = True def enemyShoot(self): if self.myClockRef.isSec(self.randomShootTime): self.beam.setPos(self.x-100,self.y + 100) def getHP(self): return self.HP def HPdamage(self,damage): #self.damageSound.play() self.HP -= damage def setPos(self,x,y): self.isAlive = True self.x = x self.y = y def resetPos(self): self.boomSound.play() self.speed += 0.5 self.x = self.gameWidth self.y = -500 self.HP = self.maxHP self.randomRebornTime = randint(1,10) self.randomShootime = randint(2,10) self.randomBoundaryTop = self.gameHeight/2 - randint(100,300) self.randomBoundaryBot = self.gameHeight/2 + randint(100,300) def initSP(self,path,total,width,height): self.SP = MySprite(self.gameDisplay,path,total,width,height)
import pygame from pygame.locals import * from MyClock import MyClock from State_Menu import State_Menu from State_SelectMode import State_SelectMode from State_GamePlaySingle import State_GamePlaySingle from State_GamePlayCoop import State_GamePlayCoop from State_GameOverSingle import State_GameOverSingle from State_GameOverCoop import State_GameOverCoop gameWidth = 1024 gameHeight = 640 FPS = 60 myClockRef = MyClock(FPS) gameDisplay = pygame.display.set_mode((gameWidth, gameHeight)) pygame.display.set_caption('SDRush') def main(): pygame.init() gameOver = False menuStateRef = State_Menu(gameDisplay, gameWidth, gameHeight, FPS, 0) selectStateRef = State_SelectMode(gameDisplay, gameWidth, gameHeight, FPS, 1) singleStateRef = State_GamePlaySingle(gameDisplay, gameWidth, gameHeight, FPS, 2) coopStateRef = State_GamePlayCoop(gameDisplay, gameWidth, gameHeight, FPS, 3) gameOverSingleRef = State_GameOverSingle(gameDisplay, gameWidth, gameHeight, FPS, 4)
class Player: def __init__(self, gameDisplay, gameWidth, gameHeight, FPS): self.gameDisplay = gameDisplay self.gameWidth = gameWidth self.gameHeight = gameHeight self.FPS = FPS self.HP = 3000 self.speed = 30 self.power = 10 self.slashSound = MySound("res/sounds/slashSound.ogg") self.damageSound = MySound("res/sounds/damage1Sound.ogg") self.initSP() self.myClockRef = MyClock(FPS) self.initBeam(gameDisplay, gameWidth, gameHeight) self.score = 0 self.myTextWriterRef = MyTextWriter(gameDisplay, gameWidth, gameHeight) def render(self): self.renderSP() self.renderBeam() self.renderHP() self.renderScore() def renderHP(self): pass def update(self): self.myClockRef.update() if self.HP > 0: self.handle_basicMove() self.handle_AtkMove() self.handle_ChangeWeapon() self.resetMove() else: self.x = -3000 self.y = -3000 self.currentMotion = 0 self.updateBeam() def getHP(self): return self.HP def HPdamage(self, damage): self.damageSound.play() self.HP -= damage def moveUp(self): if self.y > 0: self.y -= self.speed def moveDown(self): if self.y < self.gameHeight - 175: self.y += self.speed def moveRight(self): if self.x < self.gameWidth - 450: self.x += self.speed def moveLeft(self): if self.x > 0: self.x -= self.speed def initSP(self): pass def initBeam(self): pass def handle_basicMove(self): pass def handle_AtkMove(self): pass def handle_ChangeWeapon(self): pass def updateBeam(self): pass def resetMove(self): if self.currentMotion != 0: if self.myClockRef.isSec(1): self.currentMotion = 0 def renderBeam(self): pass def renderSP(self): pass def renderScore(self): pass