このプログラムに王様の逃げ道がない(詰み)の状態になった時の、詰みプログラムを追加したい。
誰か教えて〜
var canvas;
var ctx;
var nametbl = [
"玉","飛","角","金","銀","桂","香","歩",
"" ,"竜","馬","" ,"全","圭","杏","と"
];
var x1 = [ 0, 1, 1, 1, 0,-1,-1,-1, 1,-1];
var y1 = [-1,-1, 0, 1, 1, 1, 0,-1,-2,-2];
var movtbl = [
[ 1,1,1,1,1,1,1,1,0,0 ],
[ 2,0,2,0,2,0,2,0,0,0 ],
[ 0,2,0,2,0,2,0,2,0,0 ],
[ 1,1,1,0,1,0,1,1,0,0 ],
[ 1,1,0,1,0,1,0,1,0,0 ],
[ 0,0,0,0,0,0,0,0,1,1 ],
[ 2,0,0,0,0,0,0,0,0,0 ],
[ 1,0,0,0,0,0,0,0,0,0 ],
[ 0,0,0,0,0,0,0,0,0,0 ],
[ 2,1,2,1,2,1,2,1,0,0 ],
[ 1,2,1,2,1,2,1,2,0,0 ],
[ 0,0,0,0,0,0,0,0,0,0 ],
[ 1,1,1,0,1,0,1,1,0,0 ],
[ 1,1,1,0,1,0,1,1,0,0 ],
[ 1,1,1,0,1,0,1,1,0,0 ],
[ 1,1,1,0,1,0,1,1,0,0 ]
];
var setup = [
[ -1, -1, -1, -1, -1, -1, -1, 0, 6 ],
[ -1, -1, -1, -1, -1, 3, 7, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, 7 ],
[ -1, -1, -1, -1, -1, 2, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ]
];
var setup2 = [
[ -1, -1, -1, -1, -1, -1, -1, 1, 1 ],
[ -1, -1, -1, -1, -1, 1, 1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, 1 ],
[ -1, -1, -1, -1, -1, 0, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ],
[ -1, -1, -1, -1, -1, -1, -1, -1, -1 ]
];
var setMochi0 = [ 4, 1];
var setMochi1 = [ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 2, 6, 6, 6, 5, 5, 5, 5,];
var fontcolor = ["black","maroon"];
var boxcolor = ["pink","gray","blue","red"];
var fillcolor = ["pink","Khaki","white","LightPink"];
var psize = 32;
var board = [];
var bw = 17,bh = 11;
var ofsx = 4,ofsy = 1;
var turn = 0;
var startx = -1,starty = -1;
var username = ["ipad","iphone","android"];
var playtbl = ["先手","後手"];
function piece(){
this.id = -1;
this.player = 0;
this.movable = false;
}
function init(){
canvas = document.getElementById("world");
canvas.width = 640;
canvas.height = 400;
ctx = canvas.getContext('2d');
ctx.font = "24px 'Hiragino Mincho ProN', 'ヒラギノ明朝 ProN W3', serif";
user = window.navigator.userAgent.toLowerCase();
for(i=0; i<username.length; i++){
if(user.indexOf(username[i]) > 0)break;
}
if (i > username.length){
document.addEventListener("touchstart", touchstart);
} else {
document.addEventListener("mousedown", mousedown);
}
board = new Array(bh);
for (y=0; y<bh; y++) {
board[y] = new Array(bw);
for (x=0; x<bw; x++) {
board[y][x] = new piece();
}
}
for (y=0; y<9; y++) {
for (x=0; x<9; x++) {
board[ofsy+y][ofsx+x].id = setup[y][x];
board[ofsy+y][ofsx+x].player = setup2[y][x];
}
}
for (i=0; i<setMochi0.length; i++) {
setMochi(setMochi0[i], 0);
}
for (i=0; i<setMochi1.length; i++) {
setMochi(setMochi1[i], 1);
}
redraw();
}
function touchstart(e){
if (e.targetTouches.length == 1){
touch = e.targetTouches[0];
touchpiece(touch.pageX ,touch.pageY);
}
}
文字数制限がある為、続きのソースコードは次の質問に掲載しています。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
「詰み」というのは実際に王を取る一歩手前のこと。
すなわち、コッチの手番において「コッチにはアイテの王を取る選択肢がなく、かつ、コッチが何をやっても、その状態に応じてアイテにはコッチの王を取る選択肢が必ずある」、という状態のことです。それには「王を取る選択肢があるかどうか」を判定すること(これができなければ、即勝利の状況でも王を取る以外のことをやってしまう)、および、backtracking(ある手をやってみてもダメだったから、元に戻って別の手を探索する)を使った先読みが(1手だけですが)必要です。
さて、先読みができさえすれば、(探索がいくら効率の悪いものであっても、めちゃんこ時間は掛かるけれども)いかなる詰将棋も原理的には解ける、ということになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
このプログラムに、王手をかけた時に、「王手!」と表示できるようなプログラムを簡単で良いので教えてくだ
JavaScript
-
プログラミングの課題がわからないので教えていただきたいです。特にサークル関数を定義した後に呼び出す方
C言語・C++・C#
-
前回の質問の続き function mousedown(e){ touchpiece(e.clien
JavaScript
-
-
4
プログラミングを教えたいです。そういうSNSないですか?
その他(プログラミング・Web制作)
-
5
逆コンパイルと逆アセンブルの違いはなんですか
C言語・C++・C#
-
6
前回の質問の続き function movestart(cx,cy){ id = board[cy]
JavaScript
-
7
コードを書いて下さい( ; ; )写真有り
HTML・CSS
-
8
goo は、放置?
HTML・CSS
-
9
mallocについて
C言語・C++・C#
-
10
Python、プログラミングについて質問です
C言語・C++・C#
-
11
次の日本語の意味を教えて下さい
C言語・C++・C#
-
12
プログラマーに向いている人の特徴や性格は何がありますか?
その他(プログラミング・Web制作)
-
13
あんまり考えたくないけど
C言語・C++・C#
-
14
食材の期限を管理するためにGASを利用しようとしたのですがうまく動作してくれません
JavaScript
-
15
プログラミングの雑談がしたいのですがどこで出来ますか?
その他(プログラミング・Web制作)
-
16
Pythonのコードエラーについてです。
その他(プログラミング・Web制作)
-
17
どちのほうがすきですか?
C言語・C++・C#
-
18
プログラミング
その他(プログラミング・Web制作)
-
19
プログラミング ソースコード
その他(プログラミング・Web制作)
-
20
応用情報技術者試験の令和元年秋、午後のプログラムの問題がわからないです。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカルにあるファイルを検索...
-
IEでF12を押さないとjavascriptが…
-
ジェネレーターの作り方
-
ジャバスクリプトで文字列を変...
-
split できりわけたい
-
AjaxでPHPに通信(変数データ)...
-
google apps scriptの終了のさせ方
-
jQueryのアコーディオンメニュ...
-
【西暦等の変換】
-
google maps api ルート線変更
-
初回訪問(アクセス)日時の取...
-
cgiでポーリングして取得したデ...
-
C#OpenCv V4にのエラーに関する...
-
html javascript リンク先アド...
-
jacascriptでサイトにRSSフィー...
-
Google AJAX Feed APIで、ホー...
-
毎日日付の変わるタイミングを...
-
JsでDateオブジェクトの年月日...
-
翌月を取得するGASが分かりません
-
「続きを読む」ボタンを押すと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
食材の期限を管理するためにGAS...
-
google apps scriptの終了のさせ方
-
このプログラムに、王手をかけ...
-
このプログラムに王様の逃げ道...
-
この将棋プログラムに王様ゲッ...
-
ASP.NETのコントロールの値をJa...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
なぜmatchメソッドがエラーにな...
-
ASP.NET MVCでObjectをjsに渡す
-
C#で、ContextMenuStripに動的...
-
html javascript リンク先アド...
-
HTMLで作った時報アプリが動き...
-
翌月を取得するGASが分かりません
-
イラレでナンバリングする方法
-
HTMLにWSHを組み込む
-
gas スプレッドシートがアクテ...
-
getElementByIdでASP.NETのText...
-
APIを使って埋め込んだグーグル...
おすすめ情報