def update(self): # Joypadによるカーソル操作 # 各Joypadについて動きをチェックする for joypad_id in range(len(self.joypads)): # 直近のキー操作から xaxis = self.joypads[joypad_id].get_axis(0) yaxis = self.joypads[joypad_id].get_axis(1) time_now = time.time() if xaxis > 0.9: if (K_RIGHT in self.last_press_key[joypad_id]) and (time_now - self.last_press_key[joypad_id][K_RIGHT] < self.KEY_REPEAT_TIME): continue self.last_press_key[joypad_id][K_RIGHT] = time_now elif xaxis < -0.9: if (K_LEFT in self.last_press_key[joypad_id]) and (time_now - self.last_press_key[joypad_id][K_LEFT] < self.KEY_REPEAT_TIME): continue self.last_press_key[joypad_id][K_LEFT] = time_now elif yaxis > 0.9: if (K_DOWN in self.last_press_key[joypad_id]) and (time_now - self.last_press_key[joypad_id][K_DOWN] < self.KEY_REPEAT_TIME): continue self.last_press_key[joypad_id][K_DOWN] = time_now elif yaxis < -0.9: if (K_UP in self.last_press_key[joypad_id]) and (time_now - self.last_press_key[joypad_id][K_UP] < self.KEY_REPEAT_TIME): continue self.last_press_key[joypad_id][K_UP] = time_now else: pass # キーボードによるカーソル操作 if Key.is_press(K_RETURN): # 設定を反映して戻る Game.get_scene_manager().change_scene('mainmenu') elif Key.is_press(K_BACKSPACE): # 設定を破棄して戻る Game.get_scene_manager().change_scene('mainmenu')
def update(self): self.decide_timer.tick() if self.decide_timer.is_over(): Game.get_scene_manager().change_scene('game', players=self.player_number) self.bgm.fadeout(100) if self.decide_timer.is_active(): return self.bgm.play() for id, joypad in enumerate(self.joypads): xaxis = joypad.get_axis(0) yaxis = joypad.get_axis(1) length = sum(map(lambda x: x * x, list(self.cursor_threshold[id]))) if abs(xaxis) > 0.5: self.cursor_threshold[id][0] += xaxis if not self.cursor_move[id] or abs(length) > 16: self.cursor_sound.play() self.set_cursor_pos(1 if xaxis > 0 else -1, 0) if abs(yaxis) > 0.5: self.cursor_threshold[id][1] += yaxis if not self.cursor_move[id] or abs(length) > 16: self.cursor_sound.play() self.set_cursor_pos(0, 1 if yaxis > 0 else -1) if abs(xaxis) > 0.5 or abs(yaxis) > 0.5: self.cursor_move[id] = True else: self.cursor_move[id] = False self.cursor_threshold[id] = [0, 0] if joypad.is_press(11): self.actions[self.cursor_logical_y][self.cursor_logical_x]()
def ready(self): self.background = Image(u'../resources/image/main/result/background.png') self.gauge1 = Image(u'../resources/image/main/result/gauge1_full.png', x=60, y=160) self.gauge2 = Image(u'../resources/image/main/result/gauge2_full.png', x=60, y=160) self.retry = Button(u'../resources/image/main/result/retry.png', w=180, h=80, x=140, y=460) self.menu = Button(u'../resources/image/main/result/menu.png', w=180, h=80, x=480, y=460) self.minute = Number(0, u'../resources/image/main/result/time.png', x=420, y=306, w=60, h=75) self.second10 = Number(0, u'../resources/image/main/result/time.png', x=540, y=306, w=60, h=75) self.second1 = Number(0, u'../resources/image/main/result/time.png', x=600, y=306, w=60, h=75) self.sprites = OrderedUpdates(self.gauge2, self.gauge1, self.minute, self.second10, self.second1, self.retry, self.menu) self.retry.on_release = lambda : Game.get_scene_manager().change_scene('game',self.stage.bomb, self.stage.cpu) self.menu.on_release = lambda : Game.get_scene_manager().change_scene('title') for button in [self.retry, self.menu]: button.hover_sound = '../resources/sound/on_cursor.wav' button.press_sound = '../resources/sound/selected.wav' self.gauge1.xscale = float(self.navigation.gauge.proportion[0])/100 m, s = self.navigation.timer.convert_time() self.minute.n = m if s < 10: self.second10.n = 0 self.second1.n = s else: self.second10.n = int(str(s)[0]) self.second1.n = int(str(s)[1]) if self.stage.count[0] > self.stage.count[1]: self.sprites.add(Image(u'../resources/image/main/result/win.png', x=80, y=160)) self.sprites.add(Image(u'../resources/image/main/result/lose.png', x=480, y=160)) elif self.stage.count[0] < self.stage.count[1]: self.sprites.add(Image(u'../resources/image/main/result/win.png', x=480, y=160)) self.sprites.add(Image(u'../resources/image/main/result/lose.png', x=80, y=160)) else: self.sprites.add(Image(u'../resources/image/main/result/draw.png', x=280, y=170))
def update(self): self.decide_timer.tick() if self.decide_timer.is_over(): Game.get_scene_manager().change_scene('game', players=self.player_number) self.bgm.fadeout(100) if self.decide_timer.is_active(): return self.bgm.play() for id, joypad in enumerate(self.joypads): xaxis = joypad.get_axis(0) yaxis = joypad.get_axis(1) length = sum(map(lambda x: x*x, list(self.cursor_threshold[id]))) if abs(xaxis) > 0.5: self.cursor_threshold[id][0] += xaxis if not self.cursor_move[id] or abs(length) > 16: self.cursor_sound.play() self.set_cursor_pos(1 if xaxis > 0 else - 1, 0) if abs(yaxis) > 0.5: self.cursor_threshold[id][1] += yaxis if not self.cursor_move[id] or abs(length) > 16: self.cursor_sound.play() self.set_cursor_pos(0, 1 if yaxis > 0 else - 1) if abs(xaxis) > 0.5 or abs(yaxis) > 0.5: self.cursor_move[id] = True else: self.cursor_move[id] = False self.cursor_threshold[id] = [0, 0] if joypad.is_press(11): self.actions[self.cursor_logical_y][self.cursor_logical_x]()
def update(self): self.timer.tick() self.timer.play() if self.timer.is_over() or Mouse.is_press("LEFT") or Key.is_press(K_RETURN): Game.get_scene_manager().change_scene("mainmenu") elif self.timer.now < 60: self.logo.alpha = 255 * self.timer.now / 60 elif 120 < self.timer.now: self.logo.alpha = 255 * (180 - self.timer.now) / 60
def update(self): self.timer.tick() self.timer.play() if self.timer.is_over() or Mouse.is_press('LEFT'): Game.get_scene_manager().change_scene('title') elif self.timer.now < 60: self.logo.alpha = 255*self.timer.now/60 elif 120 < self.timer.now: self.logo.alpha = 255*(180-self.timer.now)/60
def draw(self): update_rect = [] # for x in xrange(settings.STAGE_WIDTH): # for y in xrange(settings.STAGE_HEIGHT): # self._map[x][y].draw() update_rect += self.panels.draw(Game.get_screen()) update_rect += self.unitmng.draw() update_rect += self.players.draw(Game.get_screen()) update_rect += Effect.effects.draw(Game.get_screen()) return update_rect
def update(self): self.timer.tick() self.timer.play() skip = self.mouse.is_press(Mouse.LEFT) for joypad in self.joypads: skip |= joypad.is_press(4) if self.timer.is_over() or skip: Game.get_scene_manager().change_scene('mainmenu') elif self.timer.now < 60: self.logo.alpha = 255 * self.timer.now / 60 elif 120 < self.timer.now: self.logo.alpha = 255 * (180 - self.timer.now) / 60
def update(self): self.timer.tick() self.timer.play() skip = self.mouse.is_press(Mouse.LEFT) for joypad in self.joypads: skip |= joypad.is_press(4) if self.timer.is_over() or skip: Game.get_scene_manager().change_scene('mainmenu') elif self.timer.now < 60: self.logo.alpha = 255*self.timer.now/60 elif 120 < self.timer.now: self.logo.alpha = 255*(180-self.timer.now)/60
def ready(self, *args, **kwargs): self.bgm = BGM(u'../resources/bgm/title_intro.wav', -1, u'../resources/bgm/title_loop.wav') self.player = Image(u'../resources/image/menu/title/player.png', x=410, y=-0) self.logo = Image(u'../resources/image/menu/title/logo.png', x=80, y=-70) self.play = Button(u'../resources/image/menu/title/cpu.png', w=270, h=80, x=110, y=370) self.vs = Button(u'../resources/image/menu/title/2p.png', w=270, h=80, x=420, y=370) self.hard = BombToggle(u'../resources/image/menu/title/hard.png', w=270, h=80, x=110, y=470) self.exit = Button(u'../resources/image/menu/title/exit.png', w=270, h=80, x=420, y=470) self.exit.on_release = lambda: Game.get_scene_manager().exit() self.vs.on_release = lambda: Game.get_scene_manager().change_scene('game', self.hard.bomb, False) self.play.on_release = lambda: Game.get_scene_manager().change_scene('game', self.hard.bomb, True) for button in [self.play, self.vs, self.hard, self.exit]: button.hover_sound = '../resources/sound/on_cursor.wav' button.press_sound = '../resources/sound/selected.wav' self.sprites.add(Image(u'../resources/image/menu/background.png'), self.logo,self.play,self.vs,self.hard,self.exit, self.player ) self.timer = Timer(60) self.timer.play()
def draw(self, surface=Game.get_screen()): #if not self.is_update: return [] dirty_rects = [] for sprite, offset in zip(self.images, self.OFFSET): rect = sprite.get_rect().move(self.x+offset[0], self.y+offset[1]) dirty_rects.append(surface.blit(Image(u'../resources/image/main/background.png').image, rect, rect)) for sprite, offset in zip(self.images, self.OFFSET): dest = sprite.get_rect().move(self.x+offset[0], self.y+offset[1]) dirty_rects.append(surface.blit(sprite, dest)) return dirty_rects
def draw(self, surface=Game.get_screen()): if self.n != self.pre_n: self.pre_n = self.n self._parse() dest = self.image.get_rect().move(self.x, self.y) if self.align == self.TEXTALIGNRIGHT: u"""右揃えに変更する""" dest = dest.move(-self.image.get_width(), 0) elif self.align == self.TEXTALIGNCENTER: u"""中央揃えに変更する""" dest = dest.move(-self.image.get_width()/2, 0) return surface.blit(self.image, dest=dest)
def draw(self, surface=Game.get_screen(), x=None, y=None): u""" x, y : 渡されたとき、その座標に描画。渡されていないときはself.pointを元に算出 """ if not x: self.x = settings.ROOT_POSITION[0] - self.point.y*37 + self.point.x*37 else: self.x = x if not y: self.y = settings.ROOT_POSITION[1] + self.point.x*19 + self.point.y*19 else: self.y = y super(Panel, self).draw(surface)
def ready(self, *args, **kwargs): super(MainMenuScene, self).ready() self.bgm = BGM(u'../resources/music/title.wav', -1) self.cursor_sound = Sound("../resources/sound/cursor.wav") self.decide_sound = Sound('../resources/sound/decide.wav') self.decide_timer = Timer(settings.FPS*2.5) self.num_joypads = JoyPad.get_num_joypads() self.joypads = [] for i in xrange(0, self.num_joypads): self.joypads.append(JoyPad(i)) self.background = Image(os.path.join(self.IMAGE_PATH, "background3.png"), alpha=False) self.logo = Image(os.path.join(self.IMAGE_PATH, "logo.png")) self.config = Image(os.path.join(self.IMAGE_PATH, "config.png"), alpha=False) self.exit = Image(os.path.join(self.IMAGE_PATH, "exit.png"), alpha=False) self.cursor = Image(os.path.join(self.IMAGE_PATH, "cursor.png"), alpha=True) self.cursor_threshold = [[0, 0], ] * self.num_joypads # ジョイスティックを倒したときに、axisがどれくらい倒れたかの総量 self.cursor_move = [False] * self.num_joypads self.load_player_selection(self.num_joypads) self.logo.x = 280; self.logo.y = 20 self.player2.x = 160; self.player2.y = 400 self.player3.x = 380; self.player3.y = 400 self.player4.x = 600; self.player4.y = 400 self.config.x = 380; self.config.y = 460 self.exit.x = 600; self.exit.y = 460 # カーソル位置を初期化 self.options = ((self.player2, self.player3, self.player4), (None, self.config, self.exit)) self.actions = ((lambda:self.start_game(2), # self.player2 lambda:self.start_game(3), # self.player3 lambda:self.start_game(4),)# self.player4 , (lambda:0, # None lambda:Game.get_scene_manager().change_scene('keysetting'), #self.config lambda:sys.exit()) # self.exit ) self.cursor_logical_x = 0; self.cursor_logical_y = 0; self.set_cursor_pos(0, 0) self.sprites.add(self.background) self.sprites.add(self.logo) self.sprites.add(self.player2) self.sprites.add(self.player3) self.sprites.add(self.player4) self.sprites.add(self.config) self.sprites.add(self.exit) self.sprites.add(self.cursor) self.last_press_key = [{}] for dummy in self.joypads: self.last_press_key.append({})
def draw(self, surface=Game.get_screen(), x=None, y=None): u""" x, y : 渡されたとき、その座標に描画。渡されていないときはself.pointを元に算出 """ if not x: self.x = settings.ROOT_POSITION[ 0] - self.point.y * 37 + self.point.x * 37 else: self.x = x if not y: self.y = settings.ROOT_POSITION[ 1] + self.point.x * 19 + self.point.y * 19 else: self.y = y super(Panel, self).draw(surface)
def ready(self, *args, **kwargs): super(MainMenuScene, self).ready() self.joypads = JoyPad().sticks self.logo = Image(os.path.join(self.IMAGE_PATH, "kawaz.png"), alpha=False) self.config = Image(os.path.join(self.IMAGE_PATH, "config.png"), alpha=False) self.exit = Image(os.path.join(self.IMAGE_PATH, "exit.png"), alpha=False) self.cursor = Image(os.path.join(self.IMAGE_PATH, "cursor.png"), alpha=True) self.load_player_selection(len(self.joypads)) self.logo.x = 353; self.logo.y = 260 self.player2.x = 160; self.player2.y = 400 self.player3.x = 380; self.player3.y = 400 self.player4.x = 600; self.player4.y = 400 self.config.x = 380; self.config.y = 460 self.exit.x = 600; self.exit.y = 460 # カーソル位置を初期化 self.menu_options = ((self.player2, self.player3, self.player4), (None, self.config, self.exit)) self.menu_actions = ( (lambda:self.start_game(2), # self.player2 lambda:self.start_game(3), # self.player3 lambda:self.start_game(4),)# self.player4 , (lambda:0, # None lambda:Game.get_scene_manager().change_scene('keysetting'), #self.config lambda:sys.exit()) # self.exit ) self.cursor_logical_x = 0; self.cursor_logical_y = 0; self.set_cursor_pos(0, 0) self.sprites.add(self.logo) self.sprites.add(self.player2) self.sprites.add(self.player3) self.sprites.add(self.player4) self.sprites.add(self.config) self.sprites.add(self.exit) self.sprites.add(self.cursor) self.keysupp = KeySuppressor(self.KEY_REPEAT_TIME)
def draw(self, surface=Game.get_screen()): return surface.blit(self.image, self.image.get_rect().move(self.x, self.y))
def main(): pygame.init() # pygameの初期化 game = Game() game.get_scene_manager().set_scenes({ 'logo':LogoScene(), 'game':GameScene(), 'mainmenu':MainMenuScene(), 'keysetting':KeySettingScene(), }) if settings.DEBUG: game.get_scene_manager().change_scene('game') else: game.get_scene_manager().change_scene('logo') while 1: game._clock.tick(settings.FPS) scene = game.current_scene() if not scene: return game.update() rects = game.draw() pygame.display.update(rects) # 画面を反映 for event in pygame.event.get(): # イベントチェック if event.type == QUIT: return if (event.type == KEYDOWN and event.key == K_ESCAPE): return
def draw(self, surface=Game.get_screen()): self.x = settings.ROOT_POSITION[ 0] - self.point.y * 37 + self.point.x * 37 - self.OFFSET[0] self.y = settings.ROOT_POSITION[ 1] + self.point.x * 19 + self.point.y * 19 - self.OFFSET[1] super(Panel, self).draw(surface)
def draw(self, surface=Game.get_screen()): super(Player, self).draw(surface) self.city.draw()
def draw(self, surface=Game.get_screen()): super(Navigation, self).draw() self.population.draw() self.owner.next_road.draw( x=self.x + self.NEXT_POSITIONS[self.owner.number][0], y=self.y + self.NEXT_POSITIONS[self.owner.number][1])
def main(): pygame.init() # pygameの初期化 game = Game() game.get_scene_manager().set_scenes({ 'logo':LogoScene(), 'game':GameScene(), 'mainmenu':MainMenuScene(), 'keysetting':KeySettingScene(), }) if settings.DEBUG: game.get_scene_manager().change_scene('game') else: game.get_scene_manager().change_scene('logo') while 1: game._clock.tick(settings.FPS) Key.poll() scene = game.current_scene() if not scene: return game.update() rects = game.draw() pygame.display.update(rects) # 画面を反映 for event in pygame.event.get(): # イベントチェック if event.type == QUIT: return if (event.type == KEYDOWN and event.key == K_ESCAPE): return
def draw(self, surface=Game.get_screen()): self.x = settings.ROOT_POSITION[0] - self.point.y*37 + self.point.x*37 - self.OFFSET[0] self.y = settings.ROOT_POSITION[1] + self.point.x*19 + self.point.y*19 - self.OFFSET[1] super(Panel, self).draw(surface)
def main(): pygame.init() # pygameの初期化 game = Game() game.get_scene_manager().set_scenes( {"logo": LogoScene(), "game": GameScene(), "mainmenu": MainMenuScene(), "keysetting": KeySettingScene()} ) if settings.DEBUG: game.get_scene_manager().change_scene("game") else: game.get_scene_manager().change_scene("logo") while 1: game._clock.tick(settings.FPS) scene = game.current_scene() if not scene: return game.update() rects = game.draw() pygame.display.update(rects) # 画面を反映 for event in pygame.event.get(): # イベントチェック if event.type == QUIT: return if event.type == KEYDOWN and event.key == K_ESCAPE: return
def draw(self, surface=Game.get_screen()): super(Navigation, self).draw() self.population.draw() self.owner.next_road.draw(x=self.x+self.NEXT_POSITIONS[self.owner.number][0], y=self.y+self.NEXT_POSITIONS[self.owner.number][1] )
def ready(self, *args, **kwargs): Game.get_screen().fill(self.BACKGROUND)
def ready(self, *args, **kwargs): super(MainMenuScene, self).ready() self.bgm = BGM(u'../resources/music/title.wav', -1) self.cursor_sound = Sound("../resources/sound/cursor.wav") self.decide_sound = Sound('../resources/sound/decide.wav') self.decide_timer = Timer(settings.FPS * 2.5) self.num_joypads = JoyPad.get_num_joypads() self.joypads = [] for i in xrange(0, self.num_joypads): self.joypads.append(JoyPad(i)) self.background = Image(os.path.join(self.IMAGE_PATH, "background3.png"), alpha=False) self.logo = Image(os.path.join(self.IMAGE_PATH, "logo.png")) self.config = Image(os.path.join(self.IMAGE_PATH, "config.png"), alpha=False) self.exit = Image(os.path.join(self.IMAGE_PATH, "exit.png"), alpha=False) self.cursor = Image(os.path.join(self.IMAGE_PATH, "cursor.png"), alpha=True) self.cursor_threshold = [ [0, 0], ] * self.num_joypads # ジョイスティックを倒したときに、axisがどれくらい倒れたかの総量 self.cursor_move = [False] * self.num_joypads self.load_player_selection(self.num_joypads) self.logo.x = 280 self.logo.y = 20 self.player2.x = 160 self.player2.y = 400 self.player3.x = 380 self.player3.y = 400 self.player4.x = 600 self.player4.y = 400 self.config.x = 380 self.config.y = 460 self.exit.x = 600 self.exit.y = 460 # カーソル位置を初期化 self.options = ((self.player2, self.player3, self.player4), (None, self.config, self.exit)) self.actions = ( ( lambda: self.start_game(2), # self.player2 lambda: self.start_game(3), # self.player3 lambda: self.start_game(4), ) # self.player4 , ( lambda: 0, # None lambda: Game.get_scene_manager().change_scene('keysetting' ), #self.config lambda: sys.exit()) # self.exit ) self.cursor_logical_x = 0 self.cursor_logical_y = 0 self.set_cursor_pos(0, 0) self.sprites.add(self.background) self.sprites.add(self.logo) self.sprites.add(self.player2) self.sprites.add(self.player3) self.sprites.add(self.player4) self.sprites.add(self.config) self.sprites.add(self.exit) self.sprites.add(self.cursor) self.last_press_key = [{}] for dummy in self.joypads: self.last_press_key.append({})
def draw(self): if not self.timer.is_update and not self.gauge.is_update: return [] self.timer.draw(self.image) self.gauge.draw(self.image) rects = [Game.get_screen().blit(self.image, self.image.get_rect().move(self.X, self.Y))] return rects
def draw(self, surface=Game.get_screen()): self.background.draw() self.navigation.background.draw(self.navigation.image) self.sprites.draw(Game.get_screen())
def draw(self, surface=Game.get_screen()): if self.n != self.pre_n: self.pre_n = self.n self._parse() dest = self.image.get_rect().move(self.x, self.y) return surface.blit(self.image, dest=dest)
def draw(self, surface=Game.get_screen()): update_rect = [] update_rect += self.sprites.draw(surface) return update_rect
def main(): pygame.mixer.pre_init(44100, -16, 2, 1024*3) pygame.init() # pygameの初期化 game = Game() game.get_scene_manager().set_scenes({'logo':LogoScene(),'game':GameScene(), 'title':TitleScene()}) if settings.DEBUG: game.get_scene_manager().change_scene('game',False,True) else: game.get_scene_manager().change_scene('logo') while 1: game._clock.tick(settings.FPS) Key.poll() scene = game.current_scene() if not scene: return scene.sprites.clear(game.get_screen(), scene.BACKGROUND_SURFACE) game.update() rects = game.draw() pygame.display.update(rects) # 画面を反映 for event in pygame.event.get(): # イベントチェック if event.type == QUIT: return if (event.type == KEYDOWN and event.key == K_ESCAPE): return
def draw(self, surface=Game.get_screen()): x = self.x - 7 y = self.y - 25 #pygame.draw.circle(surface, (255, 0, 0), (self.x, self.y), 3) # ToDo 画像を差し替えたら書き直すからとりあえずハードコーディング return super(Panel, self).draw(surface, dest=pygame.rect.Rect(x, y, settings.PANELSIZE, settings.PANELSIZE))
def draw(self, surface=Game.get_screen()): pygame.draw.rect(surface, self.BACKGROUND, (0, 0, settings.SCREENWIDTH, settings.SCREENHEIGHT)) update_rect = [] update_rect += self.sprites.draw(surface) return update_rect
def draw(self, surface=Game.get_screen()): pass def update(self): pass