プロジェクト説明資料

電子計算機研究会制作
アクションゲーム
プログラム説明
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!