HOME  >  数字当てゲーム

【使用方法】
・ここをクリックすると、以下の全Stepを開いたり閉じたりします。
  [Click here to Open/Close for all steps]
・以下のStepタイトルをクリックすると、そのStepを開いたり閉じたりします。

作業フォルダの準備

数字当てゲームは、「書類>objc_intro>個人用作業フォルダ」の中に作成します。
Finderウィンドウを開き、作業フォルダが存在するかどうかを確認して下さい。

もし、作業フォルダが存在しない場合は、新しく作成して下さい。


Step1 正解の判定

Stepの概要

・キーボードから数値を入力してもらい、正解数値かどうか判断する処理を作成する。
※キーボード入力は、テキストでは学習しないため、例に従って記述する。


Stepの前提条件

・当スクールのObjective-C講座で「条件処理」を終了、または同等知識をお持ちの方。


Stepの目的

・if~if else文を習得し、判定処理の流れを理解する。


Stepのキーワード

・条件文(if、if-else)
・キーボード入力
・文字列を数値へ変換

Stepの仕様

1)正解の数値として5を変数に設定する。
※後のStepで、正解の数値はランダムに変更する仕様となる。

2)開始のメッセージとユーザに1桁の数字の入力を促すメッセージを表示させる。

3)2つの数字を比較し、結果に応じたメッセージを表示させる。
結果は、次の3通りである。
①一致する場合
②正解より小さい場合
③正解より大きい場合

4)終了時には、終了のメッセージを表示させる。

※「StepのHINT」も参考にしてコーディングを行って下さい。


Stepの手順

1)Objective-Cプロジェクトを作成する。
テンプレート名: Command Line Tool
Product Name: GuessS01
Company Identifier: jp.co.f1.app.guess
Type: Foundation
Use Automatic Reference Counting: チェックを入れる。

2)コーディングを行う。
・「Stepの仕様」と「Stepの実行結果の例」を確認して作成する。

3)作成物の提出を行う。 (提出方法は こちら をクリックしてください)
・プロジェクトファイル

4)次のステップに進む。

Stepの実行結果の例

【実行結果画面の例1】
※実行後、7を入力してreturnキーを押した場合


【実行結果画面の例2】
※実行後、5を入力してreturnキーを押した場合


【実行結果画面の例3】
※実行後、7を入力してreturnキーを押した場合



StepのHINT

■キーボード入力処理
以下のような記述で、キーボードから入力された値を取得することができます。
入力された値は、char型の配列として取得します。

char buf[32];   // 入力した文字列 

// キーボード入力 
fgets(buf, sizeof buf, stdin);

■char型の配列をNSStringクラスに変換する
以下のような記述で、char型の配列をNSStringクラスに変換します。

// 入力した文字列であるchar型の配列をNSStringクラスのオブジェクトに変換 
NSString *str = [NSString stringWithCString:buf encoding:NSUTF8StringEncoding];

■NSStringクラスをint型に変換する
intValueメソッドは、NSStringクラスのオブジェクトから数字だけを抜き出し、int型に変換します。
以下は記述例です。

// NSStringクラスのオブジェクトをint型に変換する 
inputNum = [str intValue];


Step2 入力した予想データ(数字範囲外、空白)のエラー処理

Stepの概要

・条件文(if、if-else)を使用し、範囲外(数字範囲外、空白)のデータを取り扱う処理を行う。


Stepの前提条件

・Step1の作成物を当スクールへ既に提出していること。


Stepの目的

・if~if else文の条件を追加し、エラー処理の流れを理解する。


Stepのキーワード

・条件文(if、if-else)
・キーボード入力
・文字列を数値へ変換

Stepの仕様

・Step1に以下のStep仕様機能を付け加える。

1)キーボードから入力されたデータが空白(何の入力もなし)の場合は、以下のエラーメッセージを表示する。
「→何も入力されていません。0~9以内の数字を入力してください。」

