]> bicyclesonthemoon.info Git - ott/molpy-up/commitdiff
debug mode
authorb <rowerynaksiezycu@gmail.com>
Sat, 28 Mar 2026 13:06:24 +0000 (14:06 +0100)
committerb <rowerynaksiezycu@gmail.com>
Sat, 28 Mar 2026 13:06:24 +0000 (14:06 +0100)
molpyup.py

index 13bf8740492b5c9532e2d160a75b437e20bae395..6b49120e80483df0cec75461c9e6d47ecc830c18 100644 (file)
@@ -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()