def save(self, name): k = "./save/" + name + ".eks" with open(res_path(k), "w") as f: j = json.loads('{}') j['scene'] = gk.scene j['paras'] = gk.paras j['time'] = time.time() f.write(json.dumps(j))
def load(self, name): if name == "0": gk.scene = "1-1" gk.paras = gk.default_para() else: k = "./save/" + name + ".eks" with open(res_path(k), "r") as f: j = json.loads(f.read()) gk.scene = j['scene'] gk.paras = j['paras'] self.refresh()
def pick(self, i): self.picked = i self.dia.close() if self.loading: try: fn = res_path("save/" + str(i) + ".eks") open(fn, "r") self.loading = False # print("读档"+str(i)) self.startGame(str(i)) except FileNotFoundError: m = qt.QMessageBox(self.main) m.critical(self.main, "警告!", "不可读取空存档!") elif self.saving: self.kernel.save(str(i))
def loadScene(self): if gk.scene == GAME_OVER: return GAME_OVER, [] else: try: fn = os.path.join("story", gk.scene + ".txt") with open(res_path(fn), "r", encoding="utf8") as f: scenetext = f.read() scenetext = " " + scenetext scenetext = scenetext.replace("\n", "\n ") choice = self.getChoice() # open_info_entry(gk.scene) return scenetext, choice except FileNotFoundError: scenetext = "抱歉,这儿还没写呢。请先存档。" return scenetext, [choice_end()]
def loadGame(self): havesave = False for i in range(1, 31): try: fn = res_path("save/" + str(i) + ".eks") open(fn, "r") havesave = True break except FileNotFoundError: pass if havesave: self.saving = False self.loading = True self.pickSave() else: m = qt.QMessageBox(self.main) m.critical(self.main, "警告!", "当前无可用存档!")
def setMenu(self): self.main.setWindowIcon(gui.QIcon(res_path("icon.ico"))) self.main.setWindowTitle("翡翠骑士 v" + VERSION) menu = self.main.menuBar() new = menu.addAction("新的游戏") new.triggered.connect(self.newGame) save = menu.addAction("保存进度") save.triggered.connect(self.saveGame) load = menu.addAction("读取存档") load.triggered.connect(self.loadGame) exit = menu.addAction("退出游戏") exit.triggered.connect(self.exitGame) # exit = menu.addAction("刷新存档") # exit.triggered.connect(self.refresh) if DEBUG: exit = menu.addAction("打印变量") exit.triggered.connect(self.debug) exit = menu.addAction("关于") exit.triggered.connect(self.about)
def showSave(self): saves = qt.QDialog() saves.setWindowTitle("当前存档") self.dia = saves saves_layout = qt.QHBoxLayout() v_layout = qt.QVBoxLayout() for l in range(0, 3): for i in range(1, 11): k = i + l * 10 btn = qt.QPushButton() fn = "save/" + str(k) + ".eks" fn = res_path(fn) try: with open(fn, "r") as f: j = json.loads(f.read()) sc = j['scene'] s = "存档" + str(k) + "\t" try: t = time.localtime(j['time']) except KeyError: j['time'] = os.path.getmtime(fn) t = time.localtime(j['time']) s += time.strftime("%m.%d\t%H:%M", t) s += "\n" if DEBUG: s += sc + "\t" s += self.kernel.getChapter(sc) btn.setText(s) btn.clicked.connect(partial(self.pick, k)) except FileNotFoundError: s = "空存档" btn.setText(s) btn.clicked.connect(partial(self.pick, k)) btn.setMinimumSize(140, 36) v_layout.addWidget(btn) saves_layout.addLayout(v_layout) v_layout = qt.QVBoxLayout() saves.setLayout(saves_layout) saves.show() saves.exec_()