オブジェクト指向っぽくオセロを作る9
- オブジェクト指向っぽくオセロを作る
- オブジェクト指向っぽくオセロを作る2
- オブジェクト指向っぽくオセロを作る3
- オブジェクト指向っぽくオセロを作る4
- オブジェクト指向っぽくオセロを作る5
- オブジェクト指向っぽくオセロを作る6
- オブジェクト指向っぽくオセロを作る7
- オブジェクト指向っぽくオセロを作る8
- オブジェクト指向っぽくオセロを作る10
- オブジェクト指向っぽくオセロを作る(まとめ)
続き。Viewオブジェクトにメッセージを表示するためのメソッドmessageを実装します。画面に文字を表示するということで、DOM要素を操作する必要があります。
htmlをいじる
まずはこのスクリプトを実行するhtmlにメッセージを表示するエリアを作成します。
<div id="othello"> … <div id="message"></div> </div>
このidがmessageのdiv要素中にメッセージを含んだdiv要素を追加していきます。またメッセージの表示件数が多すぎると見難くなるので、メッセージの表示数を5件にしておきましょう。5件を超えると、古いものから削除していきます。
<div id="message"> <div>新しいものほど上にくる</div> <div>メッセージ4</div> <div>メッセージ3</div> <div>メッセージ2</div> <div>メッセージ1</div> </div>
そしてこれを操作するメソッドをViewオブジェクトに追加します。
/** * メッセージを描写するための関数(外部公開) * @str メッセージ * @br 改行するかどうか.改行しない場合はfalse,改行する場合はtrueを渡す.デフォルトではtrueとなる. */ function message(str, br) { if (br == undefined) br = true; var mes_dom = document.getElementById("message"); // memo. メッセージの数. 値を保存するためにmessageオブジェクトのプロパティとして定義 arguments.callee.mes_num = arguments.callee.mes_num || 0; if (br) { //改行する場合 arguments.callee.mes_num++; if (5 < arguments.callee.mes_num) { // メッセージの上限を5とし、それ以上になると古いものから削除 mes_dom.removeChild(mes_dom.lastChild); } //最新のメッセージを一番上に追加 mes_dom.innerHTML = "<div>" + str + "</div>" + mes_dom.innerHTML; } else { //改行しない場合 var recent = mes_dom.firstChild; if (recent) { //最新のメッセージの尻につけたす recent.innerHTML += str; } else { //メッセージが一件もないということなので、改行をtrueにして再帰呼び出し. arguments.callee(str, true); } } } View.message = message; //外部からアクセスできるようにする
使い方は以下のようになります。今までalert()を使っていた部分をviewオブジェクトのmessageメソッドを参照するようにすればokです。
var view = View; view.message("先行は"+turn+"("+turn.getPiece()+")です。"); //先行は御坂美琴(黒)です。 … view.message(turn+"("+piece+")の番");//御坂美琴(黒)の番 … view.message("["+pieceNum + "個]",false); //これは改行しない
これを使うと次のような感じになります。だいぶ見た目がよくなりました。
次回は
コンピューターのプレイヤーを作っていきます。