寺子屋管理者

  • アバター画像
  • アバター画像

クイズアプリの作成

公開寺子屋 3 年と 3 か月前に活動

クイズアプリを作成したかったので一回ホームページを参考にして作ってみたのですが、動きませんでした。そのホームページはこちらです。http://ios.rainbowapps.jp/text_dev/05http://ios.rainbowapps.jp/text_dev/05
ただし、スタート画面、結果画面は除き、クイズの問題の画面だけで考えてください。自分でうったソースのどこをどのように変えればいいのですか?
自分で打ったソースはこちらです。
quiz.h
#import
#import
#import “Problem.h”

@interface quiz : UIViewController

@end
quiz.m

#import “quiz.h”

@implementation quiz
{
//問題(Problemクラスのインスタンス)を格納する配列
NSMutableArray *problemSet;
//出題する問題数
int totalProblems;
//現在の進捗(出題済み問題数)を記録
int currentProblem;
//正答数
int correctAnswers;
//問題文を表示するText View
IBOutlet UITextView *problemText;
}
//問題の読み込み
- (void)loadProblemSet {
// ファイルの読み込み
NSString* path = [[NSBundle mainBundle] pathForResource:@”quiz” ofType:@”csv”];
NSError* error = nil;
int enc = NSUTF8StringEncoding;
NSString* text = [NSString stringWithContentsOfFile:path encoding:enc error:&error];
// 行ごとに分割し、配列「lines」に格納
NSArray* lines = [text componentsSeparatedByString:@"n"];
// 問題を格納する可変配列のproblemSetを初期化
problemSet = [[NSMutableArray alloc] init];

// 問題の数だけ繰り返し
for(int i=0; i 0) {
//乱数を発生
srand((unsigned int)time(0));
int j = rand() % i;
//要素を並び替え
[problemSet exchangeObjectAtIndex:(i-1) withObjectAtIndex:j];
//カウンターを減少させる
i = i – 1;
}
}
- (void)viewDidLoad {
[super viewDidLoad];

//クイズ問題を読み込み
[self loadProblemSet];
//クイズ問題をランダムに並び替え(シャッフル)
[self shuffleProblemSet];

//提示問題数を10問とする
totalProblems = 10;

//現在の問題番号と正答数を0にする
currentProblem = 0;
correctAnswers = 0;

//problemSetの最初の要素の問題文をクイズ画面にセット
problemText.text = [[problemSet objectAtIndex:currentProblem] getQ];
}
//次の問題提示 or 全問時終わっていたら結果表画面へ
- (void)nextProblem {

//currentProblemを繰り上げ
currentProblem++;

//これまで出題した問題が、提示問題数に達していない場合
if (currentProblem < totalProblems) {
//次の問題の問題文を提示
problemText.text = [[problemSet objectAtIndex:currentProblem] getQ];

//全問題解き終わった場合
}
}
//「○」ボタンが押された場合
- (IBAction)answerIsTrue:(id)sender {
//答えを確認し、次の問題を提示
if ([[problemSet objectAtIndex:currentProblem] getA] == 0) {
correctAnswers++;
}
[self nextProblem];
}

//「×」ボタンが押された場合
- (IBAction)answerIsFalse:(id)sender {
//答えを確認し、次の問題を提示
if ([[problemSet objectAtIndex:currentProblem] getA] == 1) {
correctAnswers++;
}
[self nextProblem];
}

@end
Problem.h

#import

@interface Problem : UIViewController
+ (id)initProblem;
- (void)setQ:(NSString *)q withA:(int)a;
- (NSString *)getQ;
- (int)getA;

@end
Problem.m

#import “problem.h”

@implementation Problem {
//問題文
NSString *question;
//答え(「○」なら「0」、「×」なら「1」)
int answer;
}

//初期化処理
+ (id)initProblem {
return [[self alloc] init];
}
//問題文と答えを格納
- (void)setQ:(NSString *)q withA:(int)a {
question = q;
answer = a;
}
//問題文を読み出し
- (NSString *)getQ {
return question;
}

//答えを読み出し
- (int)getA {
return answer;
}

@end
以上です。
自分で書いたquiz.hやquiz.mはQuizViewController.hやQuizViewController.mのことです。
また、関連付けはしてあります。
このソースが難しく、他の方法でもできるのであればそれを教えていただけば結構です。長くなりましたが、よろしくお願いします。

講義のお題はありません。