From 2e6f2677d04ccccfd91a66bb891ec9fe9637e7dc Mon Sep 17 00:00:00 2001 From: b Date: Sat, 28 Mar 2026 09:16:22 +0100 Subject: [PATCH] bottom platform; platform add / remove conditions --- assets/platformFrame1.png | Bin 1884 -> 1868 bytes molpyup.py | 47 +++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/assets/platformFrame1.png b/assets/platformFrame1.png index 591ff890515eec01b55c8eb0204826117372fdea..56fd419b93a1f2dcdce5c5996480207879c60c62 100644 GIT binary patch delta 1576 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 self.playerLowestY: + self.playerLowestY = self.playery if self.gravity < self.dropLimit: self.gravity += 1 else: @@ -484,11 +487,12 @@ class MolpyUp: self.aiNextPlatformOk = False if self.molpyDown: - if self.playery - self.cameray >= self.sy // 3: - if self.jump: - self.cameray += self.sy // 120 - else: - self.cameray += self.sy // 180 + if self.playerLowestY - self.cameray >= self.sy // 2: + self.cameray += self.sy // 60 + if self.hadTheEnd: + bottom = self.platforms[0][1] + self.platforms[0][8] - self.sy + if self.cameray > bottom: + self.cameray = bottom else: if self.playery - self.cameray <= self.sy // 3: self.cameray -= self.sy // 60 @@ -603,8 +607,9 @@ class MolpyUp: if platformType == self.platformTypeFrame1: if self.hadTheEnd: return + self.hadTheEnd = True x = 0 - y = self.sy * 2 // 3 + y = self.sy // 3 elif platformType == self.platformTypeTheEnd: if self.hadTheEnd: return @@ -681,22 +686,24 @@ class MolpyUp: if len(self.platforms) < 1: return if self.molpyDown: - if self.platforms[0][1] - self.cameray < self.sy * 7 // 6: + if (self.platforms[0][1] - self.cameray < self.sy * 7 // 6) and not self.hadTheEnd: self.generateNewPlatform() if self.score > 1: self.score -= 1 continue - if self.platforms[-1][1] - self.cameray < - self.platformHeight[self.platformTypeSand] - self.sy // 6: + if self.platforms[-1][1] - self.cameray < - self.platforms[-1][8] - self.sy // 6: self.platforms.pop() continue - break else: - if self.platforms[0][1] - self.cameray <= self.sy + self.sy // 12: - break - self.generateNewPlatform() - self.platforms.pop(0) - if self.score < self.scoreEpilogue: - self.score += 1 + if (self.platforms[-1][1] - self.cameray > - self.platforms[-1][8] - self.sy // 6) and not self.hadTheEnd: + self.generateNewPlatform() + if self.score < self.scoreEpilogue: + self.score += 1 + continue + if self.platforms[0][1] - self.cameray > self.sy + self.sy // 12: + self.platforms.pop(0) + continue + break colX = self.playerx % self.sx player = pygame.Rect(colX + 15, self.playery, self.playerWidth - 30, self.playerHeight) if colX > self.sx - self.playerWidth: @@ -704,11 +711,15 @@ class MolpyUp: else: player2 = False for p in self.platforms: - rect = pygame.Rect(p[0], p[1], p[7], p[8]) + rect = ( + pygame.Rect(p[0], p[1] + p[8] // 2, p[7], p[8] // 2) if p[2] == self.platformTypeFrame1 else + pygame.Rect(p[0], p[1], p[7], p[8]) + ) collision = rect.colliderect(player) if player2 != False: collision = rect.colliderect(player2) or collision if collision and self.gravity: + self.playerLowestY = self.playery if p[2] == self.platformTypeBreaking: p[4] = True else: @@ -772,8 +783,8 @@ class MolpyUp: ) if self.aiDebag: self.screen.blit(self.font.render(str(p[2])+" "+str(p[5])+" "+str(p[6]), -1, (0, 0x57, 0xaf) if self.ai else (0xbb, 0x66, 0x22)), (p[0], p[1] - self.cameray + 16)) - if self.aiDebag: - self.screen.blit(self.imgMolpArrow, (self.aiNextPlatform[0] + (p[7]-self.playerWidth)//2, self.aiNextPlatform[1] - self.cameray + self.aiNextPlatform[8])) + if self.aiDebag and self.aiNextPlatformOk: + self.screen.blit(self.imgMolpArrow, (self.aiNextPlatform[0] + (self.aiNextPlatform[7]-self.playerWidth)//2, self.aiNextPlatform[1] - self.cameray + self.aiNextPlatform[8])) def drawAndUpdateItems(self): if self.molpyDown: -- 2.30.2