dポイントプレゼントキャンペーン実施中!

将棋とかチェスでコンピューターと対戦していると、パターンが多くて処理に時間が掛かることがあると思うのですが、
コンピューターが思考しているときのプログラムはどのように動いてるんですか?

1フレームの中で次の一手を考えていたらFPSが著しく下がってしまう気がします。
将棋やチェスにFPSなんか関係ないとしても、思考時間中に他の動作(将棋であれば、投了とか)をすることもできないと不便だと思います。

コンピューターの思考とプレイヤーの操作を分けて処理しているのでしょうか?
1フレーム目はここまで、次のフレームはここまで、というように分けて考えているのでしょうか?
それともこれらは見当違いなのでしょうか?
ご教示お願いします

A 回答 (2件)

結論から言うと、最近のCPU,OSの環境では、並列に実行することのできる、複数の「プロセス」や「スレッド」に「分けて」処理しています。


ご心配されているとおり、長時間の処理中に操作ができないと困るので、ユーザ操作や画面表示を取り扱うGUIスレッドと、長時間掛かる思考ルーチンは別スレッドにするのが一般的だと思います。

"FPS"は"frame per second"のことだと思います。シューティングゲームのような常に画面が更新されるゲームでは、FPSを落とさず滑らかに描画することが大切なので、ご想像のとおり、描画処理を中心にして1フレームごとに処理が完結するようにプログラムが書かれることがあります。しかし、将棋やチェスのようなゲームでは、ユーザとコンピュータのどちらかの手番が進むまでが画面の更新がなかったりするので、プログラムの構造そのものがまったく違います。

なお、マルチプロセスやマルチスレッドが使えないOSで作る場合は、GUIの処理と思考ルーチンを両立させるために、ご想像なさったとおり、思考ルーチンをブツ切りにすることもあります。ブツ切りの仕方はどういうモノを作るかによるのですが、OSが提供するほどのものではないにせよ、ある程度汎用的なオレオレマルチタスクライブラリを作っていた人も多いでしょう。
    • good
    • 0
この回答へのお礼

お礼遅くなって申し訳ありません。

コンピューターの思考とプレイヤーの操作を分けて処理するなんてことが本当に出来るとは思いませんでした!

>プログラムの構造そのものがまったく違います。
2つのプログラムについて調べてどのようにそれぞれのゲームが作られているか見てみるのも面白そうですね。
いずれは自分でも色んな種類のゲームを作ってみたいと思います。

ご回答ありがとうございました。

お礼日時:2015/02/22 17:42

http://d.hatena.ne.jp/LS3600/

ボナンザ の解説です。
けっこう強い将棋ソフトです。
対戦しながら、読んでみたらいかがでしょうか?
    • good
    • 0
この回答へのお礼

思考時間中にも優勢度(評価値?)がコロコロ変化してるみたいですしパターン別で考えてるんですかね…
もうちょっと将棋を参考に考えてみます

ご回答ありがとうございました

お礼日時:2015/02/13 22:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!