示例#1
0
class Demo( Thread ):
    """manages an escape machine game
    """
    LEVELS = [ {"r":3, "c":4, "ge":1, "rs":80, "comp":30, "con":60} ] # 5

    def __init__( self, gui, assembly_graph, level=0, rank_window=True ):
        Thread.__init__( self )
        
        self.gui = gui
        self.assembly_graph = assembly_graph
        self.level = level

        self.maze = None

        # determines color ranking from assembly graph
        self.color_demon = None
        if rank_window:
            self.color_demon = Color_Demon( assembly_graph, self.gui )
            self.color_demon.show()
        else:
            self.color_demon = Color_Demon( assembly_graph )

        self.next_queue = Queue()

        # start first maze
        self.next( True, 0, 0 )

    def run( self ):
        while self.next_queue is not None:
            game_over, escaped, eaten = self.next_queue.get()
            self._next_maze( game_over, escaped, eaten )

    def next( self, game_over, escaped, eaten ):
        self.next_queue.put( (game_over, escaped, eaten) )
        
    def _next_maze( self, game_over, escaped, eaten ):
        """build next maze when previous maze is closed
        """
        # if last level wasn't lost go to next level
        if not game_over:
            self.level += 1
            if self.level > (len(self.LEVELS) - 1):
                self.level = len(self.LEVELS) - 1

        print "***level %d***" % self.level
        
        self.maze = Maze( gui=self.gui,
                          next=self.next,
                          rows=self.LEVELS[self.level]["r"],
                          columns=self.LEVELS[self.level]["c"],
                          ghost_eaters=self.LEVELS[self.level]["ge"],
                          room_size=self.LEVELS[self.level]["rs"],
                          completeness=self.LEVELS[self.level]["comp"],
                          connectedness=self.LEVELS[self.level]["con"],
                          escaped=escaped,
                          eaten=eaten )

        self.maze.show()

        self.color_demon.maze = self.maze
示例#2
0
    def __init__( self, gui, assembly_graph, level=0, rank_window=True ):
        Thread.__init__( self )
        
        self.gui = gui
        self.assembly_graph = assembly_graph
        self.level = level

        self.maze = None

        # determines color ranking from assembly graph
        self.color_demon = None
        if rank_window:
            self.color_demon = Color_Demon( assembly_graph, self.gui )
            self.color_demon.show()
        else:
            self.color_demon = Color_Demon( assembly_graph )

        self.next_queue = Queue()

        # start first maze
        self.next( True, 0, 0 )
示例#3
0
# set up assembly graph
sensor_queue = Queue()
event_queue = Queue()

sensor_demon = Sensor_Demon( sensor_queue, serial_port="/dev/ttyUSB0" )
assembly_demon = Assembly_Demon( sensor_queue, event_queue )
assembly_graph = Assembly_Graph( event_queue=event_queue,
                                 part_library=part_library,
                                 orient=True )

# start demon threads
sensor_demon.start()
assembly_demon.start()
assembly_graph.start()

# start gtk gui
gui = Gui()
gui.start()

# build maze
maze = Maze( gui, rows=3, columns=6, ghost_eaters=2, room_size=80,
             completeness=20, connectedness=80 )
maze.show()


# assign color demon to update color ranking on assembly graph event
color_demon = Color_Demon( assembly_graph, gui )
color_demon.show()

color_demon.maze = maze