JAVA课程设计纸牌游戏.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA课程设计纸牌游戏JAVA课程设计纸牌游戏

一、问题分析和任务定义 1.题目: 纸牌游戏: 编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;。。。再依次5的倍数的牌翻一次,6的,7的直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些? 2.要求和任务: ① 该题目的要求如下: (1)将52张牌编号。 (2)从2开始,依次作为基数对基数的倍数的牌进行翻转,直到以52为基数的翻转。 (3)最后输出正面向上的牌。 ② 基本任务为: (1)按照要求翻转纸牌。 (2)输出最后正面向上的纸牌的编号。 3.原始数据的输入及输出格式: 原始数据要求输入纸牌的基础编号,编号的输入为整型。输出的是经过规律翻转后正面向上的纸牌的编号。 输入的数据信息如下: 纸牌:1、2、3……、51、52。 问题直观分析表: 1 2 3 4 5 6 7 8 9 10 11 12 …… 1 2 √ √ √ √ √ √ 3 √ √ √ √ 4 √ √ √ 5 √ √ 6 √ √ 7 √ 8 √ 9 √ 10 √ 11 √ 12 √ …… …… (注:图中“√”表示翻转一次。) 二.数据结构的选择和概要设计 1.数据结构 按照题目要求,整个主体包括一个嵌套的循环,外循环控制从2开始每张纸牌都作为基数进行翻牌,内循环控制对所有纸牌进行判断,如果是当前循环中基数的倍数,则对其进行翻转操作。具体代码如下: for(i=2;i=52;i++) { for(j=1;j=52;j++) { if(j%i==0) data[j-1]=data[j-1]*Flag; } } 2.概要设计 按照题目的要求,首先,应对52张牌进行编号并且保存它们的编号信息,编号的类型为整型,而对于这样固定的数据,使用整型数组是最好的,因此,我们需要在程序的开始定义一共整型的数组,同时,为了方便对翻转过程的记录,在定义记录编号信息的同时,定义一个与之相对应的标记数组,数组类型为整型。该程序的核心为一个嵌套的循环,所以定义两个变量i,j作为循环条件。 接着开始对变量进行初始化,首先是编号信息数组,使用for循环对数组进行1到52的赋值,代表52张纸牌,然后对标记数组赋值,将数组内的所有的值初始化为零,方便在接下来的循环中统计每张牌的翻牌数。数据初始化结束后,开始按照要求对纸牌进行翻转,在嵌套循环中,定义了一个全局变量Flag,值为-1,负数定义为向下,正数定义为向上,这样,翻转一次,即乘以Flag,同时,符合翻转条件时,标记数组相应的编号的纸牌翻牌次数+1。 循环结束后,编号数组中的数据已经更新,因此对数组进行扫描,大于零的即为正面向上的纸牌,输出其编号即可,同时,输出标记数组中的值,显示每张牌的翻牌记录,方便观察或者寻找规律。到此,整个题目结束。 三.详细设计和编码 1.定义全局变量: 作为判断纸牌是否向上的依据,我们需要定义一个全局变量Flag=-1,在循环中对所有纸牌进行操作。 2.主要程序代码与分析如下: static int Flag = -1(考虑到最后要判断哪些纸牌是正面向上的,所以必须要有一共判断条件,因此定义一个全局变量作为正反面的判断条件。) public static void main(String[] args) { int i,j,choice,num;//建立两个数组,一个存放52张牌的编号,另外一个存放相应编号的纸牌的翻牌记录。 int[] data = new int[52]; int[] flag = new int[52]; String n,m; System.out.println(温馨提示:欢迎进入纸牌游戏程序!); for(i=1;i=52;i++) { data[i-1]=i;//录入52张牌的编号。 flag[i-1]=0;//将相应编号纸牌的翻牌数初始化为0。 } for(i=2;i=52;i++)//外循环,基数循环。 { for(j=1;j=52;j++)//内循环,基数倍数条件判断。 { if(j%i==0) { data[j-1]=data[j-1]*Flag;//将翻转后的结果更新data中的数据。 flag[j-

文档评论(0)

skewguj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档