From: Peter Gerwinski Date: Mon, 2 Apr 2018 18:43:05 +0000 (+0200) Subject: spoilered cheating features a litte, implemented saving and restoring the game X-Git-Url: http://bicyclesonthemoon.info/git-projects/?a=commitdiff_plain;h=3c54d7c67f97de84484083b2a013ed2f491dd3d1;p=ott%2Fmolpy-up spoilered cheating features a litte, implemented saving and restoring the game --- diff --git a/molpyup.py b/molpyup.py index c0091a9..7782737 100644 --- a/molpyup.py +++ b/molpyup.py @@ -36,6 +36,7 @@ import pygame from pygame.locals import * import sys +import datetime import random class MolpyUp: @@ -151,7 +152,6 @@ class MolpyUp: self.score = 0 self.sandcastles = 0 self.speed = 30 - self.items = [] self.playerx = self.sx // 2 self.playery = self.sy * 3 // 4 self.direction = 0 @@ -169,6 +169,72 @@ class MolpyUp: self.raftcastleHasFlag = False self.platforms = [[self.playerx, self.playery + self.sy // 6, self.platformTypeSand, 0, 0]] self.generateInitialPlatforms() + self.items = [] + if self.filename: + self.restoreGame (self.filename) + + def saveGame(self): + self.filename = datetime.datetime.now().strftime("%Y%m%d-%H%M%S.molpyup") + with open(self.filename, "w") as file: + file.write("MolpyUp!\n") + file.write("cameray: " + str(self.cameray) + "\n") + file.write("score: " + str(self.score) + "\n") + file.write("sandcastles: " + str(self.sandcastles) + "\n") + file.write("speed: " + str(self.speed) + "\n") + file.write("playerx: " + str(self.playerx) + "\n") + file.write("playery: " + str(self.playery) + "\n") + file.write("direction: " + str(self.direction) + "\n") + file.write("jump: " + str(self.jump) + "\n") + file.write("gravity: " + str(self.gravity) + "\n") + file.write("xmovement: " + str(self.xmovement) + "\n") + file.write("playerWearsBeanie: " + str(self.playerWearsBeanie) + "\n") + file.write("playerCarriesFlag: " + str(self.playerCarriesFlag) + "\n") + file.write("hadSnake: " + str(self.hadSnake) + "\n") + file.write("hadPrickly: " + str(self.hadPrickly) + "\n") + file.write("hadAfterLucky: " + str(self.hadAfterLucky) + "\n") + file.write("hadCastle: " + str(self.hadCastle) + "\n") + file.write("hadLucky: " + str(self.hadLucky) + "\n") + file.write("hadTheEnd: " + str(self.hadTheEnd) + "\n") + file.write("raftcastleHasFlag: " + str(self.raftcastleHasFlag) + "\n") + file.write("eternal: " + str(self.eternal) + "\n") + file.write("platforms: " + str(self.platforms) + "\n") + file.write("items: " + str(self.items) + "\n") + + def readVariable(self, line, name, var): + if line.startswith(name + ": "): + return eval (line[len(name) + 2:]) + else: + return var + + def restoreGame(self, filename): + try: + with open(filename, "r") as file: + lines = file.readlines() + for line in lines: + self.cameray = self.readVariable(line, "cameray", self.cameray) + self.score = self.readVariable(line, "score", self.score) + self.sandcastles = self.readVariable(line, "sandcastles", self.sandcastles) + self.speed = self.readVariable(line, "speed", self.speed) + self.playerx = self.readVariable(line, "playerx", self.playerx) + self.playery = self.readVariable(line, "playery", self.playery) + self.direction = self.readVariable(line, "direction", self.direction) + self.jump = self.readVariable(line, "jump", self.jump) + self.gravity = self.readVariable(line, "gravity", self.gravity) + self.xmovement = self.readVariable(line, "xmovement", self.xmovement) + self.playerWearsBeanie = self.readVariable(line, "playerWearsBeanie", self.playerWearsBeanie) + self.playerCarriesFlag = self.readVariable(line, "playerCarriesFlag", self.playerCarriesFlag) + self.hadSnake = self.readVariable(line, "hadSnake", self.hadSnake) + self.hadPrickly = self.readVariable(line, "hadPrickly", self.hadPrickly) + self.hadAfterLucky = self.readVariable(line, "hadAfterLucky", self.hadAfterLucky) + self.hadCastle = self.readVariable(line, "hadCastle", self.hadCastle) + self.hadLucky = self.readVariable(line, "hadLucky", self.hadLucky) + self.hadTheEnd = self.readVariable(line, "hadTheEnd", self.hadTheEnd) + self.raftcastleHasFlag = self.readVariable(line, "raftcastleHasFlag", self.raftcastleHasFlag) + self.platforms = self.readVariable(line, "platforms", self.platforms) + self.items = self.readVariable(line, "items", self.items) + return True + except FileNotFoundError: + return False def updatePlayer(self): if not self.jump: @@ -527,6 +593,8 @@ class MolpyUp: self.waitForIt([K_RETURN]) def run(self): + if len(sys.argv) > 1: + self.filename = sys.argv[1] self.reset() while True: self.screen.fill((255,255,255)) @@ -539,13 +607,19 @@ class MolpyUp: if key[K_ESCAPE]: sys.exit() elif key[K_e]: - self.eternal = not self.eternal + if pygame.key.get_mods() and KMOD_CTRL: + self.eternal = not self.eternal elif key[K_f]: - self.playerCarriesFlag = not self.playerCarriesFlag + if pygame.key.get_mods() and KMOD_CTRL: + self.playerCarriesFlag = not self.playerCarriesFlag elif key[K_b]: - self.playerWearsBeanie = not self.playerWearsBeanie + if pygame.key.get_mods() and KMOD_CTRL: + self.playerWearsBeanie = not self.playerWearsBeanie elif key[K_SPACE]: - self.waitForIt([K_SPACE]) + while self.waitForIt([K_SPACE, K_s]) == K_s: + self.saveGame() + elif key[K_s]: + self.saveGame() self.drawGrid() self.drawPlatforms() self.drawAndUpdateItems()