项目二猜数字游戏情景故事初步体验完C#后,小黄对C#的兴趣是越来越浓了,他迫不及待地想用C#来开发属于自己的游戏。一天,小黄在电视上看到一个有趣的娱乐游戏——猜数字游戏。游戏规则是:主持人先随意确定一个1到100的数,玩家轮流猜,每猜一个数,提示数的范围就缩小,直到有玩家猜中,游戏则结束,最后猜中的玩家就要接受大惩罚。小黄对这游戏很感兴趣,心想:“既然决定用C#开发游戏,何不拿这游戏来试一下,况且以后也能在班上展示一下,和同学们一起玩”。想到这,小黄就下定了决心,开始边学习边开发猜数字游戏。项目说明在平时的学习生活中或者某些电视游戏节目上都能经常见到一些猜数字游戏。这些游戏有趣好玩,形式各异。本项目,将用C#模拟实现某游戏节目的猜数字游戏。在游戏中先随机生成一个待猜数字,范围在1到100之间,然后玩家输入猜测数字,程序将判断该数字是否与待猜数字相同,相同则提示“猜中了”,不同则提示新的数字范围,逐渐缩小数字范围,最后帮助玩家猜到数字。本游戏适合一群玩家轮流猜数,不幸猜中的玩家可适当给予惩罚,起到娱乐的效果,如图2-1所示。图2-1能力目标学会在控制台应用程序中实现基本的输入输出。学会如何声明与初始化变量、并掌握类型之间的转换。学会加、减、乘、法四则运算符的使用,能编写简单的关系表达式。学会if选择语句的三种分支结构,能根据需要使用if选择语句。学会标签与goto跳转语句的结合使用,能利用它们控制程序流程。任务1游戏前准备【任务目标】在猜数字游戏开始之前需要做许多准备工作,例如建立工程、绘制游戏界面和生成待猜数等等,本任务将完成这些工作。通过完成本任务,将掌握C#的基本输出、理解C#的类型、变量与常量的概念、掌握变量的声明与初始化、以及各种运算符和选择结构等。学会如何在控制台应用程序中绘制界面,能根据需要声明变量,并对它们进行初始化。【任务分析】1.本程序是控制台应用程序,运行在DOS平台上。因此,游戏界面需要使用基本输出命令绘制出来。2.分析猜数字游戏的规则流程得知需要以下五个变量:(1)需要一个变量用于保存待猜数字,将其命名为guess。(2)需要两个变量用于保存当前数字范围,将其命名为min和max。(3)需要一个变量用于保存玩家输入的猜测数字,将其命名为input。(4)由于控制台输入的是字符串,因此需要一个字符串变量来接收玩家的输入,将其命名为tmp。(5)本项目需要产生一个随机的待猜数字,范围在1到100之间,C#为开发人员提供了一个强大的随机类Random,使用该类定义一个随机对象,将其命名为r。【实施步骤】步骤1.启动MicrosoftVisualC#2008Express,新建一个项目,如图2-2所示。图2-2小贴士:可按快捷键Ctrl+Shift+N或者在起始页中点击“创建:项目(P)…”新建项目。步骤2.打开新建项目对话框,在模板中选择控制台应用程序,输入项目名称Ex02,最后点击“确定”按钮即可完成新建项目。操作步骤过程如图2-3所示。图2-3步骤3.打开Program.cs文件,在Main函数中编写相应变量声明代码,Program.cs文件的参考代码如下所示:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceEx02{classProgram{staticvoidMain(string[]args){//声明变量intguess;//待猜数intmin;//范围最小值intmax;//范围最大值intinput;//保存玩家输入值stringtmp;//保存玩家输入字符串Randomr=newRandom();//随机对象,用于产生随机数①选择控制台应用程序②输入项目名称③点击确定①②③}}}代码解释:①本语句声明了一个变量,类型为int(整型),只能保存整数,变量名为guess,用于保存待猜数。关于类型与变量的概念请参考本任务的【相关知识】。②本语句声明了变量tmp,用于保存玩家从控制台输入的数字。类型为string(字符串),只能保存字符的有序集合,即文本。③本项目将随机产生一个待猜数,那么就需要使用C#所提供的强大的随机类Random。本语句使用随机类Random声明一个随机对象r,并使用new对它进行初始化。关于类的使用将在项目四进行详细讲述,这里只作简单介绍。小帖士:编写代码时可按键盘上Tab键来进行缩进。读者应该从一开始就养成缩进的习惯,它能使代码有层次,更加易懂。步骤4.绘制游戏主界面,在步骤3的变量声明代码后面加入以下代码://绘制游戏主界面Console.WriteLine(*********************************************************************);Console.WriteLine(**);Console.WriteLine(*趣味猜数字游戏*);Console.WriteLine(**);Console.WriteLine(*版权所有:小黄*);Console.WriteLine(**);Console.WriteLine(*********************************************************************);Console.WriteLine();代码解释:控制台应用程序运行在DOS平台上,因此,没有可视化的的特点,所有程序界面都需要使用基本输出命令来实现。例如以上程序,使用基本输出命令WriteLine输出一些字符和文字,使游戏主界面整洁,美观。注意:如果WriteLine方法的括号中没有输出内容,那么只起到换行的作用。当然,可以用Write(“\n”)取代。步骤5.对所声明的变量进行初始化,在步骤5的主界面代码后面加入以下代码://变量初始化guess=r.Next(1,100);//产生1-100之间的随机整数min=1;//初始范围最小值为1max=100;//初始范围最大值为100//游戏开始Console.WriteLine(待猜数已经生成,范围是:1至100\n);代码解释:①本语句调用随机对象r的Next方法,产生一个随机整数,整数范围为1到100之间,然后将所产生的随机整数赋值给guess变量。①②②本语句为min和max变量赋值,初始化猜数的范围,由于随机产生的数在1到100之间,所以初始范围最小值为1,最大值为100。步骤6.点击标准工具栏的按钮,或者按快捷键Ctrl+Shift+S,或者点击“文件”菜单的“全部保存”命令,对项目进行保存。图2-4弹出“保存项目”对话框,如图2-5所示。图2-5小贴士:当打勾了“创建解决方案的目录”,C#将启用“解决方案名称”文本框,以项目和解决方案名称创建一个新目录。步骤7.点击标准工具栏的按钮,或者按F5键,或者点击“调试”菜单的“启动调试”命令即可运行程序。②选择要保存的位置①输入项目名称③创建解决方案的目录④保存图2-6运行得到结果图如图2-7所示。图2-7【相关知识】本任务完成了游戏前的一系列准备工作,其中包括变量的声明与赋值、绘制游戏主界面和生成待猜随机数。1.类型在日常生活中会接触到不同种类的信息,例如一位学生就有如下不同种类的信息:姓名:张三年龄:16成绩:99.5如上信息所示,就包括有三种类别的信息,其中张三是属于文字类别,16属于整数,成绩属于实数。信息所属的类别称为类型,在C#中,针对所要保存的不同类别的信息定义了各种类型,常见的内置类型如下所示。(1)整数类型整数类型代表一种没有小数点的整数数值,例如:16、-100、45321等。在C#中内置的常用整数类型如表2.1所示。表2.1C#内置的常用整数类型类型名称说明范围short16位有符号整数-32768~32767ushort16位无符号整数0~65535int32位有符号整数-2147483648~2147483647uint32位无符号整数0~4294967295long64位有符号整数-9223372036854775808~9223372036854775807ulong64位无符号整数0~18446744073709551615小帖士:计算机内部用二进制存放值,在存放整数时,用最高的二进制位标识整数的符号,当整数为正时,最高位的二进制为0,整数为负时,最高位的二进制为1。对于无符号的整数,最高位不再用于表示符号,因此,它们的范围是从0开始,而且最大值比有符号更大。(2)浮点类型与整数相反,浮点类型用于表示含有小数的数值,例如:12.7832、-1023.234等。浮点类型主要包含有单精度型float和双精度型double两种,描述信息如表2.2所示。表2.2浮点类型信息类型名称说明范围float小数位精确到7位数1.5×10-45~3.4×1038double小数位精确到15~16位数50×10-324~1.7×10308小帖士:C#的实数值默认是double类型,不过可以在值后面标明是何种类型,例如:10.12f,则表明该值是float类型。(3)布尔类型在现实中经常会出现真、假这两种值,在C#中用布尔类型来表示它们,类型名称为bool。真对应用true表示,假对应用false表示,因此布尔类型只能有true/false这两种值。(4)字符类型对于大小写26个英语字母、10个数字以及特殊符号等单个字符,C#使用字符类型来表示,类型名称为char。表示字符类型的值必须用一对单引号(‘’)括起来,例如:‘a’、‘1’、‘*’。(5)字符串类型字符串类型表示一连串字符组成的值,类型名称为string。字符串类型的值必须用一对双引号(“”)括起来,例如:“abcd123”、“a”、“!@#$%”。2.变量(1)变量的基本概念变量是指在程序的运行过程中随时可以发生变化的量,它是存放数据的临时场所。变量包括三个元素:名称、类型和值。变量名是变量在的一个标识,类型是指该变量能存放哪种类别的数据,而值就是它所存放的数据。变量的含义如图2-8所示。内存用户数据区…100‘a’true图2-8(2)变量的声明想使用一个变量来存放数据前,必须先声明该变量,为其指定变量类型与变量名。变量声明的格式如下:类型变量名[,变量名…];说明:以上所示,声明一个变量必须先以类型开头,再输入变量名,中间以空格隔开。若想声明同一类型的多个变量,可在变量名后加上多个变量名,以逗号隔开。注意:尖括号中的内容为必须的,方括号[]中的内容为可选的,全书均采用此格式。示例:inta;//声明一个变量,名称为a,类型为整型doublei,j,k;//声明三个变量,名称分别为i,j,k,类型都为双精度型strings;//声明字符串变量s(3)变量的赋值与使用声明变量后,可对变量进行赋值,使它存放某一个数据,赋值使用等于号(=),例如:inta;//声明一个变量,名称为a,类型为整型a=100;//给变量a赋值,内容为100另外,在声明变量时可直接赋值,例如:inta=100;//声明一个变量,名称为a,类型为整型,值为100当需要读取变量中所存放的值时,只需直接使用该变量即可,例如:inta=100;//声明一个变量,名称为a,类型为整型,值为100console.WriteLine(a);//输出变量a的值3.随机类Random在本任务中,使用了随机类Random来获取一个随机数,关于类的定义,将在第四章进行详细讲解,这里只需知道如何去获取某一范围的随机数。类是一种类型,代码中先利用Random类定义一个变量r,然后调用r的Next方法来获取1到100范围的随机数,括号中的1,100指的是随机数范围,改变这两个参数能获取不同范围的随机数。例如:Randomr=newRandom();//随机对象,用于产生随机数guess=r.Next(50,90);//产生50-90之间的随机整数【扩展提高】1.为每