import pygame
from pygame.locals import *
import sys
+import datetime
import random
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
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:
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))
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()