戦艦ゲームをC++で実装する必要があります。それは人間対コンピュータゲームでしょう。
ゲームの開始時にコンピューターの船を配置することを除いて、すべてが非常に簡単です。コンピュータの船の位置はランダムでなければなりません。しかし、船の配列のセルを(最適に)どのように選択する必要がありますか?
船のランダムな位置を設定し、近隣のセルが空かどうかを確認するコードを作成すると、非常に時間がかかる可能性があります。
何か案は?
スペースが非常に大きいため、常に空きセルを使用できるため、船を配置しようとして失敗することはまったく問題ありません。
船が接触しないようにすることで(敵が船を破壊している場合は敵に無料の情報を提供する可能性があるため)、また、より短い船をわずかに高い確率で配置することで、最適に近い位置を十分に達成できます。端の近く(より大きな船が中央の近くで見つかる可能性が高いという事実を相殺するため)。
各ノードがボード上の正方形へのリンクである、リンクされたリストを使用します。次に、a) ランダムなノードを生成し、b) 船を配置してリストからノードを削除します。配置された船の周りから余分なノードを削除して、その船に余裕を持たせることができます(船が触れたくない;)
コンピューターとコンピューターの場合は、船が互いに隣接しないように、船をボード全体にランダムに配置する必要があります。
ただし、人間を演じているので、もう少し創造的になることができます。それは、人間の傾向を利用して優位に立つことができるゲームのじゃんけんのようなものです。