java课程设计贪吃蛇大学论文

合集下载

贪吃蛇小游戏设计大学本科毕业论文

贪吃蛇小游戏设计大学本科毕业论文

1.1.导论导论随着移动通信的发展以及互联网向移动终端的普及,网络和用户对移动终端的要求越来越高,而Symbian Symbian,,Windows Mobile,PalmOS 等手机平台过于封闭,不能很好的满足用户的需求,因此市场迫切需要一个开放性很强的平台。

经过多年的发展,第三代数字通信第三代数字通信(3G)(3G)(3G)技术获得了广泛的接受,技术获得了广泛的接受,它为移动终端用户带来了更快的数据传输速率。

随着3G 网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。

端,还将成为互联网的终端。

因此,因此,因此,移动终端的应用软件和需要的服务将会有很移动终端的应用软件和需要的服务将会有很大的发展空间。

大的发展空间。

Google Google 为此于2007年11月推出了一个专为移动设备设计的软件平台——件平台——Android Android Android。

Android 是一套真正意义上的开放性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。

它包括操作系统、中间件和一些关键的平台应用。

Android Android 是由Linux+Java 构成的开源软件,允许所有厂商和个人在其基础上进行开发。

成的开源软件,允许所有厂商和个人在其基础上进行开发。

Android Android 平台的开放性等特点既能促进技术性等特点既能促进技术((包括平台自身包括平台自身))的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定自己的特色化的产品。

因此,它具有很大的市场发展潜力。

潜力。

1.1 Android 简介1.1.1 Android 的发展Android 一词本意是指“机器人”,同时也指Google 于2007年11月5日推出的开源手机操作系统。

推出的开源手机操作系统。

Android Android 基于Linux 平台,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

java版的贪吃蛇毕业论文

java版的贪吃蛇毕业论文

贪吃蛇【2 】姓名:摘要:本文用J2SE实现大家耳熟能详的一个贪吃蛇游戏来分解应用所学常识,本游戏应用软件工程思惟(螺旋模子),打好游戏主体框架,JAVA的面向对象思惟,封装类,接口等概念,来完成本游戏,打到分解应用常识的目标.⑴.本游戏开辟平台:WINXP;⑵.JAVA开辟情况: JDK1.6 +Eclipse;⑶.开辟说话:J2SE症结词:中心掌握器;游戏面板;食物;蛇;石头The Greed SnakeAbstract:In this paper, J2SE implementation of a Snake game familiar to the integrated use of what they have learned, this game is the use of software engineering thinking (spiral model), the main framework of the fight game, JAVA object-oriented thinking, wrapper classes, interface concepts to complete this game, hitting the integrated use of knowledge and purpose.⑴. The game development platform: WINXP;⑵. JAVA Development Environment: JDK1.6 + Eclipse;⑶. Development Languages: J2SEKeywords:Controller;GamePanel;Food;Snake;Ground媒介贪吃蛇游戏背景:蛇引导夏娃吃了苹果之后,就被贬为毒虫,阴险的象征. 而蛇吃器械是整只动物吞进去的,精确在文艺中兴的时刻(仿佛是谁人时刻但是不肯定)就有人创造的一种游戏,是如今贪吃蛇的前身.后来慢慢的成长就变成了今天的贪吃蛇了.如今贪吃蛇重要应用于手机游戏.本文应用软件工程思惟.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;publicclass Food {publicboolean isSnakeEatFood(Snake snake){System.out.println("Snake's eat food"); returnfalse;}publicvoid drawme(){System.out.println("Food's drawme");}}package liang.snake.entities;publicclass Ground {publicboolean isSnakeEatRock(){returnfalse;}publicvoid drawme(){System.out.println("Ground's drawme");}}package liang.snake.entities;publicclass Snake {publicvoid move(){System.out.println("Snake's move");}publicvoid changeDirection(int direction){System.out.println("Snake's changeDirection"); }publicvoid eatFood(){System.out.println("Snake's eat food");}publicboolean isEatBody(){System.out.println("Snake's eat body");returnfalse;}publicvoid 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;publicclass GamePanel extends JPanel{private Snake snake;private Ground ground;private Food food;publicvoid paintComponent(Graphics g) {snake.drawMe();ground.drawme();food.drawme();}publicvoid 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 中增长蛇的偏向常量:publicstaticfinalint UP=1;publicstaticfinalint DOWN=-1;publicstaticfinalint LEFT=2;publicstaticfinalint RIGHT=-2;并添加一个接口:package liang.snake.Listener;import liang.snake.entities.Snake;publicinterface SnakeListener {publicvoid SnakeMove(Snake snake);}Controler 实现SnakeListener接口并处理案件新闻:代码如下:package liang.snake.Controller;import java.awt.event.KeyAdapter;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;publicclass 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;}publicvoid 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;case KeyEvent.VK_RIGHT :snake.changeDirection(Snake.RIGHT);break;}}publicvoid newgame(){snake.start();}publicvoid SnakeMove(Snake snake) {gamepanel.display(snake,ground,food);}}开辟到此时,Snake中应当增长监听器,并另启动一个线程来不断挪用蛇的move();在Snake中供给一个启动线程的办法,在Snake中增长如下代码:private Set<SnakeListener> listener=newHashSet<SnakeListener>();publicvoid addSnakeListener(SnakeListener l){if(l!=null)this.listener.add(l);}}publicvoid start(){new Thread(new SnakeDriver()).run();}并在Run办法中增长for(SnakeListener l: listener){l.SnakeMove(Snake.this);}try{Thread.sleep(1000);}catch (InterruptedException e){e.printStackTrace();}四:编写对各个类进行测试的程序代码构建一个新类Game来测试程序代码:package liang.snake.Game;import java.applet.AudioClip;import java.awt.BorderLayout;import java.io.File;import .MalformedURLException;import .URL;import javax.swing.JFrame;import liang.snake.Controller.Controller;import liang.snake.entities.Food;import liang.snake.entities.Ground;import liang.snake.entities.Snake;import liang.snake.view.GamePanel;publicclass Game {publicstaticvoid main(String[] args) {JFrame jf=new JFrame("我的论文");Snake snake=new Snake();Ground ground=new Ground();Food food=new Food();GamePanel gamepanel=new GamePanel();Controller controller=new Controller(snake, ground, food, gamepanel);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setLocation(400, 0);jf.setSize(800, 600);jf.add(gamepanel);jf.addKeyListener(controller);snake.addSnakeListener(controller);jf.setVisible(true);controller.newgame();}}运行这个带有main()的类,在Eclipse 的Console窗口中可以看到如下信息:Snake's moveGamePanel's displaySnake's drawMeGround's drawmeFood's drawmeSnake's drawMeGround's drawmeFood's drawmeSnake's moveGamePanel's displaySnake's drawMeGround's drawmeFood's drawme这就意味着,当蛇移动一次,就触发监听器,有掌握器(controller)给GamePanel发送指令,让它重画,GamePanel中的publicvoid display(Snake snake,Ground ground, Food food){System.out.println("GamePanel's display");this.snake=snake;this.ground=ground;this.food=food;this.repaint();}这个办法依次画出几个实体,所以打印出上述信息.到了这一步我们的根本框架打好了,下面开端第5步五:蛇的数据构造设计与移动显示剖析:要区分蛇头和蛇尾巴,这就请求这个数据构造是有序的,还要经常拜访第一个和最后一个节点,所以LinkedList最适合,因为它有getFirst(),getLast()办法和removeLast()办法蛇下一步移动到哪是由偏向掌握的,前面已经界说过,蛇透坐标如下图:图3蛇头偏向盘算新蛇头坐标在Snake的 move()中增长body.removeLast();int x=body.getFirst().x;int y=body.getFirst().y;switch(direction){case UP:y--;break;case DOWN:y++;break;case LEFT:x--;break;case RIGHT:x++;break;}Point newhead=new Point(x,y);//加头body.addFirst(newhead);并界说privateint direction;为了能更便利的保护游戏,这里界说Global类来界说常量如下:package liang.snake.Global;publicclass Global {publicstaticfinalint CELL_SIZE=20;publicstaticint HIGHT=30;publicstaticint WIDTH=30;}并修改游戏中窗口大小为:jf.setSize(Global.CELL_SIZE*Global.WIDTH,Global.CELL_SIZE*Global.HIG HT);再加上如下代码,对蛇初始化:public Snake(){init();}publicvoid init(){int x=Global.WIDTH/2;int y=Global.HIGHT/2;int nodenum=3;for(int i=0;i<nodenum;i++){body.addFirst(new Point(x++,y));}this.direction=RIGHT;}在蛇的drawMe(Graphics g)中些上如下让蛇显示的代码:这里的绘图采用填充3D矩形来实现:for(Point p:body){g.fill3DRect(p.x*Global.CELL_SIZE, p.y*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true);}绘图的规矩如下图:图4盘算格子坐标和像素坐标此时运行Game类就可以看到蛇显示在面板中了,如图:图5显示面板显示的蛇但是蛇越走越长,是因为没有擦除以前的图像,在GamePanel的paintComponent(Graphics g)中添加如下代码:g.setColor(new Color(0xcfcfcf));g.fill3DRect(0, 0,Global.CELL_SIZE*Global.WIDTH, Global.CELL_SIZE*Global.HIGHT, true);此时蛇就可以正常移动了如图:图6移动中的蛇经由过程按键转变移动偏向,此时的蛇身材节点显示为白色,我们再在蛇的绘制办法中位器指定色彩:代码如下:图7指定色彩后的蛇六:试与修改蛇的移动与显示问题此时的蛇当移动到窗口边界的时刻就能走出窗口还有蛇可以穿过本身的身材,这些游戏规矩中式不许可的, 下面来修改这些问题,修改Snake中的move()办法如下:起首界说publicint olddirection,newdirection;防止蛇穿过本身身材:publicvoid move(){//去尾if(olddirection+newdirection!=0){olddirection=newdirection;}body.removeLast();int x=body.getFirst().x; int y=body.getFirst().y; switch(olddirection){case UP:y--;if(y<0){y=Global.HIGHT-1;}break;case DOWN:y++;if(y>=Global.HIGHT){y=0;}break;case LEFT:x--;if(x<0){x=Global.WIDTH-1;}break;case RIGHT:x++;if(x>=Global.WIDTH){x=0 ;}break;}Point newhead=new Point(x,y);//加头body.addFirst(newhead);System.out.println("Snake's move");}publicvoid changeDirection(int direction){System.out.println("Snake's changeDirection"); newdirection=direction;并修改蛇的初始化办法如下:olddirection=newdirection=RIGHT;此时就修改了上面的问题,可以运行Game类来测试下七:编写与测试表示食物的类并实现吃食物起首在Snake类中添加public Point getHead(){return body.getFirst();}用来获取头结点,然后再Food类中写上如下代码:package liang.snake.entities;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;import liang.snake.Global.Global;publicclass Food extends Point{publicvoid newfood(Point p){this.setLocation(p);}publicboolean isSnakeEatFood(Snake snake){System.out.println("Snake's eat food");returnthis.equals(snake.getHead());}publicvoid drawme(Graphics g){System.out.println("Food's drawme");g.fill3DRect(this.x*Global.CELL_SIZE,this.y*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true);}}此时就可以画出食物并断定蛇是否吃到了食物,接下来就可以在Controller中处理吃食物的代码,吃了食物我们只要把先前移动去除的尾巴再给加上就实现了蛇吃食物身材变长的后果了,如下:界说Point oldTail;在蛇move()中保存去除的尾巴:oldTail= body.removeLast();在Controller中的SnakeMove(Snake snake)中添加if(food.isSnakeEatFood(snake)){snake.eatFood();food.newfood(ground.getPoint());}并在Snake中的eatFood()中增长如下代码:body.addLast(oldTail);此时要运行游戏依附与下一步的石头处理中的getPoint()办法实现随机产生食物下面开端持续开辟:八:为游戏增长作为障碍物的石头这里添加石头我们用2维数组来表示,置1则为石头,不然为空,在Ground类中写上如下代码:package liang.snake.entities;import java.awt.Color;import java.awt.Graphics;import java.awt.Point;import java.util.Random;import liang.snake.Global.Global;publicclass Ground {privatestaticint[][] rocks= newint [Global.WIDTH][Global.HIGHT]; publicstatic Color shitou=null;public Ground(){for(int x=0;x<Global.WIDTH;x++){rocks[x][0]=1;rocks[x][Global.HIGHT-1]=1;}shitou=Color.RED;}publicvoid clear(){for(int x = 0; x < Global.WIDTH; x++){for(int y = 0; y < Global.HIGHT; y++)rocks[x][y] = 0;}}publicboolean isSnakeEatRock(Snake snake){for(int x=0;x<Global.WIDTH;x++){for(int y=0;y<Global.HIGHT;y++){if(rocks[x][y]==1&&x==snake.getHead().x && y==snake.getHead().y){returntrue;}}}returnfalse;}publicstatic Point getPoint(){Random random=new Random();int x=0,y=0;do{x=random.nextInt(Global.WIDTH);y=random.nextInt(Global.HIGHT);}while(rocks[x][y]==1);returnnew Point(x,y);}publicvoid drawme(Graphics g){System.out.println("Ground's drawme");for(int x=0;x<Global.WIDTH;x++)for(int y=0;y<Global.HIGHT;y++){if(rocks[x][y]==1){g.setColor(shitou);g.fill3DRect(x*Global.CELL_SIZE, y*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true);}}}}再在各个挪用办法中填上响应参数,运行Game类,后果如图:图8添加了食物.石头后的图为窗口数值大小增长35PX 因为此时的窗口标题栏占用了些空间,导致下面的石头没有显示出来,修改Game类中的jf.setSize(Global.CELL_SIZE*Global.WIDTH+10,Global.CELL_SIZE*Global. HIGHT+35);再测试,后果显示完整正常下面持续开辟:九:为蛇增长吃到石头而逝世失落的功效。

