我目前正在swift创建一个刽子手游戏,但是当你猜一封信时,我有一些更新单词的问题。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Submit: UIButton!
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var secretWord: UILabel!
var wordlist = [String]();
var wordA = [Character]();
var randomIndex: Int = 0;
var word: String = "";
var test: String = "";
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
wordlist = ["orange juice", "waffles", "pancakes", "toast", "poptarts", "bagels", "bacon", "eggs"]
randomIndex = Int(arc4random_uniform(UInt32(wordlist.count)))
//var word = wordlist[randomIndex]
word = wordlist[1];
DisplayWord()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
var letter: String = "";
@IBAction func Submit(sender: AnyObject) {
var letter = textField.text;
for(var i = 0; i < wordA.count; i++){
if(letter == String(wordA[i])){
wordA[i] = "*";
}
}
DisplayWord();
}
func DisplayWord(){
test = "";
for(var i = 0; i < NSString(string: word).length; i++){
for index in indices(word){
wordA.append(word[index]);
}
if(wordA[i] == " "){
test += " ";
}else if(String(wordA[i]) == "*"){
test += letter;
}else{
test += "_ ";
}
}
secretWord.text = test;
}
}
我知道我没有随机发生器来选择一个随机单词,我稍后会添加它。如果他们猜测已经猜到了那个字母,那么添加所有正确的猜测到一个数组来修复。
当应用程序打开时,它会设置变量/ String word =&#34; waffles&#34;目前。然后它运行DisplayWord函数以显示与单词长度相对应的所有下划线。
然后,当您单击“提交”按钮时,它会扫描该单词以查看它是否包含您猜到的单词。如果是,则将该字母设置为*。然后重新运行DisplayWord函数。它检查是否有任何字母是*,如果是*,而不是添加&#34; _&#34;对于字符串,它添加了最后输入的字母。
出于某种原因,它只是将字符串加倍,并且标签中仍然包含所有下划线。
更新:Phoen1xUK修复了字符串加倍的错误,但它用空格替换了你猜到的字母。
答案 0 :(得分:0)
首先,它将字符串加倍的原因是因为每次调用test
时都会附加DisplayWord()
。您应该在该函数内部创建test
,或者每次调用该函数时将其设置为空字符串。
您正在获取空格,因为您在Submit()
内创建了一个本地字母变量而没有更改将在DisplayWord()
中使用的字母 - 因此您可以删除{来自var
的第一行的{1}}。
然而,这仍然是不完整的,因为每次进行正确的猜测时,所有标记为*的地方都将被该字母替换。您应该获得从原始单词替换下划线所需的字母,而不是每次猜到的字母。然后将if语句更改为Submit()
同时从test += String(originalWord[i]);
中取出wordA
的for循环,因为每次都会调用它并不断追加它。我建议你把它放在DisplayWord()
内选择的地方。另外,您可以使用viewDidLoad()
从字符串中创建一个字符数组。或者,如果您使用的是Swift 2:wordA = Array(word)
。
总结:
Array(word.characters)
正如mentioned by dasdom一样,通常的做法就是使用小写字母来启动方法。