Merge pull request #7 from IRUSlan92I/gameclass_test
Splitted enemies. Fixed flying enemies. Minor fixes
This commit is contained in:
+31
-7
@@ -7,7 +7,8 @@ import pygame
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
from Player import Player
|
from Player import Player
|
||||||
from Enemy import Enemy
|
from StandingEnemy import StandingEnemy
|
||||||
|
from FlyingEnemy import FlyingEnemy
|
||||||
from Cloud import Cloud
|
from Cloud import Cloud
|
||||||
from Floor import Floor
|
from Floor import Floor
|
||||||
|
|
||||||
@@ -37,7 +38,7 @@ class Drakora():
|
|||||||
self.__score += score
|
self.__score += score
|
||||||
|
|
||||||
if self.__score%self.speedUpRate == 0:
|
if self.__score%self.speedUpRate == 0:
|
||||||
self.__gameSpeed += 1
|
self.__gameSpeed += self.__score/self.speedUpRate
|
||||||
self.speedUpLabelCD = self.targetFps
|
self.speedUpLabelCD = self.targetFps
|
||||||
|
|
||||||
|
|
||||||
@@ -57,10 +58,11 @@ class Drakora():
|
|||||||
self.__gameSpeed = 2
|
self.__gameSpeed = 2
|
||||||
|
|
||||||
self.enemyCount = 0
|
self.enemyCount = 0
|
||||||
self.enemyCD = self.getNextEnemyCD()
|
|
||||||
self.enemyChance = 100.0
|
self.enemyChance = 100.0
|
||||||
|
|
||||||
self.speedUpLabelCD = 0
|
self.speedUpLabelCD = 0
|
||||||
|
self.nextEnemyMustBeFlying = False
|
||||||
|
self.enemyCD = self.getNextEnemyCD()
|
||||||
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -144,12 +146,14 @@ class Drakora():
|
|||||||
|
|
||||||
|
|
||||||
def getNextEnemyCD(self):
|
def getNextEnemyCD(self):
|
||||||
if self.enemyCount <= 5:
|
if self.enemyCount == 0:
|
||||||
return 1000
|
return 1000
|
||||||
elif self.enemyCount <= 5:
|
elif self.enemyCount <= 5:
|
||||||
return 800 - 100*self.enemyCount
|
return 800 - 100*self.enemyCount
|
||||||
elif self.enemyCount%self.speedUpRate == 0:
|
elif self.enemyCount%self.speedUpRate == 0:
|
||||||
return 1000
|
return 1000
|
||||||
|
elif self.nextEnemyMustBeFlying:
|
||||||
|
return 600
|
||||||
else:
|
else:
|
||||||
return 300
|
return 300
|
||||||
|
|
||||||
@@ -166,6 +170,8 @@ class Drakora():
|
|||||||
|
|
||||||
|
|
||||||
def logic(self):
|
def logic(self):
|
||||||
|
self.player.updateSpeed(self.__gameSpeed)
|
||||||
|
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
self.player.control(event)
|
self.player.control(event)
|
||||||
|
|
||||||
@@ -176,7 +182,7 @@ class Drakora():
|
|||||||
if event.key in self.buttonsQuit:
|
if event.key in self.buttonsQuit:
|
||||||
return False
|
return False
|
||||||
elif event.key in self.buttonsNewGame:
|
elif event.key in self.buttonsNewGame:
|
||||||
if self.isGameOver: self.newGame()
|
if self.isGameOver or self.isGodmode: self.newGame()
|
||||||
elif event.key in self.buttonsPause:
|
elif event.key in self.buttonsPause:
|
||||||
self.isPaused = not self.isPaused
|
self.isPaused = not self.isPaused
|
||||||
|
|
||||||
@@ -217,9 +223,27 @@ class Drakora():
|
|||||||
|
|
||||||
if random.randint(1, 150) < self.enemyChance:
|
if random.randint(1, 150) < self.enemyChance:
|
||||||
self.enemyCount += 1
|
self.enemyCount += 1
|
||||||
self.enemyCD = self.getNextEnemyCD()
|
|
||||||
self.enemyChance = 1
|
self.enemyChance = 1
|
||||||
enemy = Enemy(self)
|
|
||||||
|
if self.nextEnemyMustBeFlying:
|
||||||
|
enemy = FlyingEnemy(self)
|
||||||
|
else:
|
||||||
|
enemy = StandingEnemy(self)
|
||||||
|
|
||||||
|
if self.__score < 10:
|
||||||
|
self.nextEnemyMustBeFlying = False
|
||||||
|
|
||||||
|
elif self.__score < 20:
|
||||||
|
self.nextEnemyMustBeFlying = random.randint(1, 100) > 95
|
||||||
|
|
||||||
|
elif self.__score < 40:
|
||||||
|
self.nextEnemyMustBeFlying = random.randint(1, 100) > 85
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.nextEnemyMustBeFlying = random.randint(1, 100) > 75
|
||||||
|
|
||||||
|
self.enemyCD = self.getNextEnemyCD()
|
||||||
|
|
||||||
self.enemies.add(enemy)
|
self.enemies.add(enemy)
|
||||||
self.sprites.add(enemy)
|
self.sprites.add(enemy)
|
||||||
|
|
||||||
|
|||||||
@@ -8,62 +8,13 @@ import random
|
|||||||
|
|
||||||
|
|
||||||
class Enemy(pygame.sprite.Sprite):
|
class Enemy(pygame.sprite.Sprite):
|
||||||
def setNextEnemyType(self, score):
|
|
||||||
if score < 10:
|
|
||||||
self.type = 1
|
|
||||||
|
|
||||||
elif score < 20:
|
|
||||||
if random.randint(1, 100) < 95: self.type = 1
|
|
||||||
else: self.type = 2
|
|
||||||
|
|
||||||
elif score < 40:
|
|
||||||
if random.randint(1, 100) < 85: self.type = 1
|
|
||||||
else: self.type = 2
|
|
||||||
|
|
||||||
else:
|
|
||||||
if random.randint(1, 100) < 75: self.type = 1
|
|
||||||
else: self.type = 2
|
|
||||||
|
|
||||||
|
|
||||||
def setNextEnemySubtype(self):
|
|
||||||
if self.type == 1:
|
|
||||||
self.subtype = random.randint(1, 5)
|
|
||||||
elif self.type == 2:
|
|
||||||
self.subtype = random.randint(1, 7)
|
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, mainGameClass):
|
def __init__(self, mainGameClass):
|
||||||
pygame.sprite.Sprite.__init__(self)
|
pygame.sprite.Sprite.__init__(self)
|
||||||
|
|
||||||
self.thisGame = mainGameClass
|
self.thisGame = mainGameClass
|
||||||
|
|
||||||
self.speed = self.thisGame.getGameSpeed()
|
self.height = (mainGameClass.getScreenHeight()
|
||||||
|
- mainGameClass.getFloorHeight())
|
||||||
self.setNextEnemyType(self.thisGame.getScore())
|
|
||||||
self.setNextEnemySubtype()
|
|
||||||
|
|
||||||
self.height = mainGameClass.getScreenHeight() - mainGameClass.floorHeight
|
|
||||||
|
|
||||||
if self.type == 1:
|
|
||||||
if self.subtype == 1: self.image = pygame.Surface((25, 75))
|
|
||||||
elif self.subtype == 2: self.image = pygame.Surface((25, 25))
|
|
||||||
elif self.subtype == 3: self.image = pygame.Surface((75, 25))
|
|
||||||
elif self.subtype == 4: self.image = pygame.Surface((50, 25))
|
|
||||||
elif self.subtype == 5: self.image = pygame.Surface((50, 50))
|
|
||||||
else: self.image = pygame.Surface((25, 50))
|
|
||||||
|
|
||||||
self.image.fill((0, 153, 0))
|
|
||||||
self.rect = self.image.get_rect()
|
|
||||||
self.height -= self.rect.height/2
|
|
||||||
|
|
||||||
elif self.type == 2:
|
|
||||||
self.image = pygame.Surface((50, 25))
|
|
||||||
self.image.fill((51, 51, 0))
|
|
||||||
self.rect = self.image.get_rect()
|
|
||||||
self.height -= self.rect.height/2 + 10 + 10*self.subtype
|
|
||||||
|
|
||||||
self.rect.center = (mainGameClass.getScreenWidth() + self.rect.width,
|
|
||||||
self.height)
|
|
||||||
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
@@ -71,7 +22,4 @@ class Enemy(pygame.sprite.Sprite):
|
|||||||
self.kill()
|
self.kill()
|
||||||
self.thisGame.addScore(1)
|
self.thisGame.addScore(1)
|
||||||
|
|
||||||
if self.type == 1:
|
|
||||||
self.rect.x -= self.speed
|
self.rect.x -= self.speed
|
||||||
else:
|
|
||||||
self.rect.x -= self.speed*2
|
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ class Floor(pygame.sprite.Sprite):
|
|||||||
def __init__(self, mainGameClass):
|
def __init__(self, mainGameClass):
|
||||||
pygame.sprite.Sprite.__init__(self)
|
pygame.sprite.Sprite.__init__(self)
|
||||||
self.image = pygame.Surface((mainGameClass.getScreenWidth(),
|
self.image = pygame.Surface((mainGameClass.getScreenWidth(),
|
||||||
mainGameClass.getFloorHeight()))
|
mainGameClass.getFloorHeight()*101))
|
||||||
self.image.fill((255, 204, 102))
|
self.image.fill((255, 204, 102))
|
||||||
self.rect = self.image.get_rect()
|
self.rect = self.image.get_rect()
|
||||||
self.rect.center = (mainGameClass.getScreenWidth()/2,
|
self.rect.center = (mainGameClass.getScreenWidth()/2,
|
||||||
mainGameClass.getScreenHeight() -
|
mainGameClass.getScreenHeight() +
|
||||||
mainGameClass.getFloorHeight()/2)
|
mainGameClass.getFloorHeight()*49.5)
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
"""
|
||||||
|
Flying enemy entity class
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import pygame
|
||||||
|
import random
|
||||||
|
from Enemy import Enemy
|
||||||
|
|
||||||
|
|
||||||
|
class FlyingEnemy(Enemy):
|
||||||
|
def __init__(self, mainGameClass):
|
||||||
|
Enemy.__init__(self, mainGameClass)
|
||||||
|
|
||||||
|
self.subtype = random.randint(1, 7)
|
||||||
|
|
||||||
|
self.image = pygame.Surface((50, 25))
|
||||||
|
self.image.fill((51, 51, 0))
|
||||||
|
self.rect = self.image.get_rect()
|
||||||
|
self.height -= self.rect.height/2 + 10 + 10*self.subtype
|
||||||
|
|
||||||
|
self.rect.center = (mainGameClass.getScreenWidth() + self.rect.width,
|
||||||
|
self.height)
|
||||||
|
|
||||||
|
self.speed = self.thisGame.getGameSpeed()*2
|
||||||
@@ -22,6 +22,7 @@ class Player(pygame.sprite.Sprite):
|
|||||||
self.isDownCrouch = False
|
self.isDownCrouch = False
|
||||||
self.buttonsJump = (pygame.K_UP, pygame.K_SPACE,)
|
self.buttonsJump = (pygame.K_UP, pygame.K_SPACE,)
|
||||||
self.buttonsCrouch = (pygame.K_DOWN,)
|
self.buttonsCrouch = (pygame.K_DOWN,)
|
||||||
|
self.gameSpeed = 1
|
||||||
|
|
||||||
|
|
||||||
def crouch(self):
|
def crouch(self):
|
||||||
@@ -36,6 +37,8 @@ class Player(pygame.sprite.Sprite):
|
|||||||
self.isCrouching = False
|
self.isCrouching = False
|
||||||
self.rect = self.rect.inflate(0, 25)
|
self.rect = self.rect.inflate(0, 25)
|
||||||
|
|
||||||
|
def updateSpeed(self, newGameSpeed):
|
||||||
|
self.gameSpeed = newGameSpeed
|
||||||
|
|
||||||
def control(self, event):
|
def control(self, event):
|
||||||
if event.type == pygame.KEYDOWN:
|
if event.type == pygame.KEYDOWN:
|
||||||
@@ -54,7 +57,7 @@ class Player(pygame.sprite.Sprite):
|
|||||||
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.09 * self.gameSpeed
|
||||||
self.rect.y += self.speed
|
self.rect.y += self.speed
|
||||||
|
|
||||||
if not self.isDownJump:
|
if not self.isDownJump:
|
||||||
@@ -77,9 +80,9 @@ class Player(pygame.sprite.Sprite):
|
|||||||
self.standup()
|
self.standup()
|
||||||
|
|
||||||
if self.isJumping:
|
if self.isJumping:
|
||||||
if self.isDownJump and self.hoverCount < 7:
|
if self.isDownJump and self.hoverCount < 8:
|
||||||
self.speed -= 1 - self.speed/(15+
|
self.speed -= (1 - self.speed/(15+
|
||||||
self.hoverCount*3)
|
self.hoverCount*3)) * self.gameSpeed/2
|
||||||
self.hoverCount += 1
|
self.hoverCount += 1
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
"""
|
||||||
|
Standing enemy entity class
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
import pygame
|
||||||
|
import random
|
||||||
|
from Enemy import Enemy
|
||||||
|
|
||||||
|
|
||||||
|
class StandingEnemy(Enemy):
|
||||||
|
def __init__(self, mainGameClass):
|
||||||
|
Enemy.__init__(self, mainGameClass)
|
||||||
|
|
||||||
|
self.subtype = random.randint(1, 5)
|
||||||
|
|
||||||
|
if self.subtype == 1: self.image = pygame.Surface((25, 75))
|
||||||
|
elif self.subtype == 2: self.image = pygame.Surface((25, 25))
|
||||||
|
elif self.subtype == 3: self.image = pygame.Surface((75, 25))
|
||||||
|
elif self.subtype == 4: self.image = pygame.Surface((50, 25))
|
||||||
|
elif self.subtype == 5: self.image = pygame.Surface((50, 50))
|
||||||
|
else: self.image = pygame.Surface((25, 50))
|
||||||
|
|
||||||
|
self.image.fill((0, 153, 0))
|
||||||
|
self.rect = self.image.get_rect()
|
||||||
|
self.height -= self.rect.height/2
|
||||||
|
|
||||||
|
self.rect.center = (mainGameClass.getScreenWidth() + self.rect.width,
|
||||||
|
self.height)
|
||||||
|
|
||||||
|
self.speed = self.thisGame.getGameSpeed()
|
||||||
Reference in New Issue
Block a user