我的代码有问题,我试图制作一个简单的战争游戏应用程序,在开始时一切正常但是在10-20个点击按钮随机化新卡后我收到错误:< / p>
致命错误:索引超出范围
我知道变量的名称是不正确的,但我不是来自英格兰,所以我很快输入它们的英文单词和波兰语gramar:D,karty表示卡片)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var LeftCardOutlet: UIImageView!
@IBOutlet weak var RightcardOutlet: UIImageView!
@IBOutlet weak var LeftScoreOutlet: UILabel!
@IBOutlet weak var RightscoreOutlet: UILabel!
var karty = ["card2","card3","card4","card5","card6","card7","card8","card9","card10","jack","queen","king"]
var scoreplayer:Int=0
var CPUscore:Int=0
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func DealClicked(_ sender: UIButton) {
var random1:Int = 0
var random2:Int = 0
random1 = Int(arc4random_uniform(UInt32(12)))
random2 = Int(arc4random_uniform(UInt32(12)))
var im1=UIImage(named:"\(karty[random1+1])")
var im2=UIImage(named: "\(karty[random2+1])")
LeftCardOutlet.image=im1
RightcardOutlet.image=im2
if random1>random2 {
scoreplayer+=1
LeftScoreOutlet.text=String(scoreplayer)
}
if random1<random2 {
CPUscore+=1
RightscoreOutlet.text=String(CPUscore)
}
}
}
我在这行中有错误:
var im2=UIImage (named: "\ (karty[random2+1])")
我是斯威夫特的新人,我的第三人,所以请理解:)
答案 0 :(得分:0)
在几乎所有编程语言中,随机数生成器返回一个数字> = 0且&lt; (严格小于)论证。
所以Int(arc4random_uniform(UInt32(12)))
返回0到11之间的数字(包括)。
此外,在几乎所有编程语言中,数组元素的索引都以第一个元素的0开头。因此,这将修复您的代码:
var im1=UIImage(named:"\(karty[random1])")
var im2=UIImage(named:"\(karty[random2])")
一旦您的代码正常运行,您可以访问我们的姐妹网站Code Review以寻求改进。