狠狠撸

狠狠撸Share a Scribd company logo
Cellの状態切替	
 
くらげノート
Cell ?class	
 
?? 今後の基盤となっています。
ここから少しずつ手直しをしていってます。
?? 基本的にはノート通りにできたのがこのCellクラス。
?? 次のページでは宣言部分を紹介します。
Cell ?class(.h)	
 
まず、マクロでセルの大きさを定義しました。	
	
コンストラクタはデフォルトと引数付きを用
意した。	
	
counterはセルを扱うときに一番重要だった。	
	
int型のメンバ関数たちにはお世話になります。	
	
privateな部分も残しました。	
	
	
	
	
	
固いことは嫌なので次へ。実装です。
Cell ?class(.cpp)1/4	
 
デフォルトコンストラクタは宣言
しないと怒られたので実装しまし
たが、空です。どこで怒られたか
は後ほど。	
	
引数付きです。	
パラメータのexは発音がエックス
だから。要するにxなんです。	
今回はセル一個なので、わざわざ
引数付きにする必要がないですが、
今後のために。	
半分の確率で初期状態が決まりま
す。
Cell ?class(.cpp)2/4	
 
こちらはセルのオブジェクトを
受け取って状態を確認します。	
もし、現在の状態が1なら、	
counterに現在の状態を足します
が、現在の状態が0なら足して
も0なので条件文いりませんね。	
	
そしてcounterの数に応じて次の
状態を計算し、現在の状態を更
新します。	
最後にcounterは0に戻します。
Cell ?class(.cpp)3/4	
 
drawです。	
セルを描く関数。	
calcStateで変更した状態をもとに	
1なら黒、0なら白のセルを描く
ようにします。
Cell ?class(.cpp)4/4	
 
今回はprivateな変数を準
備したので、その値をい
じるには専用の関数が必
要です。	
	
それがこの3つ。	
関数名そのままなので飛
ばします。
testApp(.h)	
 
さきほど紹介したセルクラスのインスタンスを生成します。	
ここから直接引数付きのインストラクタが起動できればよかったのですが、な
ぜかできないので、引数なしで宣言。ここでデフォルトコンストラクタを要求
されました。	
関数restartも宣言しておきます。
testApp(.cpp)1/3	
 
setupは一度しか呼ばれないので、不変の設定をします。	
例えば背景色とかフレームレートです。	
あと初期化としてrestartを呼びます。	
のちほどrestartは説明します。
testApp(.cpp)2/3	
 
setupの後に呼ばれ、その後は、draw-?‐?>update-?‐?>draw…..と無限ループに入り
ます。	
セルの関数、checkStateとcalcStateを呼び状態を計算します。	
checkStateの引数には自分自身を入れています。	
アンパサンド(&)がついていますが、これはポインタ渡しをするのでセルの
アドレスを渡します。
testApp(.cpp)3/3	
 
draw関数です。	
セルは座標(0, ?0)なのでそのままでは円の1/4しか見えません。	
そこで座標(0, ?0)をセルサイズの分だけ移動させます。	
あとは、セルのdraw関数を渡して終わりです。	
	
restart関数はセルの初期化を担当します。	
引数付きコンストラクタに0を渡して初期化します。

More Related Content

セル