0

私は初心者の IT 学生で、プログラミング ロジックとデザイン クラスのプロジェクトを行っています。5 つのサイコロで 2 ロールできるサイコロ ゲームの疑似コードを作成する必要があります。最初のロールでは、保持するサイコロを 1 つ選択できます。その後、コンピューターは残りの 4 つのサイコロを振り、出た目によってスコアを計算します。ゲームごとに 3 つのロールがあり、合計スコアが表示されます。何も転がさないとポイントが奪われます。得点は次のとおりです。2 種類 = 50 ポイント、3 種類 = 75 ポイント、4 種類 = 100 ポイント、50 ポイントを差し引くものはありません。

私が抱えている全体の問題は、どこから始めればいいのかわからないことです。これを3回繰り返す必要があると思いますが、どの変数が設定されますか? 誰かが私を助けてください、私は本当に私のインストラクターに尋ねることができません. 私はこのクラスを失敗したくありません...誰かがこれを通して私を助けてください???

4

5 に答える 5

2

まず、慌てないでください。これからやろうとしていることは、タスクを小さなステップに分割することです。疑似コードは実際にはコードではありません。言語として直接使用することはできませんが、代わりに、実行していることとイベントの流れを説明するための平易な英語です。

では、始めるための最初のステップは何ですか? 何が事実なのか、事前に何が存在することがわかっているのかを自問してください。これらはあなたが行う「宣言」です。

あなたはサイコロを5つ持っています。それぞれが個別のオブジェクトであるため、それぞれが独自の変数宣言を取得します

dice_1
dice_2
dice_3
dice_4
dice_5

次に、各サイコロに初期値があるかどうかを決定します

dice_1 initial value = 0
etc...

次に、サイコロを何度も投げなければならないことがわかります。スローは初期値を持つ変数です

turns initial value = 2
turns_counter initial value = 2

あなたは今、アイデアを得ているはずです。他に事前に申告すべき事項はありますか?そう思います!

次に、段階的に何をしているのかを決定する必要があります。それは単なる一連の出来事ですか、それとも繰り返されていますか? それが繰り返されている場合、どうすればそれを止めることができますか?

While turns_counter is less than 2

以下を繰り返します。

turns_counter = turns_counter + 1
if turns_counter = 2 
   Throw. Collect_result. Sum_result.
else
   Throw. Collect_result. Sum_result. Remove_a_dice.
endif.

おそらく、再利用可能なコードに、どのオブジェクトを操作するのかを伝える必要があるでしょうか? これらは、再利用可能なコードに渡すパラメーターでThrow(dice_1)あり、作成したいくつかの変数を更新する必要があるのでしょうか? それらをパラメーターとして渡すかどうかに関係なく、再利用可能なコードで実行します。

これは決して完全でも完璧でもありませんが、何が起こっているのか、それをどのように分析するのかを理解する必要があります。完了するまでにかなりの時間がかかる場合があります。

于 2011-04-28T14:01:14.713 に答える
0

ここに書き留めるだけで、すでにほとんど質問に答えています。擬似コードが何であるかについての厳密な定義はありません。ここで説明した内容を一連の手順として書き直すことから始めてみませんか。次に、各ステップで、必要に応じてきめ細かくしたと思うまで、そのステップをさらに洗練します。

次のようなものから始めることができます。

Roll 5 dice.
Pick 1 die to keep. 
Rolls the other 4 dice
Calculate the score.
// etc...

インストラクターよりもSOに尋ねる方が簡単だと考えるのはかなり奇妙です!:)

于 2011-04-28T13:45:23.053 に答える
0

さて、私の経験では、疑似コードは、他の誰かが行う作業を作成しているふりをするときに作成するのが最適です。

必要なもの

  • サイコロ
  • プレイヤー
  • スコア

私たちが追跡するもの

  • ダイスロール
  • プレイヤースコア

私たちが知っていること

(これらは定数とも呼ばれます)

  • なし (-50)
  • 2 種類 (+50)
  • スリー・オブ・ア・カインド (+75)
  • 4種類 (+100)

これらはすべて、始めるための重要なツールです。そして...まあ、stackoverflowで質問します。

次に、あなたの「行動」(私たちが行うこと)を定義します。これは、私たちが必要とする上記の既知のものを利用します.

いつもと同じところから始めます。自分たちのものを作ることです。

def player():
    """Create a new player"""

def dice():
    """Creates 4 new, 6 sided dice"""

def welcome():
    """Welcome player by name, give option to quit"""

def game():
    """Initialize number of turns (start at 0)"""

def humanturn():
    """Roll dice, display, ask which one they'll keep"""

def compturn():
    """Roll four dice"""

def check():
    """Check for any matches in the dice"""

def score():
    """Tally up the score for any matches"""

def endturn():
    """Update turn(s), update total score"""

def gameover():
    """Display name, total score, ask for retry"""

def quit():
    """Quit the game"""

これらはすべて非常に手続き的な方法で具体化されたコンポーネントです。これを行うにはもっと優れた方法が他にもたくさんありますが、ここではアイデアの骨組みを書いているだけです。コーディングを開始する準備ができたら、これらの方法の多くを組み合わせたくなるかもしれませんが、バグを追跡するのに迷わないと確信できるまで、すべてを分離することをお勧めします。

幸運を!

于 2011-09-30T00:41:23.587 に答える
0

ほとんどの言語には、特定の範囲内の乱数を返す疑似乱数ジェネレーター関数が用意されています。まず、使用する言語と、それが提供する機能を把握することから始めます。

それができたら、各サイコロを振るたびにそれを呼び出す必要があります。サイコロを 5 つ振る場合は、5 回コールします。そして、2 回目のロールのためにさらに 5 回コールします。

とにかくスタートです。

于 2011-04-28T13:40:35.960 に答える
0

これを始める最も簡単な方法は、特定の言語の制約や疑似コードに縛られないことです。簡単に、自然な英語で、これをどのように行うかを書き出してください。あなたがコンピューターで、誰かがあなたとゲームをしたいと考えていると想像してみてください。非常に具体的な詳細で、考えられる各ステップで何をするかを想像してみてください。

  1. ユーザーにサイコロを5個渡す
  2. ユーザーにそれらを転がしてもらいます
  3. そのロールから、ユーザーが保持するサイコロを 1 つ選択できるようにします

...等。これを実行し、それが正しいことを確信したら、この問題を解決するためにコンピューターが何をする必要があるかを考えて、疑似コードへの変換を開始します。たとえば、ユーザーが獲得したポイント数と合計ロール数を追跡する変数が必要になります。問題の英語の説明が非常に具体的である場合、これは、基本的に、既にあるいくつかの文に疑似コードを差し込むだけでよいことを意味するはずです。つまり、あるタイプの疑似コードを別のタイプに置き換えるだけです。

お手伝いしたいのですが、疑似コードを直接提供してもあまり役に立ちません。プログラミングを始めるにあたって最も難しいステップの 1 つは、問題をその構成要素に分解することを学ぶことです。この種の詳細な思考は、最初は直感的ではありませんが、時間を費やすほど簡単になります。

于 2011-04-28T13:41:04.493 に答える