Example #1
0
 def __init__(self, number, world):
     u"""
         number : Player番号。0~3
         world  : Worldクラスインスタンス
     """
     self.number = number
     super(Player, self).__init__(0, 0)
     self.index = self.number
     self.roads_queue = self._get_initial_roads_queue()
     self.current_road = self.get_next_road()
     self.next_road = self.get_next_road()
     self.cursor_counter_h = 0
     self.cursor_counter_v = 0
     self.city = City(self, world)
     self.device = JoyPad(number)
     self.pad_type = self.PAD_TYPE[self.device.id]
     self.mapping = self.KEYMAPPINGS_PADS[self.pad_type]
     self.cursor_threshold = [0, 0]
     self.cursor_move = False
     self.ainfo.index = self.number
     self.point = self.city.root_point.clone()
Example #2
0
 def __init__(self, number, world):
     u"""
         number : Player番号。0~3
         world  : Worldクラスインスタンス
     """
     self.number = number
     super(Player, self).__init__(0, 0)
     self.index = self.number
     #self.joy = JoyPad().sticks[number]
     self.roads_queue = self._get_initial_roads_queue()
     self.current_road = self.get_next_road()
     self.next_road = self.get_next_road()
     self.pressed_attach = False
     self.pressed_rotate_r = False
     self.pressed_rotate_l = False
     self.cursol_counter_h = 0
     self.cursol_counter_v = 0
     self.city = City(self, world)
Example #3
0
class Player(Panel):
    u"""プレイヤークラス"""
    IMAGEPATH = u"../resources/image/main/player0.png"
    def __init__(self, number, world):
        u"""
            number : Player番号。0~3
            world  : Worldクラスインスタンス
        """
        self.number = number
        super(Player, self).__init__(0, 0)
        self.index = self.number
        #self.joy = JoyPad().sticks[number]
        self.roads_queue = self._get_initial_roads_queue()
        self.current_road = self.get_next_road()
        self.next_road = self.get_next_road()
        self.pressed_attach = False
        self.pressed_rotate_r = False
        self.pressed_rotate_l = False
        self.cursol_counter_h = 0
        self.cursol_counter_v = 0
        self.city = City(self, world)
    def update(self):
        self.city.update()
        if not self.number == 0: return
        # ToDo 操作性が悪いのであとで改善する
        if Key.is_press(K_RIGHT):
            self.cursol_counter_h += 1
            if self.cursol_counter_h > 1:
                self.cursol_counter_h = 0
                self.point.x += 1
        elif Key.is_press(K_LEFT):
            self.cursol_counter_h += 1
            if self.cursol_counter_h > 1:
                self.cursol_counter_h = 0
                self.point.x -= 1
        else:
            self.cursol_counter_h = 0
        if Key.is_press(K_UP):
            self.cursol_counter_v += 1
            if self.cursol_counter_v > 1:
                self.cursol_counter_v = 0
                self.point.y -= 1
        elif Key.is_press(K_DOWN):
            self.cursol_counter_v += 1
            if self.cursol_counter_v > 1:
                self.cursol_counter_v = 0
                self.point.y += 1
        else:
            self.cursol_counter_v = 0
        if self.point.x < 0:
            self.point.x = 0
        elif self.point.x > settings.STAGE_WIDTH-1:
            self.point.x = settings.STAGE_WIDTH-1
        if self.point.y < 0:
            self.point.y = 0
        elif self.point.y > settings.STAGE_HEIGHT-1:
            self.point.y = settings.STAGE_HEIGHT-1
#
#        xaxis = self.joy.get_axis(0)
#        yaxis = self.joy.get_axis(1)
#        if abs(xaxis) > 0.5:
#            self.point.x += 1 if xaxis > 0 else -1
#        if abs(yaxis) > 0.5:
#            self.point.y += 1 if yaxis > 0 else -1
        self.current_road.point = self.point.clone()
    def draw(self, surface=Game.get_screen()):
        super(Player, self).draw(surface)
        self.city.draw()
    def poll(self):
        if not self.number == 0: return 0
        return self._poll_key()
    def get_next_road(self):
        if len(self.roads_queue) == 0:
            self.roads_queue = self._get_initial_roads_queue()
        return self.roads_queue.pop(0)(0, 0)
    def _get_initial_roads_queue(self):
        roads = [LShapeRoad, TShapeRoad, IShapeRoad, CrossRoad]
        random.shuffle(roads)
        return roads
    def _poll_key(self):
        if Key.is_press(K_z):
            if not self.pressed_rotate_l: 
                self.pressed_rotate_l = True 
                return -1
        elif Key.is_press(K_x):
            if not self.pressed_rotate_r: 
                self.pressed_rotate_r = True
                return 1
        elif Key.is_press(K_c):
            if not self.pressed_attach:
                self.pressed_attach = True 
                return 2
        else:
            self.pressed_attach = False
            self.pressed_rotate_l = False
            self.pressed_rotate_r = False
        return 0
    def _poll_joypad(self):
        if self.joy.get_button(8):
            if not self.pressed_rotate_l: 
                self.pressed_rotate_l = True 
                return -1
        elif self.joy.get_button(9):
            if not self.pressed_rotate_r: 
                self.pressed_rotate_r = True
                return 1
        elif self.joy.get_button(1):
            if not self.pressed_attach:
                self.pressed_attach = True 
                return 2
        else:
            self.pressed_attach = False
            self.pressed_rotate_l = False
            self.pressed_rotate_r = False
        return 0
    def attach_road(self):
        self.current_road.on_attach()
        self.current_road = self.next_road
        self.current_road.point = self.point
        self.next_road = self.get_next_road()
