Java课程设计.docx

上传人:b****6 文档编号:4204133 上传时间:2022-11-28 格式:DOCX 页数:11 大小:193.89KB
下载 相关 举报
Java课程设计.docx_第1页
第1页 / 共11页
Java课程设计.docx_第2页
第2页 / 共11页
Java课程设计.docx_第3页
第3页 / 共11页
Java课程设计.docx_第4页
第4页 / 共11页
Java课程设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Java课程设计.docx

《Java课程设计.docx》由会员分享,可在线阅读,更多相关《Java课程设计.docx(11页珍藏版)》请在冰豆网上搜索。

Java课程设计.docx

Java课程设计

课程设计

 

《Java程序设计》

课程设计说明书

 

塔里木大学教务处制

目录

1.课程设计目的1

2.设计方案论证1

2.1设计思路1

2.2概要设计1

2.3详细设计2

3.设计结果与分析5

4.心得体会6

5.参考文献7

6.附录7

 

1.课程设计目的

《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

2.设计方案论证

2.1设计思路

贪吃蛇游戏设计与实现,主要分为以下二个模块:

游戏主界面模块和游戏控制模块。

在此只实现游戏的游戏主界面模块、游戏控制模块。

并且只是实现移动速度、暂停、重新开始等功能。

游戏主界面模块:

游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、游戏速度控制按钮、暂停游戏按钮、重新开始游戏按钮以及游戏排行榜按钮。

从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。

游戏控制模块:

这个模块是游戏的中心环节,主要完成控制游戏的速度、暂停、重新开始等功能。

为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。

本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为:

游戏主界面模块、游戏控制模块以二个模块。

性能:

本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

2.2概要设计

2.2.1自定义类说明

类名:

Exception

作用:

用来处理当蛇撞到墙或自己的身体时程序的运行

继承的父类:

GreedSnake类

实现的接口:

没有

2.3详细设计

2.3.1程序概述

本程序是一个利用Java应用软件制作的贪食蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;通过Pageup和pagedown键来控制蛇的移动速度,每单击一次,蛇的移动速度改变一次,改变频率为0.75。

游戏运行过程中,如果想暂停,只需要按Space或P键即可。

重新开始游戏的按键为Enter、S或R。

当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点是无法保存分数。

2.3.2程序流程图

本次游戏设计的处理流程如图1所示。

 

2.3.3总设计模块的划分

根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。

游戏控制模块的主要框架如图3所示。

游戏移动速度功能控制:

点击“PageUp,PageDown”按钮,蛇的移动速度就会改变,每点击一次,速度的改变频率为0.75。

游戏暂停控制:

点击“Space或P暂停游戏”按钮,游戏暂停;再单击,游戏继续。

游戏重新开始控制:

点击“Enter、S或R”键后,系统图重新载入,即游戏重新

开始。

2.3.4类、方法、属性说明

(1)成员变量

表1主要成员变量(属性)

 

(2)方法

3.设计结果与分析

本程序在运行后,能够正常的相应按键事件。

由于程序的主要部分已经集成为一个对象SnakeModel,所以利用键盘就可以实现操作。

蛇前行的过程中,可以任意向其左或右方向改变方向,但按其前进方向和前进的反方向都没有反应。

点击PageUp,PageDown键后,蛇的移动速度会根据点击的次数而改变。

每点击一次,速度的改变频率为0.75。

点击Space或P键后游戏就暂停了。

点击Enter或R或S键后系统则重新载入,即游戏重新开始。

运行结果如下图4所示:

图(4)程序运行图

当蛇没有吃到食物且碰到边界或碰撞到自己的身体时,游戏结束,此时得分为0。

如果想重新开始即按ENTER或S键,运行结果如下图5所示:

图(5)程序结束图

程序异常处理:

在蛇的运行线程过程中,当蛇撞到墙或自己的身体时,将抛出一个Exception类的异常对象,然后使用try-catch去捕捉这个异常,

异常的处理如下:

try{

Thread.sleep(timeInterval);}

catch(Exceptione)

{

break;

}

4.心得体会

通过这次课程设计,我对这学期所学的JAVA语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够实现自己预先的构想,我通过上网和去图书馆找程序,比较好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。

在做Java设计之前也有做过其他的课程设计,大多规模很小。

在数据库、各种应用软件和游戏中,我仍觉得对游戏的设计有极大的热情。

因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。

大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。

综合运用以前所学习的知识,设计一个JAVA手机游戏,并能实现以下的功能:

游戏暂停、游戏重新开始、游戏的结束。

总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。

5.参考文献

[1]冯燕奎,赵德奎.JSP实用案例教程[M]清华大学出版社,2004,5:

70-100

[2]王家华软件工程[M]东北大学出版社2001年3月303页

