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
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(),
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
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)
)
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):
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:
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))
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
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()