ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:69.44KB ,
资源ID:19535059      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19535059.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机算法与分析《姓名挑战游戏金》Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机算法与分析《姓名挑战游戏金》Word格式文档下载.docx

1、对题目要求进行分析,写出游戏的算法思想。第三、四天:进行代码的编写、调试过程,写报告。第五天:提交设计结果及设计报告,进行PPT演示,并且进行答辩。 合计: 5天 指导教师签字 年 月 日 课程设计(大作业)成绩学号:L120004 姓名:艾维 指导教师:马宏姓名挑战游戏 总结:算法分析是一门面向设计,且理论性很强的科目。算法设计与分析已经学了一个学期,有许多知识都存在似懂非懂的现象,有很多问题还是不能解决,比如所加入的表情图不能切换,做不出来。最后没有使用挑战表情。基于对本门课程的学习,将算法思想灵活运用到设计中来,解决实际问题。我们组设计的是:姓名挑战游戏,由于个人能力有限,编写的代码有一

2、些问题,经过小组讨论,作了一定的改进,这说明我们在编程方面存在很多不足,有待于在以后的学习中不断提高和改进。通过用JAVA编写程序,掌握设计的算法和基本思想,加强了我调试程序的能力,培养了分析、解决问题的能力,提高自己的认识。这次实训,不仅检验了我所学的知识,也培养了我如何去把握一件事,如何去做一件事,又如何完成一件事情。在设计过程中,和同学们相互探讨,相互学习,相互监督。实训是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不可少的过程。“千里之行始于足下”,通过这次实训,我深深体会到这句千古名言的真正含义。我今天认真的进行实训,学会脚踏实地迈开这一步,就是为明天能

3、稳健地在社会大潮中奔跑打下坚实的基础。通过这次实训,我在多方面都有所提高。学习到了很多理论知识,加强了实践的能力。指导教师评语:成绩:填表时间: 指导教师签名:一、设计目的课程设计是巩固所学理论知识、提高算法设计、分析能力的重要实践环节。算法设计与分析,主要目的是为解决某一问题而提出多种不同的解决方案,并且针对具体问题做细致的时间和空间复杂度分析,选取效率高的算法解决问题,从而达到优化的目的。通过课程设计的训练,使我们能够巩固所学的算法分析基础理论知识,体会程序设计的全过程,培养我们处理数据的能力,提高我们分析问题、收集资料、解决问题的能力,最终培养理论联系实际,利用各种算法解决实际问题的应用

4、能力。同时可以检测我们对这门课程的掌握情况,有助于查缺补漏。二、题目分析这次课程设计以JAVA语言为基础结合其图形应用界面来设计一个姓名挑战游戏,设计出的游戏有图形化界面,且界面简洁适用;在游戏界面中,输入两个姓名分别作为挑战者和被挑战者,由姓名产生其属性值(战力指数,攻击力,防御力),当HP大于0时,两个名字进行对战,进行多轮攻击挑战后,用HP值决定双方输赢,HP值为0的一方战败,另一方则获胜,达到休闲益智的目的。三、设计要求四、总体设计、算法描述4.1算法思想对于姓名挑战游戏,必须需要两位玩家输入姓名参与,且参与游戏的玩家具有不同的血量(范围:20003000)、攻击力(范围:155300

5、)、防御力(范围:100200)其属性数值通过姓名产生。在游戏对决中,每个回合两个玩家各攻击对方一次(以玩家1开始)。在被攻击之前,玩家可以通过自己的运气随机产生本回合最后所受到伤害(伤害可能为0)或增加血量的机会。最终血量=现有血量+增加的血量+防御力-伤害,根据最终的血量值来判断输赢。若玩家1最终血量值小于等于0时,说明玩家1失败,玩家2获胜;反之,玩家1获胜,玩家2失败。游戏过程是不断循环过程,要直到分出胜负为止程序才能结束。4.2主方法分析public class Test /*建立一个公共类Test */ public static void main(String ars) new

