前回はライフゲームの説明をしました。

 今回から実装に入っていこうと思うのですが、その前に前回の記事を読み直していて大切な部分が抜け落ちていたのに気づいたのでここで書いておきます。

 ライフゲームとは、生命の誕生、進化、自然淘汰などをシュミレーションするものなのです。

 はい、とても重要な部分ですね。抜かしてしまって申し訳ありません。


 それでは気を取り直してライフゲームを実装していきましょう!

 開発環境は前回も書いたようにvisual studio2013です。



 さて、まずは今回使っていくDXライブラリでウィンドウの表示をしてみましょう。

 コードは以下の通りです。

 それぞれの関数はコメントの通りです。
 一つ補足するとしたら、3行目のウィンドウのサイズを決める関数の3つ目の引数は何ビット表現まで可能にするかというものです。
 今回だと8ビット表現ですね。そんなに使わないと思いますけどなんとなく…。



 画面描画のイメージとしては

 画面を一枚の紙とみなす→表を表示→裏に次の表示を書き込み→紙をひっくり返す→さっき表だった面のクリアし、次の表示を書き込み

 と、こんな感じです。プログラムで画面操作するときは常に表示してない方(裏)を操作することになるので、裏を操作するという事をはじめに宣言しておかないといけません。と言ってもそれ用の関数を1行書くだけなのですが。


 ではウィンドウに1~10を表示して終わるという簡単なアプリを作ってみましょう。
 コードはこちら

 こんな感じですね。

 GetColorは受けとった3つの値をRGB値に変換し色を返します。今回だとR=200 G=0 B=0ですね。

 DrawFormatString()はx,y,color,表示する文字列を引数にとり、受け取った文字列を指定された座標に描画するというものです。


 それでは次はもっとそれっぽく…
 セル一つずつに50%で生きているか死んでいるかの状態を与え描画するということを10回繰り返すコードを書いてみましょう。

 それがこちら
 

 このコードではrandam_setとwriteという関数を使いましたが、これくらいの処理なら使わなくても問題はありません。
 それぞれの動きはコメントのとおりです。



 さて、ここまでくれば後はライフゲームのルールに則りセルの生き死にの判定だけです!


 …が、それは次回に回しましょう。
 僕が書くの疲れてきたとか全然そういうことではないです。はい。全く。

 もし質問、指摘等あればコメント、またはtwitterでしていただければ幸いです。

 なかなか読みにくいコードだったとは思いますが、読んでいただきありがとうございます。

 それではまた次回。