为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

智力猜字游戏

2018-01-19 16页 doc 138KB 49阅读

用户头像

is_601191

暂无简介

举报
智力猜字游戏智力猜字游戏 《面向对象》实训2------智力猜字游戏 (学号尾号为单数的完成) 游戏规则简介: 由计算机在0-9,这10个数字中,选取4个数字组成序列,数字不能重复。由玩家来猜测这四个数字所在的位置并输入,如果位置和数字都正确,则X+1,如果仅仅是数字正确,位置不正确,则Y+1。玩家根据X、Y的值进行分析,再次输入数字,系统根据玩家输入的数字再次给出XY的值。玩家再次根据XY的值进行猜测,直到把四个数字的位置和数字都猜对。即X=4,Y=0。游戏结束。 游戏运行演示界面如下: 系统功能分析 1 本系统由以下...
智力猜字游戏
智力猜字游戏 《面向对象》实训2------智力猜字游戏 (学号尾号为单数的完成) 游戏简介: 由计算机在0-9,这10个数字中,选取4个数字组成序列,数字不能重复。由玩家来猜测这四个数字所在的位置并输入,如果位置和数字都正确,则X+1,如果仅仅是数字正确,位置不正确,则Y+1。玩家根据X、Y的值进行分析,再次输入数字,系统根据玩家输入的数字再次给出XY的值。玩家再次根据XY的值进行猜测,直到把四个数字的位置和数字都猜对。即X=4,Y=0。游戏结束。 游戏运行演示界面如下: 系统功能分析 1 本系统由以下几个功能模块(方法)构成: 显示模块(方法):显示指定(已知)数组中的元素。 校验模块(方法):验证指定(已知)数组的合法性,数组中的数据是否有重复,是否有超出0-9范围的数据, 选号模块(方法):将输入的整数存入数组a1,并将a1作为本模块(方法)的结果。 随机数产生模块(方法):产生随机数存入数组b1,并将b1作为本模块(方法)的结果。 比对模块(方法):将选号模块得到的数组a1与随机数产生模块得到的数组b1进行比对,看有多少个数组元素是相同的,如果元素值相同且位置也相同,则X+1,否则Y+1 实验目的:掌握方法(函数)的定义、调用、嵌套、递归 实验要求:各个子功能模块(方法)独立实现,并能够独立测试。 主要知识点:方法的定义、调用。 数组的定义、使用,见下列红色内容,务必看完红色内容再开始实验,并在实验课后将下列红色部分内容抄至课堂本上。 声明数组,然后创建数组对象的语法格式如下: 类型[ ] 数组名; 数组名,new 类型[元素个数]; //分三个步骤 或 类型[ ] 数组名,new 类型[元素个数]; 数组名={初值表}; //分两个步骤 或 类型[ ] 数组名, {初值表}; //分一个步骤 例如:创建存放6个整数的整型数组a,并将1,2,3,4 , 5, 6,几个整数放入数组a中。 int[] a; a=new[6]; a={ 1,2,3,4 , 5, 6}; //分三个步骤 或 int[] a=new int[6]; a={ 1,2,3,4 , 5, 6}; //分两个步骤 或 int[] a={ 1,2,3,4 , 5, 6}; //分一个步骤 数组长度为:数组名.length 例如 已知数组 int[] a={ 4,5,3,1 , 9, 8}; 则 a.length为6,即数组有6个元素,数组的长度为6 2 模块1:显示模块(方法) 模块功能: 显示指定(已知)数组中的信息。定义一个方法display,该方法的功能是将指定(已知)的数组中所有元素,逐个输出。相关的知识点:方法的定义(见或上课笔记)、数组的使用、for循环的使用 分析: 方法头:方法的访问修饰符为static,该方法只是需要显示数组的元素,不需要任何结果,因此不需要返回值,即返回值类型为void,方法名称display,该方法需要显示的是指定(已知)的数组信息,即必须要知道显示的数组。因此方法参数为int[] a 方法体: 1.先使用console.writeline()语句,输出,号码为: 2.使用for循环,将已知数组a的各个元素取出,将其输出。 3. 使用console.writeline()语句,换行 模块1(方法)的测试: 在完成了方法display的基础上,在main()函数中,定义一个数组int[] ceshi={9,8,7,6,5,4}; 然后调用display方法,将数组ceshi的元素输出。 测试结果如图: 测试1,当ceshi={9,8,7,6,5,4}时,输出 测试完成后,将mian()函数中的测试语句删除。 3 模块2,校验模块(方法) 模块功能:验证指定(已知)数组的合法性,数组中的数据是否有重复,是否有超出0-9范围的数据,如果数组合法,则返回true,否则返回false 相关的知识点:方法的定义(见PPT或上课笔记) 方法的大概流程如图: 已知数组a, int i=0; Result=true; 否 i答案
: 方法: static void display(int[] a) { Console.WriteLine("号码为:"); for (int i = 0; i < a.Length; i++) { 10 Console.Write("{0}", a[i]); Console.Write(" "); } } static bool check(int[] a) { bool result = true; for (int i = 0; i < a.Length; i++) { for (int j = i + 1; j < a.Length; j++) { if (a[i] == a[j]) return false; } if (a[i] < 0 || a[i] > 9) return false; } return true; } static int[] selectnumber() { int[] a = new int[4]; 11 while (true) { Console.WriteLine("请输入四个数字,用空格分开:"); string s1 = Console.ReadLine(); string[] b = s1.Split(' '); for (int i = 0; i < a.Length; i++) { a[i] = int.Parse(b[i]); } if (check(a)) return a; else Console.WriteLine("输入不合法,请重新输入~"); } } static int[] randomnumber() { Random r1 = new Random(); int[] a1 = new int[4]; while (true) 12 { for (int i = 0; i < a1.Length; i++) { a1[i] = r1.Next(0, 10); } if (check(a1)) break; } Console.WriteLine("随机数已经生成~"); return a1; } static void openlottery() { int[] a1; int[] a2; a1 = randomnumber(); int x = 0, y = 0, num = 0; display(a1); while (x != 4) { a2 = selectnumber(); 13 num++; x = 0; y = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (a1[i] == a2[j]) { if (i == j) x++; else y++; } if (x == 4) break; } } Console.WriteLine("x={0},y={1}", x, y); if (x == 4) 14 { Console.WriteLine("恭喜你,猜对了~游戏结束~ 猜了{0}次~", num); break; } if (num == 10) { Console.WriteLine("猜了十次都不对,游戏结 束~"); break; } } } 主函数调用: openlottery(); Console.ReadLine(); 15
/
本文档为【智力猜字游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索