gpt4 book ai didi

ios - 刽子手计划

转载 作者:行者123 更新时间:2023-11-30 12:57:23 25 4
gpt4 key购买 nike

我正在 iOS 上开发 Hangman 单 View 应用程序游戏,但我一直卡在“letterButton”代码上。我打算做的是将 viewDidLoad 函数中生成的破折号替换为用户通过字母按钮输入的内容(所有字母按钮都分组在 letterButton 下)。

我尝试用字母数组替换破折号数组,但它只是告诉我字母数组太大了。我尝试将字母数组转换为字符串,然后用它替换破折号数组,但这也不起作用。所以现在我陷入了困境,我不知道该怎么做才能用字母输入替换破折号数组。

请帮忙(这是我的代码;请忽略我拼命尝试的 dashArray [n] 部分):

class ViewController: UIViewController {
@IBOutlet var letters: [UIButton]!
var wordArray: [String] = ["cat", "dog", "hamster", "lizard"]
var letterArray: [String] = ["Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M"]
var randomValue: Int = 0
var word: String = ""

@IBOutlet weak var wordLabel: UILabel!

override func viewDidLoad()
{
randomValue = Int(arc4random_uniform(UInt32(wordArray.count)))
word = wordArray[randomValue]
letterArray = Array(arrayLiteral: word)

let amount = word.characters.count
let dashArray = Array(count: amount, repeatedValue: "_")
let dashString = dashArray.joinWithSeparator(" ")

wordLabel.text = dashString

super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBAction func letterButton(sender: UIButton)
{
let amount = word.characters.count

var dashArray = Array(count: amount, repeatedValue: "_")

dashArray [0] =
dashArray [1] =
dashArray [2] =
dashArray [3] =
dashArray [4] =
dashArray [5] =
dashArray [6] =

let dashString = dashArray.joinWithSeparator(" ")
wordLabel.text = dashString
}

@IBAction func resetButton(sender: UIButton)
{
let amount = word.characters.count
let dashArray = Array(count: amount, repeatedValue: "_")
let dashString = dashArray.joinWithSeparator(" ")

wordLabel.text = dashString
}
}

最佳答案

如果我没猜错的话,您需要从点击的按钮中取出一个字母,并用该字母替换相应的破折号。

@IBAction func letterButton(sender: UIButton)
{
guard let letterIndex = letters.indexOf(sender) else { return }

let letter = letterArray[letterIndex]

var dashString = wordLabel.text
dashString[letterIndex] = letter
wordLabel.text = dashString
}

编辑感谢您的澄清,在阅读游戏规则后,您会更清楚您想要实现的目标。当前的问题是您在viewDidLoad中重写了letterArray。我的修复建议,对于可能的错误表示歉意:

class ViewController: UIViewController {
@IBOutlet var letterButtons: [UIButton]!
@IBOutlet weak var wordLabel: UILabel!
var words: [String] = ["cat", "dog", "hamster", "lizard"]
var letters: [String] = ["Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M"]
var word: String = ""

override func viewDidLoad()
{
super.viewDidLoad()

let randomValue = Int(arc4random_uniform(UInt32(words.count)))
word = wordArray[randomValue]

let amount = word.characters.count
let dashArray = Array(count: amount, repeatedValue: "_")
wordLabel.text = dashArray.joinWithSeparator(" ")
}

@IBAction func letterButton(sender: UIButton)
{
guard let letterIndex = letters.indexOf(sender) else { return }

let letter = letterArray[letterIndex]
guard let indexInWord = word.characters.indexOf(letter) else {
print("no such letter in this word")
return
}

// since we have spaces between dashes, we need to calc index this way
let indexInDashedString = indexInWord * 2

var dashString = wordLabel.text
dashString[indexInDashedString] = letter
wordLabel.text = dashString
}

@IBAction func resetButton(sender: UIButton)
{
let amount = word.characters.count
let dashArray = Array(count: amount, repeatedValue: "_")
wordLabel.text = dashArray.joinWithSeparator(" ")
}
}

关于ios - 刽子手计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40276687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com