如何根据字符串中的字符添加整数?

时间:2018-02-01 14:29:24

标签: c#

基本上,我正在创建一个游戏,我已经到了需要将分数添加到整数的阶段。

假设整数称为totalScore

我目前有一个名为spacedLetters的字符串,其中包含从26个字母数组(字母表)中随机挑选的7个字母。我创建了一个简单的:

Console.WriteLine("Please Enter A Word:");
userInput = Console.ReadLine();

允许用户输入单词的部分。我想要做的就是检查他们输入的字符串(userInput),并根据他们输入的单词中的字母为totalScore添加值。

这有点像拼字游戏,好像他们输入room,它会重视r,然后是o,然后是另一个o,然后是{ {1}}并将分配给这些字母的值添加到总分中。我知道我也需要一个参考表,但我根本不知道该怎么做。

TL; DR,我需要一个字母表中字母的参考表,以对应一定的数字(如拼字游戏),我需要一些代码来检查用户输入中的每个字母,并在一个数字的基础上添加一个值如果他们的话包含那封信。它还需要考虑重复的字母,例如在单词房间中。

谢谢。

编辑:

我最终使用了代码:

m

人们提供了解决方案,但它们不是我想要的,特别是关于我的代码,因此没有选择答案。

2 个答案:

答案 0 :(得分:0)

算法的下列框架应该可以解决这个问题(对于发布F#代码感到遗憾,我倾向于认为它比C#更快;但翻译它应该非常简单):

let createRandomScores (n : int) =
    let r = System.Random ()
    let rec loop acc score =
        if score > n then dict acc else
            let x = char (r.Next (97, 123)), score
            loop (x :: acc) (score + 1)
    loop [] 1

let scoreDict = createRandomScores 6

let scoreWord (word : string) =
    let matchChar c =
        match scoreDict.TryGetValue c with
        | true, s -> s | _ -> 0
    word |> Seq.map matchChar
         |> Seq.sum

let addWordToScore score word =
    score + scoreWord word

编辑:在C#中可能如下所示:

static Dictionary<char, int> CreateRandomScores(int n)
{
    var r = new Random();
    var scores = new Dictionary<char, int>();
    for (var score = 1; score <= n; score++)
        scores[(char)r.Next(97, 123)] = score;
    return scores;
}

Dictionary<char, int> ScoreDict = CreateRandomScores(6);

static int ScoreWord(string word)
{
    var wordScore = 0;
    foreach (var c in word)
        if (ScoreDict.TryGetValue(c, out s))
            wordScore += s;
    return wordScore;
}

static int AddWordToScore(int score, string word)
{
    return score + ScoreWord(word);
}

答案 1 :(得分:0)

for (i = 0; i < 10; i++)
        {
            if (userInput.Contains(valueOf1[i]))
            {
                length1 = length1 + 1;
                totalScore = totalScore + 1;
            }
        }