C# 猜数字游戏仅允许一次猜测。

3

我卡在了一个猜谜游戏中,我只有一次猜测的机会,然后就会得到一个“结束”的提示。我尝试使用"break"和"breakLoop"命令,但它们没有起作用,我不知道该怎么解决它... 请问有谁可以帮我吗?这是我的代码,我知道它并不是最优秀的,因为我还在学习C#。

 Console.WriteLine("gissa talet\nDu ska nu gissa ett tal mellan 1 ocn 100, så 
 varsågod..\nskriv in ett tal");
 var str = Console.ReadLine();
 int guess = Convert.ToInt32(str);
 //gonna make it random between 1-100
 Random rd = new Random();
 int rand_num = rd.Next(1, 10);
 {
 //when i guess right
 if (guess == rand_num)
 {
    Console.WriteLine("Ditt Tal är rätt. grattis!");
 }
 //when it´s to small guess
 else if (guess < rand_num)
 {
    Console.WriteLine("Ditt tal är för litet. gissa på ett större tal");
 }
 //when i guess to big
 else if (guess > rand_num)
 {
    Console.WriteLine("Ditt tal är för stort. gissa på ett mindre tal");
 }
 // when i was close to the answer
 else if (Math.Abs(guess - rand_num) <= 3)
 {
    Console.WriteLine("Du är dock nära och det bränns");
 }

 // when i guess a number thats over the number i chould guess
 else (guess > 10)
 {
    Console.WriteLine("Du måste skriva in ett tal mellan 1 och 100!");
 }
 }

5
如果你没有循环,就不能打破循环。 - ProgrammingLlama
1个回答

5

编辑: 由于你实际上只想要允许 一个 猜测,因此不需要循环,你的代码应该可以正常工作(除了最后一个 else 语句后缺少一个 if)。如果想在游戏结束时显示“游戏结束”通知,请添加。

Console.WriteLine("Game ended.");

在你的代码结尾处需要加上一段代码。
另外,你的代码中有一对不必要的花括号。一个是在 int rand_num = rd.Next(1, 10); 后面的开括号,另一个是在代码最后的闭括号。
以下是原始答案:
首先,你需要在代码的某些部分周围添加一个循环,只要答案不正确或没有更多的尝试(如果尝试有限),就重复执行该循环:
const int tries = 10;              // Give the player 10 tries to guess correctly.
for (int i = 0; i < tries; i++)
{
    if (guessedCorrectly)
    {
        break;
    }
}


其次,您需要在开始循环之前定义随机数,并在循环内从玩家查询新的猜测。
//Set random number.
//Define Loop.
{
    //Get new guess from player.
    //Check if guess was correct.
    //Decide weather the loop must continue or ended.
}
//Display some result.

第三, 你需要改变你的 if else 语句的顺序。在你的代码中,if (Math.Abs(guess - rand_num) <= 3) 的保护内的语句永远不会被执行,因为你先检查了 guess < rand_numguess > rand_num。而且由于你使用了 else if,如果前面的条件为真,后面的条件将永远不会被评估。在使用 if else 语句时,始终首先检查更具体的情况,然后再检查更广泛的情况。但在你的情况下,你可能只想删除 else,这样两个条件(和两个文本)都可以执行。


谢谢,我还没有真正弄清楚循环怎么工作... :) - Kent Karlsson
1
欢迎。考虑查看这个教程,以学习一些基本概念。 - Felix
你好!我已经将循环放入我的代码中,但它似乎不起作用,而且我不知道在哪里应该放置我的break命令,因为不应该有第二次机会。我需要在程序结尾处添加一个“程序结束”注释。请问您能否详细解释一下我应该如何做?我已经更改了if、else if和else命令,所以它们现在应该是正确的,但感觉Visual Studio不想把所有东西都变成循环... - Kent Karlsson
1
@KentKarlsson 如果玩家只有一次猜测的机会,那么您就不需要循环。但是答案中的第三点仍然有效。一旦您解决了这个问题,一切都应该按预期工作,对吧?如果不行,请更具体地说明哪些方面出了问题。 - StefanFFM
我刚刚修复了它,现在只剩下一个小问题,就是我得到了两个答案,所以如果我猜测超过100,我会得到两个答案,这太高了。我需要在1,100之间猜测,但我的老师只想要一个答案。请让我在1,100之间猜测... - Kent Karlsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接