6、 Game(姓名挑战游戏); 此部分为主方法部分,在本游戏中主函数主要起连接和导入的作用,对相应的方法进行说明、调用。4.3总体分析在Game框架中添加组件(Label,TextField,Button,Panel,TextArea,Menu)并布局管理器,使用的是BorderLayout、GridLayout管理器。 通过 ActionListener定义一个actionPerformed()方法。 创建一个shuxing()函数,随机产生HP,attack,defense的初始值,对挑战者与被挑战者的属性进行随机处理映射到相应的攻击和反应,不断更新二者的属性值并获取。直到一方hp为,挑战结

7、束并输出挑战结果及双方最后属性值。4.4使用到的方法actionPerformed()方法:在事件分派awt线程中被调用;Thread.Start()方法:创建一个线程,使用Thread类创建线程;add():添加组件到框架中;damage(int attack):嵌套调用;setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点; width:组件的宽度 height:组件的高度;shuxing():设置属性值;super():调用父类(Frame)构造函数,s为传入的参数,也就是调用了父类 public ;Frame(String s

8、) .构造函数get():读取数据;set():设置属性;Random():随机数字产生方法;4.5游戏细节设计4.5.1攻击招式统计1、不小心踩到香蕉皮,摔了一跤2、吃了毒蘑菇3、受到空中落石伤害4、落水被淹5、过马路不小心撞到车了6、身上被撒了痒痒粉,全身奇痒无比4.5.2治疗方式1、喝了红牛,生命增加1002、吃了万能解药,生命增加3003、擦了神药,生命增加8004.5.3不明原因可能是神药效失效了,奇痒发作五、实验总结课程设计终于做完了,虽然有些疲劳和困倦,但带给我很多的收获。算法设计与分析已经学了一个学期,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,实际应用,已经减

9、少了许多。这些知识也有了更深的理解和很好的掌握。许多困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。通过课程设计,明白做一件事需要考虑到很多方面的问题的,这些都是要在实践中摸索的,这与平时做练习是不同的,但也因为平时有许多的练习基础,会使你做起程序来,更加得心应手。另外就是要把错误总结,有许多错误或者陷阱是平时自己陷进去的,因此很深刻,但也有些错误或者陷阱是自己还没有接触或者犯过的,这就应该看多些别人的总结,使自己不犯这些错误。不让自己掉进这些陷阱。通过这次课程设计我锻炼了实际动手能力,拓展了课外知识,积极运用图书馆、网络资源为设计服务。熟悉并灵活运用Editplus软

10、件来编译程序,同时也培养了细心、耐心、虚心的学习态度,并积极与老师、同学进行沟通交流,增加了小组间的凝聚力。本着对自己负责的态度,认真对待本次设计。希望在以后的学习中,我能更好地将理论知识与实践相结合,学会学以致用,学有所用,完善自我,提高自身综合能力 。六、源程序及运行结果6.1源程序/*决斗算法*/public void actionPerformed(ActionEvent e) if(e.getSource()=item2 |e.getSource()=button2) System.exit(0);/选中退出按钮结束程序 else if(e.getSource()=button) /