Java课程设计之贪吃蛇

Java课程设计之贪吃蛇

Java课程设计之贪吃蛇安阳工学院计算机学院JAVA课程设计报告专业班级: 学生姓名: 学生学号: 小组成员: 指导教师姓名: 宋强目录一选题目的与系统概述 (1)1.1选题目的 (1)1.2系统概述.................................................................................1 二系统可行性分析与相关技术背景分析 (2)2.1系统可行性分析 (2)2.2相关技术背景分析.....................................................................2 三系统设计与关键技术 (3)3.1系统设计 (3)3.2关键技术.................................................................................5 四系统测试与操作实施方法.........................................................9 五系统设计总结与回顾 (11)六参考文献 (12)一、选题目的与系统概述1.1 选题目的贪吃蛇游戏是一款非常经典的游戏,因为它比较简单有趣,无论老少都比较适合。

贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。

因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。

在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。

正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用Netbeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。

基于Android贪吃蛇游戏_本科毕业设计(论文)

基于Android贪吃蛇游戏_本科毕业设计(论文)

本科毕业设计(论文)题目名称:基于Android贪吃蛇游戏学院:计算机科学技术专业年级:计算机科学与技术08(师)级摘要本课题是利用java语言在Android平台上进行手机游戏的开发,由于本人知识的有限,以及客观条件的限制,本人打算开发一个单机版的游戏。

本人在手机上玩过贪吃蛇的游戏,曾经为了和别人比赛,苦苦的玩了好多次,追求高分!后来得知这个小小的游戏是nokia当年很成功的一款手机游戏,许多人都玩过,也很喜欢。

现在这款游戏的版本已经发展到第三版了,手机生产厂商继续开发这个游戏,看来这个游戏还是有很大的市场的。

Google公司2007年11月5日发布的开源的Android 平台——一款包括操作系统(基于Linux内核)、中间件和关键应用的手机平台,并组建了开放手机联盟(Open Handset Alliance),包括Google、中国移动、T-Mobile、宏达电、高通、摩托罗拉等领军企业。

于是,我决定利用自己大学所学的知识,自己在指导老师的帮助下,独立开发这个小游戏。

本文首先详细介绍了java的一些基本的知识点,在此基础上引出了Android,介绍了Android的基础以及其特点,然后介绍了一下Android将来的一些前景和发展。

重点说明了这个贪吃蛇程序所用到的一些类和控件,包括Drawable,Canvas, Thread,等等。

介绍了这些类的一般的使用方法,以及本程序是如何使用这些类来进行游戏的开发的。

本程序将老少皆宜的经典作品移植到手机上来,为更流行的硬件平台提供应用软件。

这些都将能很好的满足未来人们对手机游戏的需求。

吞吃蛇游戏基于Android平台编写,满足一般手机用户的娱乐需求。

