電子計算機研究会制作 アクションゲーム プログラム説明 2014年9月1日 はじめに このプログラムはDXライブラリを使用しています。 DXライブラリの詳しい使いかたについては DXライブラリ置き場 http://homepage2.nifty.com/natupaji/DxLib/ を参照してください。 また、開発環境は VisualStadio C++となっております。 入ってない人は入れておいてください。 開発者のバージョンは2010です。 はじめに2 基本的なC++の言語仕様や、クラス、継承など が分からない人は別途資料を見てください ここでは実行方法と、マップの編集、新しいオ ブジェクトの作成の簡単な説明をします。 後はコメントを読んだり、既にあるクラスを参 考にしながらプログラミングしていってくださ い。 実行方法 Cドライブ直下にDXLib_VCがあることを確認してください なければDXライブラリ置き場からダウンロードして置いてく ださい 実行方法 ホームページからダ ウンロードしたzip ファイルを解凍し て、その中にある VC++Projectを開いて ください 実行方法 デバッグ(D)からデバッグ開 始、もしくは▶で実行できま す。 動作が重い場合はデバッグ開 始の代わりにデバッグなしで 開始すると早くなります (基本はこちらを推奨) ステージ選択をしたらゲーム スタート! 操作方法 ←,→ :移動 A,↑ :ジャンプ S: 押しながらでダッシュ D:攻撃弾発射 旗を取るとゲー ムクリア main文 GameMainクラスのインスタンスを作成して、GameStart関数を呼び出 せばゲームを実行できます。 ChangeWindowModeなどのDXライブラリの関数の詳細が気になる人 は、DXライブラリ置き場を参照。 簡易クラス図 プログラムの簡単な動作の流れ GameMainで実行 Menuでステージの選択を行い MapFactoryがテキストファイルを見ながらMapを生成 GameMainでループを行い FieldがMapをみてオブジェクト(プレイヤーや、敵、アイテム) を生成、動作させる マップ編集 マップについて マップはテキストファイルから読み込むようになっており、これを編集すれ ばマップを作成することができます( map1.txt,map1-1.txt,map2.txt,map21.txt map3.txtが 最初からあります) その数字が何を表しているかはMap.hに列挙型として記述してありま す EMPTY=0,WALL=1と、定義され ている順に増えていきます もし新しい敵やアイテムを 追加する場合は、ここに追 加していく必要があります マップ作成での注意 ● ● ● プレイヤーは1つのみ 幅は特に指定はないが、高さは15。(縦方向のスクロールはな いため) マップテキストのファイル名は 「map1」や「map2」及び 「map1-1」「map1-2」のようにすること ステージ1を選択すると、まずmap1.txtが呼び出され、そのマップ内で次の マップへ行くアイテムを取った場合、map1-1.txtのマップへ移動する。さら にそこでマップ移動アイテムを取った場合map1-2.txtに移動する。 指定されているマップファイルがない場合、エラーが発生するので注意す ること 違うマップテキストを読み込ませる場合 MenuクラスのSelect関数を編集 ここで読み込むマップのファイ ル名を指定している ちなみにここで配列を増やすと、選択肢 を増やすことができます ステージエディター 直接テキストを編集するだけでなく、ステージエディターを使うこ とで視覚的にマップを作成することができます StageEditor2を起動 マップのテキストファイ ルを開く(or新規作成) ボタンが隠れて見えない場合は ウインドウを広げる ボタンで置きたいオブ ジェクトを選択して、 置きたい場所をクリッ ク 敵の作成・変更 新しいオブジェクトの作成手順 1. 敵ならEnemyクラス、アイテムならItemクラ スを継承したクラスを作成 2.Map.hの列挙型に新しく作成したオブジェク トを追加 3.Field.cppのInitialize()関数に新しく作ったオブ ジェクトを生成する処理を追加 手順1 新しくKameをちょっと変化させたKame2という敵クラスを作 成する場合の説明をします ソースファイルフォルダで右ク リックをして、クラスから追加を 選択します。 c++クラスを選択して追加を 押します クラス名に自分が作成す るクラス名を入れます (ここではKame2) 基底クラスに親クラスの 名前(ここではEnemy)をい れます 名前を入れた後に完了を押すと、 ソースファイルフォルダの下にKame2.cpp ヘッダーファイルフォルダの下にKame2.hができています まずはKame2.hから編集していきます。 例として用意してあるKameクラスをみながら、同じようなコードを書いて いってください。(アイテムの場合はCoinをみながら) これで .hのほうは終わりです。次は .cppを編集していきます このようにソースコードを変更します。 これで手順1は完成!。次のスライドで詳細を説明します :Enemy(x,y~ ではEnemyクラスのコンストラクタを呼んでいます。 では、Enemy.hでそれぞれ与えたもの(引数)がどういう意味なのか見てみま しょう ちょっと難しい話になるので、3つめで移動スピード、4つめでジャンプ力、5つめで 体力、6つめのファイルパスを設定していることが分かれば大丈夫です。基本はここを いじってもらうことになると思います ここでは 移動スピード 5、ジャンプ力 0、体力1に設定しました。画像はカメ と同じものを使用。 Kameクラスの移動スピードは2なので、それに比べてけっこう速いはずです。 100とかにしたらたぶん瞬間移動ですね。 次は他の引数について説明します。難しい話になるので、手順2まで飛んでも らっても大丈夫です。 その他の引数説明 (CharacterController) CharacterControllerはキャラクターがどのように動くかをコント ロールするクラスです。 .hファイルで引数の種類が CharacterController*と書いてあった場 合は、CharacterControllerを継承したクラスのインスタンス(newし たもの)を与えれやれば動きます。 最初から用意されているCharacterControllerは4つです。 ・WalkStraightはまっすぐ歩いて、目の前が壁なら反転させるもの となっています。 ・AttackBulletはプレイヤーに向かって弾を発射します(動きませ ん) ・Jumpingは高く飛んだり低く飛んだりしながら、WalkStraightと 同じ動きをします ・PlayerControllerはキーボード入力によってキャラクターを操作し ます。 PlayerクラスはPlayerControllerクラスによってキーボードで動かしてい ますが、WalkStraightを使うことで勝手にまっすぐ進ませることも可能 です。 (逆にKameにPlayerControllerを持たせることでプレイヤーと同じ操作を することも可能) このように new PlayerController をnew WalkStraightに変更させると WalkStraightは目の前が壁なら反転 するだけなので、敵を避けたりしま せんが、自分で新しいControllerを作 れば自動でステージをクリアするこ とも出来るようになります! (現状ではけっこう難しいかも) 勝手に進んだ! Attack Attackではどのように攻撃するかを決めています。ここでは Attackを継承した NoAttackを持たせているので攻撃しようとしてもできませんが、普通の弾を発 射するNormalAttackに切り替えることで弾を飛ばして攻撃できるようになりま す ただし攻撃をしてくるCharacterControllerが必要なので、今回はAttackBulletを 持たせています ほかにも、プレイヤーの方向に飛んでいく弾を発射するAimAttackなどが用意されて います。 手順2 Map.hを編集 ここに新しく作ったオ ブジェクト名を追加 追加後 0から数えていくので、9番目のKAM2 の数字は8になります。これはマップ編 集するときに大事なので覚えておいて ください 手順3 Field.cppの一番上のインクルード文 にKame2.hを追加 Field.cppのInitialize()関数を編集 既にあるcase文を参考にしな がら同じように追加する 追加 後はマップのテキストファイ ルに対応する数字を書けばok!
© Copyright 2025 ExpyDoc