Swift2. 配列を削除するremoveAtIndex()について質問です
早速質問なのですが、今現在簡単な間違い探しの様なゲームを作成しようとしています。
内容としては、正方形を同じ形で色を付けて4つ表示し、1つだけ違う色で表示するというものです。
そこでいくつもの問題を作り(赤色、黄色、青など)ランダムに表示させた後に
1回選ばれた問題を削除する(配列から削除し、次回から表示させない)用にしたいのですが
うまくその問題が削除されずに、また表示されてしまいます。
コードは以下になります。
コードの問題があると思う所は、「問題をランダムに選んでその後削除する」になります。
よろしくお願いします。
import SpriteKit
import GameplayKit
class GameScene: SKScene {
//問題設定
let randomSource = GKARC4RandomSource()
var questionMax:Int = 6
var questionList:[SKShapeNode] = []
let correct = ["■"]
let mistake = ["■"]
var questionNo:Int = 0
var misutakeNo:Int = 0
override func didMoveToView(view: SKView) {
//問題実行
questioning()
}
//問題をランダムで選んでその後削除する
func questioning(){
var items = [newQuestion, newQuestion2]
let q1 = Int(arc4random()) % items.count
items[q1]()
let _ = items.removeAtIndex(q1)
}
//問題設定1青
func newQuestion(){
questionMax = 4
questionNo = randomSource.nextIntWithUpperBound(correct.count)
misutakeNo = randomSource.nextIntWithUpperBound(questionMax)
questionList = []
for LoopID in 0..<questionMax {
let question = SKShapeNode(rectOfSize:CGSizeMake(308.0,308.0))
let x = (LoopID % 2) * 315 + 165
let y = (LoopID / 2) * 315 + 470
question.position = CGPoint(x: x, y: y)
self.addChild(question)
questionList.append(question)
let sikisai = SKLabelNode()
if LoopID != misutakeNo {
sikisai.text = correct[questionNo]
sikisai.fontColor = UIColor(red: 0/255, green: 0/255, blue: 255/255, alpha: 1.0)
}else {
sikisai.text = mistake[questionNo]
sikisai.fontColor = UIColor(red: 0/255, green: 0/255, blue: 100/255, alpha: 1.0)
}
sikisai.fontSize = 405
sikisai.position = CGPoint(x:0, y:-155)
question.addChild(sikisai)
}
}
//問題設定2赤
func newQuestion2(){
questionMax = 4
questionNo = randomSource.nextIntWithUpperBound(correct.count)
misutakeNo = randomSource.nextIntWithUpperBound(questionMax)
questionList = []
for LoopID in 0..<questionMax {
let question = SKShapeNode(rectOfSize:CGSizeMake(308.0,308.0))
let x = (LoopID % 2) * 315 + 165
let y = (LoopID / 2) * 315 + 470
question.position = CGPoint(x: x, y: y)
self.addChild(question)
questionList.append(question)
let sikisai = SKLabelNode()
if LoopID != misutakeNo {
sikisai.text = correct[questionNo]
sikisai.fontColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1.0)
}else {
sikisai.text = mistake[questionNo]
sikisai.fontColor = UIColor(red: 100/255, green: 0/255, blue: 0/255, alpha: 1.0)
}
sikisai.fontSize = 405
sikisai.position = CGPoint(x:0, y:-155)
question.addChild(sikisai)
}
}
//タップを調べる
func answerCheck(NO:Int) {
if NO == misutakeNo {
//正解
questioning()
} else {
//不正解
questioning()
}
for LoopID in 0..<questionMax {
questionList[LoopID].removeFromParent()
questioning()}
}
//タップ処理
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
let touchNodes = self.nodesAtPoint(location)
for tNode in touchNodes {
for LoopID in 0..<questionMax {
if tNode == questionList[LoopID]{
answerCheck(LoopID)
}
}
}
}
}
}