ZerOx4Cの日記だったもの

インポートだけしました

2011年度 学校祭向けゲーム第一弾 「いろあつめ」




いろあつめの詳細情報 : Vector ソフトを探す!


C++とDXライブラリで作った初作品だよ!
第一弾と銘打ってるけど、ガチ制作の方が完成して暇になったから作った手抜きだよ!
まぁ暇つぶしゲーだからやってみてね!

extern宣言分岐についてメモ

最近大学祭向けのゲームを作ってる。
1作目は「C# + SDL.NET + 自作ライブラリ」でやってるだけあってあっという間に先日完成、あとは細かいところを気付いたときに手直しすれば良い感じ。


問題は2作目なんだけど、こちらは大学のサークルに入ってから始めた「C++ + DXライブラリ」なのでなかなか手こずっている。
DXライブラリは使いやすいと思うけど、いかんせんTTSneo→VisualBasicC#とプログラミングをやってきたZerOxにとって、C++のあまりに複雑な(えらくソフトに言ったがようは汚い)文法は痙攣して倒れそうなほど。(ビクンビクン
特にインクルード関連のエラーがゲロ吐きそう。再定義してんじゃねーぞコノヤロー!


サークルのプログラミング講座で龍神録プログラミングの館がオススメされていたが、要するに全部なぞって作るとそのまんま同じものが出来るので、一応多分きっといくつかゲームを作ってきてはいるZerOxにとっては少し物足りない。
・・・というか最後までやってたら時間ねーし!


眠くなってきたので端折る。
第5章で解説されているテクニックを使ってextern宣言を楽しようと思ったら「再定義されています」のエラーで死亡したので色々考えた結果今からメモるコードで解決というわけ。(端折ったなぁ。

#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif


//
// ここでGLOBALにしたいやつをモリモリ宣言
//


// ↑ここまでは龍神録プログラミングの館にて解説されているものそのまんま
// ↓ここが追加
#undef GLOBAL_INSTANCE


こうすると、このヘッダーファイルをどういう順序でインクルードしても最後はGLOBAL_INSTANCEがundefされるので綺麗に動いてくれるようだ。
まぁC++歴4ヶ月程度の素人の言葉なので、ちげーよバーカするときはオブラート100枚くらいで包んでお願いします。おやすみ。

3Dメガネを新しく作ったー

前回と同じ伊達メガネ+赤下敷き+緑下敷きで作ったー。計315円。

写真だと分かりにくいけど前回作った奴はセロハンなのでシワシワになってマキシマムダサい。
今度は下敷きで、しかも貼り付けではなくはめ込んだので強度もカッコ良さもバッチリ!これを付けて歩けばモテるはず!
でも本当は青下敷きで作りたかったなぁ。なんで売ってないのだ・・・。

THE NORTH FACEのリュックを買いました。


黄色にしました。:D


中身も余裕!ラップトップ用のポケット?も付いてます。


携帯ホルダは今まで使ってたTIMBUK2のを使ってます。


ギミックがたくさんあってなかなかいい感じ。
底が破れないようにプラスチック段ボールで何か作ろうと思います。

クラス継承についてのメモ

C#では何も考えずにしていた継承だけど、C++ではprivate継承とかよく分からんものがあるじゃないか。ということでいろいろ実験してみた。実験は学習の基本だね、うん。


これが基本クラス。

class Base {
public:
	void pubf() {
		printf("base public\n");
	}
protected:
	void prof() {
		printf("base protected\n");
	}
private:
	void prif() {
		printf("base private\n");
	}
};

こいつを色々継承してみて挙動を見る。というか基本IDEのエラーを見る。


分かったこと:

  • 派生クラス内での挙動はBase内のアクセス権に従う
  • 外部からのアクセスに対しては、自身の継承時のアクセス権に地ならしされる(protected継承ならprivateはそのまま、publicはprotectedになる)
  • その派生クラスを継承すると、内部からのアクセスは派生先のクラスのアクセス権に従う

なんか分かりにくいな。

  • public継承はC#における継承と同じ。
  • protected継承すると外からのアクセスはprotected以下。
  • private継承すると外からのアクセスは全てprivateに。(つまりアクセス不能
  • private継承したクラスを継承すると、そのクラス内からは親クラスのメンバにアクセス出来ない。


そんな感じか。うげー分かりにく!