手机贪吃蛇游戏设计.docx
- 文档编号:29592015
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:14
- 大小:92.64KB
手机贪吃蛇游戏设计.docx
《手机贪吃蛇游戏设计.docx》由会员分享,可在线阅读,更多相关《手机贪吃蛇游戏设计.docx(14页珍藏版)》请在冰豆网上搜索。
手机贪吃蛇游戏设计
辽宁科技大学
题目:
手机贪吃蛇游戏设计
课程设计任务书及成绩评定
课程设计的任务和具体要求
根据我们所学的知识制作一个小应用程序。
综合利用java的基本方法和
技巧制作一个课程设计,可以查阅相关的资料,也可以在老师的帮助下。
利用老师课堂上讲的知识在eclipce中制作小应用程序。
指导教师签字:
日期:
指导教师评语:
成绩:
指导教师签字:
日期:
课程设计所需软件、硬件等
硬件CPU:
IntelT2080D-0内存:
2G硬盘空间:
320G
软件操作系统:
WindowsXP开发软件:
ECLIPSE
课程设计进度计划
起止日期工作内容备注
2011.12.1—2011.12.7构思思路:
主界面模块和控制模块
2011.12.7—2011.12.25实现各各模块功能
参考文献、资料索引(序号、文献名称、编著者、出版单位)
[1]魏伟译.JBuilder开发人员指南[M].北京:
机械工业出版社,2001.1.
[2]胡雷,叶曙光,徐饪.JBuilder9.0入门与提高[M].北京:
机械工业出版社
JAVA设计贪吃蛇游戏
1.课程设计目的
《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
2.设计方案论证
2.1设计思路
贪吃蛇游戏设计与实现,主要分为以下二个模块:
游戏主界面模块和游戏控制模块。
在此只实现游戏的游戏主界面模块、游戏控制模块。
并且只是实现移动速度、暂停、重新开始等功能。
游戏主界面模块:
游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、新生方块的预览、游戏速度控制按钮、暂停游戏按钮、重新开始游戏按钮以及游戏排行榜按钮。
从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。
游戏控制模块:
这个模块是游戏的中心环节,主要完成控制游戏的速度、暂停、重新开始等功能。
为了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。
本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏的暂停、游戏的退出等功能,分为:
游戏主界面模块、游戏控制模块以二个模块。
性能:
本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
2.2概要设计
2.3.1自定义类说明
类名:
Exception
作用:
用来处理当蛇撞到墙或自己的身体时程序的运行
继承的父类:
GreedSnake类
实现的接口:
没有
2.3详细设计
2.3.1程序概述
本程序是一个利用Java应用软件制作的贪食蛇小游戏。
在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;通过Pageup和pagedown键来控制蛇的移动速度,每单击一次,蛇的移动速度改变一次,改变频率为0.75。
游戏运行过程中,如果想暂停,只需要按Space或P键即可。
重新开始游戏的按键为Enter、S或R。
当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。
本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点是无法保存分数。
2.4.2程序流程图
本次游戏设计的处理流程如图1所示。
2.3.3总设计模块的划分
根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行具体的设计,如图2所示。
游戏控制模块的主要框架如图3所示。
游戏移动速度功能控制:
点击“PageUp,PageDown”按钮,蛇的移动速度就会改变,每点击一次,速度的改变频率为0.75。
游戏暂停控制:
点击“Space或P暂停游戏”按钮,游戏暂停;再单击,游戏继续。
游戏重新开始控制:
点击“Enter、S或R”键后,系统图重新载入,即游戏重新开始。
2.3.4类、方法、属性说明
(1)成员变量
表1主要成员变量(属性)
成员变量描述
变量类型
名称
文件菜单中子菜单“新建”
JMenuItem
mFile_New
编辑菜单中子菜单“撤消”
JMenuItem
mEdit_Undo
格式菜单中子菜单“颜色”
JMenu
formatMenu_Color
帮助菜单中子菜单“帮助主题”
MenuItem
mHelp_HelpTopics
(2)方法
表2主要方法
方法名
功能
备注
Notepad4()
描述记事本
无
Text.setBackground(Color.white)
设置编辑区默认背景色
无
Text.setForeground(Color.black)
设置编辑区默认前景色
无
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.附录
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();
}
}
忽略此处..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 贪吃 游戏 设计