关键词:Android系统; 贪食蛇游戏; 手机游戏Abstract.This topic is using java language on the Android platform mobile phone game development, I limited knowledge, and objective constraints, I intend to develop a stand-alone game. I played the game of Snake, on the phone once in order to match with others, struggling to play many times, the pursuit of high scores! Later learned that this little game nokia was very successful mobile phone games, many people have played, and also enjoyed. Version of the game has been developed to the third edition, mobile phone manufacturers continue to develop this game, it seems that this game is a great market. Open-source Android platform, Google's released on November 5, 2007 - an operating system (Linux kernel), middleware and key applications-based mobile phone platform, and the formation of the Open Handset Alliance (Open Handset Alliance), includingGoogle, China Mobile, T-Mobile, HTC, Qualcomm, Motorola and other leading enterprisesSo, I decided to use the knowledge learned in his college, in the instructor's help, the independent development of this game.This article first details some of the basic java knowledge, on this basis leads to Android, the basis of the Android and its characteristics, and then introduces the Android future prospects and development. Highlights this Snake procedures used and controls, including the Drawable Canvas, Thread, and so on. Describes the general use, as well as the program is how to use these classes to the development of the game. The ages of the classic works transplantation in this program to the phone up, to provide application software for the more popular hardware platforms. These will be well positioned to meet future demand for mobile games. Devour the snake game based on the Android platform, prepared to meet the entertainment needs of the general mobile phone users.Key words: Android system; Gluttony snake game; Mobile game目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 Android简介 (1)1.1.1 Android的来源及发展 (1)1.1.2 Android系统的特点 (2)1.2 项目目的与意义 (2)1.2.1 开发目的 (2)1.2.2 开发意义 (3)1.3 国内外现状分析 (3)1.3.1 国内外手机系统现状 (3)1.3.2 国内外手机应用现状 (4)1.3.3 发展趋势 (5)第2章方案论证 (6)2.1 经济可行性分析 (6)2.2 技术可行性分析 (6)2.2.1 Android平台特性 (6)2.2.2 Android平台架构 (6)2.2.3 Android应用程序组件 (7)2.3 本项目的开发方法 (8)2.4 开发工具及环境简介 (10)2.4.1 开发工具Eclipse简介 (10)2.4.2 开发环境简介 (10)第3章需求分析 (11)3.1 系统开发目标 (11)3.2 系统需求分析 (11)3.2.1 业务需求分析 (11)3.2.2 用户需求分析 (12)3.2.3 功能需求分析 (12)第4章过程论述............................................................................. 错误!未定义书签。

Java贪吃蛇游戏设计课程设计

Java贪吃蛇游戏设计课程设计
第 13 页 共 21 页
华东交通大学理工学院课程设计报告
import javax.swing.JMenuBar;//菜单栏 import javax.swing.JMenuItem;//菜单选项 import javax.swing.JOptionPane;//选择窗口 import javax.swing.KeyStroke;//按键 public class SnakeGame extends JFrame implements ActionListener, KeyListener,Runnable { //public void run()方法主要用来完成游戏主体运行流 程控制功能 public void run(){
戏恢复
图 2-1 游戏处理流程 图
第 9 页 共 21 页
华东交通大学理工学院课程设计报告
第四章 设计结果及代码 游戏界面,程序运行完,点击游戏,开始游戏,利用方向键 来控制游戏:
游戏开始界面,点击它里面的开始游戏则进行游戏,点击退 出游戏则退出:
第 10 页 共 21 页
华东交通大学理工学院课程设计报告
第 4 页 共 21 页
华东交通大学理工学院课程设计报告
第一章 课程设计内容及要求
内 容 :贪 吃 蛇 游 戏 设 计 与 实 现 ,主 要 分 为 以 下 二 个 模 块 :游 戏 主 界 面 模 块 游 戏 控 制 模 块 。在 此 只 实 现 游 戏 的 游 戏 主 界 面 模 块 、游 戏 控 制 模 块 。并 且 只 是 实 现 开 始 、退 出 、选 择 游 戏 难 度 等 功 能 。给 出 1 条 小 蛇 和 随 机 出 1 个 食 物 当 小 蛇吃到食物时就加分。 要 求 : a) 对 系 统 进 行 功 能 模 块 分 析 、 控 制 模 块分析正确,符合课题要求,实现相应功能; 可以加以其他功能或修饰,使程序更加完善、 合理 b) 系 统 设 计 要 实 用 ,编 程 简 练 、规 范 ,可 用 , 功能全面 c) 说 明 书 、 流 程 图 要 清 楚 , 有 解 决 问 题 办 法 总结 d) 要 求 上 机 调 试 通 过 e) 设 计 上 交 内 容 : 设 计 报 告 , 源 程 序 文 件 , 可执行文件

java贪吃蛇毕业论文

java贪吃蛇毕业论文

java贪吃蛇毕业论文本文将介绍贪吃蛇游戏的设计与实现,该游戏的主要功能包括游戏开始、游戏暂停、游戏结束、得分统计等。

基于Java 语言,采用面向对象的程序设计方法,构建了具有良好交互性的贪吃蛇游戏系统。

一、引言贪吃蛇是一个经典的小游戏,它在全世界范围内都受到玩家们的喜欢。

贪吃蛇这个小游戏有着简单的规则和良好的互动性,因此成为了许多程序员学习编程的入门教材。

本文旨在通过对贪吃蛇游戏的设计和实现,加深对Java编程语言的理解,提升面向对象程序设计的能力。

本文将介绍贪吃蛇游戏的整体框架设计、游戏流程设计、源代码分析等内容,希望对同学们学习Java编程有所帮助。

二、贪吃蛇游戏的设计与实现2.1整体框架设计首先,我们来看一下贪吃蛇游戏的整体框架设计。

贪吃蛇游戏的界面分为左右两部分,左边显示游戏画面,右边显示得分情况。

游戏开始后,蛇会出现在游戏画面的中央位置,游戏画面上还会随机出现食物。

如果蛇吃到了食物,那么得分就会增加,同时蛇也会变长。

如果蛇撞到了游戏画面的边界或者自己的身体,则游戏失败,游戏画面会出现“Game over”的提示。

贪吃蛇游戏的设计可以分为两个模块:游戏画面显示模块和游戏逻辑实现模块。

其中,游戏画面显示模块是用来将游戏运行时的状态显示在界面上,游戏逻辑实现模块则是通过对用户的操作产生游戏效果。

2.2游戏流程设计当用户点击游戏开始按钮后,游戏画面会显示出蛇的头部,然后蛇会按照一定的规则向前移动。

此时,用户可以通过按键控制蛇的移动方向,蛇吃到食物时,得分会增加,同时蛇的长度增加。

如果蛇撞到了游戏画面的边界或自己的身体,则游戏失败,游戏画面会出现“Game over”的提示。

如果用户点击游戏暂停按钮,则游戏就会暂停,并且再次点击按钮游戏就会恢复进行。

2.3源代码分析以下是源代码的分析,采用了面向对象的编程方式,将游戏画面、蛇、食物等各个元素都抽象成了对象。

下面我们就来看一下其中的一部分代码。

