前回の質問の続き
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で質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- JavaScript disabled プロパティが表示されない原因が分からない 2 2024/02/10 21:44
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- JavaScript HTMLとJavaScriptで作ったタイマーアプリが正常に動作しない 7 2023/12/15 19:32
- Ruby パイソンプログラミング 2 2022/12/03 18:44
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript HTMLとJavaScriptで作ったタイマーアプリで時間分の設定方法がわからない 2 2023/12/18 18:12
- JavaScript HTMLとJavaScriptで作った表示して検索するWebアプリが正常に動かない 3 2024/01/05 17:48
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
前回の質問の続き function movestart(cx,cy){ id = board[cy]
JavaScript
-
プログラミングの課題がわからないので教えていただきたいです。特にサークル関数を定義した後に呼び出す方
C言語・C++・C#
-
このプログラムに、王手をかけた時に、「王手!」と表示できるようなプログラムを簡単で良いので教えてくだ
JavaScript
-
-
4
プログラミングを教えたいです。そういうSNSないですか?
その他(プログラミング・Web制作)
-
5
どちのほうがすきですか?
C言語・C++・C#
-
6
mallocについて
C言語・C++・C#
-
7
goo は、放置?
HTML・CSS
-
8
コードを書いて下さい( ; ; )写真有り
HTML・CSS
-
9
入力された文字列が、LD22000を、出来る限り正確に判断する正規表現を教えてください。 Paiza
その他(プログラミング・Web制作)
-
10
VBAなくなるの?
Visual Basic(VBA)
-
11
エクセルVBA
Visual Basic(VBA)
-
12
Python、プログラミングについて質問です
C言語・C++・C#
-
13
食材の期限を管理するためにGASを利用しようとしたのですがうまく動作してくれません
JavaScript
-
14
プログラマーに向いている人の特徴や性格は何がありますか?
その他(プログラミング・Web制作)
-
15
javaScriptのコードの修正をお願いします。
JavaScript
-
16
Web画面の文字をVB6で取得したい
Visual Basic(VBA)
-
17
プログラミングについて プログラミングの練習(勉強)ができるようなサイトなどありませんか? あれば教
その他(プログラミング・Web制作)
-
18
CSSを教えて下さい webデザイナーの職業訓練に通うコーディング初心者です。 サイトを作っていまし
HTML・CSS
-
19
指定した演算を実施の結果を表示させるにはどうしたらいいですか?
HTML・CSS
-
20
バッチファイルで以下のようなものは作れますか? ・Microsoft Defenderでウイルススキ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
onclickとonmouseoverを同時に...
-
CSSのID名に配列を使えませんか?
-
jqueryを使って無駄なspanタグ...
-
アンケートサイトを作りたい!...
-
背景色を透明化
-
ダブルクォーテーションが消え...
-
Javascriptで可変のHTMLのID名...
-
getElementByIdの戻り値がnull...
-
IFRAMEの表示/非表示を切り替え...
-
自働生成される<div>タグに連番...
-
[急ぎ] videoタグで埋め込んだm...
-
バッチファイルでカウントアッ...
-
複数画像のランダム複数表示(...
-
透過pngの透明部分以外をクリッ...
-
Flickity で画像にリンクを貼る...
-
html内かscript内で画像出力。...
-
デフォルト非表示にしたい。【t...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
iframe内のリンクが飛ばないの...
-
javascriptテキストBOX色を元に...
-
createElementで作成した要素を...
-
背景色を透明化
-
IFRAMEの表示/非表示を切り替え...
-
console.log結果をhtmlで表示し...
-
removeEventListenerについて
-
表示・非表示のスクリプトで、...
-
読み込んだQRコードをフォーム...
-
jQueryでクリックされた要素のi...
-
removeAttribute()メソッドで削...
-
テキストエリア内の一部の文字...
-
jQueryのアコーディオンメニュ...
-
javascriptでpostした値が取得...
-
テキストボックスに入力された...
-
jQueryでシンプルドラッグドロ...
-
jQueryで同じid属性が複数あっ...
-
自働生成される<div>タグに連番...
-
ページ遷移後のcssプロパティ保持
おすすめ情報