- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8回Java应用大赛作品代码讲解.doc
第8回Java应用大赛作品代码讲解Card Fight (2)
生成随机排列
接上一讲我们继续来介绍Card Fight的代码。在MainCanvas.java 中记录了Card Fight的所有主要处理程序,所以这个文件是我们讲解的重点部分。 嗯。 我们首先来看一下MainCanvas.java中的作了如下定义的Temp类。
class Temp {
public int i;
public Temp(int i) {
this.i = i;
}
}
只存储了1个整数数值,是个非常简单的类啊。有什么用途呢? 如下所示,想要混洗卡片的序号,并存储在排列中时,就会用到Temp类。
Vector vector = new Vector();
for (int i = 0; i cards; i++) {
vector.addElement(new Temp(i));
}
int[] tmpCardArray = new int[cards];
for (int i = 0; i cards; i++) {
int length = vector.size();
int j = Math.abs(rand.nextInt()) % length;
tmp = (Temp) vector.elementAt(j);
vector.removeElementAt(j);
tmpCardArray[i] = tmp.i;
}
因为在Vector类中不能存储像int型这样的基本数值,所以用Temp类来替代。
Vector vector = new Vector();
vector.addElement(10); // 编译错误
vector.addElement(new Temp(10)); // OK
但是这时不必特意制作新的类,使用包含在标准API中的Integer类即可。将使用Temp类的地方以Integer类取而代之,可以作如下改写。
vector.addElement(new Temp(i)); ↓
vector.addElement(new Integer(i));
tmp = (Temp) vector.elementAt(j);
tmpCardArray[i] = tmp.i; ↓
tmpCardArray[i] = ((Integer)vector.elementAt(j)).intValue();
原来如此啊,这样一来就不需要Temp类了。 是的。
了解了Integer类的作用后,将排列内容随机混洗的算法就可以用下列代码来表示。
int[] tmpCardArray = new int[cards];
for (int i = 0; i cards; i++) {
tmpCardArray[i] = i;
}
for (int i = 0; i cards; i++) {
int swapIndex = Math.abs(rand.nextInt()) % cards;
int tmp = tmpCardArray[i];
tmpCardArray[i] = tmpCardArray[swapIndex];
tmpCardArray[swapIndex] = tmp;
}
能明白上述代码所表示的内容吗? 恩~~第1个for行的内容是表示从0开始按顺序将数值填入排列中。第2个for行的内容是不是表示将随机选出的排列内容与第i个排列的内容相交换啊? 是这样的。
像这样随机替换两个数值的方法也可用于随机混洗排列的内容。比起最初的方法,这个算法所占内存很少,因此提高了运行的速度;而且不必使用Vector类。 太好了,还学会了更高效的算法。
将多个变量归纳为类
接下来我们就来详细了解一下源代码的内容。 代码是好不容易读完了,可是有那么多的变量很难都记住啊。 是啊。如下表所示,在类定义的开始部分就出现了很多的变量。
MainMIDlet midlet; // midlet对象保存到本地
boolean isPlay; //游戏开始标记
Command cmdBack;
Command cmdExit; //两个操作指令
int[] cardArray; //卡片的随机序列
int[][] cardIfm; //随机排序后按顺序的卡片信息
int[] myCard = new int[5]; //记录玩家手中的卡片
int[] cpuCar
您可能关注的文档
- 第4节 斜抛运动从容说课.doc
- 第4节 离心运动从容说课.doc
- 第4节 超重和失重.doc
- 第4苇机械能及其转化.doc
- 第4讲 数的开方与二次根式.doc
- 第4讲 物质的量浓度.doc
- 第4讲 质量和密度 专题复习.doc
- 第4讲 遗传信息的携带者——核酸 细胞中的糖类和脂质.doc
- 第4课 唐朝的民族关系 同步测试无答案.doc
- 第4课 唐朝的民族关系.doc
- 2025-2026学年高中数学北师大版2011选修2-1-北师大版2006教学设计合集.docx
- 工程消防安全知识培训课件.pptx
- 共享单车行业2025年动态调度算法升级与应用研究报告.docx
- 共享单车行业可持续发展:2025年动态调度技术前瞻性分析.docx
- 共享单车行业2025年市场布局与调度技术升级.docx
- 共享单车行业2025年动态调度算法优化与案例分析报告.docx
- 2025年元宇宙内容创作工具链在虚拟偶像产业中的标准与市场前景.docx
- 2025年直播电商行业用户留存与用户需求洞察研究报告.docx
- 未来五到十年地下综合管廊建设环保技术应用与2025年发展趋势报告.docx
- 金融领域2025年量子计算在金融风险评估中的应用案例解析.docx
最近下载
- 复合材料 第八章 先进复合材料.ppt VIP
- 人教版八年级物理第九单元《压强》测试题及答案.doc VIP
- 《复合材料学》全套教学课件.pptx
- 复合材料复合材料导论.ppt VIP
- 2025年闽教版(2024)小学英语四年级上册(全册)教学设计(附目录P123).docx
- 冠心病的介绍与治疗PPT.pptx VIP
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试参考题库附答案解析.docx VIP
- 2.2.3 气候——特征和影响因素(课件)八年级地理上册(人教版).pptx VIP
- 八年级地理上册湘教版第二章第二节中国的气候课件.pptx VIP
- 2024建筑施工升降机安全生产隐患识别图集.docx VIP
文档评论(0)