
今オセロゲームを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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
ワード上Shapeの位置情報を統一...
-
多角形の内部かどうか判定する方法
-
3次元空間上の2つの座標から...
-
ダイアログ内コントロールの位...
-
マインクラフト(pc版)で座標...
-
始点、終点の二つの座標と半径...
-
VBで、開いているExcelシートの...
-
任意点を中心とした回転
-
閉図形の座標の配列が右回りか...
-
黒体放射軌跡のxy色度座標への...
-
座標を持った平面範囲に座標を...
-
WM_NCHITTESTの流れ
-
3次元座標上の2直線の交点判...
-
内積を用いた移動する線分と円...
-
抽出した特徴点の座標を取得し...
-
弧の角度から座標を求めるには
-
最小二乗平面
-
ピクチャボックスの座標取得
-
タッチパッドのタッチ座標取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
エクセルで回転する座標の出し方
-
ワード上Shapeの位置情報を統一...
-
始点、終点の二つの座標と半径...
-
閉図形の座標の配列が右回りか...
-
シーケンサー(PLC?)で制...
-
C言語 配列で座標
-
Excel VBA で自在に図形を変化...
-
多角形の内部かどうか判定する方法
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
ダイアログ内コントロールの位...
-
ガウシアンフィルタのCプログラム
-
空間上の二点を結ぶ直線上に任...
-
スクリーン座標からワールド座...
-
回転する矩形同士の当たり判定...
-
PPTのVBA スライド右下端の座...
おすすめ情報