2)キーボードから入力されたデータが0~9以外の数字の場合は、以下のエラーメッセージを表示する。
「→0~9以内の数字ではありません。」

※「StepのHINT」も参考にしてコーディングを行って下さい。


Stepの手順

1)Objective-Cプロジェクトを作成する。
テンプレート名: Command Line Tool
Product Name: GuessS02
Company Identifier: jp.co.f1.app.guess
Type: Foundation
Use Automatic Reference Counting: チェックを入れる。

2)GuessS01のmain.mの内容をGuessS02のmain.mにコピーする。
・GuessS02は、GuessS01の内容に処理を追加したものであるため、GuessS01のソースコードをコピーして利用する。

3)コーディングを行う。
・「Stepの仕様」と「Stepの実行結果の例」を確認して作成する。

4)作成物の提出を行う。 (提出方法は こちら をクリックしてください)
・プロジェクトファイル

5)次のステップに進む。

Stepの実行結果の例

【実行結果画面の例1】
※実行後、10を入力してreturnキーを押した場合


【実行結果画面の例2】
※実行後、何も入力せずにreturnキーを押した場合


※その他、0~9の数字を入力してreturnキーを押した場合の実行結果は、Step1と同じになります。

StepのHINT

■文字列を比較するisEqualToStringメソッド
isEqualToStringメソッドは、NSString型のオブジェクトが意味的に等しいかどうかを比較するメソッドです。

以下は、isEqualToStringメソッドの記述例で、何も入力されなかったかどうかの判別を行うものです。
何も入力されずにreturnキーが押された場合は、改行コードのみが含まれる文字列を取得します。
そのため、改行コード(バックスラッシュ, エヌ)と比較することで、何も入力しなかった場合を判別することができます。
※以下の変数strは、キーボードで入力された文字列(NSStringクラス)とする。

// 何も入力されなかった場合 
if ([str isEqualToString:@"\n"]) {
    // ここに処理を記述する。 
}

■プログラムを途中で終了するexitメソッド
途中でプログラムを終了するには、exit関数を利用します。
以下は、記述例です。

// プログラムの終了 
exit(0);


Step3 予想数の入力を繰り返す

Stepの概要

・繰り返し文(while)を使用し正解数値又は終了文字が入力されるまでプログラムを処理させる。


Stepの前提条件

・Step2の作成物を当スクールへ既に提出していること。

・当スクールのObjective-C講座で「繰り返し処理」を終了、または同等知識をお持ちの方。


Stepの目的

・繰り返し文を利用した無限ループの利用方法を習得する。
また、無限ループから抜け出す方法も習得する。


Stepのキーワード

・条件文(if、if-else)
・繰り返し文(for、while、do-while)

Stepの仕様

・Step2に以下の機能を付け加える。
1)キーボードからの入力処理を繰り返す。
以下のプログラム終了条件のどちらかを満たす場合以外は、繰り返して入力し続ける。
【プログラム終了条件】
ケース1:正解数字を当てた場合
ケース2:英字の小文字qが入力された場合

※「StepのHINT」も参考にしてコーディングを行って下さい。


Stepの手順

1)Objective-Cプロジェクトを作成する。
テンプレート名: Command Line Tool
Product Name: GuessS03
Company Identifier: jp.co.f1.app.guess
Type: Foundation
Use Automatic Reference Counting: チェックを入れる。

2)GuessS02のmain.mの内容をGuessS03のmain.mにコピーする。
・GuessS03は、GuessS02の内容に処理を追加したものであるため、GuessS02のソースコードをコピーして利用する。

3)コーディングを行う。
・「Stepの仕様」と「Stepの実行結果の例」を確認して作成する。

4)作成物の提出を行う。 (提出方法は こちら をクリックしてください)
・プロジェクトファイル

5)次のステップに進む。

Stepの実行結果の例

【実行結果画面の例1】


【実行結果画面の例2】


StepのHINT

