Exemplo n.º 1
0
 def run(self):
     parser = MovieIdParser(self.moviecount)
     parser.run_parser()
     fetcher = MovieDataFetcher(parser.idcontainer)
     fetcher.run()
     sortedmovies = Sorter.sort_by_year(fetcher.fullmoviesdata)
     #Save.save_to_csv(sortedmovies, self.file)
     Save.save_to_db(sortedmovies)
Exemplo n.º 2
0
 def __init__(self, mp=Map()):
     self.map = mp
     self.current_location = Level()
     self.msave = {}
     if mp != None:
         self.msave = mp.info
         self.ms = Save(str(mp.get("name")) + ".json")
     else:
         self.ms = Save("")
Exemplo n.º 3
0
    def __init__(self, P_Builder):
        self.Builder = P_Builder
        self.Load = Load()
        self.File = File()
        self.Save = Save(self.File)
        self.Kanban = Kanban()
        self.Graphical_Kanban = None

        self.action_flag = None
        self.Temp_Widget_Reference = None
Exemplo n.º 4
0
    def results(self, end_results):
        self.DEndResults = end_results
        if self.listVar.get() == 1:
            iteration = 0
            for key, element in end_results.items():
                self.resultList.insert(iteration, key)
                iteration += 1

        if self.saveVar.get() == 1:
            saving = Save(self.SInstrument, self.DEndResults,
                          self.SPathForSaving)
            saving.start()
Exemplo n.º 5
0
    def load(self, slot, startlevel=False):
        self.slot = slot
        s = Save()
        data = s.load(slot)
        if data is None:
            self.levelidx = 0
        else:
            self.levelidx = data.levelidx

        if startlevel:
            self.startlevel(self.levelidx, True)
        return data
Exemplo n.º 6
0
    def __init__(self, m):
        """
        :param m: Menu
        """
        self.levelName = "levelTwo"
        self.gameState = ''
        m.game = self
        self.menu = m
        self.setLight()
        self.loadScene()
        if self.menu.tempPlayer is None:
            self.initCollision()
            self.initPlayer()
        else:
            print 'temp not none'
            self.node = self.menu.tempPlayer
            self.node.node.setPos(-250, 265, 20)
            self.node.game = self
            self.node.initMission()
            self.node.mission.memoryNum = self.menu.tempPlayer.mission.memoryNum
            self.enemy = Enemylevel2(self.node)
        # self.node.node.setPos(-800, 0, 20)
        # self.node.node.setPos(-370, 2800, 25)
        self.node.node.setPos(-700, 0, 25)
        self.node.node.setHpr(-90, 0, 0)
        base.accept("escape", self.pauseGame)
        base.disableMouse()
        props = WindowProperties()
        props.setCursorHidden(True)
        base.win.requestProperties(props)

        self.mutableMap = {}
        self.glowFilter()
        self.initMania()
        self.finalcard.reparentTo(hidden)
        self.initBag()
        # self.menu.loadState = True
        self.menu.passFrame.show()
        self.node.erosionFrame.show()
        self.node.currentItemFrame.show()
        if not self.menu.skipUseless:
            self.menu.loadState = True
            taskMgr.add(self.waitOne, "waitOne")
        else:
            self.save = Save(self)
            if self.menu.selectedSave == 2:
                self.save.loadFile('gameinfo_2.save')
            elif self.menu.selectedSave == 3:
                self.save.loadFile('gameinfo_3.save')
            self.node.changeCamera()
            self.menu.loadState = True
            self.menu.passFrame.hide()
        self.setupskillpattern()
Exemplo n.º 7
0
class GameFSM(FSM):
    def enterStartMenu(self):
        self.menu = StartMenu()

    def exitStartMenu(self):
        self.menu.destroy()
        del self.menu

    def enterTrain(self):
        self.train = TrainingMode()

    def exitTrain(self):
        self.train.destroy()
        del self.train

    def enterBattle(self):
        self.battle = BattleMode()

    def exitBattle(self):
        if self.battle.popupText:
            self.battle.popupText.detachNode()
            self.battle.popupText = None
        self.battle.destroy()
        del self.battle

    def enterControls(self):
        self.controls = Controls()

    def exitControls(self):
        self.controls.destroy()
        del self.controls

    def enterSave(self):
        self.save = Save()

    def exitSave(self):
        self.save.destroy()
        del self.save

    def enterLoad(self):
        self.load = Load()

    def exitLoad(self):
        self.load.destroy()
        del self.load

    def enterStats(self):
        self.stats = Stats()

    def exitStats(self):
        self.stats.destroy()
        del self.stats
Exemplo n.º 8
0
class Online:
    def __init__(self, n, m, depth, save_permission, user_id, team_id,
                 game_id):
        self.N = n
        self.M = m
        self.DEPTH = depth
        self.SAVE_PERMISSION = save_permission
        self.SLEEP_TIME = 5

        self.G = Game(n, m)
        self.T = Tree(n, m, depth)
        self.API = Api(user_id, team_id)
        self.API.set_game_id(game_id)

        # load cache
        self.S = Save(n, m, self.SAVE_PERMISSION)
        out = self.S.load()
        if out:
            print('loaded')
            self.T.EF.Hash = out

    def start_game(self):
        # first move: O
        side = int(input('choose side\n0: O, 1: X'))
        player = 1 if side == 1 else -1

        print('Start\n', self.G)

        while True:
            while True:
                players_turn = self.G.input_board_list(self.API.get_board())
                if players_turn == player:
                    break
                else:
                    print('Waiting for Player',
                          'X' if players_turn == 1 else 'O')
                    time.sleep(self.SLEEP_TIME)
            print(self.G)

            t = time.time()
            y, x = self.T.search(self.G.get_state() * player)
            print('Time:', time.time() - t)

            self.API.make_move(y, x)
            if self.G.input(y, x, player):
                break

        # save cache
        self.S.save(self.T.EF.Hash)

        print('End')
Exemplo n.º 9
0
    def __init__(self, n, m, depth, save_permission):
        self.N = n
        self.M = m
        self.DEPTH = depth
        self.SAVE_PERMISSION = save_permission

        self.G = Game(n, m)
        self.T = Tree(n, m, depth)

        # load cache
        self.S = Save(n, m, self.SAVE_PERMISSION)
        out = self.S.load()
        if out:
            print('loaded')
            self.T.EF.Hash = out
