From 8547c71d5cf585bca4360fb88dfed03e470cbfec Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Tue, 14 Sep 2021 16:09:42 +0200 Subject: [PATCH] Added background clouds --- credits.md | 4 ++++ gamedata/assets/clouds.png | Bin 0 -> 18310 bytes gamedata/assets/cloudsdark.png | Bin 0 -> 18880 bytes gamedata/objects/bg/backgrounddrawer.py | 4 ++-- gamedata/objects/bg/movingbackground.py | 4 ++-- gamedata/objects/ingame/clouds.py | 21 +++++++++++++++++++++ gamedata/objects/ingame/manager.py | 21 +++++++++++++++++++-- 7 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 gamedata/assets/clouds.png create mode 100644 gamedata/assets/cloudsdark.png create mode 100644 gamedata/objects/ingame/clouds.py diff --git a/credits.md b/credits.md index bfa61c7..515c35d 100644 --- a/credits.md +++ b/credits.md @@ -9,3 +9,7 @@ All the textures are edited by myself to fit the [Famicube palette](https://losp ## Little characters [GraphxKid - OpenGameArt](https://opengameart.org/content/arcade-platformer-assets) + +## Clouds + +[Jetrel - OpenGameArt](https://opengameart.org/content/old-frogatto-clouds) diff --git a/gamedata/assets/clouds.png b/gamedata/assets/clouds.png new file mode 100644 index 0000000000000000000000000000000000000000..c0007c8f9e535ac1bc8f7bde219e56fa698bfba0 GIT binary patch literal 18310 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 gh*CPA|Ck literal 0 HcmV?d00001 diff --git a/gamedata/assets/cloudsdark.png b/gamedata/assets/cloudsdark.png new file mode 100644 index 0000000000000000000000000000000000000000..16704730de5cfff8e512eb9fb8af11a4545177ae GIT binary patch literal 18880 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 NwXSHEUU0bazW^o7Z+`#) literal 0 HcmV?d00001 diff --git a/gamedata/objects/bg/backgrounddrawer.py b/gamedata/objects/bg/backgrounddrawer.py index d6661c4..9bd4d90 100644 --- a/gamedata/objects/bg/backgrounddrawer.py +++ b/gamedata/objects/bg/backgrounddrawer.py @@ -12,8 +12,8 @@ class BackgroundDrawer(BaseObject): game = self.game self.tilew = sprite.get_width() self.tileh = sprite.get_height() - nbw = round(self.rect[2]/self.tilew+1.5) - nbh = round(self.rect[3]/self.tileh+1.5) + nbw = round(self.rect[2]/self.tilew+2) + nbh = round(self.rect[3]/self.tileh+2) sw = nbw*self.tileh sh = nbh*self.tileh self.sprite = game.pygame.Surface((sw,sh),game.pygame.SRCALPHA) diff --git a/gamedata/objects/bg/movingbackground.py b/gamedata/objects/bg/movingbackground.py index 269c33e..ede66d8 100644 --- a/gamedata/objects/bg/movingbackground.py +++ b/gamedata/objects/bg/movingbackground.py @@ -8,5 +8,5 @@ class MovingBackground(BackgroundDrawer): self.spdy = spdy def step(self): - self.rect[0]+=self.spdx - self.rect[1]+=self.spdy + self.rect[0]+=self.spdx*self.game.dt + self.rect[1]+=self.spdy*self.game.dt diff --git a/gamedata/objects/ingame/clouds.py b/gamedata/objects/ingame/clouds.py new file mode 100644 index 0000000..f4eb8d7 --- /dev/null +++ b/gamedata/objects/ingame/clouds.py @@ -0,0 +1,21 @@ +from gamedata.objects.base import BaseObject + +class Clouds(BaseObject): + + def __init__(self,game,minwidth,speed=30,cameraratio=1,spritename="clouds.png"): + super().__init__(0,0,game) + self.sprite = game.sprite_lib[spritename] + self.speed = speed + self.minwidth = minwidth + self.cameraratio = cameraratio + depth = -1 + self.horoffset = 0 + + def step(self): + self.horoffset+=self.game.dt*self.speed + + def draw(self): + offset = (self.horoffset-self.game.globals["camerax"]*self.cameraratio)%self.sprite.get_width() + nbsprites = round((self.minwidth+offset)//self.sprite.get_width()+2) + for i in range(nbsprites): + self.game.window.blit(self.sprite,[(i-1)*self.sprite.get_width()+offset,0]) diff --git a/gamedata/objects/ingame/manager.py b/gamedata/objects/ingame/manager.py index ca22a28..94af4ce 100644 --- a/gamedata/objects/ingame/manager.py +++ b/gamedata/objects/ingame/manager.py @@ -1,6 +1,7 @@ from gamedata.objects.base import BaseObject from gamedata.objects.ingame.spawner import Spawner from gamedata.objects.ingame.tiles import Tiles +from gamedata.objects.ingame.clouds import Clouds class Manager(BaseObject): def __init__(self,game): @@ -12,7 +13,7 @@ class Manager(BaseObject): self.speedmargin = 7 self.stepmargin = 2 self.spawntimer = game.lib.Timer(self.basetime) # Time elapsing each lemming spawn - self.deathtimer = game.lib.Timer(1) # Time betwin each life loss + self.deathtimer = game.lib.Timer(1) # Time between each life loss self.started = False self.invincible = False self.scoreratio = 0.2 # Points earned per seconds and per lemming @@ -21,6 +22,12 @@ class Manager(BaseObject): self.endrect = game.pygame.Surface((game.DISPLAY_WIDTH,game.DISPLAY_HEIGHT)) self.endrect.fill([0]*3) + # Clouds in the background + self.clouds = Clouds(game,game.DISPLAY_WIDTH,speed=30,cameraratio=0.8) + self.cloudsdark = Clouds(game,game.DISPLAY_WIDTH,speed=10,cameraratio=0.4,spritename="cloudsdark.png") + self.game.gameloop.summon(self.cloudsdark) + self.game.gameloop.summon(self.clouds) + # Summon the tiles self.tiles = Tiles(288,0,game) game.gameloop.summon(self.tiles) @@ -59,8 +66,18 @@ class Manager(BaseObject): def afterdraw(self): txtsurfacescore = self.game.fontfile.render("Score : "+str(int(self.score)),False,[150,255,150]) - txtsurfacelives = self.game.fontfile.render("Lives : "+str(int(max(0,self.lives))),False,[255,150,150]) + txtsurfacescoreblack = self.game.fontfile.render("Score : "+str(int(self.score)),False,[0]*3) + + txtsurfacelives = self.game.fontfile.render("Lives : "+str(int(self.lives)),False,[255,150,150]) + txtsurfacelivesblack = self.game.fontfile.render("Lives : "+str(int(self.lives)),False,[0]*3) + border = 2 + for x in range(-border,border+1): + for y in range(-border,border+1): + self.game.realwindow.blit(txtsurfacescoreblack,[20+x,20+y]) self.game.realwindow.blit(txtsurfacescore,[20,20]) + for x in range(-border,border+1): + for y in range(-border,border+1): + self.game.realwindow.blit(txtsurfacelivesblack,[20+x,20*2+y+txtsurfacescore.get_height()]) self.game.realwindow.blit(txtsurfacelives,[20,20*2+txtsurfacescore.get_height()]) self.endrect.set_alpha((1-self.endtimer.getratio())*255)