個人財務 Javaプログラミングの課題:単純なTic-Tac-Toeプログラムへの配列の追加

Javaプログラミングの課題:単純なTic-Tac-Toeプログラムへの配列の追加

ビデオ: Computational Linguistics, by Lucas Freitas 2024

ビデオ: Computational Linguistics, by Lucas Freitas 2024
Anonim

これはJavaプログラミングの課題は、このTic-Tac-Toeシリーズのこれまでの課題に基づいており、実際には2つの配列を使用する能力をテストします。

Javaプログラミングの挑戦:簡単なティック・タック・トゥ・ゲームとJavaプログラミングの課題:簡単なティック・タック・トゥ・プログラムにクラスを追加すると、簡単なチック・タック・トゥ・ゲームをプレイするプログラムを書くことに挑戦します。

ゲームとして、Tic-Tac-Toeは、ゲームの状態を表す配列の使用を叫びます。配列がなければ、ボードの各四角形を表すために別々の変数を使用する必要があります。配列を使用すると、1つの変数を使用して9つのすべての四角形を表すことができます。

<! - 1 - >

このプログラミング課題は簡単です:配列を利用する改良版のプログラムを書く。ソリューションで少なくとも2つのアレイを使用する必要があります。

  1. ボードを表すには配列を使用する必要があります。ほとんどの場合、次のように、9つの要素を持つ1次元配列を使用することになります。

    0 | 1 | 2 --- | --- | --- 3 | 4 | 5 --- | --- | --- 6 | 7 |すなわち、左上の正方形(A1)は配列要素0に格納され、右下の正方形(C3)は配列要素8に格納されます。
    

    <! - 2 - >

    配列を使用して、8つの可能な3-in-a-rowベクトルを表現する必要があります。
  2. この配列を使用して、いずれかのプレーヤーがゲームに勝ったかどうかを判断できます。おそらく、このタスクには2次元配列を使いたいと思うでしょう。配列には8つの3要素配列が格納され、各配列は特定の3行のベクトルの3つのインデックスを表します。

    配列全体には次のデータが含まれます:

    <! - 3 - >

    0 1 2 3 4 5 6 7 8 0 3 6 1 4 7 2 5 8 0 4 8 2 4 6
    このプログラムのもう一つの要件は、あなたが作成するTicTacToeBoardクラスこの課題は、先のチャレンジのために作成したクラスと完全に互換性がなければなりません。つまり、まったく同じメソッドを実装する必要があります。あなたの便宜のために、これらの方法は次の表で繰り返されます。
    

これらのメソッドは、A1やB2などの列の列指定を使用してチック・タック・トゥ・ボードの四角形を参照するため、これらの指定をインデックス番号にマップする必要があります。たとえば、文字列A1がplayAtメソッドに渡された場合、プログラムは配列のインデックス0に再生をマークする必要があります。

TicTacToeBoardクラス

コンストラクター
説明 TicTacToeBoard
すべての四角が空の新しいTicTacToeBoardを作成します。

メソッド
説明 void reset()
各四角形のステータスを空にリセットします。指定されたプレーヤの指定された正方形(A1、A2、A3、B1、B2、B3、C1、C2またはC3)をマークします(Xの場合は1、forの場合は2)。 void playAt O)。 IllegalArgumentException - squareが許容値の1つでなく、playerが1または2でない場合、または指定された四角形が空でない場合
int isGameOver() ゲームが終了したかどうかを判定します。ゲームが終了していない場合は0、Xがゲームに勝った場合は1、Oがゲームに勝った場合は2、ゲームが抽選の場合は3を返します。ゲームの終了条件は次のとおりです。
1:行、列、または対角線にすべてのXが含まれている場合。 2:行、列または対角線にすべてのOが含まれている場合。

3:空の四角形がなく、XもOも勝っていない場合。

int getNextMove()

コンピュータの対戦相手の次の移動を表す整数を返します。この方法は、以下の戦略に従って、良い動きを選択するための基本的な努力をする必要があります。

*中心(正方形のB2)が空の場合は、中央の四角を再生します。 *センターが空ではなく、4つのコーナー(正方形A1、A3、C1、C3)のいずれかが空の場合は、コーナーの1つを演奏します(どちらのコーナーでもかまいません)。

*センターが空でなく、コーナーが空でない場合は、エッジの1つ(A2、B1、B3、またはC2の四角)を再生します。

String toString()

ボードの現在のステータスを表す文字列を返します。この文字列には、この例のように行とセパレーター行を別々のコンソール行に表示する改行文字が含まれています。

O | | O - | - | -

| X |

- | - | -

| X |

さらなる課題として、このバージョンのTicTacToeBoardチャレンジの場合、コンピュータプレーヤーは人間の対戦相手に対してよりインテリジェントな戦略を使用する必要があります。次のようにコンピュータのプレイを決定します。

コンピュータが次のプレイで勝つことができる場合、コンピュータは勝利した広場でプレーする必要があります。人間の対戦相手が次の試合で勝つことが可能である場合、勝者を阻止するために、コンピュータは人間の勝利広場でプレーするべきである。

