예제 #1
0
 def solve_but_last(self):
     """Löst die ersten n-2 der obersten Reihe und bringt den n-1ten in eine
     geeignete Position um ihn zusammen mit dem n-ten zu lösen (z.B.: '12.3')"""
     d = self.get_target_positions()
     for i in sorted(d):
         log.info("solving element {}".format(i))
         self.p, acts = move_one_tile(self.p, i, d[i], self.locked)
         self._moves += acts
         self.locked.add(puz.get_position(self.p, i))
 def map( self, event_type, ctrl_id, value ):
     if event_type==EVENT_BUTTON and ctrl_id==self.shift_button:
         if not self.toggle or (self.toggle and value==1):
             self.shift_state= 1-self.shift_state #0->1, 1->0
             log.info("shift key at {}".format(self.shift_state))
             if not self.output_shift_key_events:
                 return None
     i= self.type_dict[event_type]
     if self.shift_state and ctrl_id in self.shift_elements[i]:
         ctrl_id+= self.offsets[i]
     return event_type, ctrl_id, value
예제 #3
0
def solve(p):
    counter = 0
    moves = []
    while not puz.is_solved(p):
        log.info("solve, iteration {}, puzzle:\n{}".format(counter, p))
        counter += 1
        transp = next_is_column(p)
        ss = SolverStruct(p, moves, transp)
        p, moves = ss.execute()
        log.info("another row solved:\n{}".format(p))
        p = p[:, 1:] if transp else p[1:, :]
        log.info("shrinking p:\n{}".format(p))
        log.info("solved: " + str(puz.is_solved(p)))
    return moves
    parser.add_argument('shiftbtn', type=int,                       help='Number of the button acting as shift')
    
    
    return parser


if __name__=="__main__":
    parser= argument_parser()
    args= parser.parse_args()
    
    my_logging.set_level( args.debug )
    
    #open file descriptors and configure linux
    joystick_file= open( args.device )
    system_setup.setup_system1( args.device )
    log.info( "Creating virtual joystick" )
    vj= VirtualJoystick( args.n_axes*2, args.n_buttons*2 )
    system_setup.setup_system2( vj.name )

    system_setup.drop_privileges()

    buttons_to_shift= set(range(args.n_buttons+1)) - set((args.shiftbtn,))
    axes_to_shift=    set(range(args.n_axes+1))
    
    mapper= ShiftMapper( 
        receiver= vj.send,    
        buttons_to_shift= buttons_to_shift, 
        axes_to_shift=  axes_to_shift, 
        button_offset=  args.n_buttons, 
        axes_offset=    args.n_axes,
        shift_button=   args.shiftbtn,