控制台应用程序,超旋的.你的要求比较简单好实现.
你看看人家怎么写的吧是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
}
温馨提示:内容为网友见解,仅供参考
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){...}