問題タブ [reversi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
3683 参照

python - リバーシ ゲームの説明書が必要

Pythonでリバーシゲームを書こうとしています。シンプルで優れた使いやすい基本的なアイデアと戦略を教えてください。

少し遠くまで行ったのですが、コード間で立ち往生していて、それもより複雑になっているので、助けていただければ幸いです。かなり単純なはずの部分でやり過ぎたと思います。そう....

0 投票する
9 に答える
2735 参照

code-golf - コードゴルフ:リバーシ

OK、これはかなり手の込んだコード ゴルフ チャレンジです:リバーシ(オセロ) のゲームを実装します。

  • ゲームは、ゲーム ボードの現在の状態を表示し、1 台のコンピューターでプレーヤーが交互に動きを入力できるようにする必要があります。
  • 不正な入力と許可されていない動きはキャッチする必要がありますが、黙って無視することができます。
  • ゲームは、それ以上の動きができなくなったときに終了する必要があります (ボードがいっぱいになるか、どの動きもピースを裏返さないため)。
  • その後、ゲームはどちらが勝ったか、または引き分けかを発表する必要があります。

できるだけ少ない文字でこれを行います。

セッションは次のようになります。

0 投票する
3 に答える
3739 参照

python - 逆にコンピュータの有効な動きのリストを作成する (python)

私はプログラミングに比較的慣れていないので、ここにエレガントなコードがないことを許してください。プログラムは少し複雑になりましたが、終了して結果を確認したいところです。とにかく、この関数では、コンピューターの有効な動きのリストを作成しようとしています。

  • board は 64 の 2 つのアイテム リストのリストで、それぞれがリバーシ ボード上のスポットを表します。
  • player はプレーヤーのピースで、'X' または 'O' のいずれかです (プログラムの前半で決定されます)。
  • コンピューターはコンピューターの部品であり、反対です

最初のステップは、現在空白になっているボード上のすべてのスポットを収集することです (valid_list)。次に、これらの各スポットをループして、隣接するスポットがプレイヤーの駒であるかどうかを確認しようとしています。そうであれば、同じ行 (または列) に別のコンピューターのピースがあるように、すべてのスポットを収集したいと考えています。コードは理にかなっているように見えますが、予期しない結果が得られます。誰かが奇妙な結果 (valid_list1 リスト) の原因を推測できるかどうか疑問に思っています。

0 投票する
1 に答える
14840 参照

c++ - C++ でツリー データ構造を作成するにはどうすればよいですか?

私は友人と一緒に AI メソッドのクラスを受講しており、C++ と OpenGL を使用してオセロとそのための AI をコーディングする最終プロジェクトに協力しています。

これまでのところ、ボードとオセロ エンジンがあります (私は MVC タイプのアプローチを使用しています)。しかし、把握するのが難しいことが 1 つわかっているのは、AI です。

ツリーでアルファベータ枝刈りを使用して、次の動きをすばやく計算する AI を作成する必要があります。

ゲームに関する限り、アルファベータ剪定の概念と、どの正方形が他の正方形よりも価値があるかを検出するアルゴリズム。

ただし、パートナーも私もまだデータ構造クラスを受講していないため、C++ でツリーを適切に作成する方法や、どこから始めればよいかさえわかりません。

だから私の質問は、スタック オーバーフローです: STL を使用せずに C++ で Alpha-Beta Pruning のツリーをすばやく (そして効果的に) 書き始めてトラバースするには、どこから始めればよいでしょうか。(私たちの割り当ては、STL の使用が許可されていないと述べています)。

どんな助けでも大歓迎です、ありがとう!

0 投票する
2 に答える
2747 参照

java - Java Swing を使用してリバーシ GUI の駒を作成する

JPanels を使用して GridLayout でボードを表すリバーシの基本的な GUI を作成しました。ピースが再生された瞬間に、クリックされた四角の色が変わります。変更する代わりに円形のピースを取得しようとしており、背景は同じままです。

かなり調べましたが、これを行う方法が見つからないようですか?

- 編集 -

コンストラクターのコード。ピースが再生されると、Mouse リスナーがボードを更新するだけです

updateBoard 関数

0 投票する
1 に答える
71 参照

java - 距離が 2 を超えるとパスファインディング検索がクラッシュする

課題はリバーシのゲームを作成することです。複数のチップを交換する動きを除いて、動作しています

、その場合、プログラムはクラッシュします。クラッシュは のどこかで発生しisPlayable()ます。

どこが間違っていますか?

0 投票する
2 に答える
3523 参照

python - Othello Alpha-Beta Pruning ひどく遊ぶ python

私は現在、オセロ用の優れた AI を作ろうとしており、Minimax アルゴリズムを使用してそれを実現しました。しかし、α-β プルーニングを使用してさらに深く検索しようとすると、アルゴリズムがひどく機能しているように見えました。Wiki や Berkely.edu などの他のソースで確認しましたが、正しく実装されていると思いますが、まだ問題が見つかりません。

0 投票する
2 に答える
3776 参照

java - オセロで安定した円盤を数える

後でチェス エンジンを実装するためのトレーニングとして、オセロ (リバーシ) エンジンをコーディングしています。安定したピースの数を数えたいのですが、どのようにすればよいのかわかりません。

「エッジ安定」部分は簡単に数えることができますが、他の部分をどのように説明するかはわかりません。ボードを表すために 1 次元配列を使用しています。

それに関するヒントをいただければ幸いです。

0 投票する
4 に答える
830 参照

java - 配列内のすべての位置が「いっぱい」かどうかをすばやく見つける方法はありますか?

長さ 64 の Java 配列 i[] がある場合、配列全体をループする以外に、その配列内のすべての位置が「いっぱい」であるかどうかを調べる簡単な方法はありますか? リバーシ AI を書いていますが、配列全体がいっぱいかどうかを知る必要があります。

0 投票する
1 に答える
2023 参照

java - アルファベータ法の実装が機能しないのはなぜですか?

私はウィキペディアの擬似コードを使用してベースにしています-

これが私のJava実装です-

コードをいくつか修正した後、コードが早期に戻るという問題はなくなりましたが、アルファ版とベータ版が変更されないという問題があります。

何が起こるかを説明します、彼らがうまくいくと仮定します

findMovesBlack()とfindMovesWhite()はどちらも、誰が向きを変えたかに関係なく、どちらのプレーヤーも移動できる可能性のある位置を持つInteger[]配列を返します。Reversiの初期位置の場合、findMovesBlack()は[19、26、37、44]を返します。

findMovesBlack()とfindMovesWhite()の両方の長さが0の場合、allNodesFull()はブール値を返します。

blacknodes()とwhitenodes()は、それぞれ黒ノードまたは白ノードの量を返します。

Node.move(int座標)は、反転および配置された新しい位置を含むString[]配列を返します。私を信じてください、それは正しく動作します。

Node(String []ゲームボード、ブール値の移動プレーヤー)は、検出したパラメーターを使用して新しい位置を設定するだけです。

私はあなたが見る必要があるのはそれだけだと信じています。私はバックエンドからすべてのねじれをアイロンをかけました。