質問編集履歴

2

code内容の編集

2020/09/07 06:23

投稿

Anoa
Anoa

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,116 +1,6 @@
1
1
  ```Swift
2
2
 
3
- import UIKit
4
3
 
5
-
6
-
7
- private let reuseIdentifier = "Cell"
8
-
9
-
10
-
11
- class CollectionViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
12
-
13
- var redCellIndex: Int = Int.random(in: 0..<12)
14
-
15
-
16
-
17
- @IBOutlet var collectionView: UICollectionView!
18
-
19
-
20
-
21
- @IBOutlet var collectionView2: UICollectionView!
22
-
23
-
24
-
25
- @IBOutlet var pointLabel:UILabel!
26
-
27
-
28
-
29
- @IBOutlet var timerLabel:UILabel!
30
-
31
-
32
-
33
- var point:Int=0
34
-
35
-
36
-
37
- var timer:Timer = Timer()
38
-
39
-
40
-
41
- var count:Float = 30
42
-
43
-
44
-
45
- var rand:Int=0
46
-
47
-
48
-
49
- var OnGame = false
50
-
51
-
52
-
53
- override func viewDidLoad() {
54
-
55
- super.viewDidLoad()
56
-
57
-
58
-
59
- OnGame = true
60
-
61
- self.collectionView.delegate = self
62
-
63
- self.collectionView.dataSource = self
64
-
65
-
66
-
67
- let layout = UICollectionViewFlowLayout()
68
-
69
- layout.sectionInset = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)
70
-
71
- collectionView.collectionViewLayout = layout
72
-
73
-
74
-
75
- if !timer.isValid {
76
-
77
- timer = Timer.scheduledTimer(timeInterval:0.01,target: self,selector: #selector(self.down),userInfo:nil,repeats:true)
78
-
79
- }
80
-
81
-
82
-
83
- self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
84
-
85
- }
86
-
87
- @objc func changeColor() {
88
-
89
- // let redCellIndex: Int = Int.random(in: 0..<12)
90
-
91
- redCellIndex = Int.random(in: 0..<12)
92
-
93
- collectionView.reloadData()
94
-
95
- }
96
-
97
-
98
-
99
- func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
100
-
101
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
102
-
103
-
104
-
105
- cell.backgroundColor = self.redCellIndex == indexPath.row ? .red : .black
106
-
107
-
108
-
109
- return cell
110
-
111
-
112
-
113
- }
114
4
 
115
5
 
116
6
 
@@ -220,10 +110,4 @@
220
110
 
221
111
  黒いセルを押してしまった場合はタイマーを破棄し、タイマーは0になるようになっています。しかし黒いセルを押した後にスコアを本当は残してスコアLabelに表示したいのですが、わからなかったので今はとりあえずGameoverにしてあります。
222
112
 
223
- どうやったら赤いセルをおし押して加算された分のスコアを反映できますか?
113
+ どうやったら赤いセルをおし押して加算された分のスコアを反映できますか?
224
-
225
-
226
-
227
-
228
-
229
- それとタイマーが0になったら止まるはずなのですが、黒いセルを押した場合は赤いセルを押しても加算されないのですが、黒いセルを押さずにタイマーが0になった場合は赤いセルを押すとスコアが加算され続けてしまいます。

1

追記

2020/09/07 06:23

投稿

Anoa
Anoa

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,117 @@
1
1
  ```Swift
2
2
 
3
+ import UIKit
4
+
5
+
6
+
7
+ private let reuseIdentifier = "Cell"
8
+
9
+
10
+
11
+ class CollectionViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
12
+
13
+ var redCellIndex: Int = Int.random(in: 0..<12)
14
+
15
+
16
+
17
+ @IBOutlet var collectionView: UICollectionView!
18
+
19
+
20
+
21
+ @IBOutlet var collectionView2: UICollectionView!
22
+
23
+
24
+
25
+ @IBOutlet var pointLabel:UILabel!
26
+
27
+
28
+
29
+ @IBOutlet var timerLabel:UILabel!
30
+
31
+
32
+
33
+ var point:Int=0
34
+
35
+
36
+
37
+ var timer:Timer = Timer()
38
+
39
+
40
+
41
+ var count:Float = 30
42
+
43
+
44
+
45
+ var rand:Int=0
46
+
47
+
48
+
49
+ var OnGame = false
50
+
51
+
52
+
53
+ override func viewDidLoad() {
54
+
55
+ super.viewDidLoad()
56
+
57
+
58
+
59
+ OnGame = true
60
+
61
+ self.collectionView.delegate = self
62
+
63
+ self.collectionView.dataSource = self
64
+
65
+
66
+
67
+ let layout = UICollectionViewFlowLayout()
68
+
69
+ layout.sectionInset = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)
70
+
71
+ collectionView.collectionViewLayout = layout
72
+
73
+
74
+
75
+ if !timer.isValid {
76
+
77
+ timer = Timer.scheduledTimer(timeInterval:0.01,target: self,selector: #selector(self.down),userInfo:nil,repeats:true)
78
+
79
+ }
80
+
81
+
82
+
83
+ self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
84
+
85
+ }
86
+
87
+ @objc func changeColor() {
88
+
89
+ // let redCellIndex: Int = Int.random(in: 0..<12)
90
+
91
+ redCellIndex = Int.random(in: 0..<12)
92
+
93
+ collectionView.reloadData()
94
+
95
+ }
96
+
97
+
98
+
99
+ func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
100
+
101
+ let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
102
+
103
+
104
+
105
+ cell.backgroundColor = self.redCellIndex == indexPath.row ? .red : .black
106
+
107
+
108
+
109
+ return cell
110
+
111
+
112
+
113
+ }
114
+
3
115
 
4
116
 
5
117
  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
@@ -14,12 +126,16 @@
14
126
 
15
127
  point = point+0
16
128
 
17
-
129
+ // pointLabel.text="GameOver"
18
130
 
19
131
  pointLabel.text = String(point)
20
132
 
21
133
  timerLabel.text="0"
22
134
 
135
+ // pointLabel.invalidate()
136
+
137
+ // pointLabel.text="0"
138
+
23
139
 
24
140
 
25
141
  } else {
@@ -34,6 +150,8 @@
34
150
 
35
151
  OnGame = false
36
152
 
153
+ // pointLabel.text="0"
154
+
37
155
  }
38
156
 
39
157
 
@@ -84,7 +202,7 @@
84
202
 
85
203
  timerLabel.text = "Finish"
86
204
 
87
-
205
+ // point = point+0
88
206
 
89
207
  }
90
208
 
@@ -96,8 +214,16 @@
96
214
 
97
215
 
98
216
 
217
+
218
+
99
219
  ```ここまでは此処で教えていただき理解で理解できたのですが、
100
220
 
101
221
  黒いセルを押してしまった場合はタイマーを破棄し、タイマーは0になるようになっています。しかし黒いセルを押した後にスコアを本当は残してスコアLabelに表示したいのですが、わからなかったので今はとりあえずGameoverにしてあります。
102
222
 
103
- どうやったら赤いセルをおし押して加算された分のスコアを反映できますか?
223
+ どうやったら赤いセルをおし押して加算された分のスコアを反映できますか?
224
+
225
+
226
+
227
+
228
+
229
+ それとタイマーが0になったら止まるはずなのですが、黒いセルを押した場合は赤いセルを押しても加算されないのですが、黒いセルを押さずにタイマーが0になった場合は赤いセルを押すとスコアが加算され続けてしまいます。