基本上,我正在创建一个游戏,我已经到了需要将分数添加到整数的阶段。
假设整数称为totalScore
。
我目前有一个名为spacedLetters的字符串,其中包含从26个字母数组(字母表)中随机挑选的7个字母。我创建了一个简单的:
Console.WriteLine("Please Enter A Word:");
userInput = Console.ReadLine();
允许用户输入单词的部分。我想要做的就是检查他们输入的字符串(userInput
),并根据他们输入的单词中的字母为totalScore
添加值。
这有点像拼字游戏,好像他们输入room
,它会重视r
,然后是o
,然后是另一个o
,然后是{ {1}}并将分配给这些字母的值添加到总分中。我知道我也需要一个参考表,但我根本不知道该怎么做。
TL; DR,我需要一个字母表中字母的参考表,以对应一定的数字(如拼字游戏),我需要一些代码来检查用户输入中的每个字母,并在一个数字的基础上添加一个值如果他们的话包含那封信。它还需要考虑重复的字母,例如在单词房间中。
谢谢。
编辑:
我最终使用了代码:
m
人们提供了解决方案,但它们不是我想要的,特别是关于我的代码,因此没有选择答案。
答案 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;
}
}