java版的贪吃蛇毕业论文Word文档下载推荐.docx
《java版的贪吃蛇毕业论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java版的贪吃蛇毕业论文Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
![java版的贪吃蛇毕业论文Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/10/e40c69ee-f481-4c59-965c-a434c35cee6c/e40c69ee-f481-4c59-965c-a434c35cee6c1.gif)
In thispaper,J2SEimplementation ofaSnakegamefamiliarto theintegrated useofwhatthey havelearned,thisgameis the useofsoftware engineeringthinking(spiralmodel),themain frameworkof thefight game,JAVA object-orientedthinking,wrapperclasses,interfaceconceptstoplete this game,hittingtheintegrated useofknowledgeandpurpose、
⑴、 Thegamedevelopmentplatform:
WINXP;
⑵、 JAVADevelopmentEnvironment:
JDK1、6+ Eclipse;
⑶、DevelopmentLanguages:
J2SE
Keywords:
Controller;
GamePanel;
Food;
Snake;
Ground
前言
贪吃蛇游戏背景:
蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征、而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候(好象是那个时候然而不确定)就有人发明的一种游戏,是现在贪吃蛇的前身、后来慢慢的发展就变成了今天的贪吃蛇了、现在贪吃蛇主要应用于手机游戏。
本文运用软件工程思想、JAVA面向对象编程、类的封装、抽象类的使用(接口),游戏编码规范遵循MVC模式,循序渐进实现贪吃蛇的相关功能、
一:
游戏中的面向对象分析与设计
㈠ ●涉及到几个对象(类)
㈡ ●每个类有什么方法
1 、首先得有个游戏显示面板(GamePanel)类
该类有一个方法void display();
//用来显示游戏面板
2、 得有个蛇(Snake)类
该类有以下几个方法:
voidmove();
//移动(走一步)
void changeDirection();
//改变方向
void eatFood();
//吃食物(身体变长)
vooleanis EatBody();
//蛇是否吃到了自己的身体
voiddrawMe();
//显示
3 、一个食物类(Food)类
该类有以下方法:
booleanis SnakeEatFood(Snake);
//判断蛇是否吃到了食物
voiddrawMe();
//显示
4、 一个背景石头(Ground)类
Boolean isSnakeEatRock(Snake);
//蛇是否吃到了石头
voiddrawMe();
//显示
此时类之间的关系如下图所示:
图1各个类之间的关系
二:
编写贪吃蛇游戏中的各个类的主体框架性代码
本有序遵循MVC(Model—View-Controller)因此首先建立以上几个实体类并定义相应的包名:
liang、snake、entities包下定义Food、Ground、Snake 三个类,再在liang、snake、view包下定义GamePanel类,再在,依照以上讲明的各个类具有的方法,写上如下代码:
package liang、snake、entities;
publicclassFood{
ﻩpublicbooleanisSnakeEatFood(Snakesnake)
ﻩ {
ﻩﻩ System、out、println(”Snake'seatfood”);
ﻩﻩ returnfalse;
}
publicvoiddrawme()
ﻩ {
ﻩ System、out、println(”Food’sdrawme”);
ﻩ }
}
package liang、snake、entities;
publicclass Ground {
ﻩpublicbooleanisSnakeEatRock()
{
ﻩﻩreturnfalse;
}
publicvoid drawme()
{
ﻩ System、out、println(”Ground’sdrawme");
}
packageliang、snake、entities;
public classSnake {
ﻩpublicvoidmove()
{
ﻩSystem、out、println(”Snake'smove”);
}
public voidchangeDirection(intdirection)
{
ﻩSystem、out、println("
Snake’schangeDirection”);
}
publicvoid eatFood()
ﻩ System、out、println("Snake’seat food");
}
public boolean isEatBody()
{
ﻩ System、out、println(”Snake’seatbody”);
ﻩreturn false;
}
publicvoiddrawMe(){
ﻩ System、out、println("Snake’sdrawMe”);
packageliang、snake、view;
importjava、awt、Graphics;
importjavax、swing、JPanel;
importliang、snake、entities、Food;
importliang、snake、entities、Ground;
importliang、snake、entities、Snake;
public classGamePanel extends JPanel{
private Snakesnake;
privateGroundground;
privateFoodfood;
ﻩpublicvoid paintponent(Graphicsg){
snake、drawMe();
ground、drawme();
ﻩfood、drawme();
ﻩ}
ﻩpublicvoiddisplay(Snakesnake,Groundground,Foodfood)
{
ﻩthis、snake=snake;
ﻩﻩthis、ground=ground;
ﻩﻩthis、food=food;
ﻩ System、out、println("GamePanel’sdisplay");
this、repaint();
}
三:
编写Controler类与实现蛇移动的事件监听
由于蛇不能直截了当操作显示面板(GamePanel)因此这个地方定义一个监听器SnakeListener:
里面定义一个方法:
voidsnakeMove(Snake);
每当蛇移动一步就触发监听器,调用snakeMoved()由Controller去实现监听器的接口,然后由控制器去触发显示面板的事件源,让显示面板完成相应操作。
逻辑图如下:
图2事件监听建立联系
在Snake中增加蛇的方向常量:
ﻩpublicstatic finalint UP=1;
ﻩpublicstaticfinalint DOWN=—1;
ﻩpublic staticfinalint LEFT=2;
ﻩpublic staticfinalintRIGHT=-2;
并添加一个接口:
packageliang、snake、Listener;
importliang、snake、entities、Snake;
public interfaceSnakeListener{
ﻩﻩpublicvoidSnakeMove(Snake snake);
ﻩ}
Controler实现SnakeListener接口并处理案件消息:
代码如下:
packageliang、snake、Controller;
importjava、awt、event、KeyAdapter;
importjava、awt、event、KeyEvent;
importliang、snake、Listener、SnakeListener;
import liang、snake、entities、Food;
import liang、snake、entities、Ground;
import liang、snake、entities、Snake;
importliang、snake、view、GamePanel;
publicclassController extendsKeyAdapter implementsSnakeListener{
ﻩSnake snake=newSnake();
ﻩGround ground=newGround();
Foodfood=new Food();
GamePanel gamepanel=new GamePanel();
publicController(Snake snake, Groundground,Food food,GamePanelgamepanel){
ﻩﻩthis、snake=snake;
ﻩﻩthis、ground=ground;
ﻩﻩthis、food =food;
ﻩﻩthis、gamepanel =gamepanel;
publicvoid keyReleased(KeyEvente){
ﻩﻩswitch(e、getKeyCode())
ﻩﻩ{
ﻩﻩcaseKeyEvent、VK_UP:
ﻩﻩﻩsnake、changeDirection(Snake、UP);
ﻩbreak;
ﻩﻩcaseKeyEvent、VK_DOWN:
ﻩﻩﻩsnake、changeDirection(Snake、DOWN);
ﻩﻩﻩbreak;
ﻩﻩcaseKeyEvent、VK_LEFT:
ﻩﻩﻩsnake、changeDirection(Snake、LEFT);
ﻩﻩbreak;
ﻩcase KeyEvent、VK_RIGHT:
ﻩﻩﻩsnake、changeDirection(Snake、RIGHT);
ﻩﻩﻩbreak;
ﻩﻩ}
}
publicvoidnewgame()
{
ﻩsnake、start();
}
ﻩpublicvoidSnakeMove(Snake snake){
gamepanel、