2009年8月31日月曜日

定数化の重要性を訴えてみる

「ゲームのプログラミングの上で、知っていると非常に楽になれる」初心者向けの記事です。

例えば、以下のようなコードがあったとします。
(関数Data CreateData(string name)は、引数nameを参照し、そのデータから別のデータを生成してそれを戻り値として返す関数とします)
---------------------------------------
void Main()
{
Data dat1 = null;
Data dat2 = null;
Data dat3 = null;
dat1 = CreateData("hoge.txt");
dat2 = CreateData("hoge.txt");
dat3 = CreateData("hoge.txt");
}
---------------------------------------

(まあ、こんなコードを実際に使う例はないと思いますが…w
ここで、CreateData()の引数となっているhoge.txtの名前が「hoge2.txt」になったとします。このとき、上記の方法だと、hoge.txtとなっている部分全てをhoge2.txtに置き換える、すなわち3回の置換の必要が出てくるわけです。
しかしながら、以下のようにソースコードを書き変えると…

---------------------------------------
void Main()
{
const string data_path = "hoge.txt"

Data dat1 = null;
Data dat2 = null;
Data dat3 = null;
dat1 = CreateData(data_path);
dat2 = CreateData(data_path);
dat3 = CreateData(data_path);
}
---------------------------------------
元となっている定数「data_path」の値を書き変える、すなわち1回の置換だけで、1つ目のソースコードと同様の置換ができるわけです。

マジックナンバーは、いつどのように変わるか予測できないものです。たとえば、仕様変更で画面の大きさを640*480から800*600にしたとき、それに関わる全ての数値を全て置換するには膨大な労力がかかるでしょう。ですが、定数方式をとっていれば、この面倒な置換処理などとは別れられるわけです。

この通り、非常に便利な定数化。使わない手はないでしょう。

---------------------------------------
9/1 AM1:06追記。2つ目のソースのCreateData()の引数が文字列そのままになってました。正しくは「""」を抜いた状態です。(修正済み)
指摘してくださったsle様、ありがとうございましたm(_ _)m

2009年8月30日日曜日

名刺を作ってみました

9月の全ゲ連に向けて、「2週間前の24時間テレビの会場」で購入してきたレザック紙を使った名刺を作ってみました。
色々載ってるのでここでは公開できませんが、割と普通のものに仕上がったのではないかと思います。


最後に告知。全ゲ連が9/13に開催されますので、ゲーム開発をなさっている学生の皆様やゲーム作りに興味のある皆様は是非参加されてみては如何でしょうか?
以下は公式の告知ページへのリンクです。
http://d.hatena.ne.jp/zengeren/20090825/1251192482

2009年8月24日月曜日

【緊急】Delphiを狙うウイルス「Induc」

どうやら、Delphi(しかも私の環境近辺)を狙うウイルス「Induc」の感染事例が多数報告されてきているようです。
今回はDelphi3~7という非常にマイナーそうな開発環境を狙ってきているものなので、実際の損害はそこまで大きくならないと思いますが、これがもし私たちの使っているVC++やVC#で起きたら…考えたくもないですね。

参考までに、下記にソース元のURLを。Delphi3~7あたりを使われている方は見ておいた方がいいかもしれません。
http://internet.watch.impress.co.jp/docs/news/20090821_310087.html

これを受けて、この度、HP移転時に公開する予定の全ての作品に関して、Norton Internet Security 2009においてウイルス検査を行いました。幸いなことに全作品とも感染はしていませんでしたが、今後はより一層ウイルス的な意味でのチェックを強化していかなければならないですね。

2009年8月23日日曜日

Moneto.age++;

void main()
{
Moneto.age++;
}

1つ年を取りました。今後ともどうぞよろしく。

2009年8月22日土曜日

レポート用紙について1行で語ってみる

厚口レポート用紙を切らし、薄口でいろいろ不便な思いをしつつ、1時ちょい前の妙なテンションで書いてみました。

「厚口最強」

------------------------

手書きコーディングでも数学レポートでも同じことが言えそうですが、やっぱり上手に消せないと見栄えがよろしくないんですよねぇ…。
私が現在使っている薄口の用紙だと、稀に消したところに皺が寄ってしまったり、筆圧によっては裏側が凸凹してしまうこともあるのです。
そこで厚口レポート用紙。厚さとしては普通のコピー用紙より若干薄い程度なので、紙に強度があります。なので、皺が寄ったり、裏が酷い凸凹になったり、そういうことがほとんど起きないわけです。まあ価格も若干高くなっていますが気にしない。

しかしながら、厚口は近所の小売店に売っていないという。かなり使いやすいので、是非ともいろいろな店で扱ってもらえるようになってほしいですね。

2009年8月20日木曜日

一応告知

新サーバーアカウント取得しました。1GBあるので、ある程度のファイルの保管はそこでできそうです。
まだファイルを上げていないので、アドレスを公開するのはもう少し先になりそうですが…

さっきのノリで

中学受験の問題とかによく「閏年の定義」を前提知識とする問題があった(ような気がする)ので、ただひたすら「~年はうるう年ですか?」と聞き続ける非常に退屈なプログラムを作ってみることにしました。

ただの悪ノリプログラムなので、明日までには出来上がる…と思います。公開はすると思いますが、それ以前に新しいサーバーがまだ見つかっていないため、公開の時期は未定です。

折角の悪ノリなので、レジストリか何かに情報を登録しておく機能でも作っておきましょうかね。でも邪魔なだけか…w