def show_message(self, msg, callback=None): w, h = director.get_window_size() self.msg = cocos.text.Label(msg, font_size=52, font_name=consts['view']['font_name'], anchor_y='center', anchor_x='center', width=w, multiline=True, align="center") self.msg.position = (w / 2.0, h) self.add(self.msg) actions = ( ac.Show() + ac.Accelerate(ac.MoveBy((0, -h / 2.0), duration=0.1)) + ac.Delay(1) + ac.Accelerate(ac.MoveBy((0, -h / 2.0), duration=0.1)) + ac.Hide() ) if callback: actions += ac.CallFunc(callback) self.msg.do(actions)
def dice_equal(player, _enemy): if player.cri_dice == 2: show_message(const.BATTLE_MESSAGE['DiceDueceThirdTime']) player.cri_dice = 0 player.hp = player.hp / 2 _enemy.hp = _enemy.hp / 2 if player.hp < 1: player.hp = 1 if _enemy.hp < 1: _enemy.hp = 1 materials.sprites['strike'].visible = True materials.sprites['strike'].position = 400, 234 materials.sprites['strike'].image = (const.image_from_file( const.EXPLODE_IMG_FILE, const.GUI_ZIP_FILE)) materials.sprites['strike'].do( actions.MoveBy((0, 100), 1.3) + actions.MoveBy((0, -100), 1.3) + actions.FadeOut(0.5)) battle.show_hp_change(player, _enemy, 2, 0 - int(player.hp / 2), 0 - int(_enemy.hp / 2)) enemy.show_enemy(_enemy) elif player.cri_dice == 1: show_message(const.BATTLE_MESSAGE['DiceDueceTwice']) elif player.cri_dice == 0: show_message(const.BATTLE_MESSAGE['DiceDuece']) player.cri_dice += 1
def __init__(self, pos, travel_path, enemy): super(Shoot, self).__init__('shoot.png', position=pos) # move from turret's position to tank's position, # hit the target, and self destruct self.do( ac.MoveBy(travel_path, 0.1) + ac.CallFunc(self.kill) + ac.CallFunc(enemy.hit))
def add_asteroids(self): aster1Image = pyglet.resource.image('asteroid.png') aster1Position = (150, 550) aster1Velocity = (0, 1000) aster2Image = pyglet.resource.image('asteroid_2.png') aster2Position = (200, 500) aster2Velocity = (100, 25) self.asteroid1 = Asteroid(aster1Image, aster1Position) self.asteroid2 = Asteroid(aster2Image, aster2Position) self.add(self.asteroid1) self.add(self.asteroid2) self.asteroid1.do(actions.MoveBy((0, -600), 4)) self.asteroid2.do(actions.MoveBy((100, -600), 8))
def start(self): self.do(SpriteStepAction()) self.do(cocos.actions.Delay(1.1)+\ cocos.actions.CallFuncS(FireBall.markForDeath)) if self.isleft and self.isup == False: self.image = pyglet.image.Animation.from_image_sequence( FireBall.kamehamehaL, .2, loop=False) self.do(actions.MoveBy((-300, 0), 1)) elif self.isleft == False and self.isup == False: self.image = pyglet.image.Animation.from_image_sequence( FireBall.kamehamehaR, .2, loop=False) self.do(actions.MoveBy((300, 0), 1)) elif self.isup == True: self.do(actions.MoveBy((0, 300), 1)) self.image = pyglet.image.Animation.from_image_sequence( FireBall.kamehamehaR, .2, loop=False) self.rotation = -89
def mouse_move_on(self): """The card is selected (move mouse on it).""" self._orig_z_order, z_list = self._find_myself() # Put myself at last. del self.parent.children[self._orig_z_order[0]] self.parent.children.append((max(z_list) + 1, self)) # Scale up and move to center # todo: change hard code here to calculate by align the new top/bottom and window top/bottom. self._move_actions = actions.ScaleBy(2.2, 0.3) | actions.MoveBy( (0, (Height // 2 - self.y) * 0.36), 0) if self.x < self.width: self._move_actions = self._move_actions | actions.MoveBy( (self.width * 0.6, 0), 0) self.do(self._move_actions)
def show_hp_increase(_player, _regen=0, _absorb=0): # the hp regen/absorb visual effect if _regen: _label = materials.front_layer.labels['player_hp_regen_label'] _label.element.color = const.GREEN_COLOR _label.element.text = '+ ' + str(_regen) _label.visible = True _label.do(actions.MoveBy((0, 60), 0.5) + actions.FadeOut(0.3) + actions.MoveBy((0, -60), 0.2)) return None if _absorb: _label = materials.front_layer.labels['player_hp_absorb_label'] _label.element.color = const.GREEN_COLOR _label.element.text = '+ ' + str(int(_absorb)) _label.visible = True _label.do(actions.JumpBy((50,30),35,1,0.7) + actions.FadeOut(0.3) + actions.MoveBy((-50,-30),0.3)) return None
def __init__(self): super().__init__() self.gameGrid = [[0 for x in range(32)] for x in range(18)] self.startTile = [8, 0] self.endTile = [9, 31] self.movePath = actions.MoveBy((0, 0)) self._display_hud() self._load_backgorund() self.on_build_path(30, 510) self.on_build_path(1890, 570)
def generate_asteroids(self): if (len(self.asteroid_list) < 1): asterImage = pyglet.resource.image('asteroid.png') asterPos = (150, 450) asterVel = (0, 0) self.asteroid_dict[self.asteroid_count] = Asteroid( asterImage, asterPos) self.add(self.asteroid_dict[self.asteroid_count]) self.asteroid_list.add(self.asteroid_dict[self.asteroid_count]) self.asteroid_dict[self.asteroid_count].do( actions.MoveBy((0, -600), 4)) self.asteroid_count += 1
def step(self, dt): if self.alive and not self.hit and self.isjump == False: if self.ismoveleft == False and self.ismoveright == False: self.image = Player.gokugrid[3, 0] elif self.ismoveleft == True and self.ismoveright == False: self.do(actions.MoveBy((-7, 0), .05)) elif self.ismoveright == True and self.ismoveleft == False: self.do(actions.MoveBy((7, 0), .05)) x, y = self.position if x > window_width: self.position = 4, y elif x < 2: self.position = 955, y if not self.alive: self.stop() self.kill() playlayer = self.get_ancestor(Playerlayer) playlayer.playerkilled() self.do( cocos.actions.Delay(4) + cocos.actions.CallFuncS(playlayer.addplayer()))
def create_material(self): # ein neues Material kreieren und ins Lager legen start_pos = self.level_info.start segments = self.level_info.segments delay = self.level_info.beltDelay x = (start_pos[0] + 0.5) * self.cell_size y = (start_pos[1] + 0.5) * self.cell_size + random.randint(-5, 5) # so ist mehr zufall dabei steps = [ac.MoveBy((segment[0] * self.cell_size, segment[1] * self.cell_size), duration=(9*abs(segment[0] + segment[1]) * delay)) for segment in segments] actions = ac.RotateBy(0, 0) for step in steps: actions += step material = Material(x, y, actions, delay) self.add(material) # gamelayer sollte es dazu addieren
def add_asteroids(self): #creating an array that stores the two images for the asteroid sprite asteroid_pics = [ pyglet.resource.image('asteroid.png'), pyglet.resource.image('asteroid_2.png') ] asteroid_x = random.randrange(10, 390) asterPosition = (asteroid_x, 610) asterVelocity = (0, 1000) #RNG for choosing an image when the sprite is created randomPic = random.randrange(0, 1) self.asteroid = Asteroid(asteroid_pics[randomPic], asterPosition) self.add(self.asteroid) #creating a random number for the speed of the asteroid randomAsteroidSpeed = random.randrange(2, 5) self.asteroid.do(actions.MoveBy((0, -700), randomAsteroidSpeed))
def jump(self): jumpheight = 200 jumpwidth = 90 jumptime = .4 if self.isjump == False: self.isjump = True if self.ismoveleft == True: self.do( actions.MoveBy((-jumpwidth, jumpheight), jumptime) + actions.MoveBy((-jumpwidth, -jumpheight), jumptime) + actions.CallFuncS(Player.markjumpfinished)) elif self.ismoveright == True: self.do( actions.MoveBy((jumpwidth, jumpheight), jumptime) + actions.MoveBy((jumpwidth, -jumpheight), jumptime) + actions.CallFuncS(Player.markjumpfinished)) else: self.do( actions.MoveBy((0, jumpheight), jumptime) + actions.MoveBy((0, -jumpheight), jumptime) + actions.CallFuncS(Player.markjumpfinished))
def show_attack(self): '''show the attack action of the player ''' _action = actions.MoveBy((20, 0), 0.1) + actions.MoveBy((-20, 0), 0.1) self.sprite.do(_action)
playerGuns = tuple() playerWeapons = tuple() playerDevices = tuple() playerShields = tuple() playerEngines = tuple() playerReactors = tuple() currents = {'avatarObject': None, 'layerObject': None} adata = { None: None, 'aMove': actions.Move(), 'aDelay01': actions.Delay(0.1), 'aDelay03': actions.Delay(0.3), 'aDelay1': actions.Delay(1), 'aDown5': actions.MoveBy((0, -900), duration=5), 'aDown6': actions.MoveBy((0, -900), duration=6), 'aDown9': actions.MoveBy((0, -900), duration=9), 'aFloat60': actions.MoveBy((0, 60), duration=1), 'aFloat100': actions.MoveBy((0, 100), duration=1) } effectsData = {None: None} ''' HELPERS ''' def rel(xRel, yRel): return int(W * xRel), H - int(H * yRel)
import cocos.director import cocos.scene import cocos.sprite import cocos.layer import cocos.actions as ac class Hit(ac.IntervalAction): def init(self, duration=0.5): self.duration = duration def update(self, t): self.target.color = (255, 255 * t, 255 * t) if __name__ == '__main__': cocos.director.director.init(caption='Actions 101') layer = cocos.layer.Layer() sprite = cocos.sprite.Sprite('tank.png', position=(200, 200)) sprite.do(ac.MoveBy((100, 0), 3) + Hit() + ac.MoveBy((50, 0), 2)) layer.add(sprite) scene = cocos.scene.Scene(layer) cocos.director.director.run(scene)
def move(x, y): cell_size = 32 dur = abs(x + y) * cell_size / 100.0 return ac.MoveBy((x * cell_size, y * cell_size), duration=dur)
def __init__(self, pos, offset, target): super(Shoot, self).__init__('shoot.png', position=pos) self.do( ac.MoveBy(offset, 0.1) + ac.CallFunc(self.kill) + ac.CallFunc(target.hit))
def move(x, y): dur = abs(x + y) / 100.0 return ac.MoveBy((x, y), duration=dur)
def show_attack(self): '''Show the action of enemy's attack (moves left and goes back) ''' _action = actions.MoveBy((-20,0), 0.1) + actions.MoveBy((20,0), 0.1) self.sprite.do(_action)
def show_hp_change(_player=None, _enemy=None, cri_dice=0, _player_dmg=0, _enemy_dmg=0): if _player: _label = materials.front_layer.labels['player_hp_change_label'] if cri_dice==1: _label.element.font_size = 30 _label.element.color = const.ORANGE_COLOR _label.element.text = str(_player_dmg) _label.element.x = 150 _label.element.y = 320 _label.visible = True _label.do(actions.MoveBy((-100,0),0.3) + actions.FadeOut(0.3) + actions.MoveBy((100,0),0.3)) elif cri_dice==0: _label.element.font_size = 26 _label.element.color = const.DEFAULT_COLOR _label.element.text = str(_player_dmg) _label.element.x = 150 _label.element.y = 320 _label.visible = True _label.do(actions.JumpBy((-80,10),35,1,0.7) + actions.FadeOut(0.3) + actions.MoveBy((80,-10),0.3)) elif cri_dice==2: _label.element.font_size = 36 _label.element.color = const.HIGHLIGHT_COLOR _label.element.text = str(_player_dmg) _label.element.x = 150 _label.element.y = 320 _label.visible = True _label.do(actions.MoveBy((-100,0),0.3) + actions.FadeOut(0.3) + actions.MoveBy((100,0),0.3)) if _enemy: _label = materials.front_layer.labels['enemy_hp_change_label'] if cri_dice==1: _label.element.font_size = 30 _label.element.color = const.ORANGE_COLOR _label.element.text = str(_enemy_dmg) _label.element.x = 600 _label.element.y = 320 _label.visible = True _label.do(actions.MoveBy((100,0),0.3) + actions.FadeOut(0.3) + actions.MoveBy((-100,0),0.3)) elif cri_dice==0: _label.element.font_size = 26 _label.element.color = const.DEFAULT_COLOR _label.element.text = str(_enemy_dmg) _label.element.x = 600 _label.element.y = 320 _label.visible = True _label.do(actions.JumpBy((80,10),35,1,0.7) + actions.FadeOut(0.3) + actions.MoveBy((-80,-10),0.3)) elif cri_dice==2: _label.element.font_size = 36 _label.element.color = const.HIGHLIGHT_COLOR _label.element.text = str(_enemy_dmg) _label.element.x = 600 _label.element.y = 320 _label.visible = True _label.do(actions.MoveBy((100,0),0.3) + actions.FadeOut(0.3) + actions.MoveBy((-100,0),0.3)) return None