教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

最新贪吃蛇设计论文

来源:网络收集 时间:2026-09-02
导读: 最新贪吃蛇设计论文 贪吃蛇设计论文 姓名: 摘要: 本文用J2SE实现大家耳熟能详的一个贪吃蛇游戏来综合运用所学知识,本游戏运用软件工程思想(螺旋模型),打好游戏主体框架,JAVA的面向对象思想,封装类,接口等概念,来完成本游戏,打到综合运用知识的目

最新贪吃蛇设计论文

贪吃蛇设计论文

姓名:

摘要:

本文用J2SE实现大家耳熟能详的一个贪吃蛇游戏来综合运用所学知识,本游戏运用软件工程思想(螺旋模型),打好游戏主体框架,JAVA的面向对象思想,封装类,接口等概念,来完成本游戏,打到综合运用知识的目的。 ⑴.本游戏开发平台:WINXP; ⑵.JAVA开发环境: JDK1.6 +Eclipse; ⑶.开发语言:J2SE 关键词:

中央控制器;游戏面板;食物;蛇;石头

前言

贪吃蛇游戏背景:

蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。 而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候(好象是那个时候但是不确定)就有人发明的一种游戏,是现在贪吃蛇的前身。后来慢慢的发展就变成了今天的贪吃蛇了、现在贪吃蛇主要应用于手机游戏。

本文运用软件工程思想、JAVA面向对象编程、类的封装、抽象类的使用(接口),游戏编码规范遵循MVC模式,循序渐进实现贪吃蛇的相关功能。

一 :游戏中的面向对象分析与设计 ㈠ ●涉及到几个对象(类) ㈡ ●每个类有什么方法

1 . 首先得有个游戏显示面板(GamePanel)类 该类有一个方法void display(); //用来显示游戏面板 2 . 得有个蛇(Snake)类 该类有以下几个方法:

void move(); //移动(走一步) void changeDirection(); //改变方向 void eatFood(); //吃食物(身体变长)

voolean is EatBody();//蛇是否吃到了自己的身体 void drawMe();//显示 3 . 一个食物类(Food)类 该类有以下方法:

最新贪吃蛇设计论文

boolean is SnakeEatFood(Snake); //判断蛇是否吃到了食物 void drawMe();//显示

4 . 一个背景石头(Ground)类 该类有以下方法:

Boolean isSnakeEatRock(Snake); //蛇是否吃到了石头 void drawMe();//显示

此时类之间的关系如下图所示:

图1 各个类之间的关系

二 : 编写贪吃蛇游戏中的各个类的主体框架性代码

本有序遵循MVC(Model-View-Controller)所以首先建立以上几个实体类并定义相应的包名:liang.snake.entities包下定义Food、Ground、Snake 三个类,再在liang.snake.view包下定义GamePanel类,再在,按照以上说明的各个类具有的方法,写上如下代码:

package liang.snake.entities; public class Food {

public boolean isSnakeEatFood(Snake snake) {

System.out.println("Snake's eat food"); return false; }

public void drawme() {

最新贪吃蛇设计论文

}

System.out.println("Food's drawme"); }

package liang.snake.entities;

public class Ground {

public boolean isSnakeEatRock()

{

return false;

} }

package liang.snake.entities;

public class Snake {

public void move() public void drawme() {

System.out.println("Ground's drawme"); }

{

System.out.println("Snake's move"); }

public void changeDirection(int direction) {

System.out.println("Snake's changeDirection"); }

public void eatFood() {

System.out.println("Snake's eat food"); }

public boolean isEatBody()

最新贪吃蛇设计论文

{

System.out.println("Snake's eat body"); return false; }

public void drawMe(){

System.out.println("Snake's drawMe"); }

package liang.snake.view; import java.awt.Graphics; import javax.swing.JPanel;

import liang.snake.entities.Food; import liang.snake.entities.Ground; import liang.snake.entities.Snake; public class GamePanel extends JPanel{ private Snake snake; private Ground ground; private Food food;

public void paintComponent(Graphics g) { snake.drawMe(); ground.drawme(); food.drawme(); }

public void display(Snake snake,Ground ground,Food food)

{

this.snake=snake; this.ground=ground; this.food=food;

System.out.println("GamePanel's display"); this.repaint(); }

三 : 编写Controler类与实现蛇移动的事件监听

由于蛇不能直接操作显示面板(GamePanel)所以这里定义一个监听器SnakeListener:

最新贪吃蛇设计论文

里面定义一个方法:

void snakeMove(Snake); 每当蛇移动一步就触发监听器,调用snakeMoved()由Controller去实现监听器的接口,然后由控制器去触发显示面板的事件源,让显示面板完成相应操作。 逻辑图如下:

图2 事件监听建立联系

在Snake 中增加蛇的方向常量:

public static final int UP=1; public static final int DOWN=-1; public static final int LEFT=2; public static final int RIGHT=-2;

并添加一个接口:

package liang.snake.Listener; import liang.snake.entities.Snake;

Controler 实现SnakeListener接口并处理案件消息:代码如下: package liang.snake.Controller; import java.awt.event.KeyAdapter;

public interface SnakeListener { }

public void SnakeMove(Snake snake);

最新贪吃蛇设计论文

import java.awt.event.KeyEvent;

import liang.snake.Listener.SnakeListener; import liang.snake.entities.Food; import liang.snake.entities.Ground; import liang.snake.entities.Snake; import liang.snake.view.GamePanel;

public class Controller extends KeyAdapter implements SnakeListener{

Snake snake=new Snake(); Ground ground=new Ground();

Food food=new Food();

GamePanel gamepanel=new GamePanel();

public Controller(Snake snake, Ground ground, Food food, GamePanel gamepanel) {

}

this.snake = snake; this.ground = ground; this.food = food;

this.gamepanel = gamepanel;

public void keyReleased(KeyEvent e) {

switch(e.getKeyCode()) {

case KeyEvent.VK_UP :

snake.changeDirection(Snake.UP); break;

case KeyEvent.VK_DOWN :

snake.changeDirection(Snake.DOWN); break;

case KeyEvent.VK_LEFT :

snake.changeDirection(Snake.LEFT); break;

最新贪吃蛇设计论文

}

}

snake.changeDirection(Snake.RIGHT); break;

public void newgame() { }

public void SnakeMove(Snake snake) { snake.start();

gamepanel.display(snake,ground,food); }

开发到此时,Snake中应该增加监听器,并另启动一个线程来不断调用蛇的move();在Snake中提供一个启动线程的方法,在Snake中增加如下代码: private Set<SnakeLis …… 此处隐藏:7768字,全部文档内容请下载后查看。喜欢就下载吧 ……

最新贪吃蛇设计论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1707152.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)