中央の四角形が利用可能な場合、コンピュータは中央の四角形を取る必要があります。

  1. コーナー四角がある場合は、使用可能なコーナーの1つでコンピュータを再生する必要があります。

  2. コンピュータは利用可能な角の四角で再生する必要があります。

  3. この戦略を実装するには、いずれかのプレーヤーが次の移動で勝つことができるかどうかを判断できるルーチンを開発する必要があることに注意してください。これを行うには、8つの3行ベクトルのそれぞれを調べて、ベクトルに空の1つの正方形が含まれているかどうかを判断し、他の2つの正方形のそれぞれに同じ相手Xは2つ、Oは2つ)。

  4. 空の四角形を表現するには0を使い、Xを表現するには1、Oを表現するには2を使うことができます。しかし、これはかなり複雑な論理を必要とします。これはs1、s2、 s3は、(s1 == 0&s2 == 1&s3 == 1)// Xが可能な、8行3列ベクトルのうちの1つの3つの正方形の内容を含む整数である。 (s2 == 0&s1 == 1&s3 == 1)//(s3 == 0&s1 == 1&s2 == 1)ならば、s2でプレーすることで勝つことができます// s3

  5. で再生するとXが勝つことができるので、ここでヒントを示します。空の四角形、X、Oを表すのに0,1,2を使用する代わりに、素数2,3、および5を代わりに使用します。プレーヤーが与えられたベクトルに勝つことができるかどうかを判断するには、そのベクトルの3つの値を単純に乗算します。結果が18の場合、Xは勝てる(233 = 18)。結果が50の場合、Oは勝つことができます(255 = 50)。

この戦略は、プログラムの以前のバージョンで採用された戦略よりも改善されていますが、それでもまだ完璧な戦略ではありません。さらにチャレンジをしたい場合は、ゲームをunwinnableにし、新しい戦略を実装する方法を工夫するためには、どんな追加の戦略が必要かを検討してください。

この挑戦の解決策は、

ダミー用Javaオールインワン、

4th Edition製品ページの[ダウンロード]タブで見つけることができます。

幸運!

Javaプログラミングの課題:単純なTic-Tac-Toeプログラムへの配列の追加

エディタの選択

Drupalフォーラムの有効化 - ダミー

Drupalフォーラムの有効化 - ダミー

フォーラムはユーザーコミュニティを作成するのに最適です。人々は他者からの援助を得ることができ、あなたのコンテンツに関するフィードバックを提供し、単純に社会化することができます。あなたのDrupalフォーラムは、あなたが望むようにしっかりとまたはゆるやかに制御することができます。フォーラムで許可されているカテゴリを制御できます。フォーラムの例を見るには、Drupal Forumを参照してください。 ...

ドリューパルフレンドリーなウェブホスティング会社 - ダミー

ドリューパルフレンドリーなウェブホスティング会社 - ダミー

ウェブホスティング会社は、あなたがDrupalをインストールし、あなたのサイトをウェブ上に見えるようにするWebサーバー。一部の企業では、Drupalをインストールしたり、ワンクリックでインストールすることができます。あなたがDrupalのインストールをスキップする場合は、次のいずれかのアカウントを取得することを検討してください。

Drupalガーデンサイト構造管理 - ダミー

Drupalガーデンサイト構造管理 - ダミー

Drupal Garden Structureページでは、 、ページ、およびブロックを表示します。このページから制御できる特定の機能、ブロック、およびページには、連絡先フォーム、フォーラム、メーリングリストなどがあります。ブロックで表示される機能をブロックで管理することもできます。

エディタの選択

エグゼクティブとのデータマイニング - ダミー

エグゼクティブとのデータマイニング - ダミー

数字で遊ぶという楽しみのためにデータマイニングに取り掛からない。あなたは行動を望む。あなたは正しいことを見たいと思っています。データからの確かな証拠に基づいてビジネス上の決定を下すことが重要であることを理解しています。しかし、あなたは決定を下す権限を持つ人ではありません。だからあなたは...

ビッグデータガバナンスチャレンジ - ダミー

ビッグデータガバナンスチャレンジ - ダミー

データガバナンスは、大きなデータソースが彼らがどのように管理されているか。従来のデータウェアハウスやリレーショナルデータベース管理の世界では、データ保護の必要性に関するルールをよく理解している可能性があります。たとえば、医療界では、それは...

エディタの選択

エレクトロニクスコンポーネント:赤外線ライトダミーを作成する方法

エレクトロニクスコンポーネント:赤外線ライトダミーを作成する方法

赤外線を電気的に生成するには、赤外線スペクトルで動作する特殊な発光ダイオード(LED)を使用します。赤外線LED(しばしばIR LEDと呼ばれる)は、RadioShackまたは電子部品を販売する他の店で容易に入手できます。 IR LEDは、通常のLEDと似ていますが、光を見ることはできません。

デジタルエレクトロニクス:キット74のDOSコマンド - ダミーの

デジタルエレクトロニクス:キット74のDOSコマンド - ダミーの

を通して、あなたの電子プロジェクトを制御する場合パラレルポートであるKit 74 DOSソフトウェアは、コマンドプロンプトから実行できるRELAY、DELAY、WAITFORの3つのコマンドで構成されています。 RELAYコマンドRELAYコマンドは、1バイトのデータをパラレルポートに送信します。あなたから実行できること - RELAY、DELAY、およびWAITFOR - 8つの出力端子のそれぞれが...

デジタルエレクトロニクス:フリップフロップ回路の種類? - エレクトロニクスではダミー

デジタルエレクトロニクス:フリップフロップ回路の種類? - エレクトロニクスではダミー

、フリップフロップは特殊なタイプのゲートラッチ回路です。フリップフロップにはいくつかの異なるタイプがあります。フリップフロップの最も一般的なタイプは次のとおりです。SRフリップフロップ:SRラッチに似ています。 CLOCK入力に加えて、SRフリップフロップにはSETとRESETという2つの入力があります。 SET入力がHIGHの場合...