まよねーず工場

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- --:-- |スポンサー広告  

チームでのゲーム製作

在学校ではチームでのゲーム製作がスタートしているので
プログラム地獄に追われていますセンチャです。

いや、実を言うとまだまだ期間には余裕はあるんですけどね、
早いうちに全部終わらせたほうが後々余裕が持てるので(ステージBGMも作りたいし)
とりあえず今のうちに修羅場ってます!

というわけでとりあえず今回のゲームはシューティング、
過去に4回シューティングのプログラムは組んでいるのでロジックはなんとかなりそうです。
しかし今回のシューティング、障害物出てくるんです…

障害物との当たり判定もあったりするからちょっとばかし考え方も違うのですよ。


DE☆MO☆DA☆I☆JO☆BU!!




そこで以前勉強していたアクションでのプログラムが役に立つわけですね!
勉強しててよかっTA☆ZE



とりあえず現段階の作業では
・ショット実装完了
・マッププログラム実装完了
・レーザー完成
・敵のプログラム完成
・FPS制御完成
・バリアのプログラムも完成
・プレイヤーのプログラムもほぼ完成

あとは画像素材を埋め込んでいくだけって感じです、
あとは移動パターンを増やしていく感じになるのかな。

背景のスクロールとかもきっと今回はマップチップとかではなく、
複数の絵を動かす感じのスクロールになると思うから今のうちに実装しておきましょうかね。


アニメーションやエフェクトプログラム、アイテムも実装すればもうちょっと良い感じになるから
この辺は今週中に終わらせたいです。



今回のプログラムは以前の失敗点をいくつか改善する形式です。

・new,deleteはあまり使わない
個人的にnewでオブジェクトを生成するのはなんか嫌です。
メモリリークしそうで怖いし万が一プレゼン中にこのあたりが原因でストップしたら洒落にならんので
newの使用は控えてます。
でもショットのオブジェクトでは

class Shot{
private:
int n;
ShotData shot_data;
Bullet* bullet;
Vector blVect;
Circle2D bl_data;
public:
/**/ Shot( ShotData shot_data , Vector blVect , Circle2D bl_data )
{
this->shot_data.init( shot_data );
this->blVect.init ( blVect );
this->bl_data.init ( bl_data );

bullet = new Bullet[this->shot_data.BulletMax];
~~~~~~~~~~~~~~~~




みたいな感じで外部から撃てる弾の最大数分のオブジェクトを生成するようにしています。
ショットオブジェクトは自機以外にも敵やボスにも使うのでその都度撃てる弾数を制御すれば楽だしね。



あと今回は以前の失敗点の一つ、データをプログラム内に記述していたというのを改善して外から
データを入れるように徹底しています。
(これが当たり前なのかもしれないけど)
データとプログラムは別々にしています。
データは最終的には外から入れるのでグローバル、
一応苦し紛れにnamespace使ってどれがどこのデータなのかわかりやすいようにしています。





あとは前にコピーコンストラクタで痛い思いをしたので
コンストラクタはあまり使わない方針。
同じ役割を持ったCreateObjectみたいな名前の関数をコールしてデータをセットするようにしています。



個人的にはこのコード、結構好きだったりします。
ただしC++的であるかとかどうかとかオブジェクト指向的であるかとかは別の話



でも結構カプセル化してると思います。



ではでは

スポンサーサイト

2011/04/18 01:16 |未分類COMMENT(0)TRACKBACK(0)  

 | BLOG TOP |  NEXT»»
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。