java课程设计.docx
- 文档编号:3196945
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:24
- 大小:93.52KB
java课程设计.docx
《java课程设计.docx》由会员分享,可在线阅读,更多相关《java课程设计.docx(24页珍藏版)》请在冰点文库上搜索。
java课程设计
摘要
作为一种语言,Java在过去十年中取得了其他任何语言都无法比拟的成绩。
不管你对Java是怎样一个态度,有一点不可否认,Java是现在全球最时髦的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机,总之,Java的出现,确实给整个程序界带来了巨大的冲击。
看看现在主流手机对Java的支持,由于手机的硬件种类繁多,系统平台也不统一,比较混乱,但他们之间都有同一个声音,就是Java,Java就是要在这样的环境中才能大展身手,Java这一条纽带把无数本来不可能是事情变得可能了,从中无数的手机开发商获得了利益,手机软件也是因为Java而得到了很大的发展。
这些年由于Java技术的不断发展,Java程序的运行速度有了显著提升,同时硬件技术也在不断进步,从而使得Java处理比较复杂的3D图形成为可能。
Lwjgl,Jogl,Java3D等技术的出现,使Java语言可以方便的利用现在的显卡日益强大的硬件加速能力。
实际上目前已经有许多基于Java的2D和3D游戏,其中不乏大型多人在线游戏。
(Z+W.V l7[
/T1r:
}5F,网络游戏大行其道,手机游戏也开始“浮出水面”。
“贪吃蛇”、“俄罗斯方块”、“连连看”这些简单的黑白游戏曾为一代手机用户所熟悉。
随着移动通信技术的迅速发展,彩屏手机的日益普及,更加有趣、更为生动的手机游戏层出不穷。
手机游戏作为视频游戏领域发展速度最快的部分,正成为业界的新宠,展示出广阔的市场前景。
一时间,电信运营商、服务提供商、游戏制作商、手机制造商……人人都在谈论手机游戏的光明前景。
关键词:
Java硬件游戏手机前景
第一章绪论
1.1课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
1)进一步巩固、加深学生所学专业课程《面向对象程序设计-JAVA》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力;
2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力;
4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型;
5)掌握面向对象程序设计的方法。
6)熟练掌握JAVA的基本语法,灵活运用各种数据类型;
7)进一步掌握在DOS环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序.
1.2课程设计的预备知识
熟悉JAVA程序设计的基本知识:
1)GUI图形界面设计;
2)接口;
3)实现抽象方法;
4)响应事件.
1.3课程设计要求
1)仔细分析设计题目,编写程序源代码;
2)积极上机调试源程序,增强编程技巧与调程能力;
3)认真书写课程设计预习报告,课程设计说明书;
4)遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容.
第二章问题定义
2.1游戏开发需求分析
一个相对比较完整的手机游戏,通常包括了:
新游戏、游戏设置、排行榜、游戏帮助和游戏说明五个主要部分,本设计本着从学习娱乐的角度出发的角度,并没有太过复杂的环节,尽力展示出了一个完整游戏的的全部开发构成。
进入游戏主界面设有“退出”、“再来一局”、“重列”三个选择项键。
点击新游戏进入游戏界面,每次的数字排序不一样,游戏图块为5×6共30块,每块上面的数字随机排列。
界面顶部有分数记录器,每关分数积累。
界面下方有菜单按钮,包括退出、再来一局、重列三个选项。
游戏次数不限,只为智力开发和休闲娱乐,消遣时间。
2.2游戏功能分析
通过JAVA编一个连连看程序,通过鼠标点击使相同两个数字消掉。
程序实现以下几个功能:
1)判断鼠标点击的两张图片是否相同;
2)判断2张图片是否可以相连;
3)判断两张图片是否可以相消;
4)判断时间;
5)判断剩余图片,是否胜利。
本游戏通过以上五个功能完成,虽然不是很复杂,但实现了JAVA程序设计的思想。
第三章总体与详细设计
3.1总体设计
1)本程序是Application程序,共有十一个成员方法;
2)一个是主方法;
3)是一个数据成员,其中两个二维数组。
3.2详细设计
1)设置主面板;
2)定义子面板;
3)设置退出、重列、重新开始三个按钮;
4)设置分数标签;
5)储存游戏按钮位置;
6)判断是否有按钮被选中;
7)编写消除方法。
第四章编码实现
1)程序主方法:
publicstaticvoidmain(String[]args)
{
lianliankanllk=newlianliankan();
ddp.randomBuild();
ddp.init();
}
2)判断同一行的相同按钮是否能够相连:
publicvoidlinePassOne(){
if(y0>j){//第一按钮同行空按钮在左边
for(i=y0-1;i>=j;i--){//判断第一按钮同左侧空按钮之间有没按钮
if(grid[x0][i]!
=0){
k=0;
break;
}
else{k=2;}//K=2说明通过了第二次验证
}
}
if(y0 for(i=y0+1;i<=j;i++){ if(grid[x0][i]! =0){ k=0; break; } else{k=2;} } } } 3)定义面板上的数字按钮: publicvoidreload(){ intsave[]=newint[30]; intn=0,cols,rows; intgrid[][]=newint[8][7]; for(inti=0;i<=6;i++){ for(intj=0;j<=5;j++){ if(this.grid[i][j]! =0){ save[n]=this.grid[i][j]; n++; } } } n=n-1; this.grid=grid; while(n>=0){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]! =0){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=save[n]; n--; } mainFrame.setVisible(false); pressInformation=false;//这里一定要将按钮点击信息归为初始 init(); for(inti=0;i<6;i++){ for(intj=0;j<5;j++){ if(grid[i+1][j+1]==0) diamondsButton[i][j].setVisible(false); } } } 4)数字相消的方法: publicvoidxiao(){//相同的情况下能不能消去 if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y))){//判断是否相邻 remove(); } else{ for(j=0;j<7;j++){ if(grid[x0][j]==0){//判断第一个按钮同行哪个按钮为空 if(y>j){//如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for(i=y-1;i>=j;i--){//判断第二按钮左侧直到第一按钮中间有没有按钮 if(grid[x][i]! =0){ k=0; break; } else{k=1;}//K=1说明通过了第一次验证 } if(k==1){ linePassOne(); } } if(y for(i=y+1;i<=j;i++){//判断第二按钮左侧直到第一按钮中间有没有按钮 if(grid[x][i]! =0){ k=0; break; } else{k=1;} } if(k==1){ linePassOne();} } 第五章调试与测试 1)写出批处理文件12.bat; 2)编写java格式的文件lianliankan.java; 3)开始运行,过程显示如下: 运行结果如下: 第六章总结与心得 总结: 通过这次的课程设计过程,我进一步了解JAVA程序的设计懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。 在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。 最后的时刻设置的障碍,是要考验我的能力,在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。 谢谢老师的那句话,她说: 人力有所不能及,然而,人的精神是不会败倒的。 我鼓起勇气,到处问,到处查资料,黄天不负有心人,终于看到了我所特别要求的函数,我实现了组合是关键的理论。 不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。 心得: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。 因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回想学习JAVA的过程中,既有快乐又有烦恼. 从领到书的那一刻,我就很郁闷,《面向对象程序设计-JAVA》到底事学什么的,有什么用。 刚开始上课时,还在迷茫这门课程是用来做什么的。 不过,这些感受都是在对这门课程不了解的情况下产生的。 后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。 尤其是学到类与对象和多态机制时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。 通过半个学期的学习,我掌握了基本知识。 下学期开始时,被通知要进行三周的课程设计。 当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。 第一天基本上都是在看书,把基本知识再熟悉一边。 到了下午的时候,老师发过来三道练习题,从这几道练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。 第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。 但是,到了第二周,我们由不得不再次陷入困境。 在整个程序的编写过程中。 最难的就是修改和删除这两个模块,这也是我们第二周要解决的重点问题。 开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。 困难之时,我们组的其他人,帮助了我,完成了修改和删除。 这样的话,整个程序基本上全部完成了,就剩下完善工作了。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在两个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论 知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 附录1 程序源代码 importjavax.swing.*; importjava.awt.*; importjava.awt.event.*; publicclasslianliankanimplementsActionListener { JFramemainFrame; ContainerthisContainer; JPanelcenterPanel,southPanel,northPanel; JButtondiamondsButton[][]=newJButton[6][5]; JButtonexitButton,resetButton,newlyButton; JLabelfractionLable=newJLabel("0"); JButtonfirstButton,secondButton; intgrid[][]=newint[8][7]; staticbooleanpressInformation=false; intx0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; inti,j,k,n; publicvoidinit(){ mainFrame=newJFrame; thisContainer=mainFrame.getContentPane(); thisContainer.setLayout(newBorderLayout()); centerPanel=newJPanel(); southPanel=newJPanel(); northPanel=newJPanel(); thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); centerPanel.setLayout(newGridLayout(6,5)); for(intcols=0;cols<6;cols++){ for(introws=0;rows<5;rows++){ diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } } exitButton=newJButton; exitButton.addActionListener(this); resetButton=newJButton; resetButton.addActionListener; newlyButton=newJButton; newlyButton.addActionListener(this); southPanel.add(exitButton); southPanel.add(resetButton); southPanel.add(newlyButton); fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()))); northPanel.add(fractionLable); mainFrame.setBounds(280,100,500,450); mainFrame.setVisible(true); } publicvoidrandomBuild(){ intrandoms,cols,rows; for(inttwins=1;twins<=15;twins++){ randoms=(int)(Math.random()*25+1); for(intalike=1;alike<=2;alike++){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]! =0){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=randoms; } } } publicvoidfraction() { fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100)); } publicvoidreload(){ intsave[]=newint[30]; intn=0,cols,rows; intgrid[][]=newint[8][7]; for(inti=0;i<=6;i++){ for(intj=0;j<=5;j++){ if(this.grid[i][j]! =0){ save[n]=this.grid[i][j]; n++; } } } n=n-1; this.grid=grid; while(n>=0){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); while(grid[cols][rows]! =0){ cols=(int)(Math.random()*6+1); rows=(int)(Math.random()*5+1); } this.grid[cols][rows]=save[n]; n--; } mainFrame.setVisible(false); pressInformation=false; init(); for(inti=0;i<6;i++){ for(intj=0;j<5;j++){ if(grid[i+1][j+1]==0) diamondsButton[i][j].setVisible(false); } } } publicvoidestimateEven(intplaceX,intplaceY,JButtonbz){ if(pressInformation==false){ x=placeX; y=placeY; secondMsg=grid[x][y]; secondButton=bz; pressInformation=true; } else{ x0=x; y0=y; fristMsg=secondMsg; firstButton=secondButton; x=placeX; y=placeY; secondMsg=grid[x][y]; secondButton=bz; if(fristMsg==secondMsg&&secondButton! =firstButton){ xiao(); } } } publicvoidxiao(){ if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y))){ remove(); } else{ for(j=0;j<7;j++){ if(grid[x0][j]==0){ if(y>j){ for(i=y-1;i>=j;i--){ if(grid[x][i]! =0){ k=0; break; } else{k=1;} } if(k==1){ linePassOne(); } } if(y for(i=y+1;i<=j;i++){ if(grid[x][i]! =0){ k=0; break; } else{k=1;} } if(k==1){ linePassOne(); } } if(y==j){ linePassOne(); } } if(k==2){ if(x0==x){ remove(); } if(x0 for(n=x0;n<=x-1;n++){ if(grid[n][j]! =0){ k=0; break; } if(grid[n][j]==0&&n==x-1){ remove(); } } } if(x0>x){ for(n=x0;n>=x+1;n--){ if(grid[n][j]! =0){ k=0; break; } if(grid[n][j]==0&&n==x+1){ remove(); } } } } } for(i=0;i<8;i++){ if(grid[i][y0]==0){ if(x>i){ for(j=x-1;j>=i;j--){ if(grid[j][y]! =0){ k=0; break; } else{k=1;} } if(k==1){ rowPassOne(); } } if(x for(j=x+1;j<=i;j++){ if(grid[j][y]! =0){ k=0; break; } else{k=1;} } if(k==1){ rowPassOne(); } } if(x==i){ rowPassOne(); } } if(k==2){ if(y0==y){ remove(); } if(y0 for(n=y0;n<=y-1;n++){ if(grid[i][n]! =0){ k=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计