Exemplo n.º 10
0
    def do_export(self, args):
        filename = None
        if args.output:
            if os.path.isdir(args.output):
                filename = os.path.join(args.output, args.id + ".pak")
            else:
                filename = args.output
        else:
            filename = args.id + ".pak"

        data = None
        json_filename = None
        if not args.save_type:
            args.save_type = self.filesystem.get_json_filename_type(args.id)
        if not args.save_type:
            return 1, "Unable to determine type of id %s" % args.id

        json_filename = self.filesystem.get_json_filename_for_type(
            args.id, args.save_type)

        if not json_filename:
            return 1, "Unable to find filename for id %s (wrong -s/-w/-c specified?)" % args.id
        data = load_json_file(json_filename)
        if not data:
            return 1, "Unable to load data for file %s" % json_filename

        save = Save(savedata=data,
                    filename=json_filename,
                    ident=args.id,
                    save_type=args.save_type,
                    filesystem=self.filesystem)
        if not save.isInstalled:
            if not args.download:
                return 1, "Unable to find all urls required by %s. Rerun with -d to try and download them or open it within TTS.\n%s" % (
                    args.id, save)
            else:
                logger().info("Downloading missing files...")
                successful = save.download()
                if successful:
                    logger().info("Files downloaded successfully.")
                else:
                    return 1, "Some files failed to download"
        if os.path.isfile(filename) and not args.force:
            return 1, "%s already exists. Please specify another file or use '-f'" % filename
        logger().info("Exporting json file %s to %s" % (args.id, filename))
        save.export(filename)
        # TODO: exception handling
        return 0, "Exported %s to %s" % (args.id, filename)
Exemplo n.º 11
0
 def __init__(self, parent, controller, gui):
     tk.Frame.__init__(self, parent)
     color_bg = "#a2ddf5"
     color_active = "#7acef0"
     self.parent = parent
     self.controller = controller
     self.gui = gui
     Photo(self, "sprites/battleship_logo.png", 0.3, 0.07, 0.4, 0.2)
     button1 = tk.Button(self,
                         text="New Game",
                         font=40,
                         command=self.new_game,
                         bg=color_bg,
                         activebackground=color_active)
     button1.place(relx=0.4, rely=0.33, relheight=0.15, relwidth=0.2)
     game = Save(game=self.gui.game).load()
     self.button2 = tk.Button(self,
                              text="Continue Game",
                              font=40,
                              command=lambda: self.continue_game(game),
                              bg=color_bg,
                              activebackground=color_active)
     self.button2.place(relx=0.4, rely=0.53, relheight=0.15, relwidth=0.2)
     if not game:
         self.button2.configure(state="disabled")
     button3 = tk.Button(
         self,
         text="Settings",
         font=40,
         command=lambda: controller.show_frame("SettingsPage"),
         bg=color_bg,
         activebackground=color_active)
     button3.place(relx=0.4, rely=0.73, relheight=0.15, relwidth=0.2)
Exemplo n.º 12
0
class Pve:
    def __init__(self, n, m, depth, save_permission):
        self.N = n
        self.M = m
        self.DEPTH = depth
        self.SAVE_PERMISSION = save_permission

        self.G = Game(n, m)
        self.T = Tree(n, m, depth)

        # load cache
        self.S = Save(n, m, self.SAVE_PERMISSION)
        out = self.S.load()
        if out:
            print('loaded')
            self.T.EF.Hash = out

    def start_game(self):
        side = int(input('choose your side\n0: O, 1: X'))
        player_1 = 1 if side == 0 else -1
        # player_2 = -player_1

        print('Start\n', self.G)

        t = time.time()

        player = 1
        for i in range(100):
            if player == player_1:
                y, x = self.T.search(self.G.get_state() * player_1)
            else:
                y = int(input('y:'))
                if y < 0:
                    break
                x = int(input('x:'))
            if self.G.input(y, x, player):
                break
            player = -player

        t = time.time() - t
        print('Time:', t)

        # save cache
        self.S.save(self.T.EF.Hash)

        print('End')
Exemplo n.º 13
0
 def __init__(self):
     """Constructor for package class
     
     Methods:
         - search_song: to search for songs
         - save_song: to save song infomation to file
         - search_artist: to search for artist
         - save artist: to save artist information to file
         - get_annotations: for getting song annotations
         - get_article_links: For getting links and titles of articles currently on the genius home page
         - get_article: For getting an articles currently on the genius home page
         - get_chart: For getting chart of top trending songs
     """
     self.search_bot = Search_Genius()
     self.save_bot = Save()
     self.interact_bot = Interact()
     self.web_bot = Webpage()
Exemplo n.º 14
0
 def list_item(self, data, filename, ident):
     if not data:
         # self.list_installed()
         return
     save = Save(savedata=data,
                 ident=ident,
                 filename=filename,
                 filesystem=self.filesystem)
     return 0, save
Exemplo n.º 15
0
class Eve:
    def __init__(self, n, m, depth, save_permission):
        self.N = n
        self.M = m
        self.DEPTH = depth
        self.SAVE_PERMISSION = save_permission

        self.G = Game(n, m)
        self.T1 = Tree(n, m, depth)
        self.T2 = Tree(n, m, depth)

        # load cache
        self.S = Save(n, m, self.SAVE_PERMISSION)
        out = self.S.load()
        if out:
            print('loaded')
            self.T1.EF.Hash = out
            self.T2.EF.Hash = out

    def start_game(self):
        # first move: X
        print('Start\n', self.G)

        t = time.time()

        for i in range(20):
            if i % 2 == 0:
                player = 1
                next_move = self.T1.search(self.G.get_state())
            else:
                player = -1
                next_move = self.T1.search(-self.G.get_state())

            y, x = next_move
            if self.G.input(y, x, player):
                break

        t = time.time() - t
        print('Time:', t)

        # save cache
        self.S.save(self.T1.EF.Hash, self.T2.EF.Hash)

        print('End')
