どのようにゲームを構築&Cを学ぶ


私たちの最後の2つのチュートリアルでは、私たちは私たちの最初のアプリケーションをプログラミングに向けて、新しいCけんかプロジェクトと変数と式の概念を作成することについて議論しました.
このチュートリアルでは、ユーザーからのテキストを取得するためのツールの私達の袋を展開します.我々は、ステートメントとして我々のツールベルトのプログラマとして非常に強力なツールを導入することによって終了します.
この記事はビデオフォームでも入手できます.
注:このシリーズは緩やかに1月1日からのコンテンツの一部に基づいていますTech Elevator 's 14週C
始めましょう.

スレートの洗浄


最後の記事では、説明する基本的なコードを書きましたstring and int 変数.それは学習の練習としては良かったが、我々の最終的なアプリケーションは、ユーザーが1から100までの数を推測することができますゲームは、彼らの推測が高い、低、または正しいかどうか言われることはできません.
既存をクリアしましょうMain メソッドと置き換えます.
static void Main(string[] args)
{
    // The program's secret number that the player has to guess
    int secretNumber = 42; // TODO: This should be random between 1 - 100
    int guess = 0;

    // TODO: Let the player enter a number

    // TODO: Evaluate the player's guess and respond

    // TODO: Loop until the player gets the answer right

    // After this line is reached, the program will end
}
ここでは、ほとんどの空のメソッドには、このチュートリアルでは、次のいずれかを行う必要がありますロジックの主要なコメントを持ってゲームを正しく動作するようにします.
また、私たちはsecretNumber に設定される整数変数42 今のところ、しかし、我々はプログラムがランダムな次のチュートリアルを生成する必要があります.
このsecretNumber プレイヤーが推測している番号を表します.このチュートリアルの終わりには、コンソールに番号を入力することができるでしょうし、それよりも小さい場合、または正確に“秘密”番号を教えてください.
注:我々は宣言しているguess ここで変数は、後でいくつかの時間と混乱を保存します.このラインがなぜここにあるかについて心配しないでください.

ユーザー入力の取得


拡大しましょう// Let the player enter a number 次のコードを含めるコメント
// Let the player enter a number
Console.WriteLine("What is your guess?");
string guessText = Console.ReadLine();

Console.WriteLine("You guessed: " + guessText);
コードについて話をする前に、これらの変更でプログラムを実行しましょう.次のようにして、いくつかのテキストを入力し、結果をコンソールで確認できます.

これはConsole.ReadLine() ユーザーが何らかのテキストを入力して入力するのを待つプログラムを入力します.プログラムは、その値を取り、guessText 変数.
それで、ユーザーが「私はバットマン」でタイプしたならば、思い出してください.ReadLine ユーザが任意のテキストを入力できるようにする)、guessText はその文字列と次の行を格納します:Console.WriteLine("You guessed: " + guessText);Console.WriteLine("You guessed: I'm Batman"); とメッセージを表示します.
次に、ユーザの入力を数値としてどのように解釈できるかを見てみましょう.

整数を文字列で解析する


我々は変更することはできませんConsole.ReadLine 返すint Aの代わりにstring または数値入力を必要とすると、ユーザが入力した文字列を数値として解釈することができます.
我々はint.Parse メソッド.
以前に書いたコードの下に次のコードを追加します.
guess = int.Parse(guessText);

Console.WriteLine("2 x " + guess + " = " + (guess * 2));
ここでまともな量がありますので、一度に一度に行こう.guess = int.Parse(guessText); 集合guess 変数私たちは以前の結果としてint.Parse ユーザーのテキスト.int.Parse が提供するメソッドです.NETの基本クラスライブラリstring そして、それを整数に変換しようとします.
注意:ユーザが数値である何かの代わりにランダムなテキストでタイプするケースを扱う方法があります.しかし、このチュートリアルに焦点を当てておくために、ユーザーが有効な入力を提供していると仮定します

再訪式


次に話しましょうConsole.WriteLine("2 x " + guess + " = " + (guess * 2)); ライン.
これは以前に見たことと似ていますが、少し複雑です.我々は、我々が前に見なかった2、3の新しいものを持ちます(guess * 2) エクスプレッション.
The * 演算子は乗算を意味しますguess そば2 .
この行が走るとguess は5、それは最初に評価されます
Console.WriteLine("2 x " + 5 + " = " + (5 * 2));
これは
Console.WriteLine("2 x " + 5 + " = " + 10);
これは、より多くの身近で、簡単です
Console.WriteLine("2 x 5 = 10");
これはまさに画面に表示されます.

条件の準備


さて、今では整数構文解析の動作を実証しましたConsole.WriteLine 文.コードは次のようになります.
static void Main(string[] args)
{
    // The program's secret number that the player has to guess
    int secretNumber = 42; // TODO: This should be random between 1 - 100
    int guess = 0;

    // Let the player enter a number
    Console.WriteLine("What is your guess?");
    string guessText = Console.ReadLine();

    // TODO: Evaluate the player's guess and respond
    guess = int.Parse(guessText);

    // TODO: Loop until the player gets the answer right

    // After this line is reached, the program will end
}
我々は今、ユーザーの推測を解釈を開始する良い場所にする必要があります.

