资源描述:
《java编写的贪吃蛇游戏源码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、石家庄学院课程设计报告课程名称:数据结构设计题目:用Java语言设计“贪吃蛇”游戏院系:石家庄学院计算机系专业:计算机科学与技术班级:08级2班设计者:扈海涛学号:20081301061指导教师:刘智国2010年1月7日类名一、函数程序结构图注释:方法名贪吃蛇MapYardTextSnakePaintThreadNodeKeyMonitorFoodDirectionDrawMian函数paintScoreCheck.stopgetscoresetscoreprocessKeyDeadifTailaddDeltailHeadaddTai
2、ladd()Deltail()HeadadddrawmoveeatkeyPressedRunPauseRestartgo_onisPausesetPauseinstallDrawreAppeargetMsetMgetNsetNDrawKeypressed定义方向变量L,U,D,R二、题目分析通过分析该程序基本需要以下几个类:Text(Main方法)、Snake(蛇)、Food(食物)、Yard(窗口)、Map(地图)、Node(节点)、PaintThread(线程)、Dir(方向)、KeyMonitor(键盘监听)。主要实现蛇运动的基
3、本操作和一些事件反应、游戏分数的记录、暂停、重新开始、更改蛇蛇颜色,蛇的移动速度,地图、死亡模式的改变等功能。本程序运用Java语言知识,用面向对象的思维设计“贪吃蛇”游戏。三、结果分析运行程序出现游戏界面,蛇(Snake)头自动向前移动,用键盘的上(Up)下(Down)左(Left)右(Right)键控制蛇头的移动方向。游戏窗体中在随机位置出现紫色的食物(Food)。1、每吃一个加5分2、默认撞墙不死3、默认速度34、默认地图15、默认普通蛇身6、默认30分提升一个速度档次7、默认每个速度都走完后更换地图并且速度恢复默认,积分归零功
4、能键:1、按F1重新开始2、按空格键暂停/继续3、按1/2/3/4/5数字键设置蛇的移动速度(逐渐变快)4、按F2更换地图(3种)5、按F3普通蛇/彩蛇的切换6、按F4更换游戏模式(蛇撞到最外围为死亡还是从另一端返回)该程序初步完成了“贪吃蛇”的游戏雏形,但是缺乏完善。比如:界面效果十分粗糙、屏幕闪烁、缺少声音等。但是,我们通过编写贪吃蛇,能更好的运用面向对象的思维方式了,并学到了许多有用的经验。四、附录(程序清单)1、Snake.javaimportjava.awt.Color;importjava.awt.Graphics;imp
5、ortjava.awt.event.KeyEvent;publicclassSnake{Nodehead=null;Nodetail=null;intsize=0;Yardy;Noden=newNode(1,2,Dir.D);publicSnake(Yardy){head=n;tail=n;size=1;this.y=y;for(inti=0;i<3;i++)this.Headadd();}publicvoidTailadd(){Nodenode=null;switch(tail.dir){caseL:node=newNode(tai
6、l.m+1,tail.n,tail.dir);break;caseU:node=newNode(tail.m,tail.n+1,tail.dir);break;caseR:node=newNode(tail.m-1,tail.n,tail.dir);break;caseD:node=newNode(tail.m,tail.n+1,tail.dir);break;}tail.next=node;node.pre=tail;tail=node;size++;}publicvoidDeltail(){if(size==0)return;ta
7、il=tail.pre;tail.next=null;}publicvoidHeadadd(){Nodenode=null;switch(head.dir){caseL:node=newNode(head.m-1,head.n,head.dir);break;caseU:node=newNode(head.m,head.n-1,head.dir);break;caseR:node=newNode(head.m+1,head.n,head.dir);break;caseD:node=newNode(head.m,head.n+1,hea
8、d.dir);break;}node.next=head;head.pre=node;head=node;size++;}publicvoiddraw(Graphicsg){if(size<=0)return;move(