Exemplo n.º 16
0
    def __init__(self, n, m, depth, save_permission, user_id, team_id,
                 game_id):
        self.N = n
        self.M = m
        self.DEPTH = depth
        self.SAVE_PERMISSION = save_permission
        self.SLEEP_TIME = 5

        self.G = Game(n, m)
        self.T = Tree(n, m, depth)
        self.API = Api(user_id, team_id)
        self.API.set_game_id(game_id)

        # load cache
        self.S = Save(n, m, self.SAVE_PERMISSION)
        out = self.S.load()
        if out:
            print('loaded')
            self.T.EF.Hash = out
Exemplo n.º 17
0
 def __init__(self, parent=None):
     super(MyWindow, self).__init__(parent)
     self.setupUi(self)
     # 窗体图标
     self.setWindowIcon(QIcon("ip_cheat.ico"))
     self.scan = Scan()
     self.config = Config()
     self.save = Save()
     self.attack = Attack()
     self.cheat = None
     self.scan.host_scan_status.connect(self.add_host_result)
     self.scan.port_scan_status.connect(self.add_port_result)
     for val in self.config.ipv4_adp.keys():
         self.send_card.addItem(val)
     _translate = QtCore.QCoreApplication.translate
     self.need_scan_ip_T.setPlainText(_translate("MainWindow", "192.168.1.142"))
     self.save_file_path_T.setPlainText(_translate("MainWindow", "D:/PycharmProjects/IP欺骗"))
     self.cheat_port_T.setPlainText(_translate("MainWidow", "80"))
     self.send_card.setCurrentText(_translate("MainWidow", "192.168.1.1"))
Exemplo n.º 18
0
 def start(self):
     loaded = False
     if saved_game := Save(game=self._game).load():
         choice = input("The program detected an unfinished game from last time, do you want to continue? y/N: ")
         while choice not in ("y", "N"):
             if choice == "exit":
                 print("Cannot exit right now.")
             choice = input("Wrong choice, try again: ")
         if choice == "y":
             self._game = saved_game
             loaded = True
Exemplo n.º 19
0
    def __init__(self):
        """Constructor for Script class
        
        Methods:
            - start: to start the main script
            - get_articles: to retrieve articles from the genius web page
            - print_articles: for printing articles to screen
            - get_Searching: to initiate the searching module
            - get_chart: to retrieve a chart of the top 10 songs
            - space_cre: for creating gaps in tables(charts)
        """
        banner = Figlet(font='standard')
        print(banner.renderText("BLyrics"))

        # i have to make objects for each class
        # the script isn't working without ding it like this
        self.search_bot = Search_Genius()
        self.interact_bot = Interact()
        self.save_bot = Save()
        self.web_bot = Webpage()
        # and add positional arguments

        print()
        print("Welcome To BLyrics")
        print()
        print(
            'If you are new to BLyrics please check the help guide by typing help'
        )
        print('Ignore to continue')
        print()
        comd = input(": ").lower()
        if comd == 'help':
            print('Welcome to BLyrics')
            print("To go back, enter 'back'(lower case)")
            print("To return to start page, enter 'menu'(lower case)")
            print("To exit, enter 'ctrl+Z'")
            print('Follow the prompt and you should be fine :)')
            time.sleep(3)
            for i in range(2):
                print()
        self.start()
Exemplo n.º 20
0
    def add_new_id(self):
        cap.release()
        cv2.destroyAllWindows()
        self.run.stop()

        self.widget = QtWidgets.QWidget()
        save = Save()
        self.save.setupUi(self.widget)
        self.widget.show()

        self.widget.addWidget(self.widget)
        self.widget.setCurrentIndex(self.widget.currentIndex() + 1)
Exemplo n.º 21
0
def doSave():
	req = request.get_json()
	wiki = req['wiki']
	domain = "{}.wikipedia.org".format(wiki)
	userStatus, session, respFromGettingUserInfo = getUserInfo(domain)

	if not userStatus:
		return jsonify(respFromGettingUserInfo)
	#
	userName = respFromGettingUserInfo['username'] if 'username' in respFromGettingUserInfo else respFromGettingUserInfo['message']
	
	job = req['job']
	article = req['article']
	result = req['result']
	wikitext = req['wikitext']
	status = req['status']

	handlingSave = Save(session)
	respFromSave = handlingSave.saveArticle(job,article,result,wikitext,status,userName)

	return jsonify(respFromSave)
Exemplo n.º 22
0
 def saveFile(self):
     if self.filename is '':
         self.filename = QFileDialog.getSaveFileName(self.piirtoalusta)[0]
     if self.filename is not '':
         items = self.piirtoalusta.scene.items()
         if '.txt' not in self.filename:
             self.filename = "".join((self.filename, '.txt'))
         textfile = QSaveFile(self.filename)
         textfile.open(QIODevice.WriteOnly | QIODevice.Text)
         output = QByteArray()
         items = self.piirtoalusta.scene.items()
         save = Save(items)
         output.append(save.content)
         textfile.write(output)
         textfile.commit()
         return save.content
Exemplo n.º 23
0
 def drawNext(self):
     #return the next card
     self.card_index = self.i
     self.last_card = self.current_card
     self.current_card = self.deck[self.i]
     # print("Card index: ", self.card_index)
     # print("Maybe card index: ", self.i)
     # print("Current card: ", self.current_card)
     self.i += 1
     if (self.i > 44):
         self.shuffle()
         self.i = 0
     from save import Save
     self.main.save = Save(self.main)
     self.main.save.save()
     return self.current_card
Exemplo n.º 24
0
 def back_button(self):
     game = Save(game=self.gui.game).load()
     if not game:
         self.controller.frames["MainMenu"].button2.configure(
             state="disabled")
     else:
         self.controller.frames["MainMenu"].button2.configure(
             state="normal",
             command=lambda: self.controller.frames["MainMenu"
                                                    ].continue_game(game))
     for i in range(self.gui.game.board_player.height):
         for j in range(self.gui.game.board_player.width):
             self.computer[i][j].photo.thing.place_forget()
             self.computer[i][j].photo.thing.destroy()
             self.player[i][j].photo.thing.place_forget()
             self.player[i][j].photo.thing.destroy()
     self.place_forget()
     self.destroy()
     self.controller.show_frame("MainMenu")
