回復システムの導入

ゲーム内に回復システムを導入しました。マップ上に存在する回復アイテムを広い、それを使用することで体力が回復します。

~今回の内容~


 プレイヤーの隣にリンゴが落ちています。取ってみましょう。


 リンゴの上に重なって...


 spaceキーを押すことでリンゴをとることができます。


 ゲームを進めていくうちに体力とおなかの値が少なくなってきました。このタイミングでリンゴを使ってみます。zボタンを押します。


 リンゴを使用し、体力とおなかの値を回復することができました。体力値がまだ心もとないのでバナナを使います。xボタンを押します。


 バナナを使用し、体力を回復することができました。
 今回はこの一連の流れをプログラミングでどのように作成したのかを解説します。

~プログラムの解説~


 playerオブジェクトのmoveメソッドの一部です。moveメソッドではプレイヤーの操作に関するプログラムが書かれています。
 上記プログラムはその中でプレイヤーがリンゴとバナナの上に重なった時の動きを記述しています。
 566行目の条件式は「プレイヤーがリンゴの上にいるとき」を表しています。
 567,568行目ではプレイヤーの移動先が壁でない場合にプレイヤーを移動させるようにします。
 569~573行目はリンゴを取得するためのプログラムです。keycode32とはspaceキーのことを指し、spaceキーを押したときに取得するための処理が行われます。
 570行目でアイテムを取得したことを表す効果音を鳴らします。
 571行目でプレイヤーがいるマップ上の値を1に書き換えています。マップ上の値は1であれば地面のことを指し、4であればリンゴのことを指しています。この場合、プレイヤーがリンゴと重なっていた時、プレイヤーはマップ上の4の値と重なっています。spaceキーを押してアイテムを取得したことで、アイテムはマップ上から消えるため、地面だけが描画されます。この時、プレイヤーはマップ上の1の値と重なっていることになります。
 572行目では変数ringoの値を1にしています。これにより、プレイヤーがリンゴを持っていることをゲームが認識することができます。



 以上がリンゴを取得するためのプログラムです。575~582行目はバナナを取得するためのプログラムですが、リンゴを取得するためのプログラムと同じであるため、割愛させていただきます。


 またまたplayerオブジェクトのmoveメソッドの一部です。550行目以降のswitch文にボタン操作を追加しました。
 555,556行目にkeycode 88,90を押したときの動作を追加しています。keycode 88 はZボタン、keycode 90 はXボタンを表しています。
 Zボタンを押したら体力回復アイテムを使い、Xボタンを押したらおなかの値を回復するアイテムを使うことができます。



 playerオブジェクトのmovecounterメソッドの一部です。
 497~506行目ではリンゴを使用したときのプログラムを記述しています。主におなかの値を回復することを目的としています。
 498行目の条件式は「リンゴを持っているとき」を表しています。リンゴを持っていないときにZボタンを押しても何も起こらないようになっています。
 499行目ではアイテムを使用したときに効果音を鳴らします。
 500行目では体力を回復します。プレイヤーの現在の体力の値に20を加えます。これにより、体力が20回復させることができます。
 501行目では回復させた体力の値が体力の最大値を超えてしまった場合に体力を最大体力の値にしています。これにより、余分に体力が増えてしまうことを防いでいます。
 502行目ではおなかの値を回復します。プレイヤーの現在のおなかの値に50を加えます。これにより、おなかの値を50回復することができます。
 503行目では回復させたおなかの値が最大値を超えた場合に、おなかの値をおなかの値の最大値にしています。
 504行目ではringoの値を0にしています。これにより、リンゴを使用してプレイヤーが持っていないことをゲームが認識します。また、この使用上ゲーム内でアイテムはそれぞれ1つしか持てないようになっています。

 以上がリンゴを使用した際のプログラムの解説です。507~516行目はバナナを使用した際のプログラムを記述しているのですが、リンゴを使用した際のプログラムと同じですので割愛させていただきます。

~おわり~

 回復アイテムを取得し、使用するまでのプログラムを解説しました。拙い文章になりましたが参考になれば幸いです。

コメント

このブログの人気の投稿

自己紹介と作成するゲームの説明

ランダムにモンスターを出現させる

マップをランダムで生成する