
用C#编写猜数字游戏,
编写猜数字游戏,游戏开始时,由系统随即产生一个四位数(各个位上的数字不重复),然后由用户猜测,系统将用户输入的四位数与产生的四位数进行比较,如果一致,则算猜对,否则返回数...
编写猜数字游戏,游戏开始时,由系统随即产生一个四位数(各个位上的数字不重复),然后由用户猜测,系统将用户输入的四位数与产生的四位数进行比较,如果一致,则算猜对,否则返回数字和位置的匹配情况。如果用户在10次内猜对则算成功,否则算失败。例:系统产生的四位数为1234,用户猜测为2047,则系统返回;猜对数字的个数为2,猜对位置的个数是1。
展开
展开全部
static void Main(string[] args)
{
int guessCount = 10;
List<int> list = new List<int>();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
Random random = new Random();
int first = random.Next(9) + 1;// 首位不为0
int second = random.Next(9);// 要求不重复 所以依次递减 还剩9个
int third = random.Next(8);
int fourth = random.Next(7);
// 系统生成了随机四位数 number
int number = list[first] * 1000;
list.RemoveAt(first);
number += list[second] * 100;
list.RemoveAt(second);
number += list[third] * 10;
list.RemoveAt(third);
number += list[fourth];
list.RemoveAt(fourth);
// 系统生成了随机四位数 number
string systemNumber = number.ToString();
// 当剩余次数大于0
while (guessCount > 0)
{
Console.Write("请输入4位数字:");
string input = Console.ReadLine().Trim();
int inputNumber = 0;
int a = 0;// 猜对位置
int b = 0;// 猜对数字
// 如果输入的是数字 且长度为4
if (int.TryParse(input, out inputNumber)
&& inputNumber.ToString().Length == 4)
{
string guessNumber = inputNumber.ToString();
// 如果有重复 比如输入了1233
if (guessNumber[0].Equals(guessNumber[1])
|| guessNumber[0].Equals(guessNumber[2])
|| guessNumber[0].Equals(guessNumber[3]))
{
Console.WriteLine("不能输入有重复的数字!\n");
continue;
}
for (int i = 0; i < 4; i++)
{
// 含数字的情况
if (systemNumber.Contains(guessNumber[i]))
{
b++;
}
// 恰等于的情况
if (systemNumber[i].Equals(guessNumber[i]))
{
a++;
}
}
}
else
{
Console.WriteLine("输入的不是四位数字!\n");
continue;
}
// 位置全猜对时
if (a == 4)
{
Console.WriteLine("恭喜你猜对了!");
break;
}
else
{
Console.WriteLine("猜对数字的个数为" + b + ",猜对位置的个数是" + a);
}
// 剩余次数
guessCount--;
if (guessCount == 0)
{
Console.WriteLine("没有机会了!正确答案为:" + systemNumber);
}
else
{
Console.WriteLine("还剩" + guessCount + "次机会\n");
}
}
Console.WriteLine("\n按回车键退出,按其他任意键继续猜。。。。");
ConsoleKeyInfo info = Console.ReadKey();
if (info.Key == ConsoleKey.Enter)
{
return;
}
else
{
Console.Clear();
Main(null);
}
}
{
int guessCount = 10;
List<int> list = new List<int>();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
Random random = new Random();
int first = random.Next(9) + 1;// 首位不为0
int second = random.Next(9);// 要求不重复 所以依次递减 还剩9个
int third = random.Next(8);
int fourth = random.Next(7);
// 系统生成了随机四位数 number
int number = list[first] * 1000;
list.RemoveAt(first);
number += list[second] * 100;
list.RemoveAt(second);
number += list[third] * 10;
list.RemoveAt(third);
number += list[fourth];
list.RemoveAt(fourth);
// 系统生成了随机四位数 number
string systemNumber = number.ToString();
// 当剩余次数大于0
while (guessCount > 0)
{
Console.Write("请输入4位数字:");
string input = Console.ReadLine().Trim();
int inputNumber = 0;
int a = 0;// 猜对位置
int b = 0;// 猜对数字
// 如果输入的是数字 且长度为4
if (int.TryParse(input, out inputNumber)
&& inputNumber.ToString().Length == 4)
{
string guessNumber = inputNumber.ToString();
// 如果有重复 比如输入了1233
if (guessNumber[0].Equals(guessNumber[1])
|| guessNumber[0].Equals(guessNumber[2])
|| guessNumber[0].Equals(guessNumber[3]))
{
Console.WriteLine("不能输入有重复的数字!\n");
continue;
}
for (int i = 0; i < 4; i++)
{
// 含数字的情况
if (systemNumber.Contains(guessNumber[i]))
{
b++;
}
// 恰等于的情况
if (systemNumber[i].Equals(guessNumber[i]))
{
a++;
}
}
}
else
{
Console.WriteLine("输入的不是四位数字!\n");
continue;
}
// 位置全猜对时
if (a == 4)
{
Console.WriteLine("恭喜你猜对了!");
break;
}
else
{
Console.WriteLine("猜对数字的个数为" + b + ",猜对位置的个数是" + a);
}
// 剩余次数
guessCount--;
if (guessCount == 0)
{
Console.WriteLine("没有机会了!正确答案为:" + systemNumber);
}
else
{
Console.WriteLine("还剩" + guessCount + "次机会\n");
}
}
Console.WriteLine("\n按回车键退出,按其他任意键继续猜。。。。");
ConsoleKeyInfo info = Console.ReadKey();
if (info.Key == ConsoleKey.Enter)
{
return;
}
else
{
Console.Clear();
Main(null);
}
}
展开全部
Random r = new Random(DateTime.Now.Millisecond);
string num = r.Next().ToString().Substring(0, 4);
int[] nums1 = new int[4];
for (int i = 0; i < 4; i++)
{
nums1[i] = Convert.ToInt32(num.Substring(i, 1));
}
int[] nums2 = new int[4];
int count = 0;//猜到数字个数
int right = 0;//猜到位置个数
for (int g = 0; g < 3;g++ )
{
Console.WriteLine("请输入一个四位数:");
string s = Console.ReadLine();
for (int i = 0; i < 4; i++)
{
nums2[i] = Convert.ToInt32(s.Substring(i, 1));
}
count = 0;
right = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (nums2[i] == nums1[j])
{
if (i == j)
{
nums1[j] = -1;//当系统数字和用书输入的数字在同一个位置相等时,吧把那个位置的数字替换掉
count++;
right++;
}
else
{
count++;
}
break;
}
}
}
Console.WriteLine("系统数字为" + num + "猜对数字个数为" + count + "猜对数字位数为" + right);
}
if(count==4&&right==4){
Console.WriteLine("恭喜你答对了");
}
else
{
Console.WriteLine("系统数字为" + num + "猜对数字个数为" + count + "猜对数字位数为" + right);
}
}
string num = r.Next().ToString().Substring(0, 4);
int[] nums1 = new int[4];
for (int i = 0; i < 4; i++)
{
nums1[i] = Convert.ToInt32(num.Substring(i, 1));
}
int[] nums2 = new int[4];
int count = 0;//猜到数字个数
int right = 0;//猜到位置个数
for (int g = 0; g < 3;g++ )
{
Console.WriteLine("请输入一个四位数:");
string s = Console.ReadLine();
for (int i = 0; i < 4; i++)
{
nums2[i] = Convert.ToInt32(s.Substring(i, 1));
}
count = 0;
right = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (nums2[i] == nums1[j])
{
if (i == j)
{
nums1[j] = -1;//当系统数字和用书输入的数字在同一个位置相等时,吧把那个位置的数字替换掉
count++;
right++;
}
else
{
count++;
}
break;
}
}
}
Console.WriteLine("系统数字为" + num + "猜对数字个数为" + count + "猜对数字位数为" + right);
}
if(count==4&&right==4){
Console.WriteLine("恭喜你答对了");
}
else
{
Console.WriteLine("系统数字为" + num + "猜对数字个数为" + count + "猜对数字位数为" + right);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
e guess
{
class readyguess //用户输入参数
{
public int formatinput()
{
int i = 0;
try
{
i = Convert.ToInt16(Console.ReadLine());
if (i == 0)
System.Environment.Exit(-1);
return i;
}
catch (FormatException)
{
Console.WriteLine("输入参数有误,请重新输入:");
return 0;
}
}
public int Rannumber() //由计算机产生一个随机数(0~100)的类
{
Random Ran;
Ran = new Random();
int i = Convert.ToInt32(Ran.NextDouble() * 100);
return i;
}
public void Commentguess(int count) //根据游戏者的次数给出评价
{
switch (count)
{
case 1: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 2: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 3: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 4: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 5: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 6:
Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 7: Console.WriteLine("你还行!猜了次!", count);
break;
case 8: Console.WriteLine("你还行!猜了次!", count);
break;
case 9: Console.WriteLine("你还行!猜了次!", count);
break;
case 10: Console.WriteLine("你还行!猜了次!", count);
break;
case 11:
Console.WriteLine("你还行!猜了次!", count);
break;
default:
Console.WriteLine("不过你真笨,猜了次才对!", count);
break;
}
}
public void right() //版权所有
{
Console.WriteLine("以上程序由Simon.Yang编写,谢谢使用。");
Console.WriteLine( "yxfqust@yahoo.com.cn");
}
}
class test
{
static void Main(string[] args)
{
int y;
int i, j,count=0;
loop: Console.WriteLine("请输入一个0到100之间的整数,退出请按0");
readyguess guessnumber =new readyguess();
i= guessnumber.Rannumber();
do
{
count++;
j = guessnumber.formatinput();
if (j != 0)
{
if (i > j)
Console.WriteLine("请输入更大的数。");
if (i < j)
Console.WriteLine("请输入更小的数。");
}
}
while (i != j);
if (i == j)
Console.WriteLine("恭喜你!你猜对了");
guessnumber.Commentguess(count);
guessnumber.right();
Console.WriteLine("要继续吗?请按1继续,按0退出");
if(( y= Convert.ToInt32(Console.ReadLine()))==1)
goto loop;
}
}
}
{
class readyguess //用户输入参数
{
public int formatinput()
{
int i = 0;
try
{
i = Convert.ToInt16(Console.ReadLine());
if (i == 0)
System.Environment.Exit(-1);
return i;
}
catch (FormatException)
{
Console.WriteLine("输入参数有误,请重新输入:");
return 0;
}
}
public int Rannumber() //由计算机产生一个随机数(0~100)的类
{
Random Ran;
Ran = new Random();
int i = Convert.ToInt32(Ran.NextDouble() * 100);
return i;
}
public void Commentguess(int count) //根据游戏者的次数给出评价
{
switch (count)
{
case 1: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 2: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 3: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 4: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 5: Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 6:
Console.WriteLine("而且你非常聪明!猜了次就对了!", count);
break;
case 7: Console.WriteLine("你还行!猜了次!", count);
break;
case 8: Console.WriteLine("你还行!猜了次!", count);
break;
case 9: Console.WriteLine("你还行!猜了次!", count);
break;
case 10: Console.WriteLine("你还行!猜了次!", count);
break;
case 11:
Console.WriteLine("你还行!猜了次!", count);
break;
default:
Console.WriteLine("不过你真笨,猜了次才对!", count);
break;
}
}
public void right() //版权所有
{
Console.WriteLine("以上程序由Simon.Yang编写,谢谢使用。");
Console.WriteLine( "yxfqust@yahoo.com.cn");
}
}
class test
{
static void Main(string[] args)
{
int y;
int i, j,count=0;
loop: Console.WriteLine("请输入一个0到100之间的整数,退出请按0");
readyguess guessnumber =new readyguess();
i= guessnumber.Rannumber();
do
{
count++;
j = guessnumber.formatinput();
if (j != 0)
{
if (i > j)
Console.WriteLine("请输入更大的数。");
if (i < j)
Console.WriteLine("请输入更小的数。");
}
}
while (i != j);
if (i == j)
Console.WriteLine("恭喜你!你猜对了");
guessnumber.Commentguess(count);
guessnumber.right();
Console.WriteLine("要继续吗?请按1继续,按0退出");
if(( y= Convert.ToInt32(Console.ReadLine()))==1)
goto loop;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写完发现有人发了....
还是发一下吧~~
using System;
using System.Collections.Generic;
namespace CaiShuZi
{
class Program
{
static void Main(string[] args)
{
int[] num = null;
int count=0;
num = RandomNum();//获取随机数
while (count++ < 10)
{
int input = 0;
Console.WriteLine("第{0}次:", count);
while (!int.TryParse(Console.ReadLine(), out input) || input > 9999 || input < 1000)//判断输入
Console.WriteLine("输入错误");
int[] num2 = new int[4];
//处理输入的数字
for (int i = 0, ix = 1000; i < 4; i++, ix /= 10)
{
num2[i] = input / ix;
input = input % ix;
}
int a = 0;//猜对数字的个数
int b = 0;//猜对位置个数
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (num[i] == num2[j])//判断是否猜中
{
if (i == j)//判断是否猜对位置
b++;
a++;
}
}
}
if (b == 4)//所有位置猜对
{
Console.WriteLine("恭喜你在第{0}次猜对了!\n数字是:{1}{2}{3}{4}\n按任意键退出", count, num2[0], num2[1], num2[2], num2[3]);
Console.ReadKey();
return;
}
else
Console.WriteLine("这次你猜对了数字个数为:{0},猜对位置个数为:{1}\n你还有{2}次机会", a, b, 10 - count);
}
}
static int[] RandomNum() //获取随机数的函数
{
Random rnd=new Random((int)DateTime.Now.Ticks);
List<int> nums = new List<int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
int[] num = new int[4];
num[0] = nums[rnd.Next(1, 10)];//获取首位非0数字
nums.Remove(num[0]);//删除已经获得的数字
for (int i = 1; i < 4; i++)
{
num[i] = nums[rnd.Next(nums.Count)];
nums.Remove(num[i]);
}
return num;
}
}
}
还是发一下吧~~
using System;
using System.Collections.Generic;
namespace CaiShuZi
{
class Program
{
static void Main(string[] args)
{
int[] num = null;
int count=0;
num = RandomNum();//获取随机数
while (count++ < 10)
{
int input = 0;
Console.WriteLine("第{0}次:", count);
while (!int.TryParse(Console.ReadLine(), out input) || input > 9999 || input < 1000)//判断输入
Console.WriteLine("输入错误");
int[] num2 = new int[4];
//处理输入的数字
for (int i = 0, ix = 1000; i < 4; i++, ix /= 10)
{
num2[i] = input / ix;
input = input % ix;
}
int a = 0;//猜对数字的个数
int b = 0;//猜对位置个数
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (num[i] == num2[j])//判断是否猜中
{
if (i == j)//判断是否猜对位置
b++;
a++;
}
}
}
if (b == 4)//所有位置猜对
{
Console.WriteLine("恭喜你在第{0}次猜对了!\n数字是:{1}{2}{3}{4}\n按任意键退出", count, num2[0], num2[1], num2[2], num2[3]);
Console.ReadKey();
return;
}
else
Console.WriteLine("这次你猜对了数字个数为:{0},猜对位置个数为:{1}\n你还有{2}次机会", a, b, 10 - count);
}
}
static int[] RandomNum() //获取随机数的函数
{
Random rnd=new Random((int)DateTime.Now.Ticks);
List<int> nums = new List<int>(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
int[] num = new int[4];
num[0] = nums[rnd.Next(1, 10)];//获取首位非0数字
nums.Remove(num[0]);//删除已经获得的数字
for (int i = 1; i < 4; i++)
{
num[i] = nums[rnd.Next(nums.Count)];
nums.Remove(num[i]);
}
return num;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最近的游戏不是打就是杀的,真没有什么意思,《问@道》很Q版,人物很可爱
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |