- 「シューティングゲームの作り方/自作:自機の機能をまとめる」のご紹介
- 「シューティングゲームの作り方/自作:自機の機能をまとめる」のご紹介
- 「シューティングゲームの作り方/自作」関連ページのご紹介
- シューティングゲーム・関連ページのご紹介
- 歴代名作シューティングゲームのご紹介|まとめ
- 歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
- シューティングゲームの人気シリーズのご紹介
- シューティングゲーム関連ページのご紹介|まとめ
- シューティングゲーム解説ページのご紹介|まとめ
- シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
- シューティングゲーム雑誌/書籍関連のご紹介|まとめ
- 【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
- 【名作RPG】RPGのご紹介│まとめ│
- 【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
- 【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
- TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
- 【TOP】パズルゲームのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
「シューティングゲームの作り方/自作:自機の機能をまとめる」のご紹介
「シューティングゲームの作り方/自作」関連サイトマップのご紹介
「シューティングゲームの作り方/自作」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「シューティングゲームの作り方/自作:自機の機能をまとめる」のご紹介
自機機能の構成を整理する
自機の機能は自機クラス(CMyShip)にまとめることにします。自機クラスは移動物体クラス(CMover)から派生し、移動物体クラスはタスククラス(CTask)から派生しています。
このクラスを使う際には、「new演算子」と「delete演算子」をオーバーロードして、「operator_new関数」と「operator_delete関数」にタスクリストを渡す必要があります。ここでは自機を管理するためのタスクリスト(MyShipList)を指定します。
自機の機能をまとめたクラス
「プログラム4-8:自機のクラス(MyShip.h、MyShip.cpp)」は、自機の機能をまとめたクラスです。自機クラス(CMyShip)は移動物体クラス(CMover)から派生するので、自機クラスのコンストラクタでは、「移動物体クラスのコンストラクタ」を呼び出します。
▼「プログラム4-8:自機のクラス(MyShip.h、MyShip.cpp)」
class CMyShip : publicCMover{ protected: //ロールの角度 floatRoll; public: //new演算子、delete演算子 void*operatornew(size_tt){ returnoperator_new(t,Game->MyShipList); } voidoperatordelete(void*p){ operator_delete(p,Game->MyShipList); } //コンストラクタ CMyShip::CMyShip(floatx,floaty) 00CMover(Game->MyShipList,x,y,MYSHIP_Z),Roll(0) {} //移動、描画 virtualboolMove(); virtualvoidDraw(); };
フレームごとにゲーム全体を進行させる
フレームごとに少しずつ自機や弾などの移動処理を呼び出すことによって、ゲーム全体を進行させます。タスクシステムを使う場合には、タスクリストにあるすべてのタスクを移動(実行)させます。
「プログラム4-9:ゲーム全体の進行(Main.cpp)」は、ゲーム全体を進行させるプログラムです。CTaskIterクラスを使っています。CTaskIterクラスは、タスクリスト上にあるすべてのタスクに対して繰り返し処理を行うためのクラスです。
▼「プログラム4-9:ゲーム全体の進行(Main.cpp)」
//ゲーム全体の動作 //CGameクラスの機能により //このMove関数はフレームごとに呼び出される voidCShtGame::Move(){ } //自機のタスクを動かす MoveTask(MyShipList); //タスクの動作 voidCShtGame::MoveTask(CTaskList*list){ //すべてのタスクについて繰り返す for(CTaskIteri(list);i.HasNext();){ CMover*mover=(CMover*)i.Next(); //タスクのMove関数を呼び出す //Move関数がfalseを返した場合にはタスクを消去する if(!mover->Move())i.Remove(); } }
ゲーム画面の描画
あとはゲーム画面を描画すれば、自機が動いている様子を見ることができます。通常はフレームごとに、ゲーム全体の進行処理に続いて、ゲーム画面の描画処理を行います。
ゲーム画面を考える
ゲームによっては、画面をゲーム用の領域とスコアなどを表示するための領域に分けています。特にPCのディスプレイのような横長の画面で縦スクロールのシューティングゲームを動かす場合に多いようです。今回は、画面左側に正方形のゲーム領域を確保し、残りの領域をスコア領域にしています。
自機タスクの描画
タスクシステムを使う場合には、移動処理と同様に、すべてのタスクについて描画処理を行います。現段階では自機のタスクだけを描画することになります。
「プログラム4-10:ゲーム全体の描画(Main.cpp)」は、ゲーム画面の描画を行うプログラムです。
▼「プログラム4-10:ゲーム全体の描画(Main.cpp)」
//描画 //Chapter2で作成したCGameクラスの機能により(P.20) //画面の描画が必要になったときに呼び出される voidCShtGame::Draw(){ LPDIRECT3DDEVICE9device=Graphics->GetDevice(); //ゲーム領域の初期化 D3DVIEWPORT9viewport; intw,h; w=Graphics->GetWidth(); h=Graphics->GetHeight(); viewport.X=0; viewport.Y=0; viewport.Width=h; viewport.Height=h; viewport.Minz=0; viewport.Maxz=1; } //ゲーム領域を描画対象にする device->SetViewport(&viewport); //ゲーム領域を黒色でクリアする Graphics->Clear(ColBlack); //タスクの描画 DrawTask(MyShipList); //スコア領域の初期化 viewport.X=h; viewport.Width=w-h; //スコア領域を描画対象にする device->SetViewport(&viewport); //スコア領域を紫色でクリアする Graphics->Clear(D3DCOLOR_XRGB(100,50,80)); //スコアや残機といった情報を表示する場合は //ここに処理を追加する } //タスクの描画 //タスクリストに属するすべてのタスクについてDraw関数を呼び出す //ここでは自機の描画に使用する voidCShtGame::DrawTask(CTaskList*list){ for(CTaskIteri(list);i.HasNext();){ ((CMover*)i.Next())->Draw(); } }
自機を動かすプログラムのまとめ
自機を動かすプログラムについてひととおり解説しましたが、いかがでしょうか。単純な機能のわりに、けっこう複雑なプログラムだと感じられるかもしれません。その一方で、事前に作成したライブラリを使用したおかげで、「Win32API」や「DirectX」まわりの煩雑な処理はかなり隠蔽されているのではないかと思います。
いずれにしても、こういったごく単純なプログラムを作るところから、シューティングゲームの制作は始まります。
自機の移動速度や移動範囲を変えてみよう
また、自機の移動に関する定数を変更して、自機の移動速度や移動範囲を変えてみてください。パラメータを変更することで動きがどのように変化するのか、感覚をつかんでおくとゲームの設計がしやすいでしょう。
「シューティングゲームの作り方/自作」関連サイトマップのご紹介
「シューティングゲームの作り方/自作」関連をご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
「シューティングゲームの作り方/自作」関連ページのご紹介
「シューティングゲームの作り方/自作」関連ページをご紹介します。
【STG】シューティングゲーム・サイトマップのご紹介
80年から2000年代のシューティングゲームについてご紹介します。
シューティングゲーム | ゲーム | 中古・新品通販の駿河屋
シューティングゲーム・関連ページのご紹介
シューティングゲーム・関連ページをご紹介します。
歴代名作シューティングゲームのご紹介|まとめ
歴代シューティングゲーム全ゲームタイトル一覧のご紹介|まとめ
シューティングゲームの人気シリーズのご紹介
シューティングゲーム関連ページのご紹介|まとめ
シューティングゲーム解説ページのご紹介|まとめ
シューティングゲーム・ハード関連(周辺機器)のご紹介|まとめ
シューティングゲーム雑誌/書籍関連のご紹介|まとめ
【ゲームジャンル別】サイトマップのご紹介
【ゲームジャンル別】サイトマップをご紹介します。
ゲームジャンル別サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 |
||||
ゲームジャンル別TOP >関連ページ│名作│ランキング | ||||
【ジャンル別関連ページ】 アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【アクション】プラットフォーム│対戦アクション│FPS│TPS│STG│フライト 【アドベンチャー】AVG│ 【RPG】RPG│SRPG│ARPG 【SLG】SLG│ストラテジー│ターン制SLG│RTS 【レース】レース 【スポーツ系】スポーツ│プロレス 【パズル】 【テーブル】麻雀 |
||||
【ジャンル別】おすすめ評価ランキング アクション│AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
【歴代傑作・神ゲー(2021~1996年)】99~94点│93~92点│91点│90点 ■【アクション系ゲーム】■ アクション│プラットフォーム│対戦アクション│FPS│TPS│フライト│ 【対戦アクション】一覧│98~80点│79~70点 【FPS】まとめ│90点以上│89~86点│85~83点│82~80点 【アドベンチャーゲーム】 ■【RPG系】■ RPG│SRPG│ARPG 【RPG】一覧│傑作(96~90点)│89~85点│84~82点│81~80点│ ■【シミュレーション系ゲーム】■ SLG│ストラテジー│ターン制SLG│RTS│街づくりSLG ■【レース】■ ■【スポーツ系ゲーム】■スポーツ│プロレス ■【パズル】 |
||||
シリーズ・テーマ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲームジャンル別・関連ページのご紹介
ゲームジャンル別・関連ページをご紹介します。
【TPS名作・傑作・まとめ】TPS傑作・名作・全ゲームタイトルのご紹介│まとめ│~トゥームレイダー│バイオハザード│アンチャーテッドなど~
【格ゲー・名作】アーケード・家庭用・格闘ゲームのご紹介~名作(173 本)・全タイトル(1462本)のご紹介
【名作STG】シューティングゲームのご紹介
【AVG】アドベンチャーゲームのご紹介│まとめ│
【名作RPG】RPGのご紹介│まとめ│
【TOP:SLG】おすすめ名作シミュレーションゲームのご紹介
【TOP】レースゲーム関連(おすすめ名作・評価ランキン)のご紹介
TOP【おすすめスポーツゲーム】のご紹介~MLB,NBA,NFL,FIFAなど~
【TOP】パズルゲームのご紹介
ゲームTOPサイトマップ
ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介
ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
ジャンル別ゲームタイトルのご紹介│まとめ│
コペンギン・サイトマップ
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
コペンギン関連ページをご紹介します。