




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前言Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。Java编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。正文1.1课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。2.1工程概况2.1.1案例提出及工程用时经过两天在图书馆以及网络上查阅的资料,然后提出这次课程设计的目标《贪吃蛇游戏》的设计。然后接下来就是查阅更多的资料,制定接下来的详细计划,最终计划用两周的时间完成此次课程设计提出的案例。2.1.2开发环境硬件环境:CPU:IntelPentium(R)4主频:2.40GHz内存:256MB软件环境:操作系统:WindowsXP编程环境:JDK1.6开发工具:Eclipsejdk贪吃蛇游戏游戏主界面模块贪吃蛇游戏游戏主界面模块游戏控制模块图2.设计总模块游戏控制模块的主要框架如图3所示。游戏控制模块游戏控制模块游戏的暂停功能游戏的重新开始游戏的退出图3.控制模块框架游戏暂停控制:点击“F3”按钮,游戏暂停;再单击,游戏继续。游戏重新开始控制:点击“F2”键后,点击确定,即游戏重新开始。游戏退出控制:点击“F4”键好,点击确定,退出游戏界面。3.1.5类、方法、属性说明(1)成员变量表1主要成员变量(属性)成员变量描述变量类型名称文件菜单中子菜单“新建”JMenuItemmFile_New编辑菜单中子菜单“撤消”JMenuItemmEdit_Undo格式菜单中子菜单“颜色”JMenuformatMenu_Color帮助菜单中子菜单“帮助主题”MenuItemmHelp_HelpTopics(2)方法表2主要方法方法名功能备注Notepad4()描述记事本无Text.setBackground(Color.black)设置编辑区默认背景色无Text.setForeground(Color.black)设置编辑区默认前景色无4.1设计结果与分析本程序在运行后,能够正常的相应按键事件。由于程序的主要部分已经集成为一个对象SnakeModel,所以利用键盘就可以实现操作。蛇前行的过程中,可以任意向其左或右方向改变方向。点击F3键后游戏就暂停了。点击F2键游戏重新开始。点击F4游戏退出。运行结果如下图4所示:图4程序运行图当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束。如果想重新开始即点击“确定”后按F2键,运行结果如下图5所示:图5重新开始图4.1.1程序异常处理在蛇的运行线程过程中,当蛇撞到墙或自己的身体时,将抛出一个Exception类的异常对象,然后使用try-catch去捕捉这个异常,异常的处理如下:try{
Thread.sleep(timeInterval);}
catch(Exceptione)
{
break;}心得体会通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。参考文献[1]赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,2006[2]赵毅主编.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,[3]王路群.Java高级程序设计.北京:中国水利水电出版社,2006[4]雍俊海编著.Java程序设计习题集.北京:清华大学出版社,2006[5]朱福喜编著.Java语言习题与解析.北京:清华大学出版社,2006[6]吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,2006程序代码:importjava.awt.*;importjavax.swing.*;importjava.util.*;importjava.awt.event.*;publicclassSheextendsJFrameimplementsActionListener,WindowListener{JLabelbt1;JLabelbt2;MyPaintmp;JMenuItemkaishi;JMenuItemzanting;JMenuItemtuichu;JRadioButtonchu;JRadioButtonzhong;JRadioButtongao;JRadioButtonchao;JMenuItemguanyu;Fontf;publicShe(){f=newFont("宋体",Font.PLAIN,12);mp=newMyPaint();mp.setShe(this);JMenuBarcaidan=newJMenuBar();JMenushezhi=newJMenu("设置");shezhi.setFont(f);JMenunandu=newJMenu("难度");nandu.setFont(f);JMenubangzhu=newJMenu("帮助");bangzhu.setFont(f);caidan.add(shezhi);caidan.add(nandu);caidan.add(bangzhu);kaishi=newJMenuItem("开始游戏F2");kaishi.setFont(f);kaishi.addActionListener(this);zanting=newJMenuItem("暂停/继续F3");zanting.setFont(f);zanting.addActionListener(this);tuichu=newJMenuItem("退出F4");tuichu.setFont(f);tuichu.addActionListener(this);chu=newJRadioButton("初级,最快速度195",true);chu.setFont(f);chu.addActionListener(this);zhong=newJRadioButton("中级,最快速度225");zhong.setFont(f);zhong.addActionListener(this);gao=newJRadioButton("高级,最快速度255");gao.setFont(f);gao.addActionListener(this);chao=newJRadioButton("超级,最快速度275");chao.setFont(f);chao.addActionListener(this);ButtonGroupbg=newButtonGroup();bg.add(chu);bg.add(zhong);bg.add(gao);bg.add(chao);nandu.add(chu);nandu.add(zhong);nandu.add(gao);nandu.add(chao);guanyu=newJMenuItem("关于");guanyu.setFont(f);guanyu.addActionListener(this);shezhi.add(kaishi);shezhi.add(zanting);shezhi.add(tuichu);bangzhu.add(guanyu);bt1=newJLabel("长度:0");bt1.setFont(f);bt2=newJLabel("移动:5");bt2.setFont(f);JPanelp=newJPanel();p.setLayout(newGridLayout(1,2));p.add(bt1);p.add(bt2);this.addWindowListener(this);//添加窗体监听器this.setJMenuBar(caidan);this.add(p,BorderLayout.NORTH);this.add(mp);this.add(newJLabel(""),BorderLayout.WEST);this.setSize(335,385);this.setResizable(false);this.setLocation(300,150);this.setTitle("MyPaint");this.setVisible(true);}publicvoidsetDS(inta,intb){bt1.setText("长度:"+a);bt2.setText("移动:"+b);}publicvoidsetChu(){chu.setSelected(true);mp.setSD(300,110);this.setDS(0,305-300);chu.setEnabled(true);zhong.setEnabled(true);gao.setEnabled(true);chao.setEnabled(true);}publicvoidsetNanDu(){chu.setEnabled(false);zhong.setEnabled(false);gao.setEnabled(false);chao.setEnabled(false);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==zanting){mp.setZanTing();}elseif(e.getSource()==kaishi){mp.setKaiShi();}elseif(e.getSource()==tuichu){mp.setTuiChu();}elseif(e.getSource()==guanyu){JLabelgy=newJLabel("小游戏贪吃蛇V1.0");gy.setFont(f);JOptionPane.showMessageDialog(this,gy);}elseif(e.getSource()==chu){mp.setSD(300,110);this.setDS(0,305-300);}elseif(e.getSource()==zhong){mp.setSD(250,80);this.setDS(0,305-250);}elseif(e.getSource()==gao){mp.setSD(200,50);this.setDS(0,305-200);}elseif(e.getSource()==chao){mp.setSD(150,30);this.setDS(0,305-150);}}publicstaticvoidmain(String[]args){newShe();}/***MethodwindowOpened***@parame**/publicvoidwindowOpened(WindowEvente){//TODO:Addyourcodehere}publicvoidwindowClosing(WindowEvente){System.exit(0);}publicvoidwindowClosed(WindowEvente){//TODO:Addyourcodehere}publicvoidwindowIconified(WindowEvente){//TODO:Addyourcodehere}publicvoidwindowDeiconified(WindowEvente){//TODO:Addyourcodehere}publicvoidwindowActivated(WindowEvente){//TODO:Addyourcodehere}publicvoidwindowDeactivated(WindowEvente){//TODO:Addyourcodehere}}classMyPaintextendsJPanelimplementsRunnable,KeyListener,FocusListener{Shes;Fontf=newFont("宋体",Font.PLAIN,12);intx=150;inty=0;Randomr=newRandom();intsjx=r.nextInt(300)/10*10;intsjy=r.nextInt(300)/10*10;intfx=2;intsw=0;intsd=300;intcs=0;intd=150;String[]zx=newString[1000];booleanzanting=false;booleanzanting1=false;booleansiwang=false;booleanshenti=false;publicMyPaint(){Threadt=newThread(this);t.start();this.addKeyListener(this);this.setFocusable(true);this.addFocusListener(this);}publicvoidsetShe(Shess){s=ss;}publicvoidsetZanTing(){if(zanting){zanting=false;}else{zanting=true;}}publicvoidsetKaiShi(){JLabelks=newJLabel("是否重新开始?");ks.setFont(f);inta=JOptionPane.showConfirmDialog(s,ks);if(a==0){x=150;y=0;sjx=r.nextInt(300)/10*10;sjy=r.nextInt(300)/10*10;fx=2;sw=0;sd=300;cs=0;zanting=false;siwang=false;shenti=false;s.setChu();s.setDS(sw,305-sd);}}publicvoidsetTuiChu(){JLabeltc=newJLabel("确定退出吗?");tc.setFont(f);inta=JOptionPane.showConfirmDialog(s,tc);if(a==0){s.dispose();System.exit(0);}}publicvoidsetSD(inta,intb){sd=a;d=b;}publicvoidpaint(Graphicsg){zx[cs]=x+"/"+y;super.paint(g);g.setColor(Color.BLACK);g.drawRect(0,0,300,300);g.setColor(Color.BLACK);g.fillRect(sjx,sjy,10,10);g.setColor(Color.BLUE);g.fillRect(x,y,10,10);g.setColor(Color.RED);for(inti=1;i<=sw;i++){intj=cs-i;if(j<0){j=cs-i+999+1;}String[]s=zx[j].split("/");if(x==Integer.parseInt(s[0])&&y==Integer.parseInt(s[1])){//蛇撞到自己身上了siwang=true;shenti=true;}if(sjx==Integer.parseInt(s[0])&&sjy==Integer.parseInt(s[1])){//食物在蛇身体上g.setColor(Color.BLACK);g.fillRect(sjx,sjy,10,10);g.setColor(Color.RED);continue;}g.fillRect(Integer.parseInt(s[0]),Integer.parseInt(s[1]),10,10);}}publicvoidrun(){while(true){cs++;if(cs==1000){cs=0;}switch(fx){case1:y-=10;//上break;case2:y+=10;//下break;case3:x-=10;//左break;case4:x+=10;//右break;}this.repaint();if(x==sjx&&y==sjy){sjx=r.nextInt(300)/10*10;sjy=r.nextInt(300)/10*10;sw++;if(sw==1){s.setNanDu();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 店面经营权转让合同样本
- 专利技术转让合同全文
- 隧道施工及监理合同全文
- 管桩砍接施工合同8篇
- 2025年线上零售商品交易合同范文
- 2025年员工薪酬延期支付合同范文
- 村级道路硬化施工合同范本8篇
- 公司员工入职合同样本5篇
- 2025年商务代理合作合同范文
- 2025年深圳市供应链战略合作伙伴合同
- 小学部编五下快乐读书吧整本书阅读-《西游记》阅读指导课教学设计
- 中药药剂学:第十四章-胶囊剂
- 高中英语-what's in a name教学课件设计
- 德能勤绩考核评价表
- 新译林牛津版英语八年级上册Unit1-Friends复习优质课公开课课件
- 语文版-三年级下-第五单元-17 张衡和他的地动仪
- 2023年河北石家庄市市属国有企业面向社会招聘笔试参考题库附带答案详解
- 加弹机操作规程
- 2022年无锡商业职业技术学院单招综合素质试题及答案解析
- 监理工程师个人工作总结模板(3篇)
- 中国女排演讲ppt
评论
0/150
提交评论