(1)GamePanel.java```javapublic class GamePanel extends JPanel {private Snake snake;//蛇private Food food;//食物private int score;//分数private int speed;//移动速度private Timer timer;//计时器public GamePanel() {snake = new Snake();food = new Food();score = 0;speed = 200;timer = new Timer(speed, new ActionListener() { @Overridepublic void actionPerformed(ActionEvent e) { snake.move();//蛇移动check();//检查游戏是否结束或吃到食物repaint();//重新绘制}});timer.start();//开始计时器}public void paint(Graphics g) {super.paint(g);snake.draw(g);//绘制蛇food.draw(g);//绘制食物g.drawString(\。

贪吃蛇毕业设计论文

贪吃蛇毕业设计论文

贪吃蛇毕业设计论文贪吃蛇毕业设计论文在计算机科学领域中,贪吃蛇游戏是一个经典的案例,用于教授和研究各种算法和数据结构。

它是一款简单而又富有挑战性的游戏,玩家通过控制一条蛇的移动,吃掉食物,同时避免碰到自己的身体或边界。

贪吃蛇游戏的设计和实现涉及到许多计算机科学的基本概念和技术,包括图形绘制、用户输入、碰撞检测等等。

本篇论文将探讨贪吃蛇游戏的设计和实现过程,并介绍一些有趣的扩展功能和算法。

首先,我们将讨论游戏的基本设计思路和目标。

其次,我们将介绍游戏的图形界面和用户交互。

最后,我们将探讨一些扩展功能和算法,例如自动寻路和难度调节。

首先,我们需要明确贪吃蛇游戏的设计目标。

贪吃蛇游戏的核心目标是让玩家蛇吃到尽可能多的食物,同时避免碰到自己的身体或边界。

为了达到这个目标,我们需要设计一个直观而又富有挑战性的游戏界面,并提供简单而又灵活的用户交互方式。

其次,我们需要实现游戏的图形界面和用户交互。

在贪吃蛇游戏中,我们通常使用一个二维的网格来表示游戏界面,每个格子可以是空白、蛇身或食物。

我们可以使用图形库来绘制这个网格,并实现蛇的移动和食物的生成。

同时,我们还需要处理用户的输入,例如通过键盘控制蛇的移动方向。

接下来,我们可以考虑一些有趣的扩展功能和算法。

一个常见的扩展功能是增加难度调节,使得游戏可以逐渐变得更加困难。

我们可以通过增加蛇的移动速度、减少食物的生成频率等方式来实现难度调节。

另一个有趣的扩展功能是自动寻路算法,可以让蛇自动找到最优的吃食物路径。

这可以通过使用搜索算法,例如广度优先搜索或A*算法来实现。

在设计和实现贪吃蛇游戏的过程中,我们还需要考虑一些性能优化和错误处理的问题。

例如,当蛇碰到自己的身体或边界时,游戏应该结束并显示得分。

此外,我们还需要考虑如何处理大规模的游戏界面和复杂的用户输入,以确保游戏的性能和可靠性。

综上所述,贪吃蛇游戏是一个经典的案例,用于教授和研究各种算法和数据结构。

在设计和实现贪吃蛇游戏的过程中,我们需要考虑游戏的基本设计思路和目标,实现游戏的图形界面和用户交互,并探讨一些有趣的扩展功能和算法。

java贪吃蛇毕业设计

java贪吃蛇毕业设计

java贪吃蛇毕业设计Java贪吃蛇毕业设计毕业设计是大学生们在校园生活的最后一道考验,也是他们展示自己所学知识和能力的机会。

对于计算机科学专业的学生而言,选择一个合适的主题进行毕业设计是至关重要的。

本文将探讨一个有趣且具有挑战性的毕业设计主题:Java贪吃蛇。

1. 贪吃蛇的背景介绍贪吃蛇是一款经典的游戏,最早出现在20世纪70年代。

游戏的玩法简单,玩家控制一条蛇在有限的空间内移动,吃掉食物以增加身体长度,同时要避免碰到自己的身体或是墙壁。

随着时间的推移,蛇的移动速度会逐渐加快,增加游戏的难度。

2. 设计思路在设计Java贪吃蛇毕业项目时,需要考虑以下几个方面:2.1 游戏界面设计游戏界面是玩家与游戏进行交互的窗口,需要设计一个美观且易于操作的界面。

可以使用Java的图形库,如Swing或JavaFX来实现。

2.2 蛇的移动和控制蛇的移动是游戏的核心,需要设计合适的算法来控制蛇的移动方向和速度。

可以使用键盘监听器来捕捉玩家的按键操作,并根据按键来改变蛇的方向。

2.3 食物生成和吃掉食物的生成和吃掉是游戏的重要元素。

需要设计一个随机生成食物的算法,并判断蛇是否吃到了食物。

当蛇吃到食物时,需要增加蛇的长度并生成新的食物。

2.4 碰撞检测碰撞检测是游戏的关键部分,需要判断蛇是否碰到了自己的身体或是墙壁。

如果蛇碰到了自己的身体或是墙壁,游戏结束。

3. 实现过程在实现Java贪吃蛇毕业项目时,可以按照以下步骤进行:3.1 确定游戏界面和基本功能首先,设计游戏界面,包括蛇、食物和墙壁的显示。

然后,实现蛇的移动和控制功能,包括键盘监听器和蛇的移动算法。

3.2 实现食物生成和吃掉功能接下来,设计食物的生成算法,并判断蛇是否吃到了食物。

当蛇吃到食物时,增加蛇的长度,并生成新的食物。

3.3 实现碰撞检测最后,设计碰撞检测算法,判断蛇是否碰到了自己的身体或是墙壁。

如果蛇碰到了自己的身体或是墙壁,游戏结束。

4. 拓展功能除了基本功能之外,还可以考虑添加一些拓展功能来提升游戏的趣味性和挑战性。

Java程序设计报告《贪吃蛇》

Java程序设计报告《贪吃蛇》

《Java程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师: 沈泽刚专业: 计算机科学与技术班级: 10-3 姓名: 梁潇一、课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。

目的就是更好地了解与掌握java语言,并熟练的运用java语言来实现项目。

培养自主学习的能力。

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

二、课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。

三、课程设计报告内容(一) 系统设计1、程序概述本程序就是一个利用Java应用软件制作的贪吃蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

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

2、游戏的主界面设计游戏的主界面就是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。

3、游戏控制模块设计这个模块就是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。

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

(二)主界面设计游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。

(三)代码设计import java、awt、Color;import java、awt、Container;import java、awt、Graphics;import java、awt、Toolkit;import java、awt、event、ActionEvent;import java、awt、event、ActionListener;import java、awt、event、InputEvent;import java、awt、event、KeyEvent;import java、awt、event、KeyListener;import javax、swing、*;public class TanChiShe extends JFrame implements ActionListener, KeyListener,Runnable{private JMenuBar menuBar;private JMenu youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu; private JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan; private int length = 6;private Toolkit toolkit;private int i,x,y,z,objectX,objectY,object=0,growth=0,time;private int difficult=2;private int m[]=new int[50];private int n[]=new int[50];private Thread she = null;private int life=0;private int foods = 0;private int fenshu=0;public void run() //运行{time=500;for(i=0;i<=length-1;i++){m[i]=90-i*10;n[i]=60;}x=m[0];y=n[0];z=4;while(she!=null){check();try{she、sleep(time);}catch(Exception ee){System、out、println(z+"");}}}public TanChiShe(){//***************创建新对象**************setVisible(true);menuBar = new JMenuBar();Container con=getContentPane();toolkit=getToolkit();//**************游戏菜单对象*****************youXiMenu = new JMenu("游戏");kaiShiYouXi = new JMenuItem("开始游戏");exitItem = new JMenuItem("退出游戏");//***************困难程度对象****************nanDuMenu = new JMenu("困难程度");cJianDan = new JCheckBoxMenuItem("简单");cPuTong = new JCheckBoxMenuItem("普通");cKunNan = new JCheckBoxMenuItem("困难");//*****************分数菜单对象****************fenShuMenu = new JMenu("积分排行");fenShuItem = new JMenuItem("最高记录");//****************关于对象********************* guanYuMenu = new JMenu("关于");zuoZheItem = new JMenuItem("关于作者");//***************设置关于菜单*******************guanYuMenu、add(zuoZheItem);//****************设置困难程度菜单**************nanDuMenu、add(cJianDan);nanDuMenu、add(cPuTong);nanDuMenu、add(cKunNan);//******************设置分数菜单***************fenShuMenu、add(fenShuItem);//*****************设置游戏菜单****************youXiMenu、add(kaiShiYouXi);youXiMenu、add(exitItem);//******************设置主菜单******************** menuBar、add(youXiMenu);menuBar、add(nanDuMenu);menuBar、add(fenShuMenu);menuBar、add(guanYuMenu);//*********************监听注册*****************zuoZheItem、addActionListener(this);kaiShiYouXi、addActionListener(this);exitItem、addActionListener(this);addKeyListener(this);fenShuItem、addActionListener(this);//*********************加快捷键********************KeyStroke keyOpen = KeyStroke、getKeyStroke('O',InputEvent、CTRL_DOWN_MASK);kaiShiYouXi、setAccelerator(keyOpen);KeyStroke keyExit = KeyStroke、getKeyStroke('X',InputEvent、CTRL_DOWN_MASK);exitItem、setAccelerator(keyExit);//*****************设置框架**********************setJMenuBar(menuBar);setTitle("贪吃蛇");setResizable(false);setBounds(300,200,400,400);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String args[]){new TanChiShe();}//******************菜单监听****************************** public void actionPerformed(ActionEvent e){if(e、getSource()==kaiShiYouXi){length = 6;life = 0;foods = 0;if(she==null){she=new Thread(this);she、start();}else if(she!=null){she=null;she= new Thread(this);she、start();}}if(e、getSource()==exitItem){System、exit(0);}if(e、getSource()==zuoZheItem){JOptionPane、showMessageDialog(this, "梁潇"+"\n\n"); }if(e、getSource()==fenShuItem){JOptionPane、showMessageDialog(this,"最高记录为"+fenshu+"");}}//**************检查一下******************************* public void check(){isDead();if(she!=null){if(growth==0){reform();}else{upgrowth();}if(x==objectX&&y==objectY)object=0;growth=1;toolkit、beep();}//****************产生食物坐标**********************if(object==0){object=1;objectX=(int)Math、floor(Math、random()*39)*10;objectY=(int)Math、floor(Math、random()*29)*10+50; }this、repaint();}}void isDead(){if(z==4){x=x+10;}else if(z==3){x=x-10;}else if(z==2){y=y+10;}else if(z==1){y=y-10;}if(x<0||x>390||y<50||y>390){she=null;}for(i=1;i<length;i++)if(m[i]==x&&n[i]==y){she=null;}}}public void upgrowth() {if(length<50){length++;}growth--;time=time-10;reform();life+=100;if(fenshu<life){fenshu = life;}foods++;}public void reform(){for(i=length-1;i>0;i--) {m[i]=m[i-1];n[i]=n[i-1];}if(z==4){m[0]=m[0]+10;}if(z==3){m[0]=m[0]-10;}if(z==2){n[0]=n[0]+10;}if(z==1)n[0]=n[0]-10;}}public void keyPressed(KeyEvent e){if(she!=null){if(e、getKeyCode()==KeyEvent、VK_UP){if(z!=2){z=1;check();}}else if(e、getKeyCode()==KeyEvent、VK_DOWN){if(z!=1){z=2;check();}}else if(e、getKeyCode()==KeyEvent、VK_LEFT){if(z!=4){z=3;check();}}else if(e、getKeyCode()==KeyEvent、VK_RIGHT){if(z!=3){z=4;check();}}}public void keyReleased(KeyEvent e){// TODO自动生成方法存根}public void keyTyped(KeyEvent e){// TODO自动生成方法存根}public void paint(Graphics g){//*******************画图********************** g、setColor(Color、DARK_GRAY);g、fillRect(0,50,400,400);g、setColor(Color、pink);for(i=0;i<=length-1;i++){g、fillRect(m[i],n[i],10,10);}g、setColor(Color、green);g、fillRect(objectX,objectY,10,10);g、setColor(Color、white);g、drawString("当前分数"+this、life,6,60);g、drawString("当前已吃食物数"+this、foods,6,72); }}(四)测试(五)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

贪吃蛇游戏设计毕业设计论文

贪吃蛇游戏设计毕业设计论文

毕业设计设计题目:贪吃蛇游戏毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日贪吃蛇游戏摘要贪吃蛇游戏是一个深受人们喜爱的游戏,它能够让你在忙碌的工作中放松一下自己,游戏贪吃蛇就是在屏幕上画出蛇,同时随机地给出食物。

游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到后食物消失,然后再随机给出食物同时蛇的身体增长。

Java程序设计报告《贪吃蛇》

Java程序设计报告《贪吃蛇》

《Java程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师:沈泽刚专业:计算机科学与技术班级:10-3姓名:梁潇一、课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。

目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。

培养自主学习的能力。

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

二、课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。

三、课程设计报告内容(一) 系统设计1、程序概述本程序是一个利用Java应用软件制作的贪吃蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

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

2、游戏的主界面设计游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。

3、游戏控制模块设计这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。

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

(二)主界面设计游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。

(三)代码设计import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.*;public class TanChiShe extends JFrame implements ActionListener, KeyListener,Runnable{private JMenuBar menuBar;private JMenu youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu;private JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan;private int length = 6;private Toolkit toolkit;private int i,x,y,z,objectX,objectY,object=0,growth=0,time;private int difficult=2;private int m[]=new int[50];private int n[]=new int[50];private Thread she = null;private int life=0;private int foods = 0;private int fenshu=0;public void run() //运行{time=500;for(i=0;i<=length-1;i++){m[i]=90-i*10;n[i]=60;}x=m[0];y=n[0];z=4;while(she!=null){check();try{she.sleep(time);}catch(Exception ee){System.out.println(z+"");}}}public TanChiShe(){//***************创建新对象**************setVisible(true);menuBar = new JMenuBar();Container con=getContentPane();toolkit=getToolkit();//**************游戏菜单对象*****************youXiMenu = new JMenu("游戏");kaiShiYouXi = new JMenuItem("开始游戏");exitItem = new JMenuItem("退出游戏");//***************困难程度对象****************nanDuMenu = new JMenu("困难程度");cJianDan = new JCheckBoxMenuItem("简单");cPuTong = new JCheckBoxMenuItem("普通");cKunNan = new JCheckBoxMenuItem("困难");//*****************分数菜单对象****************fenShuMenu = new JMenu("积分排行");fenShuItem = new JMenuItem("最高记录");//****************关于对象*********************guanYuMenu = new JMenu("关于");zuoZheItem = new JMenuItem("关于作者");//***************设置关于菜单*******************guanYuMenu.add(zuoZheItem);//****************设置困难程度菜单**************nanDuMenu.add(cJianDan);nanDuMenu.add(cPuTong);nanDuMenu.add(cKunNan);//******************设置分数菜单***************fenShuMenu.add(fenShuItem);//*****************设置游戏菜单****************youXiMenu.add(kaiShiYouXi);youXiMenu.add(exitItem);//******************设置主菜单********************menuBar.add(youXiMenu);menuBar.add(nanDuMenu);menuBar.add(fenShuMenu);menuBar.add(guanYuMenu);//*********************监听注册*****************zuoZheItem.addActionListener(this);kaiShiYouXi.addActionListener(this);exitItem.addActionListener(this);addKeyListener(this);fenShuItem.addActionListener(this);//*********************加快捷键********************KeyStroke keyOpen = KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK);kaiShiYouXi.setAccelerator(keyOpen);KeyStroke keyExit = KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK); exitItem.setAccelerator(keyExit);//*****************设置框架**********************setJMenuBar(menuBar);setTitle("贪吃蛇");setResizable(false);setBounds(300,200,400,400);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String args[]){new TanChiShe();}//******************菜单监听******************************public void actionPerformed(ActionEvent e){if(e.getSource()==kaiShiYouXi){length = 6;life = 0;foods = 0;if(she==null){she=new Thread(this);she.start();}else if(she!=null){she=null;she= new Thread(this);she.start();}}if(e.getSource()==exitItem){System.exit(0);}if(e.getSource()==zuoZheItem){JOptionPane.showMessageDialog(this, "梁潇"+"\n\n");}if(e.getSource()==fenShuItem){JOptionPane.showMessageDialog(this,"最高记录为"+fenshu+""); }}//**************检查一下******************************* public void check(){isDead();if(she!=null){if(growth==0){reform();}else{upgrowth();}if(x==objectX&&y==objectY){object=0;growth=1;toolkit.beep();}//****************产生食物坐标**********************if(object==0){object=1;objectX=(int)Math.floor(Math.random()*39)*10;objectY=(int)Math.floor(Math.random()*29)*10+50;}this.repaint();}}void isDead(){if(z==4){x=x+10;}else if(z==3){x=x-10;}else if(z==2){y=y+10;}else if(z==1){y=y-10;}if(x<0||x>390||y<50||y>390) {she=null;}for(i=1;i<length;i++){if(m[i]==x&&n[i]==y){she=null;}}}public void upgrowth(){if(length<50){length++;}growth--;time=time-10;reform();life+=100;if(fenshu<life){fenshu = life;}foods++;}public void reform(){for(i=length-1;i>0;i--){m[i]=m[i-1];n[i]=n[i-1];if(z==4){m[0]=m[0]+10;}if(z==3){m[0]=m[0]-10;}if(z==2){n[0]=n[0]+10;}if(z==1){n[0]=n[0]-10;}}public void keyPressed(KeyEvent e){if(she!=null){if(e.getKeyCode()==KeyEvent.VK_UP){if(z!=2){z=1;check();}}else if(e.getKeyCode()==KeyEvent.VK_DOWN) {if(z!=1){z=2;check();}}else if(e.getKeyCode()==KeyEvent.VK_LEFT){if(z!=4){z=3;check();}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){if(z!=3){z=4;check();}}}}public void keyReleased(KeyEvent e){// TODO自动生成方法存根}public void keyTyped(KeyEvent e){// TODO自动生成方法存根}public void paint(Graphics g){//*******************画图********************** g.setColor(Color.DARK_GRAY);g.fillRect(0,50,400,400);g.setColor(Color.pink);for(i=0;i<=length-1;i++){g.fillRect(m[i],n[i],10,10);}g.setColor(Color.green);g.fillRect(objectX,objectY,10,10);g.setColor(Color.white);g.drawString("当前分数"+this.life,6,60);g.drawString("当前已吃食物数"+this.foods,6,72);}}(四)测试(五)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

Java程序设计报告《贪吃蛇》

Java程序设计报告《贪吃蛇》

《Java程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师:泽刚专业:计算机科学与技术班级: 10-3 姓名:梁潇一、课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。

目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。

培养自主学习的能力。

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

二、课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。

三、课程设计报告容(一) 系统设计1、程序概述本程序是一个利用Java应用软件制作的贪吃蛇小游戏。

在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

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

2、游戏的主界面设计游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。

3、游戏控制模块设计这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。

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

(二)主界面设计游戏界面主框架主要包括游戏图形区域界面、游戏的开始按钮、暂停按钮、游戏的退出按钮、困难程度、积分排行、关于作者。

(三)代码设计import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.*;public class TanChiShe extends JFrame implements ActionListener, KeyListener,Runnable{private JMenuBar menuBar;private JMenu youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu;private JMenuItem kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;private JCheckBoxMenuItem cJianDan,cPuTong,cKunNan;private int length = 6;private Toolkit toolkit;private int i,x,y,z,objectX,objectY,object=0,growth=0,time;private int difficult=2;private int m[]=new int[50];private int n[]=new int[50];private Thread she = null;private int life=0;private int foods = 0;private int fenshu=0;public void run() //运行{time=500;for(i=0;i<=length-1;i++){m[i]=90-i*10;n[i]=60;}x=m[0];y=n[0];z=4;while(she!=null){check();try{she.sleep(time);}catch(Exception ee){System.out.println(z+""); }}}public TanChiShe(){//***************创建新对象**************setVisible(true);menuBar = new JMenuBar();Container con=getContentPane();toolkit=getToolkit();//**************游戏菜单对象*****************youXiMenu = new JMenu("游戏");kaiShiYouXi = new JMenuItem("开始游戏");exitItem = new JMenuItem("退出游戏");//***************困难程度对象****************nanDuMenu = new JMenu("困难程度");cJianDan = new JCheckBoxMenuItem("简单");cPuTong = new JCheckBoxMenuItem("普通");cKunNan = new JCheckBoxMenuItem("困难");//*****************分数菜单对象**************** fenShuMenu = new JMenu("积分排行");fenShuItem = new JMenuItem("最高记录");//****************关于对象********************* guanYuMenu = new JMenu("关于");zuoZheItem = new JMenuItem("关于作者");//***************设置关于菜单******************* guanYuMenu.add(zuoZheItem);//****************设置困难程度菜单**************nanDuMenu.add(cJianDan);nanDuMenu.add(cPuTong);nanDuMenu.add(cKunNan);//******************设置分数菜单***************fenShuMenu.add(fenShuItem);//*****************设置游戏菜单****************youXiMenu.add(kaiShiYouXi);youXiMenu.add(exitItem);//******************设置主菜单******************** menuBar.add(youXiMenu);menuBar.add(nanDuMenu);menuBar.add(fenShuMenu);menuBar.add(guanYuMenu);//*********************监听注册*****************zuoZheItem.addActionListener(this);kaiShiYouXi.addActionListener(this);exitItem.addActionListener(this);addKeyListener(this);fenShuItem.addActionListener(this);//*********************加快捷键********************KeyStroke keyOpen = KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK);kaiShiYouXi.setAccelerator(keyOpen);KeyStroke keyExit = KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK);exitItem.setAccelerator(keyExit);//*****************设置框架**********************setJMenuBar(menuBar);setTitle("贪吃蛇");setResizable(false);setBounds(300,200,400,400);validate();setDefaultCloseOperation(EXIT_ON_CLOSE);}public static void main(String args[]){new TanChiShe();}//******************菜单监听******************************public void actionPerformed(ActionEvent e){if(e.getSource()==kaiShiYouXi) {length = 6;life = 0;foods = 0;if(she==null){she=new Thread(this);she.start();}else if(she!=null){she=null;she= new Thread(this);she.start();}}if(e.getSource()==exitItem){System.exit(0);}if(e.getSource()==zuoZheItem){JOptionPane.showMessageDialog(this, "梁潇"+"\n\n");}if(e.getSource()==fenShuItem){JOptionPane.showMessageDialog(this,"最高记录为"+fenshu+""); }}//**************检查一下*******************************public void check(){isDead();if(she!=null){if(growth==0){reform();}else{upgrowth();}if(x==objectX&&y==objectY){object=0;growth=1;toolkit.beep();}//****************产生食物坐标********************** if(object==0){object=1;objectX=(int)Math.floor(Math.random()*39)*10;objectY=(int)Math.floor(Math.random()*29)*10+50;}this.repaint();}}void isDead(){if(z==4){x=x+10;else if(z==3){x=x-10;}else if(z==2){y=y+10;}else if(z==1){y=y-10;}if(x<0||x>390||y<50||y>390) {she=null;}for(i=1;i<length;i++){if(m[i]==x&&n[i]==y){she=null;}}public void upgrowth() {if(length<50){length++;}growth--;time=time-10;reform();life+=100;if(fenshu<life){fenshu = life;}foods++;}public void reform() {for(i=length-1;i>0;i--) {m[i]=m[i-1];n[i]=n[i-1];}if(z==4){m[0]=m[0]+10;}if(z==3){m[0]=m[0]-10;}if(z==2){n[0]=n[0]+10;}if(z==1){n[0]=n[0]-10;}}public void keyPressed(KeyEvent e){if(she!=null){if(e.getKeyCode()==KeyEvent.VK_UP){if(z!=2){z=1;check();}}else if(e.getKeyCode()==KeyEvent.VK_DOWN) {if(z!=1){z=2;check();}}else if(e.getKeyCode()==KeyEvent.VK_LEFT) {if(z!=4){z=3;check();}}else if(e.getKeyCode()==KeyEvent.VK_RIGHT) {if(z!=3){z=4;check();}}}}public void keyReleased(KeyEvent e){// TODO自动生成方法存根}public void keyTyped(KeyEvent e){// TODO自动生成方法存根}public void paint(Graphics g){//*******************画图********************** g.setColor(Color.DARK_GRAY);g.fillRect(0,50,400,400);g.setColor(Color.pink);for(i=0;i<=length-1;i++){g.fillRect(m[i],n[i],10,10);}g.setColor(Color.green);g.fillRect(objectX,objectY,10,10);g.setColor(Color.white);g.drawString("当前分数"+this.life,6,60);g.drawString("当前已吃食物数"+this.foods,6,72); }}(四)测试(五)使用说明在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。

Java版贪吃蛇毕业论文完整版(附带源码地址)【范本模板】

Java版贪吃蛇毕业论文完整版(附带源码地址)【范本模板】

摘要近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。

eclipse是IBM公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持以及开源等优点,得到广大程序员的接受和认可.“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎.本文基于Java技术和eclipse开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏.整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。

通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。

本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。

首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。

其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。

然后,进行了游戏的概要设计和详细设计,这也是本文的重点.概要设计给出二个功能模块的主框架以及八个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序列表,介绍了各个类包含的变量、使用的方法,展示了游戏的界面。

为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。

关键词:Java;eclipse;贪吃蛇;开发流程Snake game design and developmentAbstractIn recent years, Java,as a new programming language, with its simplicity,portability and platform independence and other advantages,had been used widely,especially Java and the perfect combination of the world wide web, to make it a network programming and embedded programming field preferred programming language。

贪吃蛇java毕业设计

贪吃蛇java毕业设计

贪吃蛇java毕业设计贪吃蛇是一款经典的游戏,它在20世纪70年代诞生于贪吃蛇机器上,随后在各种游戏平台上得到了广泛的传播和演变。

如今,贪吃蛇已经成为了一个不可或缺的元素,出现在了各种手机应用和网页游戏中。

因此,我选择了贪吃蛇作为我的Java毕业设计题目。

在开始设计之前,我首先进行了一番调研,了解了贪吃蛇游戏的基本规则和特点。

贪吃蛇游戏的核心玩法是控制一条蛇在一个有界的区域内移动,吃掉食物以增长身体长度,同时要避免碰到自己的身体或者墙壁。

游戏的难度会随着蛇的身体长度的增加而增加,给玩家带来更大的挑战。

在设计过程中,我首先考虑了游戏的界面。

我采用了Java的图形界面库Swing 来构建游戏界面,使用了适当的颜色和图形元素,使得游戏界面看起来简洁而又美观。

我还添加了一些动画效果,如蛇的身体在移动时的流畅过渡和食物被吃掉时的消失效果,以增加游戏的可玩性和趣味性。

接下来,我着重考虑了游戏的逻辑部分。

首先,我设计了一个蛇类,包含了蛇的身体长度、移动方向和位置等属性,以及蛇的移动、吃食物和碰撞检测等方法。

然后,我设计了一个食物类,包含了食物的位置和生成方法。

在游戏的主循环中,我通过不断调用蛇的移动方法和碰撞检测方法,来实现游戏的动态效果。

同时,我还加入了一些额外的功能,如计分系统和游戏结束的判断,以增加游戏的可玩性和挑战性。

在整个设计过程中,我遇到了不少挑战和问题。

例如,如何确保蛇的移动是流畅而且不会出现闪烁的问题;如何设计一个合适的算法来生成食物,并确保食物不会出现在蛇的身体上;以及如何处理用户输入和游戏状态的切换等等。

为了解决这些问题,我进行了大量的调试和优化工作,不断地修改和完善我的代码,最终实现了一个功能完善且稳定的贪吃蛇游戏。

通过这个毕业设计,我不仅学到了如何运用Java编程语言来实现一个小游戏,还学到了如何设计和优化一个软件系统。

我深刻体会到了软件开发的复杂性和挑战性,也明白了团队合作和不断学习的重要性。

java课程设计贪吃蛇游戏设计

java课程设计贪吃蛇游戏设计
本程序是一个利用Java应用软件制作的贪食蛇小游戏。在游戏过程 中,用户通过点击小键盘区的方向键来控制蛇的运行方向;游戏运行过 程中,如果想暂停,只需要按F3键即可。重新开始游戏的按键为F2。当 蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。
本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏 过程中的移动和长度。
3.1.5类、方法、属性说明
(1)成员变量
成员变量描述
表1 主要成员变量(属性)
变量类型
名称
文件菜单中子 菜单“新建”
JMenuItem
mFile_New
编辑菜单中子 菜单“撤消”
JMenuItem
mEdit_Undo
格式菜单中子 菜单“颜色”
JMenu
formatMenu_Color
帮助菜单中子 菜单“帮助主
根据游戏需求中游戏所要实现的功能,整个游戏分为二个模块进行 具体的设计,如图2所示。
贪吃蛇游戏 游戏主界面模块 游戏控制模块
图2.设计总模块
游戏控制模块的主要框架如图3所示。
游戏控制模块 游戏的暂停功能
游戏的重新开始
游戏的退出
图3.控制模块框架
游戏暂停控制:点击“F3”按钮,游戏暂停;再单击,游戏继续。 游戏重新开始控制:点击“F2”键后,点击确定,即游戏重新开始。 游戏退出控制:点击“F4”键好,点击确定,退出游戏界面。
学年论文 (课程论文、课程设计)
题 目: JAVA小学期贪吃 蛇
作 者:
刘嘉伟
所在学院:
信息科学与工程学

专业年级:
计算机13-3
指导教师:
盛琪
职 称:
讲 师
2016年1月2日

java贪吃蛇论文

java贪吃蛇论文

Java贪吃蛇毕业论文摘要近年来,java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了各个国家广泛地认可。

本文基于java技术和Eclipse开发环境,设计并实现了一个操作简单、界面美观的“贪吃蛇”游戏。

就整个游戏来说,目的是通过本游戏的设计与实现,达到学习java技术和熟悉软件开发流程的目的。

本文先介绍了java,对java进行了概述,然后对开发工具进行了选择,又进行了需求分析进而通过java语言设计并实现了贪吃蛇游戏,本系统在视图上运用了Java中的Swing技术规划界面。

通过GamePannel这个方法画出来整个展示的面板视图。

同时根据系统的需要定义了几个实体类如下(如食物、蛇、障碍物)。

并且在每个类里面定义了各自的属性和方法。

像在蛇这个类里面定义蛇在前后左右移动时候会有几个位移。

方法上运用了线程,控制snake会在运行SnakeGameTest这个方法运行后按照蛇头的方向不停的移动。

还有定义了蛇头(在蛇吃到food后重新定义蛇头)和蛇身(在吃到food后将food上添加到蛇身)。

food这个类定义了食物的样式和判断食物被吃过后,随机的在面板上产生一个food。

ground这个类定义了如何在面板上随机出现障碍物,还有对food的判断是否是食物并返回一个boolean型的值。

在控制上作者创建了controller这个类,并在这个类里面运用了接口事件监听键盘上下左右键对面板上的蛇进行控制,并创建了两个方法对蛇吃到东西后,对吃到的东西进行判断(调用了ground类中的方法进行判断)。

如果是食物则添加否则游戏结束。

最后在为了整个系统融合在一块并运行时,创建了SnakeGameTest这个类去开启这个系统。

为了保证代码的正确性和可靠性最后还进行了系统测试。

关键词:java , 贪吃蛇, eclipseAbstractIn recent years, the java as a new programming language, with its advantages of simplicity, portability and platform independence, has been widely recognized by all countries. Java based Eclipse development environment, design and realize a simple operation, beautiful interface namely'Snake' game. The Design and Implementation of the game attach importance to learning java technology and knowing the software development process. This article first introduces the java ,chooses developmental tools, conducts a demand analysis and then designs the Snake game through by java language .Additionally, the system uses in Java Swing technology interface. It Draws the panel view of the entire show through GamePannel . According to the needs of the system,several entity classes are defined as follows (such as food, snakes, obstacles). For example, the definition of a snake , there will be several displacement aroud the snake. There are also defined snakeheads and snake body(the snake eat the food which will be added to the snake). The food this class defines the style of the food and judge the food which is eaten, random panel on a food. The ground of this class defines the panel random obstacles, whether the judgment of the food is the food and returns a boolean value. Created on the control of the controller of this class, and in this class use the board snake across the interface event listener keyboard arrow keys to control and create two methods snake eat something, eat something to judge (called methods in the ground class judgment). If it is food, add to or else the game ends. Finally, the entire system is integrated in one and run to create the SnakeGameTest this to open the system. In order to ensure code correctness and reliability of the final system test .Key words:Java , Snake , Eclipse目录绪论 (1)1JA V A的概述 (1)1.1 JA V A的简介 (1)1.2环境配置 (2)1.2.1 JDK安装 (2)1.2.2 系统工具的选择安装 (2)2 系统设计 (3)2.1系统的介绍 (3)2.2设计目的 (3)2.3游戏需求 (3)2.3.1 游戏形状需求 (3)2.3.2 键盘事件处理 (3)2.3.3 显示需求 (3)2.3.4 接口控制 (4)3 系统实现 (4)3.1系统所需定义的类 (4)3.2系统实现 (4)3.2.1构造一个蛇体 (4)3.2.2构造一个食物 (6)3.2.3把蛇和食物放在一个活动范围上 (7)3.2.4整合为一个面板 (9)3.2.5需要控制蛇 (9)3.2.6监听蛇的移动接口事件 (12)4 游戏的测试 (12)5 总结 (13)致谢 (14)参考文献 (15)绪论“贪吃蛇”游戏是一个经典的游戏,它因简单的操作、很强的娱乐性而广受欢迎。

毕业设计(论文)-基于java的贪吃蛇游戏开发

毕业设计(论文)-基于java的贪吃蛇游戏开发

论文编号:德州科技职业学院毕业论文题目姓名:____________________学号:____________________所在院系:____________________所学专业:____________________指导教师:____________________完成时间:____________________Java贪吃蛇游戏设计目录JAVA贪吃蛇游戏设计 (1)目录 (2)前言 (4)1.JAVA语言的概述及开发工具 (5)1.1Java语言特点 (5)1.1.1 平台无关性 (5)1.1.2安全性 (5)1.1.3面向对象 (5)1.1.4分布式 (5)1.1.5健壮性 (5)1.2 J2ME介绍 (6)1.3 关于ECLIPSE (7)1.4 WTK介绍 (8)2.需求分析 (8)2.1游戏的介绍 (8)2.2游戏开发的可行性 (9)2.3设计目的 (9)2.4游戏需求 (9)2.4.1游戏界面需求 (10)2.4.2游戏形状需求 (10)2.4.3键盘事件处理 (10)2.4.4显示需求 (10)2.4.5接口控制 (10)2.4.6环境介绍 (10)3.功能设计 (11)3.1 游戏的流程图 (11)3.详细设计 (12)3.1游戏主界面的开发 (12)3.2 绘制蛇身 (12)3.3创建初始“蛇”及“蛇”的移动 (13)3.4 吃掉食物,蛇身增长 (13)3.4随机产生食物 (14)3.5键盘事件处理 (15)3.6 判断游戏结束 (16)4游戏测试与发布 (18)4.1游戏运行的效果图 (18)4.2 测试结果 (19)5.自我评价和总结 (19)5.1遇到的问题及解决办法 (19)5.2 总结 (20)6.参考资料 (20)7.附加源代码 (20)前言随着3G的到来,让人们的目光聚集到一个新兴的互联网终端——手机上。

手机的随身性让玩家有了随时随地完游戏的可能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书课程名称:Java语言程序设计设计题目:学生成绩管理系统院系:计算机科学与信息工程学院学生姓名:肖文学号:14031010141专业班级:计算机科学与技术(14嵌入)指导教师:张阳2015 年12月27 日课程设计任务书设计题目贪吃蛇小游戏程序学生姓名肖文所在院系计科专业、年级、班14计科嵌入设计要求:1. 贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。

2. 游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。

3. 游戏界面大小可以任意指定,数据从文件读入。

4. 利用swing实现良好的GUI界面。

学生应完成的工作:1. 贪食蛇的前移算法主要是蛇身结点前移,后面的覆盖前面的蛇身结点。

依靠的调用编写的成员方法实现。

2. 在贪吃蛇中蛇头来控制蛇的移动方向,依靠的调用编写的成员方法实现。

3. 要求用户界面采用图形用户界面,影响方向键的控制。

4. 重复的调用paint()函数来实现对界面的重绘和食物的重置。

5. 源程序中要有充分的注释,报告中要有详细的流程图。

6. 运行的结果以及图形用户界面要进行屏幕拷贝,插入报告中。

幕拷贝,插入报告中。

参考文献阅读:1. 《Java语言程序设计》(美)Y·Daniel Liang 机械工业出版社2. 赵毅主编.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,20063. 王路群.Java高级程序设计.北京:中国水利水电出版社,2006工作计划:1,12月21日,选择该课题,然后分析结构。

2,12月21日至25日开始编写各个模块。

3,12月28日至29日,对设计的系统进行测试以及进行修改。

4,12月30日,贪吃蛇完成。

任务下达日期:2015 年12月10 日任务完成日期:2015 年12月24 日指导教师(签名):学生(签名):贪吃蛇小游戏摘要:贪吃蛇是家喻户晓的益智类小游戏,选择这题目一是为了将自己所学的知识加以运用,二是一直以来贪吃蛇这个游戏深深的吸引着我,它的制作方法对于提前的我而言都是神秘的。

我希望通过自己所学知识把它剖析开来,真真正正的了解它的本质和精髓。

虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践的项目中提高自己的编程能力,因此我选定了这个项目。

关键词:贪吃蛇;java;学习;放松目录1. 设计背景 (4)1.1问题描述 (4)1.2 问题分析 (4)2.设计方案 (4)2.1 算法分析 (5)2.2 类的设计 (5)3.用户界面设计 (6)4. 模块划分及调用关系 (8)5. 运行说明及系统运行测试 (9)6. 收获与致谢 (4)7. 参考文献....................................................................... 错误!未定义书签。

8. 附件 (15)9. 附录源代码 (16)1. 设计背景1.1问题描述贪吃蛇是家喻户晓的益智类小游戏,选择这题目一是为了将自己所学的知识加以运用,二是一直以来贪吃蛇这个游戏深深的吸引着我,它的制作方法对于提前的我而言都是神秘的。

我希望通过自己所学知识把它剖析开来,真真正正的了解它的本质和精髓。

虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践的项目中提高自己的编程能力,因此我选定了这个项目。

1.2 问题分析这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。

移动时必须从蛇头开始,,也就是蛇尾不能改作蛇头。

当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。

图形的实现是从蛇头的新位置开始画出蛇。

用户可以用上下左右键控制蛇头的方向。

非常简单。

2.设计方案2.1算法分析1. 贪吃蛇是很经典的格子游戏。

所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。

格子思想决定了此类游戏在设计时的算法思想。

2. 方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。

3. 方向键控制是上下左右对一个方块的控制,用四个判断语句实现。

4. 蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置, 第三个方块移动到第二个方块的位置⋯⋯第N个方块移动到第N-1个方块的位置。

这样连续的移动就是蛇的移动了。

方向控制键控制了第一个方块的移动后,后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。

5. 食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。

6. 蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。

因此有两个需要解决的问题:问题一:如何知道是否吃到食物?问题二:吃到食物后身体变长?解决问题一的方法是需要一个判断语句,当蛇头即构成蛇的第一个方块跟食物所在方块的坐标一样时判断吃到食物。

解决问题二则要相对复杂一些,需要多个判断语句构成。

7. 游戏结束的方法,当蛇碰到边框时或者吃到自己时游戏结束。

根据这个思想可以用判断语句实现。

然后是游戏结束后的处理,比如显示继续玩游戏还是退出游戏,并显示所吃到的食物的个数和时间等。

2.2类的设计1>.创建的类的描述。

1. Login类,登陆界面要求输入登陆者输入用户名和密码,分别设Go和Cancel两个登陆选项。

Login属性:用户名密码Go(进入游戏) Cancel(取消)操作: Enter() Close()2.SnakeFrame类,创建游戏窗口主界面。

采用图形界面设计,有窗体,菜单栏和游戏操作界面。

3.SnakeModel类,此类为蛇的初始化状态及模型,所有的游戏的开始都通过此类初始化及对蛇的操作。

SnakeModel属性: rows,cols,snakeHead,runingDiriction,locRO,snake,playBlockssnakeFood,gameScore,AddScore操作: LocationRO getSnakeHead(),LocationRO getSnakeTail(),Location getRuningDiriction(),LinkedList getSnake(),LinkedList getOthers(), getScore(),getAddScore(),setSnakeHead(Location snakeHead),LocationRO getSnakeFood(),setSnakeFood(),moveTo(Object a,LinkedList fromlist,LinkedList tolist),init(),SnakeModel(int rows1,int cols1),move(Location direction)4. SnakePanel类,此类为游戏界面创建蛇的面板和蛇的移动控制实现。

SnakePanel属性:gridsPanel, row; col; gridsPanel;direction;snake; snakeBody;otherBlocks;snakeHead; snakeFood; gameScore=0; speed;AddScore; t; isEnd; notExit;操作:SnakePanel(SnakeFrame parent,int row,int col),newGame(long speed)stopGame(),returnGame(),getGameScore(),updateTextFiled(String str)updateColors(),run(),keyPressed(KeyEvent event)keyReleased(KeyEvent event),keyTyped(KeyEvent event)change(SnakeFrame parent,int row2, int col2)5. LocationRO类,随机生成的食物位置。

用来随机生成食物。

引导蛇的移动方向。

6. Location类,对蛇的位置的描述类。

Location属性: x y操作:Location(int x,int y) ,getX(),getY(),setX(int x),setY(int y) ,equalOrRev(Location e),equals(Location e) ,reverse(Location e)2>.类之间的调用关系。

3.用户界面1. 登陆界面Login 登陆SnakeFrameLocationSnakeModel SnakePanelLocationRO2.游戏主界面【程序技巧】1. 为游戏设置权限,为游戏设置登陆界面。

2. 游戏界面采用图形界面美观大方易操作。

3. 功能齐全,可以选择开始,暂停,继续可以随时操控游戏状态,方便易操作,人性化设计。

4. 设置菜单功能齐全,可以让界面显示网格和取消显示网格,还可以根据自己的实际能力情况选择游戏的等级。

5. 窗口大小菜单可以根据自己的需要和爱好调整窗体的大小,可以选择大中小三种窗体。

适合不同的需要。

6. 本程序设置了作者信息菜单可以查询程序的制作人的信息等。

7. 对于新手用户,我为他们设置了操作指南菜单,帮助他们方便快捷的学会游戏的操作步骤。

4.模块划分及调用关系主要模块【模块流程图】1. 游戏界面模块和登陆模块流程图。

开始登陆界面 游戏界面 取消登录退出程序 结束开始 登陆界面输入用户名和密码进入游戏取消登录设置作者信息结束游戏帮助窗口大小文件操作指南开始 暂停 继续 等级显示网格视图软件信息中小 大退出2. 游戏模块否 是否是否是5.运行说明及系统运行测试1.安装eclipse ,在其上运行。

2. 如图在eclipse 中创建java 项目,在src 下建立SnakeGameDemo 包将所有的源程序放入包中,在项目中建立img 图片文件夹,将文件中需要的图片放入其中以便调用。

是否碰到蛇身\墙是否吃到食物 蛇身加长,分数增加提示游戏结结束随机显示食物蛇蛇运动是否开始 游戏开始创建贪吃蛇是否结束 暂停3. 主函数在Login类中,只需运行Login.java程序进入登陆界面,输入用户名和密码进入游戏。

4. 在文件菜单下开始,暂停,继续游戏。

5. 对第一次进入的用户请先看操作说明。

1、程序上机调试报告【语法错误及其排除】1. 将所有外部类定义为公共类,可以直接拿来应用,必须引入一个包来定义一个类来进行使用。

程序中的蛇是用网格布局中的小面板组成,蛇的身体由等大的小网格组成。

2. 键盘事件未进行监听以致键盘操作无法进行,监听函数有错误。

最后加入正确的监听函数。

相关文档
最新文档