if文


さて、if文を条件的に行うための新しい構文を見てみましょう.
式が評価されるならば、文は特定の論理をしますtrue .
下にint guess = ... 次のコードを追加します.
if (guess == secretNumber)
{
    Console.WriteLine("You guessed the secret number!");

    Console.WriteLine("The application will now close.");
}
ここでアプリケーションを実行すると、“42”を入力すると、コンソールメッセージが表示されます.

では、この方法を見てみましょう.最初の行から始めましょう.if (guess == secretNumber)if文には括弧が必要です.これらの括弧の中で、Ctrue or false . 式がtrue , 内部の任意のコード{ } 'sを実行します.
内部のコード{} 'sはあなたが書くことができるどんなC - Countコードでもありえます-変数宣言、コンソール呼び出しなどtrue .
その式でもう少し見てみましょうguess == secretNumber . 見られない== 前に.“double - equals”演算子は、左側を右側に比較する方法です.つの辺が等しいなら、式はtrue , そうでなければ式はfalse .
例として、guess が35なら、行は0になりますif (35 == 42) これはif (false) . この値はfalse , 内部のコード{ } 'sは実行されません.
逆にguess 42で、ラインは0になりますif (42 == 42) or if (true) と内部のコード{} 'sは働きます.

他のブロック


それで、声明が強力であるならば、彼らは我々がちょうどしたより少しもすることができます.私たちはelse アフターステートメントif 下記の通り.
if (guess == secretNumber)
{
    Console.WriteLine("You guessed the secret number!");

    Console.WriteLine("The application will now close.");
}
else
{
    Console.WriteLine("Nope. That wasn't the number.");
}
ここでは{ } ブロックは常に実行されます.を返します.if ステートメントはtrue , 最初のブロックは以前と同様に実行されます.そうでなければelse ブロックが実行され、ユーザが誤って推測されたことを示すメッセージが表示されます.

ブロックif / elseブロック


しかし、待って、もっと!
我々の建物のアプリは、彼らの推測が正確に、あまりにも高いか、あまりにも低い場合は、ユーザーに伝えることを忘れないでください.たった今、我々は彼らの推測が正しかったか、不正確であるかどうかに関してユーザー情報を与えます.
私たちは、その2番目を取り替えることによって声明がそうであるなら、他のブロックをチェーンに一緒に利用することができます{ } (およびそのコード)以下のような別のif文を指定します.
if (guess == secretNumber)
{
    Console.WriteLine("You guessed the secret number!");

    Console.WriteLine("The application will now close.");
}
else if (guess > secretNumber)
{
    Console.WriteLine("The number is lower than " + guess);
}
ここから直接else 文が別のif文になります.これは完全にCのChrountコードであり、推測がSecretNumberでない場合のみ実行されます.
の場合、その2番目のif文とチェックをif (guess > secretNumber) .
我々は見ていない> 前に、これは評価演算子true 左側が右側より大きい場合、それ以外の場合はfalse.同様に、Aもあります< 以下の演算子>= and <= を超えるか等しいか等しいか等しいか等しい.
今、私たちが走って、50を推測するならば、我々は我々の推測があまりに高かったことを示しているメッセージを見ます.

可能性の説明


しかしながら、我々のコードはまだ何かを欠落しています.ユーザーが秘密の数の下で数を推測するならば、彼らはメッセージを見ません.を加えましょうelse 以下に示すような論理の最後まで
// Evaluate the player's guess and respond
guess = int.Parse(guessText);
if (guess == secretNumber)
{
    Console.WriteLine("You guessed the secret number!");

    Console.WriteLine("The application will now close.");
}
else if (guess > secretNumber)
{
    Console.WriteLine("The number is lower than " + guess);
} 
else // If we got here guess must be < secretNumber
{
    Console.WriteLine("The number is greater than " + guess);
}
このfinalizeされたif/elseチェーンは以下のケースを扱います:
  • guesssecretNumber
  • guesssecretNumber
  • その他の場合secretNumber )
  • さて、ユーザーが何を入力したとしても、彼らは彼らの推測がどれくらい近いかについてわかっているメッセージを見るべきです.

    次の手順


    ご覧のように、我々は動作可能なアプリケーションを取得し始めているが、我々はまだいくつかの重要な部分を欠落している.
    シリーズの最終的なチュートリアルでは、我々は、ランダムな数の生成、ループを導入し、一緒に1つのアプリケーションにすべてのタイ.
    この記事は、2008年の最初の週の数日から要約された内容に基づきますTech Elevator's 14週間の完全なスタックC .技術エレベーターについて詳しく知る.take a free aptitude test あなたが開発のために良い試合であるかもしれないかどうかチェックするか、我々の他をチェックしてくださいLearn to Code resources