From cc37b5689a505fa85e00e9712213094302a7079d Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Sun, 4 Apr 2021 14:46:37 +0300 Subject: [PATCH] Broken background system --- Drakora.pyw | 26 +++++++++++++++++++++++--- data/background.png | Bin 2300 -> 3821 bytes data/background.xcf | Bin 8164 -> 13599 bytes 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Drakora.pyw b/Drakora.pyw index 16e9a65..e119e60 100644 --- a/Drakora.pyw +++ b/Drakora.pyw @@ -5,6 +5,7 @@ Main game class import pygame import random +import os from collections import deque @@ -16,6 +17,13 @@ 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 @@ -86,12 +94,14 @@ class Drakora(): self.speedUpCheatLabelCD = 0 self.speedDownCheatLabelCD = 0 self.speedResetCheatLabelCD = 0 + self.backgroundgOffset = [0, int(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() @@ -102,7 +112,7 @@ class Drakora(): self.targetFps = 120 - self.floorHeight = 50 + self.floorHeight = 64 self.players = pygame.sprite.Group() self.floors = pygame.sprite.Group() @@ -120,7 +130,6 @@ class Drakora(): self.isGodmode = False self.drawBoxes = False - font = pygame.font.match_font('liberation mono') self.fontScore = pygame.font.Font(font, 32) self.fontMessage = pygame.font.Font(font, 56) @@ -153,7 +162,10 @@ class Drakora(): def render(self): - self.screen.fill((102, 153, 255)) + # 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)) + for cloudGroup in self.cloudGroups: cloudGroup.draw(self.screen) self.enemies.draw(self.screen) self.players.draw(self.screen) @@ -287,6 +299,14 @@ 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 + for cloudGroup in self.cloudGroups: cloudGroup.update() self.enemies.update() self.players.update() diff --git a/data/background.png b/data/background.png index 695147c756608493d4df443a0d31f49ffc3720a0..0b5fcd7cdde64edf72397e923c4779f87bd2c4fa 100644 GIT binary patch literal 3821 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 diff --git a/data/background.xcf b/data/background.xcf index 802794a14d682d94b19568b4e9edb97798423e37..aa18ecc24092b685ae412f0043d85fc5c1af36c3 100644 GIT binary patch literal 13599 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 DV4I&| literal 8164 zcmYe#%q>u;NKR8IGcYt{U|?WYU|?XF#sC2zT9AQ(fsv7cfkBvofq}z$8Uq6eGcYiS zFfcH%FfcIGFfcHPLD?X6q6`d-?hFhJyda}>lk;wc z6x=<113)qYV5OP4iRr1j=|!0-ATdS;21W*r;*!doRE6UFoXiwWE{(MGaAgvX}1&PU-dFcv2&5Q_*`abE^Hrg2kdz9D{r~@ekXx0J*sugw1yY2-OlJ^mcql;K z#SHQv0|SG!CPa<2DU^1E(!LNHM8frgtOO@Z1_qV{kPHI@O97OIgc<|O1So$2l->ZP z4?yV)Q2GIs{s5s_Aru3v0EEE`3PVuzI6(O9cOW#U1cc_=0ik&+AT(bDgcb;a&_c2h zS~w9xi~NPq;-GM6U|^8A3*k#aQ;bw5lwS#@JE8PUD7_L&?}XAPq4Z5C{Sr$5gwWEU zGy@7>NeG{TpriKjsruqy5rg~s3XsQhkFELX! z1_@IY1{qTY26Nd8x5kom8`Apc*MLFvCV zgUWviaJ*>!7h=%;F944lv;XW2mj6L%?$-Z$wwnwr(0Jhn$B7Puu&D+-4irpfz~Qf9 zD$Jk=HRdgrCm_?Gcnki{%5FXIbb^Y&6~l%_TLPep7j|7|7$ad{8tBu zo$P;k2F3r<466Ud88rV3LBori!Sp{TgT;R~2Fw4f4A%dd8Eir6n$_WdJ^O!#|E6{f z|4pqKm`$x1SWGP$SWV3t*umJ0fy2~mGf!oxGfd`!C^`U7VQZ|U0sxwG})4C!! ztt*>K!PB|EDKEHesAp0%9e(!gXZZi$mVxoVH3Rd1D+ZSTmf$jm{l6Il$A41>&i^J1 zT>p*1=^a$&@cq|k;Qy}&PU~X-)fptU)11_)Cpk3H|6h(l@xKg%@_$JNwg2MaxYCA~NqpcqgVh?fZ ze};PI*#GtHtk8M`l(#^2hdBd>sVOub4H)>qaR@4}G#McEhAM-UsS;A%A;q9#DhbY0 z8qj(d6n_S$ybOk>JPgLBoD62B>Hit8ere1mN`yC~j35r2Z>2NdH%40M-4Vcm>t}pfXeAzbJ#|e_;k4a9zX4VECV# z!T3KHgXw<`2J`={43_^{z-G7lA%rhb1<0wXJfGX532N@ z{Ree~Kn)-kQ!{A63~JPaGA*P~mNZpnkcL;Pkj6Z$69j5df+|uIa3RdXP|v)|bkLi} z-oWtxza0bPe@g~7aAU=Yfe+jm*Jcp@ugL&uh%13J38;Vs6^@{WIH-Z5{a*lH*@42) z0vv{~|JSp(GW-WO9zhua6po+F~411sV^aN(+?6jTj*58xa?v#-h}JP<+TUKpG;jj*%ErLj;tz zdB7c4P`p4IA)wBy`u}?N1JFjk9Rs5&sG|?+$XYY7KpXsQ;0`UQVF@a+U}+yzVrejd z8u${XY7C$}AY-b;AdA+ig;Z7|4BFs^C8%Qyi#t#U3)CoKVW?-AYdY!%SUAA)9;owR z%fR&ChJpFNH3JKDkb?ccDY)YRYLtRH4WPja%nD42K?dA-L6mo@|3MuHLP$xoxK>=J#fd(;T z7?e$=8C0S9RozsaK@;2{1;st2W1(j%zyNBP8i6|&koboT46&Gw96Na#nEzWcaQru6 z-~kVG=)%iXP@_`@oR2{bPXz`AaHj$^&>_R1@?VNU6>DS3|yun3_PZS z4E&~i41%US48o>d3}U7n3=*cS43c2X!XRY|!pscPrXbA3AY;nNAPdL;8R{ATn+|>R z^%5)59y#dzjob^U_!kH*51|<3L33ja3=Hzn`5k%CTo;IM08t=s1EoEnG<2Rv9y$*t zp92-IfYL2c8k96a=FEZeS3qd+T#RkK0K>F;0fzha0t^Gs=3ua`=U|vt&oM~cgB&Kv jZewk*t!HhRR?pgSzkV>VnGV?2GaZ;#&vf8EsYMY0VDy4v