0
    風邪気味の体も昨晩飲んだジンジャーチャイのおかげ(?)で
    ずいぶん良くなりました

    インスタントシナモンチャイ(12個袋入りお徳用)
    軽井沢紅茶館サンビーム[楽天市場]


    さて、UILabel を表示させたところで、
    そこにスコアを表示できなければ、まったく意味がありません

    [今回の内容]
    ■スコア(リンゴの数)を増やしていく
    ■小数と整数の違い(NSLogに表示させる)
    ■ラベルにスコアを表示させる

    ■スコア(リンゴの数)を増やしていく

    それでは早速、- (void)drawFrame の中身を扱っていきます

    if(moveLFlag == TRUE){
         CGRect frame = kirinIV.frame;
         frame.origin.x -= 1.0;
         if(frame.origin.x <= 40.0){
              frame.origin.x = 40.0;
              if(apple1IV.hidden == FALSE){
                   apple1IV.hidden = TRUE;
                   score++;
                   NSLog(@"SCORE(A):%d", score);
                   if(apple2IV.hidden == TRUE) apple2IV.hidden = FALSE;
              }
         }
         [kirinIV setFrame:frame];

         //NSLog(@"MOVE(L):%.1f", frame.origin.x);

         CGPoint center = kirinIV.center;
         kirinX = center.x;
         kirinY = center.y;
    }

    if(moveRFlag == TRUE){
         CGRect frame = kirinIV.frame;
         frame.origin.x += 1.0;
         if(frame.origin.x >= 240.0){
              frame.origin.x = 240.0;
              if(apple2IV.hidden == FALSE){
                   apple2IV.hidden = TRUE;
                   score++;
                   NSLog(@"SCORE(B):%d", score);
                   if(apple1IV.hidden == TRUE) apple1IV.hidden = FALSE;
              }
         }
         [kirinIV setFrame:frame];

         //NSLog(@"MOVE(R):%.1f", frame.origin.x);

         CGPoint center = kirinIV.center;
         kirinX = center.x;
         kirinY = center.y;
    }

    score

    左右のリンゴを食べた(隠した)あとに
    赤い部分を二行ずつ追加しました

    score++;

    は、スコア(リンゴの数)を1つプラスするという意味です

    score = score + 1;

    と同じ意味です

    これで「左右のリンゴを食べた瞬間」に
    リンゴの数(score)が1つプラスされるはずです

    それをチェックするため、
    その下に NSLog でリンゴの数を表示させる記述をしましょう
    (ラベルに表示させる作業は、ちょっと置いておきます)

    左のリンゴを食べたときは(A)として

    NSLog(@"SCORE(A):%d", score);

    右のリンゴを食べたときは(B)としています

    NSLog(@"SCORE(B):%d", score);

    それではひとまず[Run]してみましょうか

    左右のリンゴを食べていくと、
    右下に score がひとつずつ増えていくのが表示されますね?

    NSLog

    ...

    ここで、ラベルにスコアを表示させる前に

    NSLog について少し説明しましょう

    ■小数と整数の違い(NSLogに表示させる)

    今までの NSLog への表示の仕方と、
    今回の表示の仕方に違いがあることに気づいたでしょうか?

    ちょっと並べてみましょう

    [キリンさんを左に移動させたとき]
    NSLog(@"MOVE(L):%.1f", frame.origin.x);

    [左のリンゴを食べたとき]
    NSLog(@"SCORE(A):%d", score);

    大事なところは、「%」の部分です
    このふたつの違いは何でしょう?

    そう、「小数(float)」「整数(int)」の違いです
    ・キリンさんのX座標は、「小数」
    ・リンゴの数は「整数」
    この違いです

    では、NSLog の使い分けを書いてみます

    [小数の場合]
    float testF = 0.123;
    NSLog(@"%.1f", testF);
     ---> 表示される内容 [ 0.1 ]

    表示内容を文章にしてみましょう

    NSLog(@"少数は%.1fです", testF);
     ---> 表示される内容 [ 少数は0.1です ]

    ※testF の数値が、%.1f の部分に表示される

    [整数の場合]
    int testI = 123;
    NSLog(@"%d", testI);
      ---> 表示される内容 [ 123 ]

    こちらも文章にしてみます

    NSLog(@"整数は%dです", testI);
     ---> 表示される内容 [ 整数は123です ]

    ※testI の数値が、%d の部分に表示される

    という感じですが、わかりましたか?

    ここで、小数について補足しておきます
    前にも少し触れたと思いますが、
    「%.1f」の部分の「.1」は何を表しているのか?
    「%.1f」は、小数第一位までを表示するということです
    なので、
    「%.2f」は、小数第二位までを表示
    「%.3f」は、小数第三位までを表示となります

    こんな風に...

    [小数の桁数]
    float testF = 0.123;

    NSLog(@"%.1f", testF); ---> 表示される内容 [ 0.1 ]
    NSLog(@"%.2f", testF); ---> 表示される内容 [ 0.12 ]
    NSLog(@"%.3f", testF); ---> 表示される内容 [ 0.123 ]

    となります

    それでは、いよいよラベルにリンゴの数を表示させてみましょう

    ■ラベルにスコアを表示させる

    ここでの内容は、
    先ほどのNSLogの使い方の応用といってもいいでしょう

    ラベルの内容は、UILabel を作ったときに

    scoreLB.text = @"0 "

    として、ラベルに「0」を表示させていました

    なので、リンゴの数を表示するために

    scoreLB.text

    の内容を変化させていきます

    では、- (void) drawFrame の中でリンゴの数を表示させていた、
    NSLog の部分を以下のように変更します

    if(moveLFlag == TRUE){
         CGRect frame = kirinIV.frame;
         frame.origin.x -= 1.0;
         if(frame.origin.x <= 40.0){
              frame.origin.x = 40.0;
              if(apple1IV.hidden == FALSE){
                   apple1IV.hidden = TRUE;
                   score++;
                   scoreLB.text = [NSString stringWithFormat:@"%d ", score];
                   if(apple2IV.hidden == TRUE) apple2IV.hidden = FALSE;
              }
         }
         [kirinIV setFrame:frame];

         //NSLog(@"MOVE(L):%.1f", frame.origin.x);

         CGPoint center = kirinIV.center;
         kirinX = center.x;
         kirinY = center.y;
    }

    if(moveRFlag == TRUE){
         CGRect frame = kirinIV.frame;
         frame.origin.x += 1.0;
         if(frame.origin.x >= 240.0){
              frame.origin.x = 240.0;
              if(apple2IV.hidden == FALSE){
                   apple2IV.hidden = TRUE;
                   score++;
                   scoreLB.text = [NSString stringWithFormat:@"%d ", score];
                   if(apple1IV.hidden == TRUE) apple1IV.hidden = FALSE;
              }
         }
         [kirinIV setFrame:frame];

         //NSLog(@"MOVE(R):%.1f", frame.origin.x);

         CGPoint center = kirinIV.center;
         kirinX = center.x;
         kirinY = center.y;
    }

    赤い部分を変更しました

    label

    それでは、少し説明を...

    はじめラにベルを作った際には、
    「scoreLB.text = @"0 ";」と直接数値を入れ込みましたが、
    scoreは日々変化するので、直接入れ込んでいくわけにはいきません...

    そこで、変化するスコアをその都度ラベルに代入するように記述しています

    scoreLB.text = [NSString stringWithFormat:@"%d ", score];

    「NSString」は、文字列をあらわしています、
    「stringWithFormat」は、「@"〜"」の中を文字列としてフォーマット...

    なんかややこしいですが、
    アプリを作っていく上で何度も出てくると思いますので、
    ここはそういうもんだと言い聞かせて先に進みましょう

    で、結局は、
    スコア(score)を「@"%d "」に代入してscoreLBに表示させる
    という記述になっているわけであります

    ここで、「%d」が出てきましたね
    それは、スコアが「整数」だからです
    もし小数(第一位)を表示したい場合は「@".1f "」とすればいいのです

    あと「%d」の後ろに、こっそりスペースを入れているのでお忘れなく
    スペースを入れないとラベルの右端に数字がピッタリくっついて気持ち悪いです...
    そうでもない?

    それでは、今回最後の[Run]!

    左に...右に...それそれそれ〜

    score


    と、スコアが増えていったでしょうか?

    いよいよゲームらしくなってきましたね

    ...

    あとは何が必要でしょう?
    ゲームをスタートして ---> スコアを出した ---> 次は?
    ゲームを終了させないといけませんね

    ということで、
    次回は「スコア(リンゴの数)によってゲームを終了させる」ことにしましょう!






    コメント
    コメントする








       
    この記事のトラックバックURL
    トラックバック

    Calendar
    S M T W T F S
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
    << August 2018 >>
    My Apps
    有料アプリ

    無料アプリ

    Selected entries
    Categories
    AdSense
    Sponsored Links
    Archives
    Recent comment
    Links
    Profile
    Search this site.
    Others
    Mobile
    qrcode
    powered
    無料ブログ作成サービス JUGEM