def ctrl_enemy(self): # ====== ctrl enemy ====== # # enemy_coreの移動 if pyxel.frame_count >= 2000: self.enemy_core.update( math.sin(self.on / 30) * -30 + 90, (math.cos(self.on / 30)) * -30 + 50) self.on += 1 elif pyxel.frame_count >= 1800 and self.enemy_core.pos.y >= 20 and self.enemy_core.pos.y <= 21: self.enemy_core.update(ENEMY_CORE_NORMAL_X, 20) elif pyxel.frame_count >= 1200: self.enemy_core.update( ENEMY_CORE_NORMAL_X - math.sin(self.oni / 50) * 70, 20 + abs(math.sin(self.oni / 50)) * 50) self.oni += 1 elif pyxel.frame_count >= 1000 and self.enemy_core.pos.y >= 20 and self.enemy_core.pos.y <= 21: self.enemy_core.update(ENEMY_CORE_NORMAL_X, 20) elif pyxel.frame_count >= 800: self.enemy_core.update(ENEMY_CORE_NORMAL_X, 20 + abs(math.sin(self.orioir / 50)) * 50) self.orioir += 1 elif pyxel.frame_count >= 600 and self.enemy_core.pos.x >= 89 and self.enemy_core.pos.x <= 91: self.enemy_core.update(ENEMY_CORE_NORMAL_X, 20) elif pyxel.frame_count >= 270: self.enemy_core.update( ENEMY_CORE_NORMAL_X - math.sin(self.origin_time / 50) * 70, 20) self.origin_time += 1 elif self.for_move_point <= 20 and pyxel.frame_count >= 120: self.enemy_core.update(ENEMY_CORE_NORMAL_X, 20) elif (pyxel.frame_count >= 80) and (self.for_move_point != 20): self.enemy_core.update(ENEMY_CORE_NORMAL_X, self.for_move_point) self.for_move_point = self.for_move_point - 0.5 elif (pyxel.frame_count >= 0): self.enemy_core.update(ENEMY_CORE_NORMAL_X, ENEMY_CORE_NORMAL_Y) # print(self.enemy_core.pos.y) # 周りの匹の敵キャラを実体化 if len(self.Enemies) <= ENEMIS_TOTAL: new_enemy = enemy.Enemy() new_enemy.update( self.enemy_core.pos.x * (math.sin(pyxel.frame_count / 30)), self.enemy_core.pos.y * (math.cos(pyxel.frame_count / 30))) self.Enemies.append(new_enemy) enemy_count = len(self.Enemies) for i in range(enemy_count): # 当たり判定 if ((self.pc.pos.x < self.Enemies[i].pos.x + ENEMY_W) and (self.Enemies[i].pos.x + ENEMY_W < self.pc.pos.x + PC_W) and (self.pc.pos.y < self.Enemies[i].pos.y + ENEMY_H) and (self.Enemies[i].pos.y + ENEMY_H < self.pc.pos.y + PC_H)): self.player_hp -= 1 # パーティクル生成 for i in range(random.randint(3, 5)): new_particle = ptcl.Ptcl(self.pc.pos.x, self.pc.pos.y) self.player_particles.append(new_particle) # enemies動き self.Enemies[i].update( (math.sin(pyxel.frame_count / 30 * i)) * (30 * (math.sin(pyxel.frame_count / 50))) + self.enemy_core.pos.x, (math.cos(pyxel.frame_count / 30 * i)) * (30 * (math.sin(pyxel.frame_count / 50))) + self.enemy_core.pos.y)
def ctrl_ball(self): # ====== ctrl Ball ====== if pyxel.btnp(pyxel.KEY_A) or pyxel.btn(pyxel.GAMEPAD_1_A): new_ball = bullet.Bullet() if self.pc.direction == 3: new_ball.update(self.pc.pos.x + PC_W / 2 - 6, self.pc.pos.y + PC_H / 2, self.pc.vec, new_ball.size, new_ball.color) new_ball.direction = 3 if self.pc.direction == 4: new_ball.update(self.pc.pos.x + PC_W / 2 + 6, self.pc.pos.y + PC_H / 2, self.pc.vec, new_ball.size, new_ball.color) new_ball.direction = 4 if self.pc.direction == 5: new_ball.update(self.pc.pos.x + PC_W / 2, self.pc.pos.y + PC_H / 2 - 6, self.pc.vec, new_ball.size, new_ball.color) new_ball.direction = 5 self.Balls.append(new_ball) ball_count = len(self.Balls) for i in range(ball_count): if 0 < self.Balls[i].pos.x and self.Balls[i].pos.x < WINDOW_W: # Ball update if self.Balls[i].direction == 3: self.Balls[i].update( self.Balls[i].pos.x + self.Balls[i].speed, self.Balls[i].pos.y, self.Balls[i].vec, self.Balls[i].size, self.Balls[i].color) if self.Balls[i].direction == 4: self.Balls[i].update( self.Balls[i].pos.x - self.Balls[i].speed, self.Balls[i].pos.y, self.Balls[i].vec, self.Balls[i].size, self.Balls[i].color) if self.Balls[i].direction == 5: self.Balls[i].update( self.Balls[i].pos.x, self.Balls[i].pos.y - self.Balls[i].speed, self.Balls[i].vec, self.Balls[i].size, self.Balls[i].color) # 当たり判定(敵キャラとボール) enemy_count = len(self.Enemies) for j in range(enemy_count): if ((self.Enemies[j].pos.x < self.Balls[i].pos.x) and (self.Balls[i].pos.x < self.Enemies[j].pos.x + ENEMY_W) and (self.Enemies[j].pos.y < self.Balls[i].pos.y) and (self.Balls[i].pos.y < self.Enemies[j].pos.y + ENEMY_H)): # 消滅(敵インスタンス破棄) # enemyは体力性にする self.enemy_hp -= 1 # パーティクル生成 for i in range(random.randint(3, 5)): new_particle = ptcl.Ptcl(self.Enemies[j].pos.x, self.Enemies[j].pos.y) self.enemy_particles.append(new_particle) # del self.Balls[i] del self.Enemies[j] break else: del self.Balls[i] break