77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
"""
|
|
Enemy entity class
|
|
"""
|
|
|
|
|
|
import random
|
|
|
|
|
|
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):
|
|
pygame.sprite.Sprite.__init__(self)
|
|
|
|
self.thisGame = mainGameClass
|
|
|
|
self.speed = self.thisGame.getGameSpeed()
|
|
|
|
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):
|
|
if (self.rect.x < -self.rect.width):
|
|
self.kill()
|
|
self.thisGame.addScore(1)
|
|
|
|
if self.type == 1:
|
|
self.rect.x -= self.speed
|
|
else:
|
|
self.rect.x -= self.speed*2
|