From c2406fc0e6b4846f208ce121ea03868b89fecdb4 Mon Sep 17 00:00:00 2001 From: b Date: Sat, 28 Mar 2026 14:06:24 +0100 Subject: [PATCH] debug mode --- molpyup.py | 141 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 89 insertions(+), 52 deletions(-) diff --git a/molpyup.py b/molpyup.py index 13bf874..6b49120 100644 --- a/molpyup.py +++ b/molpyup.py @@ -88,7 +88,55 @@ class MolpyUp: scoreEpilogue = 3094 def __init__(self): - self.molpyDown = False + parser = argparse.ArgumentParser() + parser.add_argument( + '-m', '--molpy-down', action='store_true', + help='Molpy Down!' + ) + parser.add_argument( + '-e', '--eternal', action='store_true', + help='"eternal" mode. No more falling down. ;-)' + ) + parser.add_argument( + '-g', '--flag-eternal', action='store_true', + help='flag-eternal mode. Lose a flag instead of falling down.' + ) + parser.add_argument( + '-i', '--ai', action='store_true', + help='enable artificial intelligence playing for you.' + ) + parser.add_argument( + '-d', '--ai-debug', action='store_true', + help='enable AI debug mode.' + ) + parser.add_argument( + '-t', '--debug', action='store_true', + help='debug mode.' + ) + parser.add_argument( + '-a', '--no-arrow', action='store_true', + help='switch off the arrow shown when the molpy is out of sight at the top of the screen' + ) + parser.add_argument( + '-s', '--speed', type=int, default=30, + help='game speed' + ) + parser.add_argument( + 'file', nargs='?', + help='save file' + ) + + self.args = parser.parse_args() + + self.filename = self.args.file + self.molpyDown = self.args.molpy_down + self.eternalFlag = self.args.flag_eternal + self.eternal = self.args.eternal and (not self.eternalFlag) + self.debag = self.args.debug + self.ai = self.args.ai + self.aiDebag = self.args.ai_debug and (not self.debag) + self.showArrow = not self.args.no_arrow + self.relativeX=0 self.sx = 553 self.sy = 395 @@ -96,12 +144,9 @@ class MolpyUp: self.screen = pygame.display.set_mode((self.sx, self.sy)) pygame.font.init() self.font = pygame.font.SysFont("xkcd,sans", 25) + self.font2 = pygame.font.SysFont("xkcd,sans", 12) self.clock = pygame.time.Clock() self.xmovementmax = 10 - self.eternal = False - self.eternalFlag = False - self.ai = False - self.aiDebag = False self.imgPlatformSand = [ pygame.image.load("assets/platformSand1.png").convert_alpha(), pygame.image.load("assets/platformSand2.png").convert_alpha(), pygame.image.load("assets/platformSand3.png").convert_alpha(), @@ -215,7 +260,6 @@ class MolpyUp: self.dropLimit = 25 if self.dropLimit >= self.platformHeight[self.platformTypeSand] + self.playerHeight: self.dropLimit = self.platformHeight[self.platformTypeSand] + self.playerHeight - 1 - self.showArrow = True def reset(self): self.cameray = 0 @@ -547,6 +591,10 @@ class MolpyUp: self.screen.blit(self.imgPlayerLeftUp, (x, drawY)) if self.playerCarriesFlag: self.screen.blit(self.imgFlagRightDown, (x + 11, drawY - 10)) + if self.debag: + self.screen.blit(self.font2.render( + str([self.playerx, self.playery, self.xmovement, self.jump, self.gravity]),-1, (0x00, 0x57, 0xaf) + ), (self.playerx, self.playery - self.cameray - 16)) def choosePlatformType(self): platformType = random.randint(0, 999) @@ -791,7 +839,9 @@ 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 + p[8])) - if self.aiDebag and self.aiNextPlatformOk: + elif self.debag: + self.screen.blit(self.font2.render(str(p), -1, (0xaa, 0x22, 0xbb)), (p[0], p[1] - self.cameray + p[8])) + if (self.aiDebag or self.debag) 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): @@ -870,6 +920,8 @@ class MolpyUp: elif item[2] == self.itemTypeFlag and not self.playerCarriesFlag: self.playerCarriesFlag = True item[-1] = True + if self.debag: + self.screen.blit(self.font2.render(str(item), -1, (0xbb, 0x66, 0x22)), (item[0], item[1] - self.cameray - 32)) def generateInitialPlatforms(self): if self.molpyDown: @@ -934,51 +986,6 @@ class MolpyUp: self.waitForIt([K_RETURN]) def run(self): - parser = argparse.ArgumentParser() - parser.add_argument( - '-m', '--molpy-down', action='store_true', - help='Molpy Down!' - ) - parser.add_argument( - '-e', '--eternal', action='store_true', - help='"eternal" mode. No more falling down. ;-)' - ) - parser.add_argument( - '-g', '--flag-eternal', action='store_true', - help='flag-eternal mode. Lose a flag instead of falling down.' - ) - parser.add_argument( - '-i', '--ai', action='store_true', - help='enable artificial intelligence playing for you.' - ) - parser.add_argument( - '-d', '--ai-debug', action='store_true', - help='enable AI debug mode.' - ) - parser.add_argument( - '-a', '--no-arrow', action='store_true', - help='switch off the arrow shown when the molpy is out of sight at the top of the screen' - ) - parser.add_argument( - '-s', '--speed', type=int, default=30, - help='game speed' - ) - parser.add_argument( - 'file', nargs='?', - help='save file' - ) - - self.args = parser.parse_args() - # print(self.args) - - self.filename = self.args.file - self.molpyDown = self.args.molpy_down - self.eternalFlag = self.args.flag_eternal - self.eternal = self.args.eternal and (not self.eternalFlag) - self.ai = self.args.ai - self.aiDebag = self.args.ai_debug - self.showArrow = not self.args.no_arrow - self.reset() while True: self.screen.fill((255,255,255)) @@ -998,7 +1005,15 @@ class MolpyUp: elif key[K_d]: if pygame.key.get_mods() & KMOD_CTRL: self.aiDebag = not self.aiDebag + if self.aiDebag: + self.debag = False self.modeText = "AI debug " + ('enabled' if self.aiDebag else 'disabled') + elif key[K_t]: + if pygame.key.get_mods() & KMOD_CTRL: + self.debag = not self.debag + if self.debag: + self.aiDebag = False + self.modeText = "debug " + ('enabled' if self.debag else 'disabled') elif key[K_e]: if pygame.key.get_mods() & KMOD_CTRL: self.eternal = not self.eternal @@ -1038,6 +1053,28 @@ class MolpyUp: self.showArrow = not self.showArrow self.modeText = "Arrow " + ('enabled' if self.showArrow else 'disabled') self.drawGrid() + + if self.debag: + for i, line in enumerate([ + 'speed: ' + str(self.speed), + 'ai: ' + str(self.ai), + 'eternal: ' + str(self.eternal), + 'eternalFlag: ' + str(self.eternalFlag), + 'showArrow: ' + str(self.showArrow), + 'cameray: ' + str(self.cameray), + 'hadSnake: ' + str(self.hadSnake), + 'hadPrickly: ' + str(self.hadPrickly), + 'hadAfterLucky: ' + str(self.hadAfterLucky), + 'hadCastle: ' + str(self.hadCastle), + 'hadLucky: ' + str(self.hadLucky), + 'hadTheEnd: ' + str(self.hadTheEnd), + 'raftcastleHasFlag: ' + str(self.raftcastleHasFlag) + ]): + self.screen.blit( + self.font2.render(line, -1, (0x08, 0xb0, 0x00)), + (self.sx // 32, self.sy // 6 + i * 16) + ) + self.drawPlatforms() self.drawAndUpdateItems() self.updatePlayer() -- 2.30.2