![見出し画像](https://assets.st-note.com/production/uploads/images/56311713/rectangle_large_type_2_621a5cb5bd73ff957ecba09e227342fd.png?width=1200)
続:pyxelでRPG風のものを作る(10)
今回は敵の種類の追加のみです。いったんここまでで新エリアを解放したβ3バージョンとしてitch.coに載せます。
前回までの進行具合は以下のnoteをご参照ください。
▲魔法を使うタイプの敵を追加。今までは遠距離攻撃をしてくる敵は固定砲台のような奴らばかりでしたが、今回追加したタイプは射線を合わせようとしてきます。
elif self.enemys[e].enemy_v2 == 12:
a = randint(0, 2)
if abs(enemy_pos_y2) <= 8:
if enemy_pos_x2 > 0:
p = 1
q = 9
self.enemys[e].enemy_m = 1
else:
p = 0
q = 9
self.enemys[e].enemy_m = 0
new_enemy = Enemy(self.enemys[e].enemy_x,
self.enemys[e].enemy_y, 112, q)
new_enemy.enemy_m = p
new_enemy.enemy_h = 9
self.enemys.append(new_enemy)
else:
#Check tilemap
if (abs(enemy_pos_x2) < 45 and abs(enemy_pos_y2) < 45):
if abs(enemy_pos_y2) > abs(enemy_pos_x2):
#Move down
if enemy_pos_y2 > 0:
if (40> (pyxel.tilemap(0).get(enemy_pos_x,
enemy_pos_y+1)) < 32):
self.enemys[e].enemy_y = \
self.enemys[e].enemy_y+8
#Move up
else:
if (40> (pyxel.tilemap(0).get(enemy_pos_x,
enemy_pos_y-1)) < 32):
self.enemys[e].enemy_y = \
self.enemys[e].enemy_y-8
else:
#Move right
if enemy_pos_x2 > 0:
if (40> (pyxel.tilemap(0).get(enemy_pos_x+1,
enemy_pos_y)) < 32):
self.enemys[e].enemy_x = \
self.enemys[e].enemy_x + 8
self.enemys[e].enemy_m = 1
#Move left
else:
if (40> (pyxel.tilemap(0).get(enemy_pos_x-1,
enemy_pos_y)) < 32):
self.enemys[e].enemy_x = \
self.enemys[e].enemy_x-8
self.enemys[e].enemy_m = 0
▲コードはこんな感じ。通常のプレイヤーを追ってくるタイプの敵と、遠距離タイプの合わせ技です。プレイヤーのy座標との比較をして1マス以内なら射撃、そうでなければ移動します。
▲大型のボスも追加。攻撃方法は触手と目からの魔法攻撃。
if self.enemys[e].enemy_v2==15 or self.enemys[e].enemy_v2==16:
if (abs(enemy_pos_x2) < 150 and abs(enemy_pos_y2) < 150):
if abs(enemy_pos_x2) > abs(enemy_pos_y2):
#Move right
if enemy_pos_x2 > 0:
a1 = self.enemys[e].enemy_v2
a2 = self.enemys[e].enemy_m
if a1 == 15 and a2 == 0:
nm1 = 128
nm2 = 0
elif a1 == 15 and a2 == 1:
nm1 = 96
nm2 = 1
else:
nm1 = 112
nm2 = 1
new_enemy = Enemy(self.enemys[e].enemy_x,
self.enemys[e].enemy_y, nm1, 17)
new_enemy.enemy_m = nm2
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemys[e].enemy_x = \
self.enemys[e].enemy_x + 8
self.enemys[e].enemy_v2 = 16
self.enemys[e].enemy_m = 1
#Move left
else:
a1 = self.enemys[e].enemy_v2
a2 = self.enemys[e].enemy_m
if a1 == 15 and a2 == 0:
nm1 = 128
nm2 = 1
elif a1 == 15 and a2 == 1:
nm1 = 96
nm2 = 0
else:
nm1 = 112
nm2 = 1
new_enemy = Enemy(self.enemys[e].enemy_x,
self.enemys[e].enemy_y, nm1, 17)
new_enemy.enemy_m = nm2
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemys[e].enemy_x = \
self.enemys[e].enemy_x-8
self.enemys[e].enemy_v2 = 16
self.enemys[e].enemy_m = 0
else:
#Move down
if enemy_pos_y2 > 0:
a1 = self.enemys[e].enemy_v2
a2 = self.enemys[e].enemy_m
if a1 == 16 and a2 == 0:
nm1 = 128
nm2 = 0
elif a1 == 16 and a2 == 1:
nm1 = 128
nm2 = 1
else:
nm1 = 112
nm2 = 0
new_enemy = Enemy(self.enemys[e].enemy_x,
self.enemys[e].enemy_y, nm1, 17)
new_enemy.enemy_m = nm2
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemys[e].enemy_y = \
self.enemys[e].enemy_y+8
self.enemys[e].enemy_v2 = 15
self.enemys[e].enemy_m = 1
#Move up
else:
a1 = self.enemys[e].enemy_v2
a2 = self.enemys[e].enemy_m
if a1 == 16 and a2 == 0:
nm1 = 96
nm2 = 1
elif a1 == 16 and a2 == 1:
nm1 = 96
nm2 = 0
else:
nm1 = 112
nm2 = 0
new_enemy = Enemy(self.enemys[e].enemy_x,
self.enemys[e].enemy_y, nm1, 17)
new_enemy.enemy_m = nm2
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemys[e].enemy_y = \
self.enemys[e].enemy_y-8
self.enemys[e].enemy_v2 = 15
self.enemys[e].enemy_m = 0
if self.enemys[e].enemy_v2 == 17:
pass
if self.enemys[e].enemy_v2 == 18:
if self.e_atk_flug == False:
print(self.e_atk_count)
self.e_atk_count = self.e_atk_count + 1
if self.enemy_ld == False and self.e_atk_count < 4:
new_enemy = Enemy(self.enemys[e].enemy_x,
self.enemys[e].enemy_y + 8,
self.enemys[e].enemy_v, 6)
new_enemy.enemy_m = 1
new_enemy.enemy_h = 6
self.enemys.append(new_enemy)
elif self.e_atk_count > 3:
self.e_atk_flug = True
self.enemy_ld = True
self.e_atk_count = 0
else:
a = randint(1, 3)
if a == 1:
new_enemy = Enemy(4*8, 4*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(11*8, 2*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(3*8, 6*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(12*8, 6*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemy_ld = True
self.e_atk_flug = False
elif a == 2:
new_enemy = Enemy(3*8, 5*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(10*8, 4*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(5*8, 7*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(8*8, 7*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemy_ld = True
self.e_atk_flug = False
elif a == 3:
new_enemy = Enemy(3*8, 2*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(12*8, 5*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(10*8, 4*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
new_enemy = Enemy(2*8, 7*8, 112, 15)
new_enemy.enemy_m = 0
new_enemy.enemy_h = 20
self.enemys.append(new_enemy)
self.enemy_ld = True
self.e_atk_flug = False
▲イカのコード。目は触手の先端を生み出し、触手先端が触手胴体を作りながら進む。
ここまでのもので一旦exeを作り、itch.coに上げました。β3バージョンです。まだまだ完成には程遠いですが、だんだんと進んできました。
コードやpyxresファイル、モジュールファイルはGitHubの方に置いてあります。
ここまで読んでいただきありがとうございました。
ここまで読んでいただきありがとうございます!