Example #4
0
class Player(Panel):
    u"""プレイヤークラス"""
    IMAGEPATH = u"../resources/image/main/players.png"
    KEYMAPPINGS = {Device.Key:{'up':K_UP,
                               'down':K_DOWN,
                               'right':K_RIGHT,
                               'left':K_LEFT,
                               'z':K_z,
                               'x':K_x,
                               'c':K_c,
                               'START':K_RETURN
                               },
                   Device.JoyPad:{'up':0,
                                  'down':1,
                                  'right':2,
                                  'left':3,
                                  'z':8,
                                  'x':9,
                                  'c':11,
                                  'START':4
                                  }}
    PAD_TYPE = [0, 0, 0, 1]
    KEYMAPPINGS_PADS = [{'up':0,
                        'down':1,
                        'right':2,
                        'left':3,
                        'z':8,
                        'x':9,
                        'c':11,
                        'START':4
                        },
                        {'up':0,
                        'down':1,
                        'right':7,
                        'left':6,
                        'z':6,
                        'x':7,
                        'c':1,
                        'START':9
                        }]
    def __init__(self, number, world):
        u"""
            number : Player番号。0~3
            world  : Worldクラスインスタンス
        """
        self.number = number
        super(Player, self).__init__(0, 0)
        self.index = self.number
        self.roads_queue = self._get_initial_roads_queue()
        self.current_road = self.get_next_road()
        self.next_road = self.get_next_road()
        self.cursor_counter_h = 0
        self.cursor_counter_v = 0
        self.city = City(self, world)
        self.device = JoyPad(number)
        self.pad_type = self.PAD_TYPE[self.device.id]
        self.mapping = self.KEYMAPPINGS_PADS[self.pad_type]
        self.cursor_threshold = [0, 0]
        self.cursor_move = False
        self.ainfo.index = self.number
        self.point = self.city.root_point.clone()
    def update(self):
        self.city.update()
        if self.pad_type == 0:
            xaxis = self.device.get_axis(0)
            yaxis = self.device.get_axis(1)
        else:
            xaxis = self.device.get_axis(2)
            yaxis = self.device.get_axis(3)    
        length = sum(map(lambda x: x*x, list(self.cursor_threshold)))
        if abs(xaxis) > 0.5:
            self.cursor_threshold[0] += xaxis
            if not self.cursor_move or abs(length) > 16:
                self.point.x += 1 if xaxis > 0 else -1
        if abs(yaxis) > 0.5:
            self.cursor_threshold[1] += yaxis
            if not self.cursor_move or abs(length) > 16:
                self.point.y += 1 if yaxis > 0 else -1
        if abs(xaxis) > 0.5 or abs(yaxis) > 0.5:
            self.cursor_move = True
        else:
            self.cursor_move = False
            self.cursor_threshold = [0, 0]
        if self.point.x < 0:
            self.point.x = 0
        elif self.point.x > settings.STAGE_WIDTH-1:
            self.point.x = settings.STAGE_WIDTH-1
        if self.point.y < 0:
            self.point.y = 0
        elif self.point.y > settings.STAGE_HEIGHT-1:
            self.point.y = settings.STAGE_HEIGHT-1
        self.current_road.point = self.point.clone()
        if not self.device.joy: return
    def draw(self, surface=Game.get_screen()):
        super(Player, self).draw(surface)
        self.city.draw()
    def poll(self):
        self.device.poll()
        if self.device.is_press(self.mapping['z']):
            return -1
        elif self.device.is_press(self.mapping['x']):
            return 1
        elif self.device.is_press(self.mapping['c']):
            return 2 
        elif self.device.is_press(self.mapping['START']):
            return 3
        return 0
    def get_next_road(self):
        if len(self.roads_queue) == 0:
            self.roads_queue = self._get_initial_roads_queue()
        return self.roads_queue.pop(0)(0, 0)
    def _get_initial_roads_queue(self):
        roads = [LShapeRoad, TShapeRoad, IShapeRoad, CrossRoad]
        random.shuffle(roads)
        return roads
    def attach_road(self):
        self.current_road.on_attach()
        self.current_road = self.next_road
        self.current_road.point = self.point
        self.next_road = self.get_next_road()