
今オセロゲームをCで作成中なので、先ほども質問したのですが、
http://hp.vector.co.jp/authors/VA015468/platina/ …
のサイトのminiMax法の実装法ですと最終的な戻り値は評価値ですよね?
一番いい評価値の場所にコマを置くためには結局そのx.y座標が必要だと思うのですが、どこからそのx.y座標を最終的に得るのでしょうか?
ご教授願います
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
突如として割り込んでしまいすみません。
疑問点があるのであれば書籍を参考にするのはいかがでしょう?
>リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) [単行本]
>http://www.amazon.co.jp/%E3%83%AA%E3%83%90%E3%83 …
第3章に探索アルゴリズムとして、ここの部分でMinimaxアルゴリズムをはじめとして複数が紹介がされています。
第4章が評価関数を扱っています。
リバーシの開発を行うのであれば必読と思います。
立ち読みで内容を確認してみてください。
No.3
- 回答日時:
Cじゃないんですが、このページか
Scheme言語(Lisp言語)によるミニマックス法の解説:
http://www.geocities.jp/m_hiroi/func/abcscm43.html
あるいはこのページ
Python言語によるミニマックス法の解説:
http://www.geocities.jp/m_hiroi/light/pyalgo24.h …
が参考になるんじゃないでしょうか。
No.2
- 回答日時:
best を更新するときに「どこに置いたのか」を覚えておく.
この回答への補足
回答ありがとうございます。
bestを更新するときにどこに置いたのかを覚えておくために、仮にxとy座標を覚える変数にそれを代入して、再帰関数で最終的に一番浅い階層の親の座標をコマとして置きたいのですが、どのようにすればいいかわかりません。
下のようにmini_max_x,mini_max_yを関数外で宣言して記憶するようにしたのですが、これでは一番下の階層の子節点の座標が表示されてしまいます。
しかしうまくいくような実装法が考えられませんでしたので、よろしければどのようにすればよいかお教えください。
________if(turn == 先手 && best < val){
__________best= val;
__________mini_max_x = j;
__________mini_max_y = i;
________}
________if(turn == 後手 && best <-val){
__________best= -val;
__________mini_max_x = j;
__________mini_max_y = i;
________}
No.1
- 回答日時:
一般的には「おける場所すべてに総当たり方式でおいてみる」でしょうね。
評価関数の戻り値に評価値、引数に置く場所の座標を与えます。
で、すべての組み合わせの座標を試してみて最大の効果を得られる場所の座標を記録しておきます。
この回答への補足
回答ありがとうございます。質問の仕方が悪かったので訂正します。
今ネットを参考にしつつ自分で作った関数があるのですが、下のようなもので
オセロ盤をxxx[SIZE][SIZE];でSIZE 8と定義してあります。
allDireCheckでは、渡された座標がおくことができるなら置き1を返すという処理をするものです。
この関数内でx,y座標を記憶し最終的に返すとなるとどこにどのように書けばよいかわかりません。
おおまかに教えてくださるとうれしいです。
int Minimax(手番 turn, 先読みの深さ depth){
__int val,best;
__/* 葉の場合、評価値を返す */
__if(depth == 0) return eval();
__best = -1000000;
__for(int i = 0 ; i < SIZE ; i++) {
____for(int j = 0 ; j < SIZE ; j++) {
______if( allDireCheck(turn,j,i) ){
________val = Minimax(次の turn, depth-1);
________if(turn == 先手 && best < val) best= val;
________if(turn == 後手 && best <-val) best=-val;
________盤面を1手戻す;
______}
__return best;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 退職・失業・リストラ 人事評価が最低評価で落ち込んでいます 9 2023/07/06 15:35
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- 中途・キャリア 転職活動における最終面接につきまして 2 2023/05/31 17:16
- 会社・職場 派遣契約で時間精算(時給)で働いているため、有給休暇を取れば、売上が減ってしまいます。 有給休暇での 2 2023/01/05 07:33
- 株式市場・株価 同日中の特定口座内での株式売買における実質損益について 4 2022/06/22 05:18
- 世界情勢 勉強しない日本の大学生と、死に物狂いで勉強するアメリカの大学生。日本が負けて当然の理由ですね^^ 11 2022/10/24 07:09
- 大学・短大 大学一年です。 英語の講義の最終回当日朝に、先生からのメールで「教務課から連絡がありました。成績の評 3 2023/02/01 20:38
- IT・エンジニアリング インフラエンジニア(ネットワークエンジニア)の検証業務について教えてください。 インフラ初心者なので 2 2022/06/26 00:08
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
y=x^2の座標をプロットするプロ...
-
黒体放射軌跡のxy色度座標への...
-
ワード上Shapeの位置情報を統一...
-
3次元空間上の2つの座標から...
-
以下のプログラムは重心を求め...
-
エクセルで回転する座標の出し方
-
VBで円を書いたとき、同じに...
-
緩やかなカーブを表現する
-
2D座標を3D座標に変換する...
-
ダイアログ内コントロールの位...
-
GLで座標を変えて回転させたい
-
2つの座標と角度から交点座標の...
-
変数名のこだわりについて
-
シーケンサー(PLC?)で制...
-
c言語でキーボードから2点の座...
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
コントロールの書式設定で、“コ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルで回転する座標の出し方
-
ダイアログ内コントロールの位...
-
多角形の内部かどうか判定する方法
-
交差する2線分の交点座標の求め方
-
ワード上Shapeの位置情報を統一...
-
C言語 配列で座標
-
閉図形の座標の配列が右回りか...
-
シーケンサー(PLC?)で制...
-
Excel VBA で自在に図形を変化...
-
直線上にある点の座標の求め方
-
エクセルである点からの距離で...
-
OpenCvSharp4による画像判定解...
-
始点、終点の二つの座標と半径...
-
GLで座標を変えて回転させたい
-
ピクチャボックスの座標取得
-
最小二乗平面
-
c言語でキーボードから2点の座...
おすすめ情報