11、点击确定按钮 String name1=text1.getText();/获取玩家1的姓名 String name2=text2.getText();/获取玩家2的姓名 if(name1.equals(name2) /玩家1与玩家2姓名相同 area.setText(请不要自相残杀! else Player npc1=new Player(name1);/创建玩家1 Player npc2=new Player(name2);/创建玩家2 npc1.shuxing();/得到玩家1的属性 npc2.shuxing();/得到玩家2的属性 l1.setText(name1); l2.setTex

12、t(name2); int h1,h2; h1=npc1.HP;/记录玩家1最初血量 h2=npc2.HP;/记录玩家2最初血量 text3.setText(name1+的属性: 战力指数:+npc1.HP+ 攻击:+npc1.attack+ 防御:+npc1.defense); /在玩家1属性文本框中显示玩家1的血量、攻击力、防御力 text4.setText(name2+npc2.HP+npc2.attack+npc2.defense); /在玩家2属性文本框中显示玩家2的血量、攻击力、防御力 int i=0;/进行玩家间PK的循环标记(偶数轮到玩家1,奇数轮到玩家2) while(npc

13、1.HP0 & npc2.HP0) /玩家1、玩家2血量不为负数 if (i%2=0)/玩家1 area.append(n String s1=npc1.damage(npc2.attack); /玩家1本轮受到的状态 if(npc1.HPP!=0) count1+;/记录玩家1治疗次数加1 else count2+;/记录玩家1受到攻击次数加1 label6.setText(得到治疗的次数:+count1+ 受到攻击的次数:+count2); /刷新玩家1治疗、受到攻击的次数 String s=s1; npc1.HP=npc1.HP+npc1.HPP+npc1.defense-npc1.hu

14、rt; /玩家1最终血量=当前血量+运气+防御力-伤害 if(npc1.HPh1) area.append(name1+s+n text5.setText(name1+s); try thread1.sleep(1000);/间隔1秒 catch(InterruptedException ee) npc1.HP=h1; s1=血量已达最大值!; if(npc1.HPh2) text6.setText(name2+s); area.append(name2+s+ npc2.HP=h2; s2= if(npc2.HP npc2.HP=0;/玩家血量为0 text6.setText(name2+s2

15、); area.append(name2+s2+ area.append(name2+npc2.HP+ try thread1.sleep(1000); catch(InterruptedException ee) i+;/进行PK的循环直到分出胜负 if(npc1.HP /玩家1失败,玩家2获胜 text5.setText(哎呦,我认输了! text6.setText(哈哈,我赢了! area.append(+name1+被+name2+打败了! else if(npc2.HP /玩家2失败,玩家1获胜 被 打败了! /重新开始,清屏 else if(e.getSource()=button

16、1) /点击重新开始按钮 text1.setText(null); text2.setText(null); text3.setText(null); text4.setText(null); text5.setText(null); text6.setText(null); area.setText(null); label6.setText(+0+0); label7.setText( l1.setText(姓名1 l2.setText(姓名2 /所有文本框内容清除/*属性值产生算法*/public void shuxing(String s) String str = for (int

17、i = 0; i s.length(); i+) int ch = (int) s.charAt(i); String s4 = Integer.toHexString(ch); str = str + s4; String sHP; String sattack; String sdefense; sHP = str.substring(0,3); sattack = str.substring(3,6); sdefense = str.substring(6,8); HP = Integer.parseInt(sHP, 16); attack = Integer.parseInt(satt

18、ack, 16); defense = Integer.parseInt(sdefense, 16); /产生20003000以内的血量 if(HP=10&HP100) HP+=2901;/产生 29113000=100&1000) HP+=2001;/产生 21013000=1000&=2000) HP+=1000;/产生 20003000=3000&=4000) HP-=1000;4000) HP-=2000;/产生 20002095 /产生155300以内的攻击力 if(attackattack attack=(attack+301)/2;/产生 155200 attack=(attac

19、k/100+400)/2;/产生 200205=1000) attack=(attack/1000+450)/2;/产生 225227 /产生100200以内的防御力 if(defense200) defense-=100;/产生 1001556.2运行前结果分析图6.2.1 运行初始界面6.3运行后结果分析图6.2.2 运行结果七、参考文献1算法设计与分析王晓东,清华大学出版社。2java编程张丹丹,人民邮电出版社。3算法设计与分析(第二版)霍红卫编著,西安电子科技大学出版社,20104算法设计与题解王晓东编著电子工业出版社5毕广吉.Java程序设计实例教程M. 北京:冶金工业出版社,2007年6王保罗.Java面向对象程序设计M. 北京:清华大学出版社,2003年

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1