Some player incapsulation
This commit is contained in:
@@ -20,11 +20,14 @@ class Cloud(pygame.sprite.Sprite):
|
|||||||
mainGameClass.getScreenHeight()/2 -
|
mainGameClass.getScreenHeight()/2 -
|
||||||
random.randint(100,
|
random.randint(100,
|
||||||
mainGameClass.getScreenHeight()/2-100))
|
mainGameClass.getScreenHeight()/2-100))
|
||||||
self.speed = random.randint(2, 4)*mainGameClass.getGameSpeed()
|
self.speed = random.randint(1, 3)*mainGameClass.getGameSpeed() / 6
|
||||||
|
|
||||||
|
self.__doubleX = float(self.rect.x)
|
||||||
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if (self.rect.x < -self.rect.width):
|
if (self.rect.x < -self.rect.width):
|
||||||
self.kill()
|
self.kill()
|
||||||
|
|
||||||
self.rect.x -= self.speed
|
self.__doubleX -= self.speed
|
||||||
|
self.rect.x = self.__doubleX
|
||||||
|
|||||||
+8
-47
@@ -67,17 +67,12 @@ class Drakora():
|
|||||||
self.buttonsPause = (pygame.K_p,)
|
self.buttonsPause = (pygame.K_p,)
|
||||||
self.buttonsQuit = (pygame.K_F10,)
|
self.buttonsQuit = (pygame.K_F10,)
|
||||||
self.buttonsNewGame = (pygame.K_RETURN,)
|
self.buttonsNewGame = (pygame.K_RETURN,)
|
||||||
self.buttonsJump = (pygame.K_UP, pygame.K_SPACE,)
|
|
||||||
self.buttonsCrouch = (pygame.K_DOWN,)
|
|
||||||
|
|
||||||
self.screenSize = (800, 600)
|
self.screenSize = (800, 600)
|
||||||
self.targetFps = 120
|
self.targetFps = 120
|
||||||
|
|
||||||
self.floorHeight = 50
|
self.floorHeight = 50
|
||||||
|
|
||||||
self.isDownJump = False
|
|
||||||
self.isDownCrouch = False
|
|
||||||
|
|
||||||
self.floors = pygame.sprite.Group()
|
self.floors = pygame.sprite.Group()
|
||||||
self.enemies = pygame.sprite.Group()
|
self.enemies = pygame.sprite.Group()
|
||||||
self.clouds = pygame.sprite.Group()
|
self.clouds = pygame.sprite.Group()
|
||||||
@@ -120,6 +115,7 @@ class Drakora():
|
|||||||
def render(self):
|
def render(self):
|
||||||
self.screen.fill((102, 153, 255))
|
self.screen.fill((102, 153, 255))
|
||||||
self.sprites.draw(self.screen)
|
self.sprites.draw(self.screen)
|
||||||
|
self.floors.draw(self.screen)
|
||||||
|
|
||||||
self.renderText('%d'%(self.__score),
|
self.renderText('%d'%(self.__score),
|
||||||
self.fontScore, (255, 255, 255),
|
self.fontScore, (255, 255, 255),
|
||||||
@@ -139,8 +135,6 @@ class Drakora():
|
|||||||
self.fontMessage, (255, 255, 255),
|
self.fontMessage, (255, 255, 255),
|
||||||
tuple(i/2 for i in self.screenSize))
|
tuple(i/2 for i in self.screenSize))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if self.isGodmode:
|
if self.isGodmode:
|
||||||
self.renderText('godmode',
|
self.renderText('godmode',
|
||||||
self.fontGodmode, (255, 255, 255),
|
self.fontGodmode, (255, 255, 255),
|
||||||
@@ -159,6 +153,7 @@ class Drakora():
|
|||||||
else:
|
else:
|
||||||
return 300
|
return 300
|
||||||
|
|
||||||
|
|
||||||
def collideCheck(self):
|
def collideCheck(self):
|
||||||
if pygame.sprite.spritecollideany(self.player, self.enemies):
|
if pygame.sprite.spritecollideany(self.player, self.enemies):
|
||||||
if not self.isGodmode: self.isGameOver = True
|
if not self.isGodmode: self.isGameOver = True
|
||||||
@@ -169,60 +164,24 @@ class Drakora():
|
|||||||
self.player.isOnFloor = True
|
self.player.isOnFloor = True
|
||||||
self.player.rect.y -= 1
|
self.player.rect.y -= 1
|
||||||
|
|
||||||
if not self.isDownJump:
|
|
||||||
self.player.hoverCount = 0
|
|
||||||
|
|
||||||
if self.player.isOnFloor:
|
|
||||||
self.player.speed = 0
|
|
||||||
|
|
||||||
if self.isDownJump:
|
|
||||||
self.player.isJumping = True
|
|
||||||
|
|
||||||
if self.player.isCrouching:
|
|
||||||
self.player.standup()
|
|
||||||
|
|
||||||
elif self.isDownCrouch:
|
|
||||||
if not self.player.isCrouching:
|
|
||||||
self.player.crouch()
|
|
||||||
|
|
||||||
elif self.player.isCrouching:
|
|
||||||
self.player.standup()
|
|
||||||
|
|
||||||
if self.player.isJumping:
|
|
||||||
if self.isDownJump and self.player.hoverCount < 7:
|
|
||||||
self.player.speed -= 1 - self.player.speed/(15+
|
|
||||||
self.player.hoverCount*3)
|
|
||||||
self.player.hoverCount += 1
|
|
||||||
|
|
||||||
else:
|
|
||||||
self.player.isJumping = False
|
|
||||||
|
|
||||||
|
|
||||||
def logic(self):
|
def logic(self):
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
|
self.player.control(event)
|
||||||
|
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
elif event.type == pygame.KEYDOWN:
|
elif event.type == pygame.KEYDOWN:
|
||||||
if event.key in self.buttonsQuit:
|
if event.key in self.buttonsQuit:
|
||||||
return False
|
return False
|
||||||
elif event.key in self.buttonsCrouch:
|
|
||||||
self.isDownCrouch = True
|
|
||||||
elif event.key in self.buttonsJump:
|
|
||||||
self.isDownJump = True
|
|
||||||
elif event.key in self.buttonsNewGame:
|
elif event.key in self.buttonsNewGame:
|
||||||
if self.isGameOver: self.newGame()
|
if self.isGameOver: self.newGame()
|
||||||
elif event.key in self.buttonsPause:
|
elif event.key in self.buttonsPause:
|
||||||
self.isPaused = not self.isPaused
|
self.isPaused = not self.isPaused
|
||||||
|
|
||||||
elif event.type == pygame.KEYUP:
|
elif event.type == pygame.KEYUP:
|
||||||
if event.key in self.buttonsCrouch:
|
if event.key == pygame.K_g:
|
||||||
self.isDownCrouch = False
|
|
||||||
godmodeCount = 0
|
|
||||||
elif event.key in self.buttonsJump:
|
|
||||||
self.isDownJump = False
|
|
||||||
godmodeCount = 0
|
|
||||||
elif event.key == pygame.K_g:
|
|
||||||
if self.godmodeCount == 0: self.godmodeCount += 1
|
if self.godmodeCount == 0: self.godmodeCount += 1
|
||||||
else: self.godmodeCount == 0
|
else: self.godmodeCount == 0
|
||||||
elif event.key == pygame.K_o:
|
elif event.key == pygame.K_o:
|
||||||
@@ -240,13 +199,15 @@ class Drakora():
|
|||||||
if self.godmodeCount == 6:
|
if self.godmodeCount == 6:
|
||||||
self.godmodeCount == 0
|
self.godmodeCount == 0
|
||||||
self.isGodmode = not self.isGodmode
|
self.isGodmode = not self.isGodmode
|
||||||
|
else:
|
||||||
|
self.godmodeCount = 0
|
||||||
|
|
||||||
if not self.isGameOver and not self.isPaused:
|
if not self.isGameOver and not self.isPaused:
|
||||||
self.sprites.update()
|
self.sprites.update()
|
||||||
|
|
||||||
self.enemyCD -= self.__gameSpeed
|
self.enemyCD -= self.__gameSpeed
|
||||||
|
|
||||||
if random.randint(1, 50) == 1:
|
if random.randint(1, 200) == 1:
|
||||||
cloud = Cloud(self)
|
cloud = Cloud(self)
|
||||||
self.clouds.add(cloud)
|
self.clouds.add(cloud)
|
||||||
self.sprites.add(cloud)
|
self.sprites.add(cloud)
|
||||||
|
|||||||
@@ -18,12 +18,17 @@ class Player(pygame.sprite.Sprite):
|
|||||||
self.isCrouching = False
|
self.isCrouching = False
|
||||||
self.hoverCount = 0
|
self.hoverCount = 0
|
||||||
self.isOnFloor = False
|
self.isOnFloor = False
|
||||||
|
self.isDownJump = False
|
||||||
|
self.isDownCrouch = False
|
||||||
|
self.buttonsJump = (pygame.K_UP, pygame.K_SPACE,)
|
||||||
|
self.buttonsCrouch = (pygame.K_DOWN,)
|
||||||
|
|
||||||
|
|
||||||
def crouch(self):
|
def crouch(self):
|
||||||
if not self.isCrouching:
|
if not self.isCrouching:
|
||||||
self.isCrouching = True
|
self.isCrouching = True
|
||||||
self.rect = self.rect.inflate(0, -25)
|
self.rect = self.rect.inflate(0, -25)
|
||||||
|
# self.image.set_clip((50, 50))
|
||||||
|
|
||||||
|
|
||||||
def standup(self):
|
def standup(self):
|
||||||
@@ -32,8 +37,50 @@ class Player(pygame.sprite.Sprite):
|
|||||||
self.rect = self.rect.inflate(0, 25)
|
self.rect = self.rect.inflate(0, 25)
|
||||||
|
|
||||||
|
|
||||||
|
def control(self, event):
|
||||||
|
if event.type == pygame.KEYDOWN:
|
||||||
|
if event.key in self.buttonsCrouch:
|
||||||
|
self.isDownCrouch = True
|
||||||
|
elif event.key in self.buttonsJump:
|
||||||
|
self.isDownJump = True
|
||||||
|
|
||||||
|
elif event.type == pygame.KEYUP:
|
||||||
|
if event.key in self.buttonsCrouch:
|
||||||
|
self.isDownCrouch = False
|
||||||
|
elif event.key in self.buttonsJump:
|
||||||
|
self.isDownJump = False
|
||||||
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if not self.speed: self.rect.y += 1
|
if not self.speed: self.rect.y += 1
|
||||||
|
|
||||||
self.speed += 0.17
|
self.speed += 0.17
|
||||||
self.rect.y += self.speed
|
self.rect.y += self.speed
|
||||||
|
|
||||||
|
if not self.isDownJump:
|
||||||
|
self.hoverCount = 0
|
||||||
|
|
||||||
|
if self.isOnFloor:
|
||||||
|
self.speed = 0
|
||||||
|
|
||||||
|
if self.isDownJump:
|
||||||
|
self.isJumping = True
|
||||||
|
|
||||||
|
if self.isCrouching:
|
||||||
|
self.standup()
|
||||||
|
|
||||||
|
elif self.isDownCrouch:
|
||||||
|
if not self.isCrouching:
|
||||||
|
self.crouch()
|
||||||
|
|
||||||
|
elif self.isCrouching:
|
||||||
|
self.standup()
|
||||||
|
|
||||||
|
if self.isJumping:
|
||||||
|
if self.isDownJump and self.hoverCount < 7:
|
||||||
|
self.speed -= 1 - self.speed/(15+
|
||||||
|
self.hoverCount*3)
|
||||||
|
self.hoverCount += 1
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.isJumping = False
|
||||||
|
|||||||
Reference in New Issue
Block a user