這是我正在嘗試做的。我正在製作一個遊戲,讓對手猜對方的話,每個猜測都有直接和間接的點擊。請參閱星號,瞭解我遇到問題的位置。swift:比較2個字符數組,從每個字符中刪除一個值
var directSum = 0
var indirectSum = 0
var words = ["canon", "cnams"]
var secretWord = Array(words[0].characters)
var guessWord = Array(words[1].characters)
var secretWordInd = [Character]()
var guessWordInd = [Character]()
let dir1 = secretWord[0] == guessWord[0]
let dir2 = secretWord[1] == guessWord[1]
let dir3 = secretWord[2] == guessWord[2]
let dir4 = secretWord[3] == guessWord[3]
let dir5 = secretWord[4] == guessWord[4]
if dir1 && dir2 && dir3 && dir4 && dir5 {
print ("you won!")
}
if dir1 {
directSum += 1
} else {
secretWordInd.append(secretWord[0])
guessWordInd.append(guessWord[0])
}
if dir2 {
directSum += 1
} else {
secretWordInd.append(secretWord[1])
guessWordInd.append(guessWord[1])
}
if dir3 {
directSum += 1
} else {
secretWordInd.append(secretWord[2])
guessWordInd.append(guessWord[2])
}
if dir4 {
directSum += 1
} else {
secretWordInd.append(secretWord[3])
guessWordInd.append(guessWord[3])
}
if dir5 {
directSum += 1
} else {
secretWordInd.append(secretWord[4])
guessWordInd.append(guessWord[4])
**}
for var secretLetter in secretWordInd {
for var guessLetter in guessWordInd{
if secretLetter == guessLetter {
secretWordInd.remove(at:secretWordInd.indexOf(secretLetter))
guessWordInd.remove(at:guessWordInd.indexOf(guessLetter))
indirectSum += 1
}
}
}**
var score = [directSum, indirectSum]
什麼,我需要做的是計算每一個有一個在數組一個字符時間:SecretWordInd在陣列相匹配的字符:guessWordInd,只刪除這兩個字符(每個字符串),並indirectSum + = 1每次發生這種情況。例如,如果一箇中有2個「a」,另一箇中有1個,則該功能需要從每個中刪除1個a。 這意味着directSum函數的輸出,在這種情況下,indirectSum應該是[1,2],因爲從猜測詞中的一個「n」只有一個間接命中。 這是是什麼使我的功能變得複雜。這兩個數組中的值數量不會保持不變。我無法弄清楚如何使用一種方法來做到這一點(.contains僅適用於我認爲的字符串)。非常感謝您的幫助!謝謝!
這是不是一個地方,讓你的功課,爲你做。 :)發佈關於您正在實施您想要執行的問題的具體問題。 – PeejWeej
這實際上是我正在構建的遊戲的遊戲邏輯的一部分。對不起,如果它看起來業餘,但我卡住 –
哈哈我絕對知道這是什麼。只是一個提示,嘗試和實施的東西先*然後*尋求幫助。機會是你認爲非常接近你所需要的東西,它可以幫助你更容易:) – PeejWeej