我被我的猜谜游戏困住了,我应该只有一次机会猜,然后得到一个"结束";线。我试着做一个break和breakLoop命令,但我没有工作,我不知道如何选择它…有人能帮帮我吗?这是我的代码,我知道这不是最优的,因为我还在学习c#。
Console.WriteLine("gissa taletnDu 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!");
}
}
Edit:当你只需要一个时猜测是允许的,不需要循环,你的代码应该工作得很好(除了在最后一个else
语句之后缺少一个if
)。有一个"游戏结束";注意,在末尾,只需添加
Console.WriteLine("Game ended.");
另外,有一对括号在代码中是不需要的。在int rand_num = rd.Next(1, 10);
之后开始的一个,在代码的最后结束的一个。
原来的答案是:
在<<p> strong>第一个,只要答案不正确或没有更多的尝试(在尝试有限的情况下),您就希望循环重复部分代码: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.
3,您需要更改if else
语句的顺序。在您的代码中,if (Math.Abs(guess - rand_num) <= 3)
保护中的语句永远不能执行,因为您之前检查了guess < rand_num
和guess > rand_num
。由于您使用else if
,如果前面的条件为真,则永远不会计算以下条件。当使用if else
语句时,总是在之前检查更具体的情况检查更广泛的情况。但是在您的情况下,您可能只想删除else
,这样两个条件(和两个文本)都可以执行。