计算机课程设计正文.docx
《计算机课程设计正文.docx》由会员分享,可在线阅读,更多相关《计算机课程设计正文.docx(11页珍藏版)》请在冰豆网上搜索。
计算机课程设计正文
目录
1前言1
2需求分析1
2.1任务和要求1
2.2运行环境2
2.3开发工具2
3分析和设计2
3.1系统分析及设计思路2
3.2主要类图2
4具体代码实现(主要源代码)3
5课程设计总结6
5.1程序运行结果或预期运行结果6
5.2设计结论8
参考文献9
致谢10
1前言
贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。
贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。
在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。
因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。
在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。
正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。
学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。
2需求分析
2.1任务和要求
设计实现功能和目标
本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的开始、暂停、退出、等功能,分为:
游戏主界面模块、游戏控制模块以二个模块。
性能:
本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
游戏主界面模块:
主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。
游戏的主界面应该力求美观,爽心悦目。
游戏控制模块:
主要完成控制游戏的开始、暂停、退出等功能,这部分应该做到易懂、易操作而且准确率高,不易出错。
2.2运行环境
(1)WINDOWS2000/XP系统
(2)editplus或eclipse
2.3开发工具
Java
3分析和设计
3.1系统分析及设计思路
根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。
游戏界面主框架主要包括游戏图形区域界面、游戏开始按钮、游戏暂停按钮、关闭按钮。
游戏画布区主要应该包括游戏画布中贪吃蛇随机出现的位置,贪吃蛇重新出现的位置,事物随机出现的位置。
在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。
另外,还要求系统的可扩展性、可维护性、可移植性良好。
软件开发过程中的功能模块设计,主要解决实现该游戏需求的程序模块设计问题。
包括如何把该游戏划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。
3.2主要类图
SnakeApp类
该类包含main方法,为应用程序的主类。
该类用来创建游戏的用户界面,整个程序从该类的main方法开始执行。
SnakeFrame类
用来设计游戏的用户界面。
SnakePanel类
设置游戏运行状态,设置蛇头颜色,背景颜色,随机块颜色,移动以及分数更新,实现上下左右移动的方法接口。
SnakeModel类
设置初始化蛇的形状和运行方向,设置随机块的位置,判断游戏是否出界,以及出界后的处理,设置方向的更新。
ArrayIndex类
用来得到坐标,设置坐标以及判断运行方向相同或相反。
ArrayIndexReadOnly类
用来得到坐标,以及判断运行方向相同或相反。
Listener类
用来控制游戏的速度
4具体代码实现(主要源代码)
、SnakeApp.java
packagecccc;
importjavax.swing.*;
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
classSnakeApp
{
publicstaticvoidmain(String[]args)//主函数
{
SnakeFrameframe=newSnakeFrame();
frame.addWindowListener(newWindowAdapter()//注册事件监听器
{
publicvoidwindowClosing(WindowEvente)//关闭窗体
{
System.exit(0);
}
});
frame.setSize(WIDTH,HEIGHT);//设置窗体大小
frame.setResizable(false);
frame.setLocation(300,200);
frame.setTitle("贪吃蛇v1.0");//设置窗体标题为贪吃蛇v1.0
//显示窗口
frame.show();
}
privatestaticfinalintWIDTH=300;//宽度值为300
privatestaticfinalintHEIGHT=270;//高度值为270
}
、ArrayIndex.java
packagecccc;
publicclassArrayIndex
{
privateintx;//定义x坐标
privateinty;//定义y坐标
ArrayIndex(intx,inty)//构造函数
{
this.x=x;
this.y=y;
}
intgetX()//得到x坐标
{
returnx;
}
intgetY()//得到y坐标
{
returny;
}
voidsetX(intx)//设置x坐标
{
this.x=x;
}
voidsetY(inty)//设置y坐标
{
this.y=y;
}
publicbooleanequalOrRev(ArrayIndexe)//运动的方向相同或相反
{
return((e.getX()==getX())&&(e.getY()==getY()))
||((e.getX()==getX())&&(e.getY()==-1*getY()))
||((e.getX()==-1*getX())&&(e.getY()==getY()));
}
publicbooleanequals(ArrayIndexe)//运动方向相同
{
return(e.getX()==getX())&&(e.getY()==getY());
}
publicbooleanreverse(ArrayIndexe)//运动方向相反
{
return((e.getX()==getX())&&(e.getY()==-1*getY()))
||((e.getX()==-1*getX())&&(e.getY()==getY()));
}
}
}
.ArrayIndexReadOnly.java
packagecccc;
publicclassArrayIndexReadOnly
{
privateintx;//定义x坐标
privateinty;//定义y坐标
ArrayIndexReadOnly(intx,inty)//构造函数
{
this.x=x;
this.y=y;
}
intgetX()//得到x坐标
{
returnx;
}
intgetY()//得到y坐标
{
returny;
}
publicbooleanequalOrRev(ArrayIndexReadOnlye)//运动的方向相同或相反
{
return((e.getX()==getX())&&(e.getY()==getY()))
||((e.getX()==getX())&&(e.getY()==-1*getY()))
||((e.getX()==-1*getX())&&(e.getY()==getY()));
}
publicbooleanequals(ArrayIndexReadOnlye)//运动的方向相同
{
return(e.getX()==getX())&&(e.getY()==getY());
}
publicbooleanreverse(ArrayIndexReadOnlye)//运动的方向相反
{
return((e.getX()==getX())&&(e.getY()==-1*getY()))
||((e.getX()==-1*getX())&&(e.getY()==getY()));
}
}
5课程设计总结
5.1程序运行结果或预期运行结果
打开贪吃蛇游戏后,出现如下图2所示界面
图2
点击主菜单的【文件】出现如图3所示界面。
选择【退出】则可以退出游戏。
图3
再点击【帮助】就会出现如图4所示界面。
图4
点击主菜单的【设置】会出如图5所示界面,点击等级的类别修改难度系数。
图5
点击【风格】如图6所示可去掉网格。
图6
点击【新游戏】按钮开始游戏,如图7所示并有暂停和继续功能。
图7
5.2设计结论
通过这次课程设计,我对上学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够能够实现自己预先的构想,我们这组通过上网找代码和去图书馆借书找程序,比较画好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。
在这次课程设计中,我主要负责窗体和判断蛇的运动的设计和开发,在SnakeApp类中先定义了窗体的长度和宽度,然后通过frame.show()显示窗体,用注册监听器到Window的接口,利用System.exit(0)语句来完成关闭窗口的设计,在窗体大小的设计中,宽度和高度是采用宏定义的形式。
在ArrayIndex和ArrayIndexReadOnly类的设计中,两个类的设计基本相似,但是在本组成员其他类的调用中用法不一样,先定义了X和y的坐标,定义构造函数,用getx()和gety()方法得到X和Y的坐标,用setX(intx)和setY(inty)方法设置X和Y的坐标,用布尔型判断equalOrReV,equals,reverse方法,判断蛇的各种运行方向,以便在其他设计中能够更好的判断蛇是否出界,是否与随机块即食物出现时正在运行的方向一致。
在做Java设计之前也有做过其他的课程设计,大多规模很小。
在数据库、各种应用软件和游戏中,我仍觉得对游戏的设计有极大的热情。
因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。
大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。
大家作品的最终结果都离不开同一个模式。
相比一些数据库软件,游戏的设计有很多人情色彩和艺术思想的发挥,正式商业的软件的人性化界面和各个游戏间迥异的结构每每会让人有去开发的冲动。
综合运用以前所学习的知识,设计一个JAVA手机游戏,并能实现以下的功能:
游戏声音的控制、游戏等级的控制、最高分的记录、游戏暂停、游
戏重新开始、游戏的结束。
总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。
参考文献
[1]张福祥.C语言程序设计[M].辽宁大学出版社,2008.1
[2]张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:
辽宁大学出版社,2008.
[3]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:
中国铁道出版社,2008.
致谢
最后要感谢柳小文老师在本次课程设计中给我的指导和帮助,以及同学给我的帮助,也感谢各位领导和老师给我这次锻炼自己的机会。