




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《JAVA语言程序设计》课程设计报告2048智力小游戏设计专业班级:计算机科学与技术嵌入13T学生姓名:卓海有学生学号:小组成员:单建飞堵文斐李栋承梅孔伟指导教师姓名:宋强目录TOC\o"1-5"\h\z1•前言 1游戏需求分析 1\o"CurrentDocument"需求分析 1\o"CurrentDocument"可行性分析 2概要设计 3详细设计 4流程图 4\o"CurrentDocument"界面的整体布局 4方法模块分析 5\o"CurrentDocument"測试 8总结 10\o"CurrentDocument"参考文献 10部分源代码: 10一、前言最近以来,移动手游越来越成为当下游戏产业中重要的一环,市场也在加大对这一产业的投入,涌现出了愤怒的小鸟,水果忍者,flappybird,2048等诸多优秀的手游,然而任何一款手游能够风靡,主要还是依靠其简单的操作性,因此本次java课设我选择其中的典型2048PC版作为本次课设的课题。2048游戏规则很简单,玩家每次可以选择上下左右其中一个方向去移动,每移动一次,所有的数字方块都会往移动的方向靠拢外,系统也会在空白的地方随机出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围中凑出“2048”这个数字方块。二、游戏需求分析需求分析现代社会对休闲小游戏的需求是:提高游戏的操作可行性,降低游戏的操作难度,降低游戏的上手难度,降低游戏的竞争需求,对使用设备的要求趋于简单化和多样化,游戏界面更加人性化,功能更加贴合使用。界面一款的好的游戏其界面必须友好,简洁已经成为当今UI设计的主流,简单易上手才能得到玩家的青睐。功能需求能够显示游戏的当前得得分,并记录游戏的最高分并显示,当在次打开游戏时,能够显示最高分;在游戏进行的过程中循环播放音乐,并能够关闭音乐或者打开音乐;游戏的主界面上,相同的数字要显示相同的颜色。游戏结束要有相应的提示。游戏的主要目的是通过上下左右移动来将相邻相同的数字相加,通过不断地累加最终加到2048o操作性需求游戏的体验是衡量一款游戏的关键,本游戏可通过键盘w,s,a,d以及方向键来控制方块的移动,还可以通过在游戏的主面板中向上下左右拖动鼠标来控制方块的移动,左右手都可以操作,充分考虑便捷性。不同的人有不一样习惯,通过多种方式来操作游戏,可以各种习惯的人的需求。可行性分析面向对象的程序设计方法Java而向对象程序设计的基本思想是通过构造和组织对象来求解问题的。对象是很好理解的,任何一种物体都可以被认为是对象,例如,汽车就是一种对象。对象具有两个最恳本的属性:具有一定的物质基础和一定的功能,这两种基本属性在Java语言中表现为拥有一定的存储单元并具备一定的功能。理解了Java的这种面向对象程序设计的基本思想之在以E的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。Java面向对象程序设计的过程非常简单。这里介绍一种自顶向下的程序设计方法,首先构造一个类来处理需要解决的问题,然后根据已经拥有的类(例如以前求解其它问题时实现的类),分析和构造新的类,设法将问题分解下去,而最开始构造的类通过组织这些新构造的类、已有的类及由他们生成的实例来求解指定的问题。这个过程可以继续递归下去,用在新构造的类上,直到最后解决了指定的问题,例如Java的应用程序和小应用程序都必须有一个类作为入口求解问题。在计算机语言中,而向对象的类一般具有三个基本特性:封装性、继承性和多态性,这三种特性进一步简化了Java求解模型,提高了程序的复用性,节省了程序的代码量,从而提高了软件的生产率。java技术分析图形用户界面不仅可以提供各种数据的基本图形的直观表示形式,而且可以建立友好的交互方式,从而使计算机软件可以设计得十分简单易用。从Java语言诞生到现在,Java语言已经提供了两代图形用户界面。第一代图形用户界面AWT提供了基本的图形用户界面,它强烈地依赖于具体的计算机操作系统,而且缺少基本的剪贴板和打印支持功能。现在第二代图形用户界而Swing对AWT进行了扩展,Swing不仅在功能上比AWT强大,而且在很大程度上克服了AWT的上述缺点,它所设计的图形用户界面与具体的计算机操作相关性很小,而且可以定制指定的操作系统风格的图形用户界面。GUI(图形用户界面)组件构成了图形用户界面的基础。在Java程序设计中,要求按照一定的布局方式将组件安排在容器中,然后通过事件处理的方式实现人机交互,而容器本身也是组件,这样在容器中也可以含有容器,从而可以通过这种嵌套方式方便地组合各种组件。事件处理模型是Java语言提供的一种人机交互模型,它使得用户能够通过鼠标、键盘或其他输入设备来控制程序的执行流程,从而达到人机交互的目的。对鼠标、键盘或其他输入设备的各种操作一般也称为事件。Java语言对这些事件的处理模型是采用面向对象的方法,即通过对象的形式把各种事件进行封装和处理。这种事件处理模型的三个基本要素是事件源、事件对象以及事件监听器。事件源是各种组件,是接受各种事件的对象。在各种事件源上运用鼠标、键盘或其他输入设备进行各种操作,就会有事件发生。每种操作一般都对应着事件,Java语言通过事件对象来包装这些事件。对爭件进行处理是通过事件监听器实现的。因为鼠标事件也是一种事件,所以对鼠标事件进行处理要遵循事件处理模型。鼠标事件的处理也是建立在事件源的基础之上,以事件对象本身,最后通过事件监听器进行处理。类包装常用的鼠标事件,例如,按下鼠标键和放开鼠标键等。类MouseEvent的实例对象记录了鼠标的当前位置和状态发生变化的鼠标键等。对鼠标事件进行处理最关键的是实现事件监听器接口。这些相关接口包括MouseListener, MouseMotionListener, MouseWheeIListener,MouseInputListener。前而三个是包中的接口,最后一个接口MouseInputIistener来自包。接口主要用来处理按下鼠标键、放开鼠标键、单击鼠标键、鼠标进入组件内和鼠标离开组件区域等事件。对鼠标事件进行处理,就是要设计类,实现上面的鼠标事件监听器接口,然E在事件源中注册处理鼠标事件监听器的对象,以便对鼠标事件进行处理。三、概要设计
四、详细设计(1)流程图主程序游戏开始显示界面▼监听总苕和恫标的上下移动操作和2铿,并作相应的处理对界面上的按钮的监听.并作相应的处理是,界面的整体布局分别构建mainPane,scoresPane两大模块放入游戏窗体,其中scoresPane包含2048字样的提示,当前得分和最高分,当得分超过最高分时■,将得分存入工程文件夹下的,覆盖最高分,同时在最高分显示最新的内容。通过Create方法随机产生2号方块或者4号方块,通过setColor方法设置每个数字代表的方块颜色。方法模块分析方法1:设置标签颜色,每次随机产生2或4和数字合并之后就要调用该方法来设置标签的颜色publicvoidsetColor(inti,intjtStringstr){if(,,H.equals(str)){texts[i][j].setBackground(newColor(120,2219247));return;)irrtresult=(str);switch(result){case2:texts[i][j].setBackground(newCoIor(240,240,0));break;case4:texts[i][j].setBackground;break;case8:texts[i][j].setBackground(newColor(240,150,10));break;case16:texts[i][j]・setBackground;break;case32:texts[i][j]・setBackground;break;case64:texts[i][j].setBackground(newColor(155,10,190));break;case128:texts[i][j].setBackground;break;case256:texts[i][j].setBackground;break;case512:texts[i][j]・setBackground;break;case1024:texts[i][j].setBackground;break;case2048:texts[i][j]・setBackground;break;case4096:texts[i][j].setBackground;break;defauIt:break;))方法2:在随机位置产生一个2号或4号方块的方法,同时该方法也用于判斷游戏是否结束。publicvoidCreate0{inti,j;etText();if((”")==0)){intima=2*(int)(1+0*2);etText(imass);setColor(i,j,imass);times—;r=false;p1=p2=p3=p4=0;quaIs(texts[p][q].getText()))temp2[p][q]=0;elsetemp2[p][q]=(texts[p][q].getText0);)}tempiscores=temp2scores;temp2scores=scores;}elseif(p1>0&&p2>0&&p3>0&&p4>0)工业出版社…黄晓东.Java课程设计案例精编[M].北京:中国水利水电出版社,.求是科技.Java信息管理系统开发实例字航[M].北京:人民邮电出版社…源代码清单packagemy2048game;import・*;import・*;import・*;import・*;pubIicclassMy2048GameextendsJFrame{equestFocus();}pg"));(433,120,45,30);(jb1);etFont(font2);texts[i][j]・setHorizontalAIignment;etText(;texts[i][j].setBounds(110 * j+15, 110 * i+15, 100,100);et0paque(true);etBorder(2,2,2,quaIs(texts[i][j].getText()))temp1[i][j]=temp2[i][j]=0;elsetempi[i][j]=temp2[i][j]=(texts[i][j].getText());}}}quaIs(str)){texts[i][j].setBackground(newColor(120,221,247));return;}intresult=(str);switch(resuIt){case2:texts[i][j].setBackground(newColor(240,240,0));break;case4:texts[i][j].setBackground;break;case8:texts[i][j].setBackground(newColor(240,150,10));break;case16:texts[i][j].setBackground;break;case32:texts[i][j]・setBackground;break;case64:texts[i][j].setBackground(newColor(155,10,190));break;case128:texts[i][j]・setBackground;break;case256:texts[i][j]・setBackground;break;case512:texts[i][j].setBackground;break;case1024:texts[i][j].setBackground;break;case2048:texts[i][j].setBackground;break;case4096:texts[i][j].setBackground;break;defauIt:break;1etText()jetText()jetText(str);etText(MM);etText(str);etText("n);etText();str1=texts[i][j+1].getText();if("”)==0){if(,,H)!=0)biaoji=1;texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(HM);setColor(i,j,””);}elseif(str1)=0&&j!=a&&j匸a+1){
num=(str);scores+=num;times++;str=(2*num);11texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(”H);setColor(i,j,a=j;biaoji=1;}p2=1;Create();break;case:case:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<3;k++){for(inti=1;i<4;i++){str=texts[i][j].getText0;str1=texts[i-1][j].getText();if("”)==0){if(,,M)!=0)biaoji=1;texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText(MM);setColor(i,j,MM);}elseif(str1)=0&&i!=a&&i!二a-1){
num=(str);scores+=num;times++;str=(2*num);texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText(”n);setColor(i,j,””);a=i;biaoji=1;p3=1;Create();break;case:case:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<5;k++){for(inti=2;i>=0;i―){
str=texts[i][j].getText();str1=texts[i+1][j].getText();if("”)==0){if(,,n)!=0)biaoji=1;texts[i+1][j].setText(str);setColor(i+1,j,str);texts[i][j].setText('*n);setColor(i,j,"”);}elseif(str1)=0&&i!=a&&i匸a+1){num=(str);scores+=num;times++;str=(2♦num);texts[i+11[j].setText(str);setColor(i+1,j,str);texts[i][j].setText('*H);setColor(i,j,MM);a=i;biaoji=1;}}}}p4=1;Create();break;case:if(p1<=0||p2<=0||p3<=0||p4<=0){for(inti=0;i<4;++i){for(intj=0;j<4;++j){if(tempi[i][j]==0)texts[i][j].setText(M'*);elsetexts[i][j].setText((tempi[i][j]));11temp2[i][j]=tempi[i][j];setColor(i,j,texts[i][j].getText());scores=tempiscores;temp2scores=temp1scores;}break;default:break;}if(maxscores<=scores){maxscores二scores;(maxscores);0;}(N<htmI>SCORE<br>,•+(scores)+"</html>M);(H<htmI>BEST<br>"+(maxscores)+H</htmI>");etText();etText();etText(str);etText('*n);etText(str);etText(H'*);etText();str1=texts[i][j+1].getText();if("")==0){ifC,H)!=0)biaoji=1;texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(HH);setColor(i,j,}elseif(str1)=0&&j!=a&&j!二a+1){num=(str);scores+=num;times++;str=(2*num);texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(HH);setColor(i,j,MM);a=j;biaoji=1;p2=1;Create();break;case3:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<3;k++){for(inti二1;i<4;i++){str=texts[i][j].getText0;str1=texts[i-1][j].getText();if("”)==0){if(,,H)!=0)biaoji=1;texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText('*n);setColor(i,j,””);}elseif(str1)=0&&i!=a&&i匸a-1){num=(str);scores+=num;times++;str=(2*num);texts[i-11[j].setText(str);setColor(i-1,j,str);texts[i][j].setText('*H);setColor(i,j,"”);a=i;biaoji=1;}p3=1;Create();break;case4:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<5;k++){for(inti=2;i>=0;i—){str=texts[i][j].getText0;str1=texts[i+1][j].getText();if("”)==0){if(,,H)!=0)biaoji=1;texts[i+1][j].setText(str);setColor(i+1,j,str);texts[i][j].setText(MM);setColor(i,j,"n);}elseif(str1)=0&&i!二a&&i匸a+1){
num=(str);scores+=num;times++;str=(2*num);texts[i+1][j].setText(str);setColor(i+1,j,str);texts[i][j].setText(”n);setColor(i,j,””);a=i;biaoji=1;}}}}p4=1;Create();break;defauIt:break;}if(maxscores<=scores){maxscores二scores;(maxscores);0;}(XhtmI>SC0RE<br>n+(scores)+M</htmI”);(n<htmI>BEST<br>"+(maxscores)+n</htmI>");etText();if(("")==0)){intima=2*(int)(1+0*2);etText(imass);setColor(i,j,imass);times—;r=false;p1=p2=p3=p4=0;
quaIs(texts[p][q].getText()))temp2[p][q]=0;elsetemp2[p][q]=(texts[p][q].getText());}}temp1scores=temp2scores;temp2scores=scores;}elseif(p1>0&&p2>0&&p3>0&&p4>0){qualsC'shengyin")){if(jb1_flag2){setJb1_flag(false);jb1_fIag2=false;(nev/ImageIcon("src/静音图标.jpg'));(faIse);pg"));(faIse);//让按钮失去焦点}(false);//设置焦点,不能用请求焦点}}}//记录类classRecorder{//定义一个变量记录最商分privatestaticintmaxscores_2048=0;pubIicstaticintgetMaxscores_2048(){returnmaxscores_2048;}pubIicstaticvoidsetMaxscores_2048(intmaxscores_2048){=maxscores_2048;}//定义文件输入流变量privateprivateprivatestaticFiIeReaderfr=nuII;privateprivateprivatestaticBufferedReaderbr=nuII;staticFiIeV/riterfw=null;privatestaticBufferedWriterbw=nuII;//从文件中读取,记录pubIicstaticvoidgetRecording()booleanflag=faIse;//用于判断文件是否是新创建的try{Filef=newFileCsrc/");ifO)fr=newFiIeReader(f);br=newBufferedReader(fr);Stringn=();maxscores_2048=(n);elsefIag=();}}catch(Exceptione){//TODO:handleexception0;}finalI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年的汽车租赁合同样本
- 农田水渠施工合同标准文本
- 2025智能物流系统项目软件开发合同
- 仪表工聘用合同样本
- 保险中标合同标准文本
- 隧道若爆破方案范本
- 2025年农产品买卖的合同范本
- 专业工程建设合同样本
- 公寓家电清洗合同标准文本
- 2025工业废弃土地租赁合同
- 《调整心态,积极迎考》主题心理班会
- 研究生免疫学英文课件抗体Ab
- 【学校心理健康教育系列】欣赏生命:生命树
- 电流与电压和电阻实验报告单
- 《空中领航学》8.5 精密进近程序的五边进近
- (完整版)心理辅导记录18个表格
- WS-T 428-2013 成人体重判定
- 资料员岗位季度绩效考核表
- 铺轨基地临建方案
- GB∕T 16422.2-2022 塑料 实验室光源暴露试验方法 第2部分:氙弧灯
- 《环境规划与管理》课件[1]
评论
0/150
提交评论