From 227cdb87bb44aef37304b3164b55d5dfc43d2dc1 Mon Sep 17 00:00:00 2001 From: Peter Gerwinski Date: Fri, 30 Mar 2018 01:25:10 +0200 Subject: [PATCH] sand, sandcastles, and flags --- assets/flagLeft.png | Bin 0 -> 995 bytes assets/flagRight.png | Bin 0 -> 993 bytes .../{platformNormal.png => platformGrass.png} | Bin assets/platformSand.png | Bin 0 -> 1050 bytes assets/sandcastle.png | Bin 0 -> 968 bytes molpyup.py | 104 ++++++++++++------ 6 files changed, 71 insertions(+), 33 deletions(-) create mode 100644 assets/flagLeft.png create mode 100644 assets/flagRight.png rename assets/{platformNormal.png => platformGrass.png} (100%) create mode 100644 assets/platformSand.png create mode 100644 assets/sandcastle.png diff --git a/assets/flagLeft.png b/assets/flagLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..344f46e5134b1b144c8477d7870f6f9937d55729 GIT binary patch literal 995 zcmV<9104K`P)AB0008!X+uL$X=7sm z04R}TU|^o$=;GwcB*4H>P*hUn9^@Dq5gDbxex8Aiftdje5|fJy90LM;KxTd zhXgqT*)0qVOgts26(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f! zMTsS;DL}PQJ3xTfCBH<$Jux#+!N@?BM0XPepm2n+5aELmLxAMcqA~~ztVn=Cfx&>m zfgyk)k)fVp0mD&-H;m$pE{vs&D;V!Fi7^E+O<=mfEX*9qypZ_~izQ13%Pm$t)>hVg zY?f@(*uJrcv+w3m;^^Y|!kNfFNw(Qwf(Vw1#;#IHzHNXkhblggKtmOddeXk zJ*BtGYgGzVO;mrX9aQhq2-Q^5{GfF}dy-D7u9cpk-Yfkh1`7;pjbe;#P2^3PO<$T_ zFyCph#BzdFopr8FoNb_;tG%^@v7?TYnzNFNf~&lng1fSZx~Hy}iMNf9yKk^xf`5KM zec;5PrNO&GE{47gXNr)Ew2F#|u85f#yC?2J0$ZYPQdn|B%9_-h=^PmrnVDI0voGed z=h^316l^MdSFBxb7qP0ll{*!Ux>Us_&Wcs{JRSunm(C+e)V<1_wb(rzfS#W z{pa}qKL8B?4>W(M#f<;}00Lr5M??VshmXv^00009a7bBm006Nn006Nn0b!>s?*IS* z2XskIMF-*o9ThYb$(Ez40001jNkl?)o7dL8udE?8O_I6|S4Bx9iTw9(7xizWmx)$z*v!cH>E zSWA*2ETk5}+;4&!`xYl`5ed$CpeDG8ZnzUf2Un!Fbmo%}@NTmCjrt!Id;uo4BrwuE R8<_wA002ovPDHLkV1hDe)BOMd literal 0 HcmV?d00001 diff --git a/assets/flagRight.png b/assets/flagRight.png new file mode 100644 index 0000000000000000000000000000000000000000..b1755f698e396550aa4f33848d12a4396be9121c GIT binary patch literal 993 zcmV<710MW|P)AB0008!X+uL$X=7sm z04R}TU|^o$=;GwcB*4H>P*hUn9^@Dq5gDbxex8Aiftdje5|fJy90LM;KxTd zhXgqT*)0qVOgts26(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f! zMTsS;DL}PQJ3xTfCBH<$Jux#+!N@?BM0XPepm2n+5aELmLxAMcqA~~ztVn=Cfx&>m zfgyk)k)fVp0mD&-H;m$pE{vs&D;V!Fi7^E+O<=mfEX*9qypZ_~izQ13%Pm$t)>hVg zY?f@(*uJrcv+w3m;^^Y|!kNfFNw(Qwf(Vw1#;#IHzHNXkhblggKtmOddeXk zJ*BtGYgGzVO;mrX9aQhq2-Q^5{GfF}dy-D7u9cpk-Yfkh1`7;pjbe;#P2^3PO<$T_ zFyCph#BzdFopr8FoNb_;tG%^@v7?TYnzNFNf~&lng1fSZx~Hy}iMNf9yKk^xf`5KM zec;5PrNO&GE{47gXNr)Ew2F#|u85f#yC?2J0$ZYPQdn|B%9_-h=^PmrnVDI0voGed z=h^316l^MdSFBxb7qP0ll{*!Ux>Us_&Wcs{JRSunm(C+e)V<1_wb(rzfS#W z{pa}qKL8B?4>W(M#f<;}00Lr5M??VshmXv^00009a7bBm006Nn006Nn0b!>s?*IS* z2XskIMF-*o9Tg`qlzIl~0001hNkl_b6 z4Jb4k3au?jDBhzGxmR($FwNx8WMP*hUn9^@Dq5gDbxex8Aiftdje5|fJy90LM;KxTd zhXgqT*)0qVOgts26(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f! zMTsS;DL}PQJ3xTfCBH<$Jux#+!N@?BM0XPepm2n+5aELmLxAMcqA~~ztVn=Cfx&>m zfgyk)k)fVp0mD&-H;m$pE{vs&D;V!Fi7^E+O<=mfEX*9qypZ_~izQ13%Pm$t)>hVg zY?f@(*uJrcv+w3m;^^Y|!kNfFNw(Qwf(Vw1#;#IHzHNXkhblggKtmOddeXk zJ*BtGYgGzVO;mrX9aQhq2-Q^5{GfF}dy-D7u9cpk-Yfkh1`7;pjbe;#P2^3PO<$T_ zFyCph#BzdFopr8FoNb_;tG%^@v7?TYnzNFNf~&lng1fSZx~Hy}iMNf9yKk^xf`5KM zec;5PrNO&GE{47gXNr)Ew2F#|u85f#yC?2J0$ZYPQdn|B%9_-h=^PmrnVDI0voGed z=h^316l^MdSFBxb7qP0ll{*!Ux>Us_&Wcs{JRSunm(C+e)V<1_wb(rzfS#W z{pa}qKL8B?4>W(M#f<;}00Lr5M??VshmXv^00009a7bBm006Nn006Nn0b!>s?*IS* z2XskIMF-*o9TgEG?%(Fr0002FNklBH!E%OvfCC^p4_kwSQ85p>}@qFRm48e4n_!G5`I_&Gze!$Ui1*+Bv_g+!6TjLgIMuz_b8wE@Qod!l7FzSF&2Mo9a0CcfC U5?oL|aR2}S07*qoM6N<$f^^XQB>(^b literal 0 HcmV?d00001 diff --git a/assets/sandcastle.png b/assets/sandcastle.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f075f6d8a2838a40bbf55fa2f6334ffcfaf667 GIT binary patch literal 968 zcmV;(12_DMP)P*hUn9^@Dq5gDbxex8Aiftdje5|fJy90LM;KxTd zhXgqT*)0qVOgts26(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f! zMTsS;DL}PQJ3xTfCBH<$Jux#+!N@?BM0XPepm2n+5aELmLxAMcqA~~ztVn=Cfx&>m zfgyk)k)fVp0mD&-H;m$pE{vs&D;V!Fi7^E+O<=mfEX*9qypZ_~izQ13%Pm$t)>hVg zY?f@(*uJrcv+w3m;^^Y|!kNfFNw(Qwf(Vw1#;#IHzHNXkhblggKtmOddeXk zJ*BtGYgGzVO;mrX9aQhq2-Q^5{GfF}dy-D7u9cpk-Yfkh1`7;pjbe;#P2^3PO<$T_ zFyCph#BzdFopr8FoNb_;tG%^@v7?TYnzNFNf~&lng1fSZx~Hy}iMNf9yKk^xf`5KM zec;5PrNO&GE{47gXNr)Ew2F#|u85f#yC?2J0$ZYPQdn|B%9_-h=^PmrnVDI0voGed z=h^316l^MdSFBxb7qP0ll{*!Ux>Us_&Wcs{JRSunm(C+e)V<1_wb(rzfS#W z{pa}qKL8B?4>W(M#f<;}00Lr5M??VshmXv^00009a7bBm006Nn006Nn0b!>s?*IS* z2XskIMF-*o9Tg@q`ep|{0001INkloB4TtFQqRN+4#e z#>m(*93!;?GXivg2K;X~eDiiW`gl9Jd+J@yZaNPy17}OnOSTnd%Bm3VIGBUkJ*_c- q5|+QCUz;30{z@h(Hc^6g2{tP`Ry4`GaUtLU0000 self.sx + self.extrax: + if p[0] + self.imgPlatformFloating.get_width() > self.sx + self.extrax: p[-1] = 0 else: p[0] -= self.extrax // 10 if p[0] <= 0: p[-1] = 1 + def choosePlatformType(self): + platformType = random.randint(0, 1000) + if platformType < 800: + if platformType < self.score: + return self.platformTypeGrass + else: + return self.platformTypeSand + elif platformType < 900: + return self.platformTypeFloating + else: + return self.platformTypeBreaking + def drawPlatforms(self): for p in self.platforms: check = self.platforms[1][1] - self.cameray if check > self.sy: - platformType = random.randint(0, 1000) - if platformType < 800: - platformType = 0 - elif platformType < 900: - platformType = 1 - else: - platformType = 2 + platformType = self.choosePlatformType() self.platforms.append([random.randint(0, self.sx * 7 // 8), self.platforms[-1][1] - self.sy // 12, platformType, False]) check = random.randint(0, 1000) - if check > 900 and platformType == 0: + if check > 900 and platformType <= self.platformTypeGrass: x = self.platforms[-1][0] y = self.platforms[-1][1] itemType = random.randint(0,1000) - if itemType < 900: + if itemType < 100: + itemType = self.itemTypeBeanie + self.items.append([x + self.imgPlatformSand.get_width() * 3 // 4, y + 6, itemType, False]) + elif itemType < 300 and platformType == self.platformTypeSand: + itemType = self.itemTypeSandcastle + self.items.append([x + self.imgPlatformSand.get_width() // 4, y + 6, itemType, False]) + elif itemType < 800 and platformType == self.platformTypeSand: + itemType = self.itemTypeFlag + self.items.append([x + self.imgPlatformSand.get_width() // 2, y + 6, itemType, False]) + else: itemType = self.itemTypeAccelerator self.items.append([x, y + 10, itemType, False]) - else: - itemType = self.itemTypeBeanie - self.items.append([x + self.imgPlatformNormal.get_width() * 3 // 4, y + 6, itemType, False]) self.platforms.pop(0) self.score += 1 - if p[2] == self.platformTypeNormal: - self.screen.blit(self.imgPlatformNormal, (p[0], p[1] - self.cameray)) + if p[2] == self.platformTypeSand: + self.screen.blit(self.imgPlatformSand, (p[0], p[1] - self.cameray)) + elif p[2] == self.platformTypeGrass: + self.screen.blit(self.imgPlatformGrass, (p[0], p[1] - self.cameray)) elif p[2] == self.platformTypeFloating: self.screen.blit(self.imgPlatformFloating, (p[0], p[1] - self.cameray)) elif p[2] == self.platformTypeBreaking: @@ -199,6 +226,15 @@ class MolpyUp: imgItem = self.imgBeanie else: imgItem = None + elif item[2] == self.itemTypeSandcastle: + imgItem = self.imgSandcastle + if item[-1]: + self.screen.blit(self.imgFlagRight, (item[0] + 4, item[1] - imgItem.get_height() + 2 - self.imgFlagRight.get_height() - self.cameray)) + elif item[2] == self.itemTypeFlag: + if not item[-1]: + imgItem = self.imgFlagRight + else: + imgItem = None if imgItem: self.screen.blit(imgItem, (item[0], item[1] - imgItem.get_height() - self.cameray)) if not item[-1]: @@ -207,22 +243,22 @@ class MolpyUp: self.jump = self.sy // 12 self.cameray -= self.sy // 12 item[-1] = True - elif item[2] == self.itemTypeBeanie: + elif item[2] == self.itemTypeBeanie and not self.playerWearsBeanie: self.playerWearsBeanie = True item[-1] = True + elif item[2] == self.itemTypeSandcastle and self.playerCarriesFlag: + self.playerCarriesFlag = False + item[-1] = True + self.sandcastles += 1 + elif item[2] == self.itemTypeFlag and not self.playerCarriesFlag: + self.playerCarriesFlag = True + item[-1] = True def generatePlatforms(self): on = self.sy while on > -self.sy // 6: x = random.randint(0,self.sx * 8 // 7) - platformType = random.randint(0, 1000) - if platformType < 800: - platformType = self.platformTypeNormal - elif platformType < 900: - platformType = self.platformTypeFloating - else: - platformType = self.platformTypeBreaking - self.platforms.append([x, on, platformType, 0]) + self.platforms.append([x, on, self.choosePlatformType(), 0]) on -= self.sy // 12 def drawGrid(self): @@ -256,7 +292,7 @@ class MolpyUp: self.reset() while True: self.screen.fill((255,255,255)) - clock.tick(60) + clock.tick(40) for event in pygame.event.get(): if event.type == QUIT: sys.exit() @@ -265,6 +301,8 @@ class MolpyUp: self.updatePlayer() self.updatePlatforms() self.screen.blit(self.font.render(str(self.score), -1, (0, 0, 0)), (self.sx // 32, self.sy // 24)) + for i in range(0, self.sandcastles): + self.screen.blit(self.imgFlagRight, (self.sx // 32 + 10 * i, self.sy // 8)) if self.playery - self.cameray > self.sy * 7 // 6: self.showScore() self.reset() -- 2.30.2