回答編集履歴

2

微修正

2019/09/13 16:45

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  ```Swift
48
48
 
49
- var currentNo: Int = 0
49
+ var currentNo: Int = 1
50
50
 
51
51
  ```
52
52
 
@@ -104,9 +104,9 @@
104
104
 
105
105
  private func answerButtonPressed(_ sender: Any) {
106
106
 
107
- if self.correctAnswerLabel.alpha = 0.0 { // 答えが表示されていない時
107
+ if self.correctAnswerLabel.alpha == 0.0 { // 答えが表示されていない時
108
108
 
109
- self.correctAnswerLabel.alpha = 1.0
109
+ self.correctAnswerLabel.alpha = 1.0 // 答えの表示をさせる
110
110
 
111
111
  } else { // 答えが表示されている時
112
112
 
@@ -118,7 +118,7 @@
118
118
 
119
119
  currentNo = currentNo + 1 // 現在の問題番号を1個進める
120
120
 
121
- showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
121
+ showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
122
122
 
123
123
  }
124
124
 

1

情報追加

2019/09/13 16:45

投稿

hameji
hameji

スコア1380

test CHANGED
@@ -24,12 +24,126 @@
24
24
 
25
25
  特定の問題のセットの取得には
26
26
 
27
+ ```Swift
28
+
27
- db.collection("Question").whereField("setName", isEqualTo: "地理").order(by: "no")などで取得し、配列・独自クラスに保存。
29
+ db.collection("Question").whereField("setName", isEqualTo: "地理").order(by: "no")
30
+
31
+ ```
32
+
33
+ などで取得し、配列・独自クラスに保存。
28
34
 
29
35
 
30
36
 
31
37
  ユーザーの答えの記録は実際の答えと、正誤は最低でも保存したいですよね。
32
38
 
33
- 正誤の内容なもので、相対スコアなどを保存する場合はcorrectではなく、
39
+ 正誤のないようなもので、相対スコアなどを保存する場合はcorrectではなく、
34
40
 
35
41
  scoreで点数を保存するようにすれば良いのではないでしょうか?
42
+
43
+
44
+
45
+ また、ボタンを押したら表示(問題・選択肢)を変えるプログラムの作り方は
46
+
47
+ ```Swift
48
+
49
+ var currentNo: Int = 0
50
+
51
+ ```
52
+
53
+ などで、現在の問題番号を持たせ、
54
+
55
+ ボタンを押したら、問題番号を配列の要素の番号として利用し、viewの更新をさせることですね。
56
+
57
+
58
+
59
+ ```Swift
60
+
61
+ メンバ変数
62
+
63
+ var currentNo: Int = 1
64
+
65
+ let questions = [
66
+
67
+ ["1", "野菜はどれですか?", "リンゴ", "いちご", "みかん", "いちご"], // No, 質問, 選択肢1, 選択肢2, 選択肢3, 答え
68
+
69
+ ["2", "お米の品種名でないものはどれ?", "ほしのひかり", "ななつぼし", "はるみ", "ほしのひかり"],
70
+
71
+ ["3", "ギネスにも認定されているもっとも栄養価が高い果物は?", "バナナ", "栗", "アボガド"]
72
+
73
+ ]
74
+
75
+
76
+
77
+ func viewDidLoad() {
78
+
79
+ showQuestion(no: currentNo)
80
+
81
+ }
82
+
83
+
84
+
85
+ private func showQuestion(no: Int) {
86
+
87
+ self.progressLabel.text = String(no) + "/" + String(questions.count) // 進捗用表示、これで「1/3」などと表示される
88
+
89
+ self.QuestionNoLabel.text = questions[no-1][1] // questionsの配列のno番目(例えばno=1なら要素0(=1個目の配列)で、その[1]なので要素2(0,1と数えるから), つまり"野菜はどれですか?"
90
+
91
+ self.answerButton1.setTitle(questions[no-1][2] , for: .normal)
92
+
93
+ self.answerButton2.setTitle(questions[no-1][3] , for: .normal)
94
+
95
+ self.answerButton3.setTitle(questions[no-1][4] , for: .normal)
96
+
97
+ self.correctAnswerLabel.alpha = 0.0 // 毎回表示時に答えをalpha 0(透明に戻す)
98
+
99
+ self.correctAnswerLabel.text = questions[no-1][5]
100
+
101
+ }
102
+
103
+
104
+
105
+ private func answerButtonPressed(_ sender: Any) {
106
+
107
+ if self.correctAnswerLabel.alpha = 0.0 { // 答えが表示されていない時
108
+
109
+ self.correctAnswerLabel.alpha = 1.0
110
+
111
+ } else { // 答えが表示されている時
112
+
113
+ if currentNo != 3 { // 答えが表示されている時で、最後の問題に来て、ボタンを押されたら、segueする
114
+
115
+ self.performSegue( ... // 省略
116
+
117
+ } else { // 最後の問題じゃない時の動作
118
+
119
+ currentNo = currentNo + 1 // 現在の問題番号を1個進める
120
+
121
+ showQuestion(no: currentNo) // 1個進めた番号の問題, 選択を表示する
122
+
123
+ }
124
+
125
+ }
126
+
127
+ }
128
+
129
+ ```
130
+
131
+
132
+
133
+ とりあえず、大まかなコードを示しました。
134
+
135
+ 他にも
136
+
137
+  ・答えを保存する、
138
+
139
+  ・データの保存構造体orクラスを作る
140
+
141
+  ・質問/選択肢/正解をfirestoreからDLし、データ構造体・クラスに保存する
142
+
143
+  ・答えずに進む/戻るボタンの実装
144
+
145
+  ・答えを選んだ時の動作正解時○や誤りの時×の表示
146
+
147
+ などなど、さらに考えて実装しないといけないことがあると思いますが、
148
+
149
+ そこは考えたり、調べたりするのも力になるので、試行錯誤してみてくださいね。