このStepで追加する処理は、Objective-C講座「繰り返し処理」までの学習範囲で記述できます。



Step4 文字が入力された場合の処理と正解数字のランダム生成

Stepの概要

・メソッドを利用し、数字以外の値が入力された場合の処理を行う。
・関数を利用し、正解の数字をランダムに生成する。


Stepの前提条件

・Step3の作成物を当スクールへ既に提出していること。


Stepの目的

・関数とメソッドの利用方法を理解する。


Stepのキーワード

・関数
・メソッド
・条件文(if、if-else)

Stepの仕様

・Step3に以下の機能を付け加える。

1)入力された値が文字(数字以外)だった場合に、以下のメッセージを表示し、再度入力をさせる。
「→文字が入力されました。0~9以内の数字を入力してください。」

2)正解の数字を0~9の整数からランダムに生成する。

※「StepのHINT」も参考にしてコーディングを行って下さい。


Stepの手順

1)Objective-Cプロジェクトを作成する。
テンプレート名: Command Line Tool
Product Name: GuessS04
Company Identifier: jp.co.f1.app.guess
Type: Foundation
Use Automatic Reference Counting: チェックを入れる。

2)GuessS03のmain.mの内容をGuessS04のmain.mにコピーする。
・GuessS04は、GuessS03の内容に処理を追加したものであるため、GuessS03のソースコードをコピーして利用する。

3)コーディングを行う。
・「Stepの仕様」と「Stepの実行結果の例」を確認して作成する。

4)テストを行う。
・「テストケース」と「テスト実施結果」を確認してアプリケーションの動作を検証する。

5)作成物の提出を行う。 (提出方法は こちら をクリックしてください)
・プロジェクトファイル

Stepの実行結果の例

【実行結果画面の例1】



StepのHINT

■ランダムな整数値の生成
arc4random関数は、ランダムな整数値を返します。
arc4random関数で、一定の範囲の整数をランダムに生成するには、以下のように記述します。
これは、0~9の範囲の整数値を返すものです。

int randomNum = arc4random() % 10;

■数字かどうかの判別
数字かどうかを判別するには、isEqualToStringメソッドとstringWithFormatメソッドを利用します。
isEqualToStringメソッドは、NSStringクラスのオブジェクト同士が等しいかどうかを比較するものです。
stringWithFormatメソッドは、数値などをNSStringクラスに変換するものです。
この2つのメソッドを利用し、入力された文字列とそこから数字のみを抜き出したものを比較します。
等しければ入力されたのは、数字のみであることがわかります。

下記は、数字以外が入力されている場合の処理の記述例です。

// 数字以外が入力された場合 
if(![str isEqualToString:[NSString stringWithFormat:@"%d\n", inputNum]]){
    // ここに処理を記述する 
}

テストケース

テストケース番号 分類1 テスト内容 テスト結果
1001 正常系 正解の数字(X)より予想の数字(Y)が大きい場合、「→Yより小さいです。」が表示される。 -
1002 正解の数字(X)より予想の数字(Y)が小さい場合、「→Yより大きいです。」が表示される。 -
1003 正解の数字(X)と予想の数字(Y)が一致する場合、「!!大当たり!!」が表示される。 -
1004 q(アルファベットの小文字のキュー)が入力された場合、「→終了します。」が表示され、アプリケーションが終了する。 -
2001 異常系 変数に設定した値の数字が0未満又は10以上の場合、「→0から9以内の数字を入力してください。」が表示され、再度入力を促す。 -
2002 数字以外(文字)が入力された場合、 「→文字が入力されました。0から9以内の数字を入力してください。」が表示され、再度入力を促す。 -
2003 何も入力されなかった場合、 「→何も入力されていません。0から9以内の数字を入力してください。」が表示され、再度入力を促す。 -


テスト実施結果

各テストは、テストケース番号の順に行って下さい。
テストを実施した結果は下図のようになります。

【正常系】



【異常系】