c# 系统随机产生一个0~100数,然后不断提示用户猜数字。代码

如题所述

控制台应用程序,超旋的.你的要求比较简单好实现.
你看看人家怎么写的吧是4位数的.
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace NumGuess
{
class Guess
{
ColorInput colorText = new ColorInput(); //控制台彩色输出类
private string choose = null; //对于 菜单的 选择
private int[] random = new int[4]; //随机产生的 一个 4位数
private int[] guess = new int[4]; //存储 用户 猜测的 4位数
private bool again = false; //是否是 继续游戏 而不是开始新游戏

public Guess()
{
}

//显示游戏开始的一些信息
void Game()
{
colorText.SetTextColor((int) ColorInput.Foreground.Blue); //设置控制台输出字符的颜色
Console.WriteLine("\t\t\t\t猜数字游戏\n\n");
colorText.SetTextColor((int) ColorInput.Foreground.Green);
Console.Write("\t游戏说明:游戏开始,您要猜随机产生的一个四位数,"
+ "数字的");
colorText.SetTextColor((int) ColorInput.Foreground.Red);
Console.Write("位置");
colorText.SetTextColor((int) ColorInput.Foreground.Green);
Console.Write("和");
colorText.SetTextColor((int) ColorInput.Foreground.Red);
Console.Write("大小");
colorText.SetTextColor((int) ColorInput.Foreground.Green);
Console.Write("都要猜对才算赢哦,有点像彩票哦,不过您每次只有");
colorText.SetTextColor((int) ColorInput.Foreground.Red);
Console.Write("10");
colorText.SetTextColor((int) ColorInput.Foreground.Green);
Console.Write("次机会哦~~!!!\n");
colorText.SetTextColor((int) ColorInput.Foreground.Purple);
Console.WriteLine("\t\t\t\t\t\t\t----By H_Q");

colorText.SetTextColor((int) ColorInput.Foreground.White);
Console.WriteLine("\t\t\t\t菜单(请选择)");
Console.WriteLine("\t\t\t\t 1.开始");
Console.WriteLine("\t\t\t\t 0.退出");
Init();
}// Game

void Init()
{
choose = Console.ReadLine();
//判断 用户的 选择
while (choose != "0")
{
if (choose.Equals("1"))
{
InitGame();
break;
}
//当 10次 中没有猜对 判断是否要继续游戏
if (choose.Equals("2") && again)
{
Input();
again = false;
}
else
{
Console.Write("请按游戏菜单,输入 1 或 0: ");
choose = Console.ReadLine();
continue;
}
} // while
} // Init()

//游戏开始
void InitGame()
{
Random r = new Random();
int ran = r.Next(1000, 9999); //随机产生一个 4位数 下限1000 上限9999
//将该 4位数 存储到数组中
for (int i =3; i >= 0; i --)
{
random[i] = ran%10;
ran /= 10;
}
Input();
} // InitGame()

//接受用户的 输入的 数字
void Input()
{
int count = 0; //用于记录 用户猜测的次数 10次 没有猜对为输
bool isFormat = false;
//若输入的不正确 循环要求用户输入
do
{
Console.Write("请您输入您猜测的4位数字: ");
string inputNum = Console.ReadLine();
//检查用户 输入的合法性
if (inputNum.Length == 4)
{
int j = 0;
foreach (char ch in inputNum)
{
if (Char.IsNumber(ch))
{
j ++;
}
}
if (j == 4)
{
//将正确的输入 存入 猜测数组中
for (int i = 0; i < 4; i ++)
{
guess[i] = int.Parse(inputNum.Substring(i, 1));
}
count ++;
isFormat = Compare(count);
}
else
{
isFormat = false;
}
}
else
{
isFormat = false;
}
}while (count < 10 && isFormat == false);
}//Input()

//比较 用户猜测的 数字 与 随机产生的数字 的位置 及 每位数的大小
bool Compare(int count)
{
string sameG = null; //用于标识 用户猜测的数字中 已经 判等过的
string sameR = null; //用于标识 随机产生的数字中 已经 被判等过的
int s = 0; //用于标识 用户猜对大小的数字的个数
int p = 0; //用于标识 用户猜对位置的数字的个数

//顺序判等 用来 排除一次就猜对的情况
for (int i = 0; i < 4; i ++)
{
if (guess[i] == random[i])
{
p ++;
s ++;
sameG += i;
sameR += i;
}
}

//一次就猜对的情况
if (p == 4 && s == 4)
{
Win();
return true;
}
else
{
for (int g = 0; g < 4; g ++)
{
for (int r = 0; r < 4; r ++)
{
//如果顺序比较中没有一个猜对那么 sameG sameR都为null
//如果不为空 那么通过 IndexOf 方法 将 已经判等过的 排除了 不须再次比较
//注: IndexOf(string) 此方法 从 string 中查找相同字符 若没找到 返回-1
if (sameG == null || sameR == null ||(sameR.IndexOf(r.ToString()) == -1 && sameG.IndexOf(g.ToString()) == -1))
{
if (guess[g] == random[r])
{
s ++;
sameG += g;
sameR += r;
break;
}
}
}
}
//在10次内猜对的情况
if (s == 4 && p == 4)
{
Win();
return true;
}
else
{
if (count >= 10)
{
Lost();
return true;
}
else
{
Console.WriteLine("猜对数字的个数为:{0}, 猜对位置的个数为:{1}, 您还有{2}次机会\n", s, p,10 - count);
return false;
}
}
}
} //Compare()

//赢咯~
void Win()
{
colorText.SetTextColor((int)ColorInput.Foreground.Green);
Console.WriteLine("\t\t\t\t您赢了\n");
colorText.ResetColor(); //还原控制台 默认的 输出颜色
Console.WriteLine("\t\t\t\t 菜单");
Console.WriteLine("\t\t\t\t1.新游戏");
Console.WriteLine("\t\t\t\t0.退出");
colorText.SetTextColor((int)ColorInput.Foreground.White);
Init();
}

//再接再厉
void Lost()
{
colorText.SetTextColor((int)ColorInput.Foreground.Red);
Console.WriteLine("\t\t\t\t您输了");
colorText.ResetColor();
Console.WriteLine("\t\t\t\t 菜单");
Console.WriteLine("\t\t\t\t1.新游戏");
Console.WriteLine("\t\t\t\t2.继续");
Console.WriteLine("\t\t\t\t0.退出");
again = true; //标识 是继续 这样不重新产生随机的4位数
colorText.SetTextColor((int)ColorInput.Foreground.White);
Init();
}

public static void Main(string[] args)
{
Guess game = new Guess();
game.Game();
}
}

public class ColorInput
{
private int hConsoleHandle;

private const int STD_OUTPUT_HANDLE = -11;

[DllImport("kernel32.dll")]
private static extern int GetStdHandle(int nStdHandle);

[DllImport("kernel32.dll")]
private static extern int SetConsoleTextAttribute(int hConsoleOutput,
int wAttributes);

// 构造方法
public ColorInput()
{
hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
}

//自己试出来的高亮颜色
public enum Foreground
{
Green = 10,
Blue,
Red,
Purple,
Golder,
White
}

public void SetTextColor(int color)
{
SetConsoleTextAttribute(hConsoleHandle, color);
}

public void ResetColor()
{
SetConsoleTextAttribute(hConsoleHandle, 7);
}
}//class

class StdHandleEnum
{
public const int STD_INPUT_HANDLE = -10;
public const int STD_OUTPUT_HANDLE = -11;
public const int STD_ERROR_HANDLE = -12;
};

// This sructure contains a screen coordinate.
class cls
{
internal struct COORD
{
public short X;
public short Y;
}

// 屏幕缓冲区信息
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct CONSOLE_SCREEN_BUFFER_INFO
{
public COORD Size;
public COORD p1;
public short a1;
public short w1;
public short w2;
public short w3;
public short w4;
public COORD m1;
}

/*
* Kernel32.dll 中 4个函数
*/

//返回 handle 给 任何标准输入输出
[DllImport("kernel32.dll")]
public static extern int GetStdHandle(int nStdHandle);

//返回 控制台 缓冲区 信息
[DllImport("kernel32.dll")]
public static extern bool GetConsoleScreenBufferInfo(int hConsoleOutput,

out CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);

//放置光标
[DllImport("kernel32.dll")]
public static extern bool SetConsoleCursorPosition(int hConsoleOutput,

COORD dwCursorPosition);

// 不知道该如何翻译
// The FillConsoleOutputCharacter() allows us to place
// any character on the console screen. Using a space
// clears the display area.
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool FillConsoleOutputCharacter(int hConsoleOutput,

short cCharacter, int nLength, COORD WriteCoord, out int

lpNumberOfCharsWritten);

[STAThread]
public static void Clear()
{
// Needed ask Windows about the console screen
// buffer settings.
CONSOLE_SCREEN_BUFFER_INFO CSBI;
// Handle to the output device.
int hOut;
// Number of characters written to the screen.
int CharOut;
// Home cursor position.
COORD Home;

// Clear the screen.
// Begin by getting a handle to the console screen.
hOut = GetStdHandle(StdHandleEnum.STD_OUTPUT_HANDLE);

// Get the required console screen buffer information.
GetConsoleScreenBufferInfo(hOut, out CSBI);

// Set the home position for the cursor.
Home.X = 0;
Home.Y = 0;

// Fill the console with spaces.
FillConsoleOutputCharacter(hOut,
(short)' ',
CSBI.Size.X * CSBI.Size.Y,
Home,
out CharOut);

// Place the cursor in the upper left corner.
SetConsoleCursorPosition(hOut, Home);

Console.WriteLine("\t\t\t\t游戏开始咯~\n");
} // cls
}// class
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-11-16
using System;
public class guess_number
{

public static void Main()
{ int i_random = new Random().Next()%100;
int i_guess = 0;
int i_count = 0;
Console.WriteLine("猜一猜这样一个随机数,它的范围是在零到一百之间.");
for (i_count = 0; i_count < 10; i_count++)
{
i_guess = int.Parse(Console.ReadLine());
if (i_guess < i_random)
{
Console.WriteLine("太小了,大一点儿好些.");
}
if (i_guess > i_random)
{
Console.WriteLine("太大了,小一些儿好些.");
}
if (i_guess == i_random && i_count <= 10)
{
Console.WriteLine("不错,不错,猜对了!");
}
else if (i_guess == i_random && i_count == 10)
{
Console.WriteLine("在这功败垂成的时候,你猜对了,更加幸运!");
}
else if (i_count == 10 && i_count > 10)
{
Console.WriteLine("对不起,你已经猜了十次,不能再猜了.");
}
}

Console.WriteLine(i_random);
}
}
第2个回答  2007-11-16
default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="myweb_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox runat="server" ID="test" />
<asp:Button ID="btn123" runat="server" Text="test" />
</div>
</form>
</body>
</html>

default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class myweb_Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
Random re = new Random();

try
{
int myint = re.Next(1, 101);
int mytest=int.Parse(test.Text.ToString());
if (myint == mytest)
{
Response.Write("你猜对了");
Response.Write("<br/>随机数是 "+myint );
}
else
{
Response.Write("wrong");
Response.Write("<br/>随机数是 " + myint);
}
}
catch
{
Response.Write("请输入数字或不能为空!");
}
}

}
第3个回答  2007-11-16
using System;

