用C#编写猜数字游戏,
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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);
参考技术A 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);
参考技术B 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;
参考技术C 写完发现有人发了....
还是发一下吧~~
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数字是:1234\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;
参考技术D 最近的游戏不是打就是杀的,真没有什么意思,《问@道》很Q版,人物很可爱
用c#编写猜数游戏要求用户在文本框中输入1到10之间的一个数字。然后单击[猜猜]按钮产生一个随机数字,用户
将被告知所选择的数字是否正好等于这个随机数。
用面向对象的方法,谢谢了,急用!!!!
Random r;
int strrandom = 0;
MyRandom()
r=new Random();
strrandom=r.Next(10);
public bool IsRight(string str)
if (strrandom.ToString() == str.Trim())
return true;
else
return false;
把所需数据跟功能封装到类跟方法中,然后达到数据跟操作分离,是体现面向对象编程的思想特征。
用的时候把类实例化,调用其中里面的方法就可以了。 参考技术A Random r = new Random();
button事件里面处理:
if (r.Next(10) == int.parse(textbox1.text)) )
messagebox.show("猜对啦!");
else
messagebox.show("再猜一次!");
追问
我是初学者,能不能祥细点啊,把类,构造方法也写上
追答public partial class Form1 : Form
Random r = new Random();
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
if (r.Next(10) == int.Parse(textBox1.Text))
MessageBox.Show("猜对啦!");
else
MessageBox.Show("再猜一次!");
以上是关于用C#编写猜数字游戏,的主要内容,如果未能解决你的问题,请参考以下文章