C# C语言中的基本猜谜游戏机制# 我有过很多编程经验(三学期教VBasic、C++和java),现在我在大学,我正在上C级课程,这很无聊(老师比我知道的少)。

C# C语言中的基本猜谜游戏机制# 我有过很多编程经验(三学期教VBasic、C++和java),现在我在大学,我正在上C级课程,这很无聊(老师比我知道的少)。,c#,visual-studio,visual-studio-2010,C#,Visual Studio,Visual Studio 2010,无论如何,作为我们的一个练习,我们正在创建一个数字猜测/彩票游戏。它的工作原理是这样的: 用户输入1-4之间的三个整数,然后单击submit(我将它们存储到一个数组中) 程序从1-4生成三个数字(也在一个数组中) 检查匹配的函数运行并检查两个数组 如果所有三个按顺序匹配(即1,2,3=1,2,3,而不是1,2,3=1,3,2),则匹配=4 如果三个匹配都不符合顺序,则匹配=3 如果只有两个匹配,则匹配=2 我想确保只有一个匹配项算作一(即,[1,1,2][1,2,3]只向用户提供一个匹配项

无论如何,作为我们的一个练习,我们正在创建一个数字猜测/彩票游戏。它的工作原理是这样的:

  • 用户输入1-4之间的三个整数,然后单击submit(我将它们存储到一个数组中)
  • 程序从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(在提交时实例化)
除了匹配的逻辑,我所有的代码和GUI都可以工作。我知道我可以用大量的if语句来完成,我知道案例可能会工作,但我对案例没有经验

我不希望我的“家庭作业”在这里完成,但我只想知道哪种方法最有效,以使其正确工作(如果更容易排除每个项目的一个匹配项,那么这很好),并可能看到一些工作代码

谢谢

编辑

如果我给人的印象是傲慢,我很抱歉,我不是故意给人的印象是无所不知(我绝对不是)

我没有教过课程,我只是从一位主要从事编程的老师那里上课,我在一所社区大学,我的教授主要不是一位编程老师

我没有花时间写一大堆if语句,因为我知道它会被认为是无效的。我目前没有资源来测试答案,但我会尽快检查并发回

再一次,我为给人的印象是粗鲁和傲慢而道歉,我比你所知道的更感激你的回答


再次感谢!

您可以使用循环来实现此功能。为了便于使用,我使用了一个列表,执行
删除
等操作。类似的操作应该可以:

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;
}
public static int getNumberOfMatches(列出用户猜测,列出机器注释){
//确定列表相等。
bool matchedAll=true;
for(int i=0;i对于第一种情况,对于所有的匹配,你都可以把数组扫描一下,或者增加一个计数器。因为你提到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.
int用户猜测[3];
int-randomGen[3];
int匹配=0;
对于(inti=0;i<3;i++)如果(userGuesses[i]==randoGen[i])匹配++;
if(matches==3)//在此处设置最高分数。
if(matches==2)//有序匹配的下一个分数等。

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

这是不对的。
userguesss={1,1,1},machineguesses={1,2,2}<代码>输出3。看了代码后,我觉得这将是完美的!我会在我能测试的时候,然后我会再给你回复。非常感谢!你教过C++和java,你不喜欢case语句吗?我没有投票给你,但是我打赌是因为“我比老师好”的态度,或者说“gemme-teh-codez”的态度。一点也不刻薄。只是说,对于这个网站,你可以通过编写代码和寻求特定问题的帮助来获得更好的回复。祝你好运:)