More splitting and minor changes

This commit is contained in:
2021-03-28 01:35:45 +03:00
parent 90ffbb6e09
commit 01d42cb80e
5 changed files with 89 additions and 46 deletions
+30
View File
@@ -0,0 +1,30 @@
"""
Cloud entity class
"""
import pygame
import random
class Cloud(pygame.sprite.Sprite):
def __init__(self, mainGameClass):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((random.randint(150, 350),
random.randint(50, 150)))
self.image.fill((random.randint(235, 255),
random.randint(235, 255),
random.randint(235, 255)))
self.rect = self.image.get_rect()
self.rect.center = (mainGameClass.getScreenWidth() + self.rect.width,
mainGameClass.getScreenHeight()/2 -
random.randint(100,
mainGameClass.getScreenHeight()/2-100))
self.speed = random.randint(2, 4)*mainGameClass.getGameSpeed()
def update(self):
if (self.rect.x < -self.rect.width):
self.kill()
self.rect.x -= self.speed
+24 -40
View File
@@ -1,7 +1,5 @@
"""
First test Pygame project
Written in Python 3.X using Pygame library
Main game class
"""
@@ -10,45 +8,31 @@ import random
from Player import Player
from Enemy import Enemy
from Cloud import Cloud
from Floor import Floor
class Floor(pygame.sprite.Sprite):
def __init__(self, screenSize, floorHeight):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((screenSize[0], floorHeight))
self.image.fill((255, 204, 102))
self.rect = self.image.get_rect()
self.rect.center = (screenSize[0]/2, screenSize[1]-floorHeight/2)
class Cloud(pygame.sprite.Sprite):
def __init__(self, screenSize, gameSpeed):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((random.randint(150, 350),
random.randint(50, 150)))
self.image.fill((random.randint(235, 255),
random.randint(235, 255),
random.randint(235, 255)))
self.rect = self.image.get_rect()
self.rect.center = (screenSize[0] + self.rect.width,
screenSize[1]/2 -
random.randint(100, screenSize[1]/2-100))
self.speed = random.randint(150, 300)/100*gameSpeed
def update(self):
if (self.rect.x < -self.rect.width):
self.kill()
self.rect.x -= self.speed
class Drakora():
def getGameSpeed(self):
return self.__gameSpeed
def getScore(self):
return self.__score
def getScreenWidth(self):
return self.screenSize[0]
def getScreenHeight(self):
return self.screenSize[1]
def getFloorHeight(self):
return self.floorHeight
def addScore(self, score):
self.__score += score
@@ -102,7 +86,7 @@ class Drakora():
self.clock = pygame.time.Clock()
self.sprites = pygame.sprite.Group()
self.floors.add(Floor(self.screenSize, self.floorHeight))
self.floors.add(Floor(self))
self.sprites.add(self.floors)
font = pygame.font.match_font('liberation mono')
@@ -129,7 +113,7 @@ class Drakora():
self.renderText('%d'%(self.__score),
self.fontScore, (255, 255, 255),
(self.screenSize[0]/2,20))
(self.getScreenWidth()/2,20))
if self.isGameOver:
self.renderText('GAME OVER',
@@ -210,18 +194,18 @@ class Drakora():
self.enemyCD -= self.__gameSpeed
if random.randint(1, 150) == 1:
cloud = Cloud(self.screenSize, self.__gameSpeed)
if random.randint(1, 50) == 1:
cloud = Cloud(self)
self.clouds.add(cloud)
self.sprites.add(cloud)
if self.enemyCD <= 0:
self.enemyChance += (1/self.targetFps) * self.enemyChance/8
if random.randint(1, 100) < self.enemyChance:
self.enemyCD = 200
if random.randint(1, 150) < self.enemyChance:
self.enemyCD = 300
self.enemyChance = 1
enemy = Enemy(self.screenSize, self.floorHeight, self)
enemy = Enemy(self)
self.enemies.add(enemy)
self.sprites.add(enemy)
+10 -4
View File
@@ -1,6 +1,11 @@
import pygame
"""
Enemy entity class
"""
import random
class Enemy(pygame.sprite.Sprite):
def setNextEnemyType(self, score):
if score < 10:
@@ -26,7 +31,7 @@ class Enemy(pygame.sprite.Sprite):
self.subtype = random.randint(1, 7)
def __init__(self, screenSize, floorHeight, mainGameClass):
def __init__(self, mainGameClass):
pygame.sprite.Sprite.__init__(self)
self.thisGame = mainGameClass
@@ -36,7 +41,7 @@ class Enemy(pygame.sprite.Sprite):
self.setNextEnemyType(self.thisGame.getScore())
self.setNextEnemySubtype()
self.height = screenSize[1] - floorHeight
self.height = mainGameClass.getScreenHeight() - mainGameClass.floorHeight
if self.type == 1:
if self.subtype == 1: self.image = pygame.Surface((25, 75))
@@ -56,7 +61,8 @@ class Enemy(pygame.sprite.Sprite):
self.rect = self.image.get_rect()
self.height -= self.rect.height/2 + 10 + 10*self.subtype
self.rect.center = (screenSize[0] + self.rect.width, self.height)
self.rect.center = (mainGameClass.getScreenWidth() + self.rect.width,
self.height)
def update(self):
+18
View File
@@ -0,0 +1,18 @@
"""
Floor entity class
"""
import pygame
class Floor(pygame.sprite.Sprite):
def __init__(self, mainGameClass):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((mainGameClass.getScreenWidth(),
mainGameClass.getFloorHeight()))
self.image.fill((255, 204, 102))
self.rect = self.image.get_rect()
self.rect.center = (mainGameClass.getScreenWidth()/2,
mainGameClass.getScreenHeight() -
mainGameClass.getFloorHeight()/2)
+6 -1
View File
@@ -1,5 +1,11 @@
"""
Player entity class
"""
import pygame
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
@@ -31,4 +37,3 @@ class Player(pygame.sprite.Sprite):
self.speed += 0.17
self.rect.y += self.speed