C#中的基本猜测游戏机制

时间:2011-10-16 05:50:28

标签: c# visual-studio visual-studio-2010

我在编程方面有很多经验(三个学期教授VBasic,C ++和Java),现在我上大学,我正在上C#课,这很无聊(老师知道)比我少。)

无论如何,对于我们的一个练习,我们正在创建一个数字猜测/彩票游戏。它有点像这样:

  • 用户从1-4输入三个整数并点击提交(我将它们存储到一个数组中)
  • 程序从1-4(也在数组中)生成三个数字
  • 检查匹配运行并检查两个数组的函数
    • 如果所有三个按顺序匹配(即1,2,3 = 1,2,3而不是1,2,3 = 1,3,2),匹配= 4
    • 如果所有三个都不按顺序匹配,匹配= 3
    • 如果只匹配两个,匹配= 2
      • 我想确保只有一个匹配计为一个(即[1,1,2] [1,2,3]只给用户一个匹配。
    • 如果只有一个匹配,匹配= 1
    • 如果没有匹配,匹配保持为0(它在submit_click上实例化)

除了匹配逻辑之外,我已经完成了所有代码和GUI的工作。我知道我可以用大量的if语句来做这件事,我知道案件可能会有效,但我对案件没有经验。

我不希望我的'家庭作业'在这里完成,但我只是想知道哪种方法最有效的方法才能让它正常工作(如果每个项目排除一个匹配更容易,那就没问题了),并可能看到一些工作代码。

谢谢!

修改

如果我觉得自己很傲慢,我很抱歉,我并不是故意这样做(我绝对不会)。

我没有教授课程,我刚刚从一位主要是编程的老师那里上课,我在社区大学,而我的教授不是主要是编程老师。

我没有花时间写出大量的if语句,因为我知道它会被击落为无效。我目前没有资源来测试答案,但我可以尽快将它们检出并发回。

再一次,我为粗鲁和傲慢而道歉,我更感谢你的回答。

再次感谢!

2 个答案:

答案 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.

对于非有序情况,您需要为每个用户猜测生成的数组,以查看它是否具有该值。