[3]王宜贵软件工程[M]北京:

机械工业出版社,2002:

20-79

[4]孙卫琴精通struts[M]电子工业出版社2004年8月50-70

[5]孙卫琴精通hibernate[M]电子工业出版社2005年4月100-120

[6]张洪斌java2高级程序设计[M]中科多媒体出版社2001年11月85-90

[7]JimArlowUML2.0andtheUnifiedProcess[M]机械工业出版社2006年6月30-40

[8]林信良spring2.0技术手册[M]电子工业出版社2006年6月50-100

[9]熊节、林仪明、张凯峰、陈玉泉等主编[《CSDN社区电子杂志——Java杂志》创刊号]

[10]《程序员》杂志2007年第4期

[11]耿祥义编著.JSP基础编程[M].清华大学出版社,2004.55-162

[12]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185-193

[13]孙鑫编著.JavaWeb开发详解[M].电子工业出版社,2006.189-274

[14]林上杰,林康司编著.JSP2.0技术手册[M].电子工业出版社,2004.3-6[15]萨师煊,王珊.数据库系统概论(第三版)[M].北京:

高等教育出版社,1998.[16]蔡剑,景楠.JavaWeb应用开发:

J2EE和Tomcat[M].北京:

清华大学出版社,2004.

5.参考文献

6.附录

packagekechengsheji;

importjava.awt.*;

importjavax.swing.*;

importjava.awt.event.*;

importjava.util.*;

publicclassSnakeGameextendsJFrameimplementsKeyListener{

privateintstat=1,direction=0,bodylen=6,headx=7,heady=8,tailx=1,taily=8,tail,foodx,foody,food;//初始化定义变量

publicfinalintEAST=1,WEST=2,SOUTH=3,NORTH=4;//方向常量

int[][]fillblock=newint[20][20];//定义蛇身所占位置

publicSnakeGame(){//构造函数

super("贪吃蛇");

setSize(510,510);

setVisible(true);//设定窗口属性

addKeyListener(this);//添加监听

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

for(inti=1;i<=7;i++)fillblock[i][8]=EAST;//初始化蛇身属性

direction=EAST;//方向初始化的设置

FoodLocate();//定位食物

while(stat==1){

fillblock[headx][heady]=direction;

switch(direction){

case1:

headx++;break;

case2:

headx--;break;

case3:

heady++;break;

case4:

heady--;break;

}//蛇头的前进

if(heady>19||headx>19||tailx>19||taily>19||heady<0||headx<0||tailx<0||taily<0||fillblock[headx][heady]!

=0){

stat=0;

break;}//判断游戏是否结束

try{

Thread.sleep(150);}

catch(InterruptedExceptione){}//延迟

fillblock[headx][heady]=direction;

if(headx==foodx&&heady==foody){//吃到食物

FoodLocate();

food=2;

try{

Thread.sleep(100);}

catch(InterruptedExceptione){}//延迟

}

if(food!

=0)food--;

else{

tail=fillblock[tailx][taily];

}

fillblock[tailx][taily]=0;//蛇尾的消除

switch(tail){

case1:

tailx++;break;

case2:

tailx--;break;

case3:

taily++;break;

case4:

taily--;break;}//蛇尾的前进

repaint();

}

if(stat==0){

JOptionPane.showMessageDialog(null,"GAMEOVER","GameOver",JOptionPane.INFORMATION_MESSAGE);

}

publicvoidkeyPressed(KeyEvente){//按键响应

intkeyCode=e.getKeyCode();

if(stat==1)switch(keyCode){

caseKeyEvent.VK_UP:

if(direction!

=SOUTH)direction=NORTH;break;

caseKeyEvent.VK_DOWN:

if(direction!

=NORTH)direction=SOUTH;break;

caseKeyEvent.VK_LEFT:

if(direction!

=EAST)direction=WEST;break;

caseKeyEvent.VK_RIGHT:

if(direction!

=WEST)direction=EAST;break;}

}

publicvoidkeyReleased(KeyEvente){}//空函数

publicvoidkeyTyped(KeyEvente){}//空函数

publicvoidFoodLocate(){//定位食物坐标

do{Randomr=newRandom();

foodx=r.nextInt(20);

foody=r.nextInt(20);

}

while(fillblock[foodx][foody]!

=0);

}

publicvoidpaint(Graphicsg){//画图

super.paint(g);

g.setColor(Color.BLUE);

for(inti=0;i<20;i++)

for(intj=0;j<20;j++)

if(fillblock[i][j]!

=0)

g.fillRect(25*i+5,25*j+5,24,24);

g.setColor(Color.RED);

g.fillRect(foodx*25+5,foody*25+5,24,24);

}

publicstaticvoidmain(String[]args){//主程序

SnakeGameapplication=newSnakeGame();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

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

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