我在编程方面有很多经验(三个学期教授VBasic,C ++和Java),现在我上大学,我正在上C#课,这很无聊(老师知道)比我少。)
无论如何,对于我们的一个练习,我们正在创建一个数字猜测/彩票游戏。它有点像这样:
除了匹配逻辑之外,我已经完成了所有代码和GUI的工作。我知道我可以用大量的if语句来做这件事,我知道案件可能会有效,但我对案件没有经验。
我不希望我的'家庭作业'在这里完成,但我只是想知道哪种方法最有效的方法才能让它正常工作(如果每个项目排除一个匹配更容易,那就没问题了),并可能看到一些工作代码。
谢谢!
修改
如果我觉得自己很傲慢,我很抱歉,我并不是故意这样做(我绝对不会)。
我没有教授课程,我刚刚从一位主要是编程的老师那里上课,我在社区大学,而我的教授不是主要是编程老师。
我没有花时间写出大量的if语句,因为我知道它会被击落为无效。我目前没有资源来测试答案,但我可以尽快将它们检出并发回。
再一次,我为粗鲁和傲慢而道歉,我更感谢你的回答。
再次感谢!
答案 0 :(得分:1)
您可以使用循环来实现此功能。我使用了一个简单易用的列表,执行remove
操作等。这样的事情应该有效:
public static int getNumberOfMatches(List<int> userGuesses, List<int> machineGuesses) {
// Determine list equality.
bool matchedAll = true;
for (int i = 0; i < userGuesses.Count; i++) {
if (userGuesses[i] != machineGuesses[i]) {
matchedAll = false;
break;
}
}
// The lists were equal; return numberOfGuesses + 1 [which equals 4 in this case].
if (matchedAll) {
return userGuesses.Count + 1;
}
// Remove all matches from machineGuesses.
foreach (int userGuess in userGuesses) {
if (machineGuesses.Contains(userGuess)) {
machineGuesses.Remove(userGuess);
}
}
// Determine number of matches made.
return userGuesses.Count - machineGuesses.Count;
}
答案 1 :(得分:0)
我认为对于第一种情况,对于所有匹配,您将扫描阵列并可能增加计数器。既然你提到你知道c ++,那就是
int userGuesses[3];
int randomGen[3];
int matches = 0;
for(int i=0; i < 3; i++) if(userGuesses[i] == randoGen[i]) matches++;
if(matches == 3) //set highest score here.
if(matches == 2) // next score for ordered matches etc.
对于非有序情况,您需要为每个用户猜测生成的数组,以查看它是否具有该值。