飛んでくるアイテムの種類を増やしたい
理由は、当たったらゲームオーバーになるアイテムを出したいのです
方針
初期化の設定時に種類判別用の変数を増やして動かしていけばなんとかなりそう
アイテムの初期化を修正
randint(0, 1)という種別用の要素を追加
- 0の時は普通のアイテム
- 1の時はダメージアイテム
という風に運用したい
self.fruit = [(i * 60, randint(0, 104), True, randint(0, 1)) for i in range(4)]
アイテムの処理を修正
種別用の変数(ver)を見て、処理を分岐していく
def update_fruit(self, x, y, is_active, ver): #衝突判定(playerとfruitの座標の絶対値から衝突しているか判定している) if is_active and abs(x - self.player_x) < 12 and abs(y - self.player_y) < 12: #種別で分岐 if ver == 0: is_active = False #表示を消す self.score += 10 #scoe加算 pyxel.play(1,0,loop = False) #SE再生(CH 1,SOUND 0,単発再生) elif ver == 1: is_active = False #表示を消す pyxel.play(1,2,loop = False) #SE再生(CH 1,SOUND 0,単発再生) # 左に移動 x -= 2 # 画面外に出たら if x < -40: # 画面反対側に強制移動 x += 240 # y座標はランダム y = randint(0, 104) # 表示flag on is_active = True # 種類再設定(ランダム) ver = randint(0, 1) # 返り値を設定 return (x, y, is_active, ver)
verという変数が追加されている
def update_fruit(self, x, y, is_active, ver):
verで処理を分岐させている
0は今まで表示していたアイテム
1の方でゲームオーバー処理を入れる予定
#種別で分岐 if ver == 0: is_active = False #表示を消す self.score += 10 #scoe加算 pyxel.play(1,0,loop = False) #SE再生(CH 1,SOUND 0,単発再生) elif ver == 1: is_active = False #表示を消す pyxel.play(1,2,loop = False) #SE再生(CH 1,SOUND 0,単発再生)
画面外の処理
再び種別をランダムで決めている
# 種類再設定(ランダム) ver = randint(0, 1)
最後に返り値を追加
# 返り値を設定 return (x, y, is_active, ver)
こんな感じでアイテムの種類を増やせました
次は、ゲームオーバーな画面遷移を追加したいかな