有两个小难点需要注意1、要随机生成1~200之间任意数字;2、要能判定数字与基准数大小的比较,不等于基准书要能循环输入。需要使用while和if...else嵌套
首先声明两个int类型变量iNum作为自动生成的标准数变量;iGuess作为我们随机输入的数值变量;这里一定要注意大小写!
然后随机生成一个1~200之间的数字,这里需要用到RandomRandom rand = new Random();iNum = rand.Next(1, 200);这两行语法就是生成1到200之间的随机数,也可以简写为:int iNum = new Random().Next(1, 200);
然后输入你猜测的数字:这里有个数据类型的转换需要注意,一般默认输入数据类型为string,我们需要将他转换为int类型的时候需要用到Convert.ToInt32();语法:Console.Write('请输入你猜的数字:');iGuess = Convert.ToInt32(Console.ReadLine());//输入首次猜测的数字
接着我们用到while循环判定语法,表达式为:猜测的数值部位-1,并且猜测的数值也不是标准值。只有满足这两个条件while语法中的循环语句才能无线循环,我们才可以去做下一步判定,数值是大还是小。 while ((iGuess != -1) && (iGuess != iNum)) { }
在while循环语句中就要嵌套if语句来判定输入数值的大小。如果大了提示:'太大,请重新输入:'如果下了提示:'太小,请重新输入:'if (iGuess < iNum)//若猜测的数字小于基准数,则提示用户输入的数太小,并让用户重新输入 { Console.Write('太小,请重新输入:'); iGuess = Convert.ToInt32(Console.ReadLine()); } else//若猜测的数字大于基准数,则提示用户输入的数太大,并让用户重新输入 { Console.Write('太大,请重新输入:'); iGuess = Convert.ToInt32(Console.ReadLine()); }
直至输入的数值为标准值,或为-1时。即可跳出while循环语句。接下来需要判断输入的值到底是标准值还是-1;所以有需要使用上if...else语句。if (iGuess == -1)//若最后一次输入的数字是-1,循环结束的原因是用户选择退出游戏 { Console.WriteLine('退出游戏!'); } else//若最后一次输入的数字不是-1,用户猜对数字,获得成功,游戏结束 { Console.WriteLine('恭喜你,你赢了,猜中的数字是:' + iNum); }输入数值如果为-1直接跳出循环游戏结束;输入数值如果为标准值也直接跳出循环并显示恭喜你,你赢了,猜中的数字是:
最后记得收尾,否则内容只会在屏幕上一闪而过,你根本看不到任何东西;Console.WriteLine('\n———————游戏结束———————');Console.ReadLine();
完成程序如下: Console.WriteLine('——————猜数字游戏——————\n'); int iNum; int iGuess; Random rand = new Random(); iNum = rand.Next(1, 200);//生成1到200之间的随机数 Console.Write('请输入你猜的数字:'); iGuess = Convert.ToInt32(Console.ReadLine());//输入首次猜测的数字 while ((iGuess != -1) && (iGuess != iNum)) { if (iGuess < iNum)//若猜测的数字小于基准数,则提示用户输入的数太小,并让用户重新输入 { Console.Write('太小,请重新输入:'); iGuess = Convert.ToInt32(Console.ReadLine()); } else//若猜测的数字大于基准数,则提示用户输入的数太大,并让用户重新输入 { Console.Write('太大,请重新输入:'); iGuess = Convert.ToInt32(Console.ReadLine()); } } if (iGuess == -1)//若最后一次输入的数字是-1,循环结束的原因是用户选择退出游戏 { Console.WriteLine('退出游戏!'); } else//若最后一次输入的数字不是-1,用户猜对数字,获得成功,游戏结束 { Console.WriteLine('恭喜你,你赢了,猜中的数字是:' + iNum); } Console.WriteLine('\n———————游戏结束———————'); Console.ReadLine();