Exemplo n.º 25
0
    def setUpBoard(self):
        finished = True
        if self.main.numPlayers == "one" and self.main.pc1difficulty == '':
            finished = False
        if self.main.numPlayers == "two" and (self.main.pc1difficulty == '' or
                                              self.main.pc2difficulty == ''):
            finished = False
        if self.main.numPlayers == "three" and (
                self.main.pc1difficulty == '' or self.main.pc2difficulty == ''
                or self.main.pc3difficulty == ''):
            finished = False
        if finished:

            self.main.activeObj = set()
            self.main.board = Board(self.main)
            self.main.game = Game(self.main)
            self.main.deck = Deck(self.main)
            self.main.deck.start_deck()
            self.main.save = Save(self.main)
            #commented out because this was casuing an error
            self.main.save.save()
            self.main.gameStarted = True
Exemplo n.º 26
0
def option_critic_run(defaults):
    collector = Collector(**defaults)
    env = Game(**defaults)
    buffer = ReplayBuffer(**defaults)
    batch = env.batch
    num_options = len(env.layers.layers) - 3
    option_critic = OptionCriticConv(in_features=env.board.shape[1],
                                     num_actions=4,
                                     num_options=num_options,
                                     width=env.board.shape[2],
                                     height=env.board.shape[3],
                                     temperature=0.005,
                                     eps_start=2000000,
                                     eps_min=0.2,
                                     eps_decay=2000000,
                                     eps_test=0.05,
                                     device=device)
    # Create a prime network for more stable Q values
    option_critic_prime = deepcopy(option_critic)
    optim = torch.optim.RMSprop(option_critic.parameters(), lr=0.0005)

    with Save(env, collector, **defaults) as save:
        states = option_critic.get_state(env.board)
        greedy_options = [
            e.item() for e in list(option_critic.greedy_option(states))
        ]
        current_options = [0 for _ in range(batch)]
        option_terminations = [True for _ in range(batch)]
        dones = [False for _ in range(batch)]
        actions, logps, entropys = [None for _ in range(batch)
                                    ], [None for _ in range(batch)
                                        ], [None for _ in range(batch)]
        for frame in loop(env, collector, save):

            epsilon = option_critic.epsilon
            #print(epsilon)
            states = option_critic.get_state(env.board)
            #print(states.shape)
            for i, done in enumerate(dones):
                if done:
                    greedy_options[i] = option_critic.greedy_option(
                        states[i]).item()
                    current_options[i] = 0
                    option_terminations[i] = True
                    actions[i] = None
                    logps[i] = None
                    entropys[i] = None
            #print(greedy_options)

            for i, (option_termination, current_option, state,
                    greedy_option) in enumerate(
                        zip(option_terminations, current_options, states,
                            greedy_options)):
                if option_termination:
                    current_options[i] = np.random.choice(
                        num_options
                    ) if np.random.rand() < epsilon else greedy_option

                actions[i], logps[i], entropys[i] = option_critic.get_action(
                    state, current_option)
            # print(logps[0], entropys[0])
            old_obses = env.board
            next_obses, rewards, dones, _ = env.step(torch.tensor(actions))
            collector.collect([rewards], [dones])
            buffer.save_option_critic(old_obses, current_options, rewards,
                                      next_obses, dones)
            states = option_critic.get_state(next_obses)
            loss = 0
            for i, (next_obs, reward, done, state, current_option, old_obs,
                    logp, entropy) in enumerate(
                        zip(next_obses, rewards, dones, states,
                            current_options, old_obses, logps, entropys)):
                option_terminations[i], greedy_options[
                    i] = option_critic.predict_option_termination(
                        state.unsqueeze(0), current_option)
                loss += actor_loss_fn(old_obs, current_option, logp, entropy,
                                      reward, done, next_obs, option_critic,
                                      option_critic_prime)
            if frame % update_frequency == 0:
                data_batch = buffer.sample_option_critic()
                loss += critic_loss_fn(option_critic, option_critic_prime,
                                       data_batch)
            optim.zero_grad()
            loss.backward()
            optim.step()
            if frame % freeze_interval == 0:
                option_critic_prime = deepcopy(option_critic)
Exemplo n.º 27
0
	def __init__(self):
		self.download = Download()
		self.url_manager = Url_Manager()
		self.html_parser = Html_Parser()
		self.save = Save()
		self.set_color = Set_Color()
Exemplo n.º 28
0
 def exportCsv(self):
     logging.debug('>>')
     from save import Save
     save = Save(self.data_path, self.record)
     save.run()
     logging.debug('<<')
Exemplo n.º 29
0
 def exportCsv(self):
     logging.debug('>>')
     from save import Save
     save = Save(self.data_path, self.record)
     save.run()
     logging.debug('<<')
Exemplo n.º 30
0
 def to_db(self, state, winner):
     add_game_to_db = Save(self.__hash__())
     add_game_to_db.add_players(self.__player_one, self.__player_two)
     add_game_to_db.add_board(state.get_states())
     add_game_to_db.add_winner(winner)
     add_game_to_db.dump_to(Save.DATA_BASE)
Exemplo n.º 31
0
 def save(self, state):
     save_game = Save(self.__hash__())
     save_game.add_players(self.__player_one, self.__player_two)
     save_game.add_board(state.to_json())
     save_game.dump_to(Save.FILE)