/// <summary>
/// Class1 的摘要描述
/// </summary>
public class Class1
{
public Class1()
{
//
// TODO: 在此加入建构函式的程式码
//
}
public static void Main()
{
Random rnd = new Random();
int num = rnd.Next(100);
Console.WriteLine(num);
while(Convert.ToInt32(System.Console.ReadLine()) != num);
}
}
第4个回答  2007-11-16
有一个Random的静态类啊,随机数很好产生,猜数字是什么意思?

c# 系统随机产生一个0~100数,然后不断提示用户猜数字。代码
string sameG = null; \/\/用于标识 用户猜测的数字中 已经 判等过的 string sameR = null; \/\/用于标识 随机产生的数字中 已经 被判等过的 int s = 0; \/\/用于标识 用户猜对大小的数字的个数 int p = 0; \/\/用于标识 用户猜对位置的数字的个数 \/\/顺序判等 用来 排除一次就猜对的情况 for (int i...

C# 窗体应用程序 猜数字游戏 代码
public static void main(){console.writeline("请输入一个0~100的数");random ran = new random();int y = ran.next(101);int a = 0;while (true){a++;int x = int.parse(console.readline());if (x > y){console.writeline("你猜的数大了");}else if (x < y){console.write...

猜数字游戏: 让系统随机生成一个1-100之间的随机数,循环录入猜数直到猜...
static void Main(string[] args){ Random d = new Random();int num = d.Next(1, 100);\/\/随机数 int num1 = 0;\/\/用来保存输入的数 Console.WriteLine("输入一个数");while (true){ string str = Console.ReadLine();int.TryParse(str, out num1);if (num1 == 0){ Console.Writ...

C#猜数字游戏中产生的随机数,怎么在重新刷新?
srand(time(NULL)); \/\/使用当前时间重置随机种子发生器,不然每次产生的随机数就是一样的序列 num = rand() * 1001; \/\/产生 [0,100] 区间的随机数,不知道你要不要生成0和100,我输的是包含0和100的。printf(“请输入一个数:");scanf("%d", &enter);if (num == enter)printf("恭喜...

用C#编写猜数字游戏,
\/\/ 系统生成了随机四位数 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;\/\/ 猜对数字 \/\/ 如果...

求用C#编辑一个猜数字游戏。要求是自己想个数(1000-9999之间),电脑猜...
程序执行起来以后 基本只能看到电脑猜的次数 因为一次非常快 所以猜对的个数只能是后面你让程序停止的时候 显示的 。 我想的写法大概是这样 效率应该不是很好。仅供参考哈 bool oo = true;int num = 0;\/\/比较了多少次 string str = "123";Random r = new Random();string str1 = r.Next(...

求C#语言,先随机生成一个0-9的数,然后输入一个数,直到与生成的数一...
static void Main(string[] args){ int count=0;while (true){ Console.WriteLine("输入一个1-10之间的数字");int ii = Convert.ToInt32(Console.ReadLine());Random r = new Random();int right = r.Next(0, 11);if (ii == right){ Console.WriteLine("对了,恭喜。");Console....

C#nbsp;猜数字
publicnbsp;stringnbsp;Compare(stringnbsp;computerString,nbsp;stringnbsp;playerString)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Listamp;lt;charamp;gt;nbsp;playernbsp;=nbsp;newnbsp;Listamp;lt;charamp;gt;();nbsp;nbsp;nbsp;...

...rndInt = ra.Next(1, 100);方法随机产生一个1~100之间的一个整数rnd...
int rndint = ra.Next(1, 100);do { Console.WriteLine("请输入一个整数");i = Convert.ToInt32(Console.ReadLine());if (i > 100 || i < 0){ Console.WriteLine("你的输入有误,请重新输入");} else { if (i > rndint){ Console.WriteLine("猜大了,再来");continue;} if (...

用C#做一个猜数字的游戏(每次单击按钮随机数字就变了,要求单击时随机数...
将b定义为变量.int b = new Random(1,9);private void button1_Click(object sender, EventArgs e){...}

相似回答