• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件文について)

Objective-Cでスコア登録機能を実装する方法

このQ&Aのポイント
  • Objective-Cを使用して、スコア画面にて1プレイ毎にスコアを登録し、最新10回分のスコア画面を作成する方法について教えてください。
  • 具体的には、スコア1に1プレイ目のスコアを、スコア2に2プレイ目のスコアを順次登録していき、11プレイ目以降は古いスコアを上書きしていく方法を知りたいです。
  • また、Objective-Cの配列やループ処理を活用して実装する方法も教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

過去10回のスコアデータを保存可能なデータ構造を用意しておけば、 条件文は不要なのですよ。 あなたがMacやiPhoneのゲームをプログラミングしているのなら、 NSMutableArrayが一番手っ取り早いです。 NSMutableArrayの箱を用意してあげて、1プレイ毎に以下を行います。 1.新しいスコアを箱の先頭に挿入 2.箱のサイズが10以上になったら、末尾のスコアを削除 具体例を示すと、こんな感じなのです(説明のため、箱の大きさは3プレイ分としています)。 1回目: スコア100 → [100] 2回目: スコア110 → [110,100] 3回目: スコア140 → [140,110,100] 4回目: スコア125 → [125,140,110,100] → [125,140,110] 5回目: スコア160 → [160,125,140,110] → [160,125,140] 万一、NSMutableArrayなど既存のデータ構造を使用できない場合は、 自分でリスト構造を作成すると同じようなことができます(でも面倒です)。

参考URL:
http://konton.ninpou.jp/program/cocoa/dataobject/nsmutablearray.html
Hungry-Bug
質問者

お礼

詳しい解答ありがとうございました。 具体例、参考URL共にとても助かります。 まずはNSMutableArrayを勉強してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

回答する前提として……お使いのObjective-Cは、Appleが知的所有権を持っているバージョンでしょうか?ようするに、Xcodeによる開発を、あなたはなさっているのでしょうか? Mac OS Xのアプリケーションや、iPhone/iPadのアプリを開発しているのなら、「条件文」がどうだとか関係なしに、NSMutableArrayを使えば、いいだけの話です。

Hungry-Bug
質問者

お礼

