canvas という描画するための HTML 要素が Dashboard の登場を機会に Safari や Firefox などに実装されているので、この canvas を利用したユーザーインターフェイス(UI)を検討しています。マルバツゲーム(○×ゲーム、英語では Tic-Tac-Toe です)の出力を意識して描画している段階です。
Javascriptとcanvasとインターフェイス(4) でマルバツゲームのマスを描き、Javascriptとcanvasとインターフェイス(5)・・・○を描く で○のコマ、Javascriptとcanvasとインターフェイス(6)・・・×を描く で×のコマを座標を指定して描きました。
でもいちいち座標を指定してコマを描くのは面倒です。そこで今回は列と行でマスを指定してそのマスにコマを描くようにしてみます。
列の指定は左から1~3列とし、行の指定は上から1~3行とします。
例えば、「1列・1行」は左列の一番上のコマで、「3列・3行」は右列の一番下のコマです。
コマを描くのに Javascriptとcanvasとインターフェイス(5)・・・○を描く で記述した○のコマを描くルーチン、および Javascriptとcanvasとインターフェイス(6)・・・×を描く で記述した×のコマを描くルーチンを呼び出します。
2列・3行めのマスに×を描いています。
![](https://blogimg.goo.ne.jp/user_image/46/42/1e4e1465247477bcae60b7d967358f0e.png)
座標を復習しておきましょう。
![](https://blogimg.goo.ne.jp/user_image/1a/ab/b8639f7a56fe1bfeaf99e40a4879776c.png)
次回は入力部です。
Javascriptとcanvasとインターフェイス(4) でマルバツゲームのマスを描き、Javascriptとcanvasとインターフェイス(5)・・・○を描く で○のコマ、Javascriptとcanvasとインターフェイス(6)・・・×を描く で×のコマを座標を指定して描きました。
でもいちいち座標を指定してコマを描くのは面倒です。そこで今回は列と行でマスを指定してそのマスにコマを描くようにしてみます。
列の指定は左から1~3列とし、行の指定は上から1~3行とします。
例えば、「1列・1行」は左列の一番上のコマで、「3列・3行」は右列の一番下のコマです。
コマを描くのに Javascriptとcanvasとインターフェイス(5)・・・○を描く で記述した○のコマを描くルーチン、および Javascriptとcanvasとインターフェイス(6)・・・×を描く で記述した×のコマを描くルーチンを呼び出します。
function draw(){
var canvas = document.getElementById('main');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
var sx = 10; //左余白幅
var sy = 10; //上余白幅
var w = 80; //個々のマスの幅
var h = 80; //個々のマスの高さ
drawTable(ctx,sx,sy,w,h); //マスを描く
drawKoma(ctx,sx,sy,w,h,2,3,"x"); //コマを置く
}
}
function drawKoma(tmp,sx,sy,w,h,retu,gyou,koma){
var tx = sx +(retu *w)-w/2;
var ty = sy +(gyou *h)-h/2;
if (koma == "o") {
drawMaru(tmp,tx,ty,w,h);
} else if (koma=="x") {
drawBatu(tmp,tx,ty,w,h);
} else {
alert("error in drawKoma");
}
}
2列・3行めのマスに×を描いています。
![](https://blogimg.goo.ne.jp/user_image/46/42/1e4e1465247477bcae60b7d967358f0e.png)
座標を復習しておきましょう。
![](https://blogimg.goo.ne.jp/user_image/1a/ab/b8639f7a56fe1bfeaf99e40a4879776c.png)
次回は入力部です。