Exemplo n.º 32
0
class LevelTwo(object):
    def __init__(self, m):
        """
        :param m: Menu
        """
        self.levelName = "levelTwo"
        self.gameState = ''
        m.game = self
        self.menu = m
        self.setLight()
        self.loadScene()
        if self.menu.tempPlayer is None:
            self.initCollision()
            self.initPlayer()
        else:
            print 'temp not none'
            self.node = self.menu.tempPlayer
            self.node.node.setPos(-250, 265, 20)
            self.node.game = self
            self.node.initMission()
            self.node.mission.memoryNum = self.menu.tempPlayer.mission.memoryNum
            self.enemy = Enemylevel2(self.node)
        # self.node.node.setPos(-800, 0, 20)
        # self.node.node.setPos(-370, 2800, 25)
        self.node.node.setPos(-700, 0, 25)
        self.node.node.setHpr(-90, 0, 0)
        base.accept("escape", self.pauseGame)
        base.disableMouse()
        props = WindowProperties()
        props.setCursorHidden(True)
        base.win.requestProperties(props)

        self.mutableMap = {}
        self.glowFilter()
        self.initMania()
        self.finalcard.reparentTo(hidden)
        self.initBag()
        # self.menu.loadState = True
        self.menu.passFrame.show()
        self.node.erosionFrame.show()
        self.node.currentItemFrame.show()
        if not self.menu.skipUseless:
            self.menu.loadState = True
            taskMgr.add(self.waitOne, "waitOne")
        else:
            self.save = Save(self)
            if self.menu.selectedSave == 2:
                self.save.loadFile('gameinfo_2.save')
            elif self.menu.selectedSave == 3:
                self.save.loadFile('gameinfo_3.save')
            self.node.changeCamera()
            self.menu.loadState = True
            self.menu.passFrame.hide()
        self.setupskillpattern()

    def waitOne(self, task):
        if task.time < 1:
            self.menu.passFrame['frameColor'] = (0, 0, 0, 1 - task.time)
            return task.cont
        self.menu.passFrame['frameColor'] = (0, 0, 0, 0)
        self.menu.passFrame.hide()
        self.beginPlot()
        return task.done

    def beginPlot(self):
        self.menu.ocanioDialog.show()
        props = WindowProperties()
        props.setCursorHidden(False)
        base.win.requestProperties(props)
        self.node.endTask()
        self.nextPlot()

    def nextPlot(self):
        self.menu.ocanioButton['text'] = '刚一踏出房间,房间的门就被重重的锁上了。无论我怎么叫喊,\n' \
                                       '里面都没有回应。我尽可能不去想最糟糕的情况,大概kura不会有什么问题的吧。'
        self.menu.ocanioButton['command'] = self.node.mission.hideOcanio
        self.menu.ocanioButton['extraArgs'] = []

    def initBag(self):
        self.bagState = True
        self.bagText = ""
        if self.menu.tempPlayer is not None:
            self.node.bag = self.menu.tempPlayer.bag
        else:
            self.node.bag = Bag(self.node)
        base.accept("b", self.openBag)

    def openBag(self):
        # print 'b'
        if self.bagState:
            self.node.bag.bagframe.show()
            self.node.bag.showdisplay.setActive(True)
            self.node.bag.textObject.setText(self.bagText)
            self.bagState = not self.bagState
            props = WindowProperties()
            props.setCursorHidden(False)
            base.win.requestProperties(props)
            self.menu.selectDialog.hide()
            self.gameState = 'pause'
            self.node.state = 'pause'
            self.node.endTask()
            base.accept('escape', self.openBag)
        else:
            self.node.bag.bagframe.hide()
            self.node.bag.showdisplay.setActive(False)
            self.bagText = self.node.bag.textObject.getText()
            self.node.bag.textObject.setText("")
            self.node.bag.textObject.setWordwrap(0)
            self.bagState = not self.bagState
            props = WindowProperties()
            props.setCursorHidden(True)
            base.win.requestProperties(props)
            self.gameState = ''
            self.node.state = ''
            self.node.initTask()
            base.accept('escape', self.pauseGame)

    def initCollision(self):
        """ create the collision system """
        base.cTrav = CollisionTraverser()
        base.pusher = CollisionHandlerPusher()
        base.cTrav.setRespectPrevTransform(True)

    def loadScene(self):
        """ load the self.sceneModel
            must have
            <Group> *something* {
              <Collide> { Polyset keep descend }
            in the egg file
        """
        self.goodmanager = GoodsManager()
        # AddGoods(self,Node,CollisionName,Name,Interactive)
        self.goodmanager.AddGoods(loader.loadModel('res/models/Scene2/Scene2Cat/Scene2_light.egg'),
                                  ["light"], "light", False)
        self.goodmanager.AddGoods(loader.loadModel('res/models/Scene2/Scene2Cat/Scene2_Ver7.0_wall.egg'),
                                  ["Wall", "floor"], "wall", False)
        self.goodmanager.AddGoods(loader.loadModel('res/models/Scene2/Scene2Cat/Elevator/dianti.egg'),
                                  ["dianti"], "dianti_box", True)
        self.goodmanager.AddGoods(loader.loadModel('res/models/Scene2/Scene2Cat/Elevator/broken_dianti.egg'),
                                  ["broken_dianti"], "broken_dianti_box", True)
        self.goodmanager.GoodsIta['broken_dianti_box'].Node.hide()

        '''
        corridor
        '''
        prefix = 'res/models/Scene2/Scene2Cat/Corridor/Scene2_Ver5.0_'
        self.loadIn(prefix + 'clock_2.egg', "clock_box", True)
        # self.loadIn(prefix + 'Outdoor.egg', "outdoor_box", True)
        self.loadIn(prefix + 'ElectricBox_2.egg', "ElectricBox", True)
        self.loadIn(prefix + 'entrance.egg', "entrance_box", True)
        self.loadIn(prefix + 'picture1.egg', "painting_1", True)
        self.loadIn(prefix + 'picture2.egg', "painting_2", True)
        self.loadIn(prefix + 'picture3.egg', "painting_3", True)
        self.loadIn(prefix + 'picture4.egg', "painting_4", True)
        self.loadIn(prefix + 'picture5.egg', "painting_5", True)
        self.loadIn(prefix + 'picture6.egg', "painting_6", True)
        self.loadIn(prefix + 'picture7.egg', "painting_7", True)
        self.loadIn(prefix + 'picture8.egg', "painting_8", True)
        self.loadIn(prefix + 'picture9.egg', "painting_9", True)
        self.loadIn(prefix + 'picture8_cut.egg', "painting_cut", True)
        self.goodmanager.GoodsIta["painting_cut"].Node.hide()
        self.goodmanager.GoodsIta["outdoor_box"] = Door(Vec3(374.1351, 1973.22, 105.000), "outdoor_box",
                                                           prefix + 'Outdoor.egg', 90, Door.Out)

        '''
        hall
        '''
        prefix = 'res/models/Scene2/Scene2Cat/Hall/Scene2_Ver5.0_'
        self.loadIn(prefix + 'food.egg', 'food_box', True)
        self.loadIn(prefix + 'cake.egg', 'cake_box', True)
        self.loadIn(prefix + 'diary.egg', 'diary_box', True)
        self.loadIn(prefix + 'safe_2.egg', 'safe_box', True)
        self.loadIn(prefix + 'carrot.egg', 'carrot_box', True)
        self.loadIn(prefix + 'window.egg', 'window_box', True)
        self.loadIn(prefix + 'window_broken.egg', 'window_broken_box', True)
        self.goodmanager.GoodsIta['window_broken_box'].Node.hide()
        self.loadIn(prefix + 'biaoyu.egg', 'biaoyu_box', True)
        # self.loadIn(prefix + 'Backdoor.egg', 'backdoor', True)
        # self.loadIn(prefix + 'Frontdoor.egg', 'frontdoor', True)
        self.loadIn(prefix + 'hammer_2.egg', 'hammer_box', True)
        self.loadIn(prefix + 'zhalan_2.egg', 'rabbit_cage', True)
        self.loadIn(prefix + 'vaccine.egg', 'hallvaccine_box', True)
        self.loadIn(prefix + 'refrigerator_2.egg', 'fridge_box', True)

        self.loadIn(prefix + 'rabbit.egg', 'rabbit_box', False)
        self.loadIn(prefix + 'yuanzhuo.egg', 'yuanzhuo_box', False)
        self.loadIn(prefix + 'changzhuo_2.egg', 'changzhuo_box', False)
        self.goodmanager.GoodsIta["Frontdoor"] = Door(Vec3(342.9760, 357.22, 105.000), "Frontdoor",
                                                         prefix + 'Frontdoor.egg', 90, Door.Out)
        self.goodmanager.GoodsIta["Backdoor"] = Door(Vec3(342.9760, 1571.22, 105.000), "Backdoor",
                                                        prefix + 'Backdoor.egg', 90, Door.Out)

        '''
        Outroom
        '''
        prefix = 'res/models/Scene2/Scene2Cat/Outroom/Scene2_Ver5.0_'
        self.loadIn(prefix + 'vase_2.egg', 'vase_box', True)
        self.loadIn(prefix + 'knife.egg', 'knife_box', True)
        self.loadIn(prefix + 'jiazi_2.egg', 'jiazi_box', False)
        self.loadIn(prefix + 'rongqi.egg', 'rongqi_box', False)
        self.loadIn(prefix + 'vaccine.egg', 'vaccine_box', True)
        self.loadIn(prefix + 'lavabo_2.egg', 'lavabo_box', True)
        self.loadIn(prefix + 'mirror.egg', 'mirror_box', True)
        self.loadIn(prefix + 'furnace_2.egg', 'furnace_box', True)
        self.loadIn(prefix + 'bookshelf.egg', 'bookshelf_box', True)
        self.loadIn(prefix + 'xiaozhuozi_2.egg', 'xiaozhuozi_box', False)
        self.goodmanager.staticGoods["infireish"] = GoodsParticle("fireish", (-370, 3183, 25), 16, render,31)
        self.goodmanager.staticGoods["insteam"] = GoodsParticle("steam", (-370, 3183, 50), 5, render,30)
        self.goodmanager.GoodsIta['Scene2_book-beijuji'] = Book(prefix+'beijuji.egg','beijuji',(-350, 3183, 50))
        self.goodmanager.GoodsIta['Scene2_book-beijuji'].Node.setHpr(30, 30, 30)
        for i in range(8):
            name = "outflowers" + str(i+1)
            self.goodmanager.AddGoods(loader.loadModel(prefix + name + '.egg'),
                                      [name], name, False)
            self.goodmanager.staticGoods[name].Node.setTwoSided(True)
        self.goodmanager.staticGoods['outflowers7'].Node.hide()
        self.goodmanager.staticGoods['outflowers8'].Node.hide()
        self.mirrorShader = loader.loadShader("shaders/mirrorShader.sha")
        self.goodmanager.GoodsIta['mirror_box'].Node.setShader(self.mirrorShader)
        # self.goodmanager.GoodsIta['mirror_box'].Node.setTwoSided(True)
        self.mirror(self.goodmanager.GoodsIta['mirror_box'].Node)

        '''
        Inroom
        '''
        prefix = 'res/models/Scene2/Scene2Cat/Inroom/Scene2_Ver5.0_'
        self.loadIn(prefix + 'invase.egg', 'invase_box', True)
        self.loadIn(prefix + 'inknife.egg', 'inknife_box', True)
        self.loadIn(prefix + 'injiazi.egg', 'injiazi_box', False)
        self.loadIn(prefix + 'inlavabo.egg', 'inlavabo_box', True)
        self.loadIn(prefix + 'inrongqi.egg', 'inrongqi_box', False)
        self.loadIn(prefix + 'infurnace.egg', 'infurnace_box', True)
        self.loadIn(prefix + 'inbookshelf.egg', 'inbookshelf_box', True)
        self.loadIn(prefix + 'inxiaozhuozi.egg', 'inxiaozhuozi_box', False)
        self.goodmanager.staticGoods["fireish"] = GoodsParticle("fireish", (-370, 2870, 25), 16, render, 31)
        self.goodmanager.staticGoods["steam"] = GoodsParticle("steam", (-370, 2870, 50), 5, render, 30)
        self.goodmanager.GoodsIta['Scene2_book-xijuji'] = Book(prefix + 'inxijuji.egg', 'inxijuji', (-350, 2870, 50))
        self.goodmanager.GoodsIta['Scene2_book-xijuji'].Node.setHpr(30, 30, 30)
        for i in range(8):
            name = "inflowers" + str(i+1)
            self.goodmanager.AddGoods(loader.loadModel(prefix + name + '.egg'),
                                      [name], name, False)
            self.goodmanager.staticGoods[name].Node.hide()
            self.goodmanager.staticGoods[name].Node.setTwoSided(True)
        self.goodmanager.staticGoods['inflowers1'].Node.show()

        self.h2so4_1 = GoodsParticle("H2SO4", (-380, 2270, 136), 6, render, 32)
        self.h2so4_2 = GoodsParticle("smo", (-380, 2270, 110), 5, render, 33)
        self.h2so4_3 = GoodsParticle("surface-1",  (-365, 2270, 100), 10, render, 34)
        self.h2so4_3.particle.setScale(10, 20, 10)

        self.h2so4_4 = GoodsParticle("H2SO4", (-380, 3895.5, 136), 6, render, 32)
        self.h2so4_5 = GoodsParticle("smo", (-380, 3890, 110), 5, render, 33)
        self.h2so4_6 = GoodsParticle("surface-1", (-363, 3890, 100), 10, render, 34)
        self.h2so4_6.particle.setScale(10, 20, 10)

    def loadIn(self, path, name, b):
        self.goodmanager.AddGoods(loader.loadModel(path), [name], name, b)

    def itemCollision(self, model, name, radius):
        nodePath = NodePath(name)
        node = CollisionNode(name)
        node.addSolid(CollisionSphere(20, 0, radius, radius))
        solid = model.attachNewNode(node)
        nodePath.reparentTo(model)
        solid.show()
        base.cTrav.addCollider(solid, base.pusher)
        base.pusher.addCollider(solid, nodePath, base.drive.node())

    def initPlayer(self):
        """ loads the player and creates all the controls for him"""
        self.node = Player(self.goodmanager, self.menu, self)
        # self.enemy = Enemy(self.node)
        self.enemy = Enemylevel2(self.node)
        # self.goodmanager.GoodsIta["enemy"] = Enemy(self.node)
        # self.goodmanager.GoodsIta["enemy"].state = 1

    def pauseGame(self):
        props = WindowProperties()
        props.setCursorHidden(False)
        base.win.requestProperties(props)
        self.menu.selectDialog.hide()
        self.gameState = 'pause'
        self.node.state = 'pause'
        self.node.endTask()
        self.node.erosionFrame.hide()
        self.node.currentItemFrame.hide()
        base.accept('escape', self.escapeEvent)
        base.accept('b', self.menu.nothing)
        self.menu.pauseFrame.show()

    def escapeEvent(self):
        self.menu.pauseFrame.hide()
        self.node.state = ''
        self.node.initTask()
        self.node.erosionFrame.show()
        self.node.currentItemFrame.show()
        base.accept('escape', self.pauseGame)
        base.accept('b', self.openBag)
        props = WindowProperties()
        props.setCursorHidden(True)
        base.win.requestProperties(props)

    def mirror(self,tex):
        self.mirrorBuffer = base.win.makeTextureBuffer("mirror", 512, 512)
        print 'mirrorBuffer',self.mirrorBuffer
        self.mirrorBuffer.setSort(-3)
        self.mirrorBuffer.setClearColor(LVector4(0, 0, 0, 1))
        print base.cam.node().getLens()
        self.mirrorCamera = base.makeCamera(self.mirrorBuffer)
        self.mirrorCamera.reparentTo(render)
        self.mirrorCamera.setPos((424,3080,104. ))
        self.mirrorCamera.setH(180)
        pl = self.mirrorCamera.node().getLens()
        pl.setFov(90)
        pl.setNear(100)
        self.mirrorCamera.node().setLens(pl)

        self.finalcard = self.mirrorBuffer.getTexture()
        tex.setTexture(self.finalcard,1)
        # self.UnLoadmirror()

    def UnLoadmirror(self):
        self.mirrorBuffer.getEngine().removeWindow(self.mirrorBuffer)
        self.mirrorBuffer = None
        self.mirrorCamera = None

    def makeFilterBuffer(self, srcbuffer, name, sort, prog):
        blurBuffer = base.win.makeTextureBuffer(name, 512, 512)
        blurBuffer.setSort(sort)
        blurBuffer.setClearColor(LVector4(1, 0, 0, 1))
        blurCamera = base.makeCamera2d(blurBuffer)
        blurScene = NodePath("new Scene")
        blurCamera.node().setScene(blurScene)
        shader = loader.loadShader(prog)
        card = srcbuffer.getTextureCard()
        card.reparentTo(blurScene)
        card.setShader(shader)
        return blurBuffer

    def glowFilter(self):
        glowShader = loader.loadShader("shaders/glowShader.sha")
        # dlight = DirectionalLight('dlight')
        # alight = AmbientLight('alight')
        # dlnp = render.attachNewNode(dlight)
        # alnp = render.attachNewNode(alight)
        # dlight.setColor(LVector4(0.3, 0.3, 0.3, 1))
        # alight.setColor(LVector4(0.8, 0.8, 0.8, 1))
        # dlnp.setHpr(0, -60, 0)
        # render.setLight(dlnp)
        # render.setLight(alnp)

        # create the glow buffer. This buffer renders like a normal scene,
        # except that only the glowing materials should show up nonblack.
        glowBuffer = base.win.makeTextureBuffer("Glow scene", 1024, 768)
        glowBuffer.setSort(-3)
        glowBuffer.setClearColor(LVector4(0, 0, 0, 1))

        # We have to attach a camera to the glow buffer. The glow camera
        # must have the same frustum as the main camera. As long as the aspect
        # ratios match, the rest will take care of itself.
        self.glowCamera = base.makeCamera(
            glowBuffer, lens=base.cam.node().getLens())

        # Tell the glow camera to use the glow shader
        tempnode = NodePath(PandaNode("temp node"))
        tempnode.setShader(glowShader)
        self.glowCamera.node().setInitialState(tempnode.getState())

        self.glowCamera.node().setCameraMask(BitMask32.bit(0))

        # set up the pipeline: from glow scene to blur x to blur y to main
        # window.
        blurXBuffer = self.makeFilterBuffer(
            glowBuffer, "Blur X", -2, "shaders/XBlurShader.sha")
        blurYBuffer = self.makeFilterBuffer(
            blurXBuffer, "Blur Y", -1, "shaders/YBlurShader.sha")
        self.finalcard = blurYBuffer.getTextureCard()
        self.finalcard.reparentTo(render2d)

        Attrib = ColorBlendAttrib.make(ColorBlendAttrib.MAdd, ColorBlendAttrib.O_incoming_alpha,
                                       ColorBlendAttrib.O_incoming_alpha)
        self.finalcard.setAttrib(Attrib)

        base.bufferViewer.setPosition("llcorner")
        base.bufferViewer.setLayout("hline")
        base.bufferViewer.setCardSize(0.652, 0)

        base.accept("tab", self.toggleGlow)
        self.glowOn = False

    def limitGlow(self, task):
        if task.time < 5:
            return task.cont
        else:
            self.glowOn = False
            self.finalcard.reparentTo(hidden)
            # self.goodmanager.GoodsIta["box"].CloseHighLight()
        return task.done

    def toggleGlow(self):
        self.showskillpattern("eyepattern")
        if self.glowOn:
            return
        self.glowOn = True
        taskMgr.add(self.limitGlow, "limitGlow")
        if self.node.EROSION + 10 > 100:
            self.node.EROSION = 100
        else:
            self.node.EROSION += 10
        self.finalcard.reparentTo(render2d)
        # self.goodmanager.GoodsIta["box"].OpenHighLight()

    def initMania(self):
        base.accept("space", self.mania)
        self.maniaState = False

    def mania(self):
        self.showskillpattern("maniapattern")
        if not self.maniaState:
            self.node.speed *= 1.4
            self.maniaState = True
        if self.node.EROSION + 10 > 100:
            self.node.EROSION = 100
        else:
            self.node.EROSION += 10
        taskMgr.remove("fadeSpeed")
        taskMgr.add(self.fadeSpeed, "fadeSpeed")

    def fadeSpeed(self, task):
        if task.time < 10:
            return task.cont
        else:
            self.node.speed /= 1.4
            self.maniaState = False
        return task.done

    def setupskillpattern(self):
        self.eyepattern = OnscreenImage(image="res/skill_icon/eye-white.png", pos=(-1.2, 1, -0.8))
        self.eyepattern.setTransparency(TransparencyAttrib.MAlpha)
        self.eyepattern.setScale(0.1)
        self.eyepattern.setSa(0.8)
        self.eyepattern.hide()
        self.maniapattern = OnscreenImage(image="res/skill_icon/mania-white.png", pos=(-1.2 + 0.3, 1, -0.8))
        self.maniapattern.setTransparency(TransparencyAttrib.MAlpha)
        self.maniapattern.setScale(0.1)
        self.maniapattern.setSa(0.8)
        self.maniapattern.hide()
        self.screen_patternArray = {}
        self.screen_patternArray["eyepattern"] = [self.eyepattern, False, 5.0, 5.0]
        self.screen_patternArray["maniapattern"] = [self.maniapattern, False, 10.0, 10.]
        self.patterntask = False
        self.patterntaskpretime = 0
        # self.mouseIconNormal.setSa(0.5)

    def showskillpattern(self, patternname):
        self.screen_patternArray[patternname][2] = self.screen_patternArray[patternname][3]
        self.screen_patternArray[patternname][1] = True
        self.screen_patternArray[patternname][0].show()
        if self.patterntask == False:
            taskMgr.add(self.showskillpatterntask, "showskillpatterntask")
            self.patterntask = True

    def showskillpatterntask(self, task):
        num = 0
        for key in self.screen_patternArray:
            if self.screen_patternArray[key][1] == True:
                self.screen_patternArray[key][2] -= globalClock.getDt()
                if self.screen_patternArray[key][2] < 5.:
                    if sin(self.screen_patternArray[key][2] * pi * 5) > 0:
                        self.screen_patternArray[key][0].setSa(0)
                    else:
                        self.screen_patternArray[key][0].setSa(0.8)

                self.screen_patternArray[key][0].setPos(-1.2 + num * 0.3, 1, -0.8)
                if self.screen_patternArray[key][2] < 0:
                    self.screen_patternArray[key][1] = False
                    self.screen_patternArray[key][0].hide()
                    self.screen_patternArray[key][0].setSa(0.8)
                num += 1
        if num > 0:
            return task.cont
        self.patterntask = False
        return

    def setLight(self):
        render.setLightOff()
        alight=AmbientLight('alight')
        alnp=render.attachNewNode(alight)
        alight.setColor(VBase4(0.3,0.3,0.3,1))
        render.setLight(alnp)

        # myFog = Fog("Fog Name")
        # myFog.setColor(0.2,0.5, 0.1)
        # myFog.setExpDensity(0.5)
        # render.setFog(myFog)

        self.lightpivot1 = render.attachNewNode("lightpivot1")
        self.lightpivot1.setPos(-124, 947, 50)
        self.plight1=PointLight('plight1')
        self.plight1.setColor(VBase4(1, 0.5, 0, 1))
        self.temp=LVector3(0.6, 0.08, 0)
        self.plight1.setAttenuation(self.temp)
        plnp1=self.lightpivot1.attachNewNode(self.plight1)
        plnp1.setPos(0,0,50)
        render.setLight(plnp1)

        self.lightpivot2 = render.attachNewNode("lightpivot2")
        self.lightpivot2.setPos(0, 0, 50)
        self.plight2 = PointLight('plight2')
        self.plight2.setColor(VBase4(1, 0.5, 0, 1))
        self.temp = LVector3(0.6, 0.08, 0)
        self.plight2.setAttenuation(self.temp)
        plnp2 = self.lightpivot2.attachNewNode(self.plight2)
        plnp2.setPos(-200, 0, 50)
        render.setLight(plnp2)

        self.lightpivot3 = render.attachNewNode("lightpivot3")
        self.lightpivot3.setPos(52, 2491, 50)
        self.plight3 = PointLight('plight3')
        self.plight3.setColor(VBase4(1, 0.5, 0, 1))
        self.temp = LVector3(0.6, 0.08, 0)
        self.plight3.setAttenuation(self.temp)
        plnp3 = self.lightpivot3.attachNewNode(self.plight3)
        plnp3.setPos(-200, 0, 50)
        render.setLight(plnp3)

        slight = Spotlight('slight')
        slight.setColor(VBase4(0.1, 0.5, 0.1, 1))
        #slight.setAttenuation(LVector3(0.5,0.08,0))
        lens = PerspectiveLens()
        lens.setFov(10)
        slight.setLens(lens)
        slnp = render.attachNewNode(slight)
        slnp.setPos(-811, 3, 0)
        slnp.lookAt(415,10,0)
        # slnp.setPos(0,0,0)
        # slnp.lookAt(0,0,50)
        render.setLight(slnp)
Exemplo n.º 33
0
 def to_db(self, state, winner):
     add_game_to_db = Save(self.__hash__())
     add_game_to_db.add_players(self.__player_one, self.__player_two)
     add_game_to_db.add_board(state.get_states())
     add_game_to_db.add_winner(winner)
     add_game_to_db.dump_to(Save.DATA_BASE)
Exemplo n.º 34
0
 def save(self, state):
     save_game = Save(self.__hash__())
     save_game.add_players(self.__player_one, self.__player_two)
     save_game.add_board(state.to_json())
     save_game.dump_to(Save.FILE)