![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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);
}
HTML
<html>
<head>
<meta charset="UTF-8">
<script src ="shogi.js"> </script>
<title>詰将棋</title>
</head>
<body onload="init()">
<canvas id="world"></canvas>
<audio controls src="WavePad_u.mp3" type="audio/mp3">幻想的</audio>
<img src="畳.jpg">
</body>
</html>
教えてください〜
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?e8efa67)
- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
調べると色々出てきてよくわからないのですが
あくまでも例
「王様」を取る(詰みを)判定を行うコード
ゲームの各ターンが終了した後
新しいターンが始まる前 配置
プレイヤーが打った後の盤面を評価し、ゲームが終了したかどうか
(つまり、王が取られたかどうか)を判断する
このコードは、あくまで参考のためで具体的なものではない
def game_loop():
while True:
# プレイヤーのターン
player_move()
# 詰み判定
if is_checkmate():
print("Checkmate! Game over.")
break
# AIのターン
ai_move()
# 詰み判定
if is_checkmate():
print("Checkmate! Game over.")
break
例:player_move()とai_move()はそれぞれプレイヤーとAIが手を打つための関数です
is_checkmate()は詰み判定を行う関数です
各ターンの後に詰み判定を行うこと
ゲームは良いタイミングで終了
動くかどうかはわかりません。
これ以上は、無理です
気合を入れ考えてください
No.3
- 回答日時:
将棋のプログラムで「王様」を取る(詰みを)判定
と考えて
調べた結果:
一例 コードはJavaScriptです
他の言語も同様のロジックです
function isCheckmate(board, kingPosition) {
// boardは現在の盤面を表す2次元配列
// kingPositionは王様の位置を表す{x, y}のオブジェクト
for (let y = 0; y < board.length; y++) {
for (let x = 0; x < board[y].length; x++) {
// 各マスについて、そのマスの駒が敵の駒であれば
if (board[y][x].player !== board[kingPosition.y][kingPosition.x].player) {
// その駒が王様を取れるかどうかをチェック
if (canTakeKing(board, {x, y}, kingPosition)) {
// 王様を取れる駒があれば、詰みである
return true;
}
}
}
}
// どの駒も王様を取れなければ、詰みではない
return false;
}
function canTakeKing(board, piecePosition, kingPosition) {
// piecePositionの駒がkingPositionの王様を取れるかどうかを判定するロジック
// この部分は駒の種類(歩、香、桂、銀、金、角、飛、王)によって異なる
でよいかどうかはわかりませんが
偶々の一例です
もっと簡単なのを考えてください
No.2
- 回答日時:
>音声ファイルが正しく読み込まれない問題:
ファイルパスの問題:
WavePad_u.mp3が正しいパスに存在しているか確認
相対パスを使用の場合:
HTMLファイルからの相対位置が正しいことを確認
ファイル形式の問題:
WavePad_u.mp3が正しいMP3形式であることを確認
ファイルの破損・互換性のないコーデックでエンコードの可能性
ブラウザの問題:
ブラウザがすべての音声形式をサポートしていません
異なるブラウザで試してみる
ブラウザが最新バージョンかどうかの確認
これをしてもダメ場合は、専門家に相談してください
No.1
- 回答日時:
コードを見て言えること:
全体としては問題なさそう
動作させて、エラーメッセージ出ないと
フィードバックを提供できないです
将棋ゲームの一部と考えます:
駒の動きやゲームの進行制御のようです
次の点に注意:
shogi.jsという外部スクリプトで内容や存在を確認
init()関数がページの読み込み時呼びだすようですが
関数の定義が見当たらない
関数の定義はされていますか
画像ファイル畳.jpgと音声ファイルWavePad_u.mp3:
正しく読み込まれるか確認必要です
試して正常に動くか確認してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript HTMLとJavaScriptで作ったタイマーアプリが正常に動作しない 7 2023/12/15 19:32
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- JavaScript disabled プロパティが表示されない原因が分からない 2 2024/02/10 21:44
- JavaScript HTMLとJavaScriptで作ったタイマーアプリで時間分の設定方法がわからない 2 2023/12/18 18:12
- JavaScript HTMLとJavaScriptで作った表示して検索するWebアプリが正常に動かない 3 2024/01/05 17:48
- JavaScript JavaScriptで作ったアプリが正常に動作しない。改善したい。 3 2024/01/06 16:33
- JavaScript javascriptのエラーで質問です。 2 2024/02/03 18:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
前回の質問の続き
-
HTMLタグに複数のクラスを設定...
-
javascriptテキストBOX色を元に...
-
iframe内のリンク文字のマウス...
-
HTMLですCSSです 画像のように...
-
JavaScript で flexslider の画...
-
[jQuery]bxSlider 一番最後と...
-
htmlのstyleのposition:relativ...
-
jspでcssが読み込めない
-
borderがおかしくなる・・・
-
html内にスライドショーを複数設置
-
「画像クリックで音声再生」を ...
-
JavaScriptを外部ファイルにす...
-
クリッカブルマップとインライ...
-
SeesaaブログにBlogPeople (...
-
JSPでの画像ファイル表示
-
画像の重なりの順序を代える方...
-
クリックして変更した画像を他...
-
CSS <div>の入れ子が反映さ...
-
jquery ドロップダウンメニュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
createElementで作成した要素を...
-
読み込んだQRコードをフォーム...
-
console.log結果をhtmlで表示し...
-
iframe内のリンクが飛ばないの...
-
変数内容をHTML内で表示する方法
-
getElementByIdの戻り値がnull...
-
背景色を透明化
-
自働生成される<div>タグに連番...
-
複数のリンク画像を一定時間で...
-
クリックで色変更後に既に変更...
-
removeEventListenerについて
-
IFRAMEの表示/非表示を切り替え...
-
表示・非表示のスクリプトで、...
-
タブで開いてさらにタブ内をア...
-
Jquery 親要素で順番入れ替え
-
HTML id名とjavascript変数名
-
VBScriptでXMLのデータを取得す...
-
[急ぎ] videoタグで埋め込んだm...
おすすめ情報