ありがとうございます。 XcodeにてiPhoneアプリを制作しているのですが、 NSMutableArrayは使用した事がないので勉強しながら実装してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELの条件文

    EXCELの条件文になると思うのですが A1には1、A2には2・・・A5には5が入力されており B1にはa、B2にはb・・・B5にはeが入力されている状況で 例えばC1に3を入力した場合、D1にはCを自動的に出力させたいのですが下記関数を使っても エラーとなってしまいます。(C1には1を入力したときのみaが出力されます) =IF(C1=A1:A5,B1:B5,"エラー") どのような関数式を用いればよろしいのでしょうか?

  • SQL文での条件分岐

    列a,b,cから構成されるテーブルAが存在します。 これをテーブルB(列d,e)に以下の流れでコピーしたいのです。 ・a列の値 → d列 にコピー ・aの値が"1"ならば、b列の値 → e列 にコピー / "1"以外は、c列の値 → e列 にコピー としたいのですが、これをSQL文だけで書けますか? ストアドを書くのであれば、どのような感じで書けばいいのでしょうか? ヒントだけでも結構ですので、分かる方はお教えいただけますか?

  • SQL文をご教授願います

    SQL文をご教授願います。 以下のようなテーブルを仮定しています。 A   B    C   D ---------------------- 10  100  1203 A 10  200  1204 B <--- 取得したい 11  300  1203 C 11  300  1204 D <--- 12  400  1206 D 12  500  1207 E <--- ・ ・ A列をー意にして、A列・D列のデータを取得したい 条件 Bの大きい方を取得する Bの値が同じ場合はCの大きい方を取得する。 (A列には同じデータが2以上あるとします) (C列には同じデータはありません) 欲しい結果 A   D -------- 10 B 11 D 12 E

  • Excelの複数の条件にあった式を教えて下さい。

       A     B     C    D    E 1   4.7          16    8    3 2  5.8          0.0   3.0   6.0 3  4.5 4  2.16 5  3.55    ・    ・      ・    ・   Aの列には1日の平均気温が入力されています。(A31まで) B1に、「A1が16℃以上だったら0.0、8℃以上16℃未満だったら3.0、3℃以上8 ℃未満だったら6.0」と式を作り、B2から下の欄も、「  」内の条件でした いのですが、教えてもらえないでしょうか? 宜しくお願いします。 あらかじめ、C1~E1に16℃、8℃、3℃と言う意味で数字を入れています。 C2~E2にも、条件を満たしたら、この数字になりなさいという意味で数字を 入れています。 IF文を使ってB1に =IF(A1>C1,”0.0”,IF(D1≦A1>C1,”3.0”,IF(E1≦A1>D1,"6.0",""))) と式を入れたのですが、#NAMEとエラーが出てきます。

  • SQLの条件分の質問です

    A1=0, A2=0, A3=0,  A4=0 B1=0, B2=0, B3=125, B4=0 C1=77, C2=0, C3=457, C4=0 D1=0, D2=5, D3=0, D4=0 E1=2, E2=0, E3=0, E4=0 SQLの条件文で4番目が0であって1~3番目までは0以外だったらTrueとなる処理はどうしたらいいいでしょうか? いろいろ考えたのですがわかりません。

  • if文の中のif文・・・について

    質問させていただきます。 if文の中のif文の記述の仕方について質問があります。 例えば if ( x > 0 ){ a = b+c; if ( a > 1) d = e+f; ・・・1 if ( a < 1) d = e-f; ・・・2 if ( a = 1 ) d = 1-g; ・・・3 } h = d + i; aが1より大きい場合は、1の処理を、aが1より小さい場合は2の処理を、aが1と同じであった場合、3の処理をして最終的に、h = d + i;の式の d に代入して h を求めたいと思っているのですが、うまくゆきません。 if文の中のif文の記述はどのようにすればよいのでしょうか? よろしければご教示よろしくお願いします。

  • 条件の「~と」、「~たら」

    a) トンネルを出ると、左手にテレビ塔が見えます。 b) トンネルを出たら、左手にテレビ塔が見えます。 以上の文では、条件の「~と」、「~たら」のいずれも使用できますが、 次の文では、c)は不自然で、d)のみが、使用可能なように思われます。 c) トンネルを出ると、左折して下さい。 d) トンネルを出たら、左折して下さい。 そこで、御教示をお願いしたいのですが、 条件節の後に、命令文が来る場合は、「~たら」は使えるが、「~と」は使えないと考えて、よいでしょうか。 あるいは、地方によって、差があり、c)、d)両方、行われている所もありますか。 宜しくお願いします。

  • 条件を満たす個数のカウントについての質問です。

    条件を満たす個数のカウントについての質問です。 ID    A    B  C  x1  x2  xx  D  E score 1    80 2  0    30  2  3  4 score 2    5     0  6  5  3  80  0 score 3    84 5  50  100  50  20  5 score 4    3     0  5  6  8  0 上記のようにID A,B,C,,,に対して、各score(1から1000)が記載されています。ここで、score1,2,3,4,,,の中で、少なくとも1つのscoreで80以上100以下の値をとっている者は何人いるか?を計算したいです。 score 1 で80以上100以下の人数は、 =SUMPRODUCT((2:2>=80)*(2:2<=100))でだせます。(COUTIFSはexcelのバージョンが古くて使えません) 上記の計算を考えた場合、 Aがscore1-1000で80以上100以下を取っている回数は =SUMPRODUCT((B2:1000>=80)*(B2:1000<=100))で、少なくとも1回というのを、 =IF(SUMPRODUCT((B2:1000>=80)*(B2:1000<=100))>0,1,0))として1としました。 これを各B,C、、、に対して行い(値は0か1になりますよね)、その和を求めれば、良いかと考えました。 しかし、作業が煩雑になるので、できれば、一つの式でできるような方法を教えて頂けないでしょうか? また、上記の表で、80以上100以下のscoreはどれ位あるかは、 =SUMPRODUCT((A2:HH1000>=80)*(A2:HH1000<=100))として計算できますが、 これから、x1、x2、xxなどxを含ん=SUMPRODUCT((B14:I17>=80)*(B14:I17<=100))だ物を除きたい場合はどうしたら良いでしょうか?sumproductではワイルドカードが使えないため、各x1、x2、xx、、に対して、下記の様に計算して =SUMPRODUCT((A2:HH1000>=80)*(A2:HH1000<=100))*(A2:HH1000=”x1”))* コレを上の値から引いていくと言うのはあまりに大変です。 何か良い方法はあるのでしょうか? 以上、2項目、質問させて頂きます。

  • エクセルの条件文が長すぎて・・・

    エクセルで合計値を求めるための条件に苦戦しています。 A1が「a」かつA2が「b」の場合B1の数値をZ1に加える。というものですが、 それだけなら =IF(AND(A1=a,A2=b),B1,0) とかで大丈夫だとは思うのですが、 問題は上の条件文で数値を加えるかどうかを判断するB1のようなセルが35個あります。 Z1に=IF(AND(A1=a,A2=b),B1,0)+IF(AND(C1=a,C2=b),D1,0)+ ・・・ なんてしようものなら文が長くなりすぎて条件文が書けなくなってしまいます。 だからといって、他のセルを使うのはレイアウト上避けたいです。 A1、A2、B1などの配置もレイアウト上変えたくはありません。 面倒だとは思いますが、Z1に収まるように上手く出来ないでしょうか? ご指南お願い致します。

  • Excel 3つの条件文を一つのセルにいれたい。。

    Excel、下述の 3つの条件文を一つのセルにいれたい。。です。 その一つのセルを仮にD2とします =IF(A2="","",A2*O2) =IF(B2="","",B2*O2) =IF(C2="","",C2*O2) A2に数値がはいっていなかったらD2は空白で、数値が入っていたらA2*O2の計算をする B2に数値がはいっていなかったらD2は空白で、数値が入っていたらB2*O2の計算をする C2に数値がはいっていなかったらD2は空白で、数値が入っていたらC2*O2の計算をする つまり、上述のIF文を一つにまとめたいのです。 頭が悪くてわかりません、誰か助けてください!!!!お願い致しますm(_ _)m