尝试制作一个简单的Blackjack应用程序,以使自己习惯使用Xcode。我以前从未在Swift中进行编码,并且对C ++有所了解。出现错误,我不知道如何解决。我在对类似情况提出其他答案时遇到困难。
我不太确定是什么导致了问题,更不用说如何解决了:)
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
var balance = 500
let suits = ["h","d","c","s"]
//user card declarations
@IBOutlet weak var userCard1: UIImageView!
@IBOutlet weak var userCard2: UIImageView!
@IBOutlet weak var userCard3: UIImageView!
@IBOutlet weak var userCard4: UIImageView!
@IBOutlet weak var userCard5: UIImageView!
@IBOutlet weak var userCard6: UIImageView!
@IBOutlet weak var userCard7: UIImageView!
@IBOutlet weak var userCard8: UIImageView!
@IBOutlet weak var userCard9: UIImageView!
@IBOutlet weak var userCard10: UIImageView!
//dealer card declarations
@IBOutlet weak var dealerCard1: UIImageView!
@IBOutlet weak var dealerCard2: UIImageView!
@IBOutlet weak var dealerCard3: UIImageView!
@IBOutlet weak var dealerCard4: UIImageView!
@IBOutlet weak var dealerCard5: UIImageView!
var win = false
var bet = 0
//bet label
@IBOutlet weak var betLabel: UILabel!
//bet slider
@IBAction func betSlider(_ sender: UISlider) {
betLabel.text = String(Int(sender.value))
}
@IBOutlet weak var betSliderValue: UISlider!
var userCardSlot = 3
var dealerCardSlot = 3
var userTotal = 0
var dealerTotal = 0
//user cards displayed
var userCardArray = [userCard1, userCard2, userCard3, userCard4, userCard5, userCard6, userCard7, userCard8, userCard9, userCard10]
//dealer cards displayed
var dealerCardArray = [dealerCard1, dealerCard2, dealerCard3, dealerCard4, dealerCard5]
//hit button
@IBAction func hitTapped(_ sender: Any) {
var cardNum = Int.random(in: 2...14)
var cardSuit = Int(arc4random()) % 4
userCardArray[userCardSlot].image = UIImage(named: "\(cardSuit)card\(cardNum)")
}
//stand button
@IBAction func standTapped(_ sender: Any) {
for userTotal in userCardArray.reversed() {
userTotal += cardNum
}
for dealerTotal in dealerCardArray {
dealerTotal += cardNum
}
while dealerTotal < 17 {
dealerCardSlot += 1
dealerCardArray[dealerCardSlot].image = UIImage(named: "\(cardSuit)card\(cardNum)")
}
if dealerTotal <= userTotal {
win = true
} else {
win = false
}
}
@IBAction func newRoundTapped(_ sender: Any) {
bet = Int(betSliderValue.value)
userCardArray[0].image = UIImage(named: "\(cardSuit)card\(cardNum)")
userCardArray[1].image = UIImage(named: "\(cardSuit)card\(cardNum)")
dealerCardArray[0].image = UIImage(named: "\(cardSuit)card\(cardNum)")
dealerCardArray[0].image = UIImage(named: "Red_back.jpg")
//prompt for hit or stand
if win == true {
balance += (bet * 2)
} else {
balance -= bet
}
}
}
任何帮助表示赞赏!
答案 0 :(得分:-1)
通常无法使用init
之外的一个属性来初始化另一个属性,因为这样做时:
var b = a + 1
编译器隐式执行:
var b = self.a + 1
但是self
尚不可用;仅在init
期间可用。
唯一的例外是lazy
属性初始化程序:
lazy var b: Int = self.a + 1
根据您的情况,您可以将初始化移至init
:
var userCardArray: [UIImageView]
init() {
self.userCardArray = [userCard1, userCard2, ... ]
}