Fixed BG sprite glitch. Minor fixes
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
"""
|
||||
Background entity class
|
||||
"""
|
||||
|
||||
|
||||
import pygame
|
||||
import os
|
||||
|
||||
from BackgroundLayer import BackgroundLayer
|
||||
|
||||
|
||||
class Background():
|
||||
imgDir = os.path.join(os.path.dirname(__file__), 'data')
|
||||
backgroundImage = pygame.image.load(os.path.join(imgDir, 'background.png'))#.convert()
|
||||
backgroundImages = (
|
||||
pygame.transform.scale(backgroundImage.subsurface((0, 0, 800, 150)), (3200, 600)),
|
||||
pygame.transform.scale(backgroundImage.subsurface((0, 150, 800, 150)), (3200, 600)),
|
||||
)
|
||||
for image in backgroundImages:
|
||||
image.set_colorkey((255,0,255))
|
||||
|
||||
def __init__(self, mainGameClass):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
|
||||
self.layers = (
|
||||
BackgroundLayer(Background.backgroundImages[0], mainGameClass, 0.5),
|
||||
BackgroundLayer(Background.backgroundImages[1], mainGameClass, 1),
|
||||
)
|
||||
|
||||
|
||||
def update(self):
|
||||
for layer in self.layers:
|
||||
layer.update()
|
||||
|
||||
|
||||
def draw(self, surface):
|
||||
for layer in self.layers:
|
||||
layer.draw(surface)
|
||||
@@ -0,0 +1,27 @@
|
||||
"""
|
||||
Background layer entity class
|
||||
"""
|
||||
|
||||
|
||||
import pygame
|
||||
|
||||
from BackgroundLayerFrame import BackgroundLayerFrame
|
||||
|
||||
|
||||
class BackgroundLayer():
|
||||
def __init__(self, image, mainGameClass, speedMultiplier):
|
||||
offset = image.get_width()
|
||||
|
||||
self.frames = pygame.sprite.Group()
|
||||
|
||||
self.frames.add(BackgroundLayerFrame(image, mainGameClass, (0, 0), speedMultiplier))
|
||||
self.frames.add(BackgroundLayerFrame(image, mainGameClass, (offset, 0), speedMultiplier))
|
||||
|
||||
|
||||
def update(self):
|
||||
for frame in self.frames:
|
||||
frame.update()
|
||||
|
||||
|
||||
def draw(self, surface):
|
||||
self.frames.draw(surface)
|
||||
@@ -0,0 +1,25 @@
|
||||
"""
|
||||
Background layer frame entity class
|
||||
"""
|
||||
|
||||
|
||||
import pygame
|
||||
|
||||
|
||||
class BackgroundLayerFrame(pygame.sprite.Sprite):
|
||||
def __init__(self, image, mainGameClass, offset, speedMultiplier):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
|
||||
self.image = image
|
||||
self.mainGameClass = mainGameClass
|
||||
self.speedMultiplier = speedMultiplier
|
||||
|
||||
self.rect = self.image.get_rect()
|
||||
self.rect.center = (mainGameClass.getScreenWidth()/2 + offset[0],
|
||||
mainGameClass.getScreenHeight()/2 + offset[1])
|
||||
|
||||
|
||||
def update(self):
|
||||
self.rect.x -= self.mainGameClass.getGameSpeed() * self.speedMultiplier
|
||||
if self.rect.x < -self.rect.width:
|
||||
self.rect.x += self.rect.width*2
|
||||
@@ -23,8 +23,6 @@ class Cloud(pygame.sprite.Sprite):
|
||||
mainGameClass.getScreenHeight()/2-100)+50*(2-cloudType))
|
||||
self.speed = cloudType*mainGameClass.getGameSpeed() / 6
|
||||
|
||||
|
||||
|
||||
self.__doubleX = float(self.rect.x)
|
||||
|
||||
|
||||
|
||||
+5
-20
@@ -9,6 +9,7 @@ import os
|
||||
|
||||
from collections import deque
|
||||
|
||||
from Background import Background
|
||||
from Player import Player
|
||||
from StandingEnemy import StandingEnemy
|
||||
from FlyingEnemy import FlyingEnemy
|
||||
@@ -17,13 +18,6 @@ from Floor import Floor
|
||||
|
||||
|
||||
class Drakora():
|
||||
imgDir = os.path.join(os.path.dirname(__file__), 'data')
|
||||
backgroundImage = pygame.image.load(os.path.join(imgDir, 'background.png'))#.convert()
|
||||
backgroundImages = (
|
||||
pygame.transform.scale(backgroundImage.subsurface((0, 0, 800, 150)), (3200, 600)),
|
||||
pygame.transform.scale(backgroundImage.subsurface((0, 150, 800, 150)), (3200, 600)),
|
||||
)
|
||||
|
||||
def getGameSpeed(self):
|
||||
return self.__gameSpeed
|
||||
|
||||
@@ -65,6 +59,8 @@ class Drakora():
|
||||
|
||||
|
||||
def newGame(self):
|
||||
self.background = Background(self)
|
||||
|
||||
for enemy in self.enemies:
|
||||
enemy.kill()
|
||||
|
||||
@@ -94,14 +90,12 @@ class Drakora():
|
||||
self.speedUpCheatLabelCD = 0
|
||||
self.speedDownCheatLabelCD = 0
|
||||
self.speedResetCheatLabelCD = 0
|
||||
self.backgroundgOffset = [0, self.fourScreenWidths]
|
||||
|
||||
|
||||
def __init__(self):
|
||||
random.seed()
|
||||
pygame.init()
|
||||
self.screenSize = (800, 600)
|
||||
self.fourScreenWidths = self.screenSize[0]*4
|
||||
self.screen = pygame.display.set_mode(self.screenSize)
|
||||
pygame.display.set_caption('Drakora')
|
||||
self.clock = pygame.time.Clock()
|
||||
@@ -163,9 +157,7 @@ class Drakora():
|
||||
|
||||
def render(self):
|
||||
# self.screen.fill((102, 153, 255))
|
||||
self.screen.blit(self.backgroundImages[0], (0-self.backgroundgOffset[0], 0, self.fourScreenWidths-self.backgroundgOffset[0], 600))
|
||||
self.screen.blit(self.backgroundImages[1], (0-self.backgroundgOffset[1], 0, self.fourScreenWidths-self.backgroundgOffset[1], 600))
|
||||
|
||||
self.background.draw(self.screen)
|
||||
for cloudGroup in self.cloudGroups: cloudGroup.draw(self.screen)
|
||||
self.enemies.draw(self.screen)
|
||||
self.players.draw(self.screen)
|
||||
@@ -299,14 +291,7 @@ class Drakora():
|
||||
self.doCheats()
|
||||
|
||||
if not self.isGameOver and not self.isPaused:
|
||||
self.backgroundgOffset[0] += self.__gameSpeed
|
||||
self.backgroundgOffset[1] += self.__gameSpeed
|
||||
|
||||
if self.backgroundgOffset[0] > self.fourScreenWidths*2:
|
||||
self.backgroundgOffset[0] -= self.fourScreenWidths*2
|
||||
if self.backgroundgOffset[1] > self.fourScreenWidths*2:
|
||||
self.backgroundgOffset[1] -= self.fourScreenWidths*2
|
||||
|
||||
self.background.update()
|
||||
for cloudGroup in self.cloudGroups: cloudGroup.update()
|
||||
self.enemies.update()
|
||||
self.players.update()
|
||||
|
||||
@@ -22,6 +22,7 @@ class FlyingEnemy(Enemy):
|
||||
for image in images:
|
||||
image.set_colorkey((255,0,255))
|
||||
|
||||
|
||||
def __init__(self, mainGameClass):
|
||||
Enemy.__init__(self, mainGameClass)
|
||||
|
||||
|
||||
@@ -35,11 +35,11 @@ class Player(pygame.sprite.Sprite):
|
||||
pygame.transform.scale(playerImage.subsurface((16, 72, 16, 16)), (64, 64)),
|
||||
)
|
||||
|
||||
|
||||
for array in (walkImages, upImages, downImages, crouchImages):
|
||||
for image in array:
|
||||
image.set_colorkey((255,0,255))
|
||||
|
||||
|
||||
def __init__(self):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ class StandingEnemy(Enemy):
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def __init__(self, mainGameClass):
|
||||
Enemy.__init__(self, mainGameClass)
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
Reference in New Issue
Block a user