![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
前回の質問の続き
function mousedown(e){
touchpiece(e.clientX ,e.clientY);
}
function touchpiece(tx,ty){
cx = Math.floor((tx-8)/psize);
cy = Math.floor((ty-8)/psize);
if (isinside(cx,cy,0,0,bw,bh)==false)return;
if (startx == -1){
movestart(cx,cy);
} else {
moveend(cx,cy);
startx = -1;
redraw();
}
}
function movestart(cx,cy){
id = board[cy][cx].id;
if(id == -1)return;
player = board[cy][cx].player;
if(player != turn)return;
startx = cx;
starty = cy;
drawpiece(startx,starty,id,player,2)
if (isinside(startx,starty,ofsx,ofsy,9,9) == false){
for (x=ofsx; x<(ofsx+9); x++){
pawn = 0;
for (y=ofsy; y<(ofsy+9); y++){
if(id != 7)break;
id2 = board[y][x].id;
player2 = board[y][x].player;
if((player == player2)&&(id2 == 7)){
pawn++;
}
}
if(pawn > 0)continue;
margin = [ 0,0,0,0,0,2,1,1 ];
flip = 1-(player*2);
y = ofsy+(player*8)+(margin[id]*flip);
while(isinside(x,y,ofsx,ofsy,9,9) == true){
if(board[y][x].id == -1){
drawpiece(x,y,-1,0,3);
board[y][x].movable = true;
}
y += flip;
}
}return;
}
for (dir=0; dir<10; dir++){
x = startx;
y = starty;
flip = 1-(player*2);
while(movtbl[id][dir] > 0){
x += x1[dir];
y += y1[dir]*flip;
if(isinside(x,y,ofsx,ofsy,9,9) == false)break;
id2 = board[y][x].id;
player2 = board[y][x].player;
if((id2 != -1)&&(player == player2))break;
drawpiece(x,y,id2,player2,3);
board[y][x].movable = true;
if(id2 != -1)break;
if(movtbl[id][dir] == 1)break;
}
}
}
function setMochi(id,player){
tx = (1-player)*(bw-3)+1;
ty = (1-player)*(bh-3)+1;
tx1 = (player*2)-1;
ty1 = (player*2)-1;
for (i=0; i<20; i++){
x = tx+(i % 3)*tx1;
y = ty+Math.floor(i/3)*ty1;
//console.log(i, x, y)
if(board[y][x].id == -1)break;
}
board[y][x].id = id & 7;
board[y][x].player = player;
}
function moveend(endx,endy){
if(board[endy][endx].movable == false)return;
id = board[starty][startx].id;
player = board[starty][startx].player;
if (isinside(startx,starty,ofsx,ofsy,9,9) == true){
exist1 = isinside(startx,starty,ofsx,ofsy+6*player,9,3);
exist2 = isinside(endx ,endy ,ofsx,ofsy+6*player,9,3);
if((exist1 == true)||(exist2 == true)){
if((id < 8)&&(nametbl[id | 8] != "")){
if(confirm("成りますか?")){
board[starty][startx].id |= 8;
}
}
}
}
if(board[endy][endx].id != -1){
setMochi(board[endy][endx].id, player);
}
board[endy][endx].id = board[starty][startx].id;
board[endy][endx].player = board[starty][startx].player;
board[starty][startx].id = -1;
turn = 1 - turn;
}
function drawpiece(x,y,id,player,color){
px = x*psize;
py = y*psize;
ctx.fillStyle = boxcolor[color];
ctx.fillRect(px, py, psize, psize);
ctx.fillStyle = fillcolor[color];
ctx.fillRect(px+1, py+1, psize-2, psize-2);
if(id == -1)return;
ctx.fillStyle = fontcolor[(id >> 3)& 1];
if(player){
px = -px-psize;
py = -py-psize;
ctx.rotate(Math.PI);
}
ctx.fillText(nametbl[id], px+4, py+24,300);
if(player)ctx.rotate(Math.PI);
}
function isinside(x,y,ax,ay,w,h){
if((x<ax)||(x>=(ax+w))||(y<ay)||(y>=(ay+h)))return(false);
return(true);
}
function redraw(){
for (y=0; y<bh; y++){
for (x=0; x<bw; x++){
if (isinside(x,y,ofsx,ofsy,9,9))c=1; else c=0;
id = board[y][x].id;
player = board[y][x].player;
drawpiece(x,y,id,player,c);
board[y][x].movable = false;
}
}
ctx.fillStyle = fontcolor[0];
ctx.fillText(playtbl[turn] ,280 ,(1-turn)*318+26,300);
}
教えて〜
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
このプログラムに王様の逃げ道がない(詰み)の状態になった時の、詰みプログラムを追加したい。 誰か教え
JavaScript
-
プログラミングの課題がわからないので教えていただきたいです。特にサークル関数を定義した後に呼び出す方
C言語・C++・C#
-
プログラミングを教えたいです。そういうSNSないですか?
その他(プログラミング・Web制作)
-
-
4
コードを書いて下さい( ; ; )写真有り
HTML・CSS
-
5
どちのほうがすきですか?
C言語・C++・C#
-
6
javaScriptのコードの修正をお願いします。
JavaScript
-
7
バッチファイルで以下のようなものは作れますか? ・Microsoft Defenderでウイルススキ
C言語・C++・C#
-
8
mallocについて
C言語・C++・C#
-
9
goo は、放置?
HTML・CSS
-
10
EXCELの質問です 119から足したり引いたりしたいです E3には「=119+C3+D3」が入って
Excel(エクセル)
-
11
VBの色を変えるにはどうしたらいいですか?
Visual Basic(VBA)
-
12
Pythonのコードエラーについてです。
その他(プログラミング・Web制作)
-
13
あんまり考えたくないけど
C言語・C++・C#
-
14
逆コンパイルと逆アセンブルの違いはなんですか
C言語・C++・C#
-
15
Python、プログラミングについて質問です
C言語・C++・C#
-
16
プログラミングの雑談がしたいのですがどこで出来ますか?
その他(プログラミング・Web制作)
-
17
エクセルVBA
Visual Basic(VBA)
-
18
VBAなくなるの?
Visual Basic(VBA)
-
19
入力された文字列が、LD22000を、出来る限り正確に判断する正規表現を教えてください。 Paiza
その他(プログラミング・Web制作)
-
20
このプログラムに、王手をかけた時に、「王手!」と表示できるようなプログラムを簡単で良いので教えてくだ
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascript ループがうごかない
-
指定したパスが現URLに含まれて...
-
Gif画像のアニメーションが再生...
-
読み込んだQRコードをフォーム...
-
表示・非表示のスクリプトで、...
-
PHPのDOMについて
-
IEの半角スペースの連続とinner...
-
IFRAMEの表示/非表示を切り替え...
-
同一ページ内リンクで、クロス...
-
【jquery】スクロールで背景画...
-
配列で特定キーが同じ値だった...
-
createElementで作成した要素を...
-
外部ページからハッシュタグ(...
-
cssでdisplay:noneを指定した時...
-
jquery ドロップダウンメニュー...
-
チェックボックスに入っている...
-
jqueryのsortableで一部ソート...
-
JavaScriptで変更した属性の元...
-
yahooジオシティーズでのCSS読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
前回の質問の続き
-
javascriptテキストBOX色を元に...
-
createElementで作成した要素を...
-
クリックで色変更後に既に変更...
-
読み込んだQRコードをフォーム...
-
getElementByIdの戻り値がnull...
-
iframe内のリンクが飛ばないの...
-
背景色を透明化
-
removeEventListenerについて
-
jQueryで特定id以外の下にある...
-
jQueryのアコーディオンメニュ...
-
javascriptでオブジェクトの重...
-
removeAttribute()メソッドで削...
-
変数内容をHTML内で表示する方法
-
IFRAMEの表示/非表示を切り替え...
-
表示・非表示のスクリプトで、...
-
タブで開いてさらにタブ内をア...
-
クリックするとテーブルの列の...
-
console.log結果をhtmlで表示し...
おすすめ情報