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

本科毕业论文(设计)(2015届)贪吃蛇游戏的设计院 系 电子信息工程学院专 业 电气工程及其自动化姓 名指导教师 副教授2015年4月摘要本篇论文主要是设计并且着手致力于实现一种基于51单片机的经典的贪吃蛇游戏,主要是研究该游戏的硬件电路和软件编程的设计,同时也简单介绍了应该如何使用Proteus软件进行仿真。
借助仿真软件进行实验测试,可以基本实现游戏一些简单的基本功能。
直至现在,大家都知道且明白了51系列的单片机技术相对而言比较成熟,功能也十分强大,应用较为广泛。
将单片机作为本设计的控制核心,能够使硬件电路大大地简化,用软件来编程控制单片机,来加以实现硬件电路的功能,可以降低能耗,同时也节约成本。
选用C语言编程,比较方便灵活,极大地加快了软件开发的速度,使开发周期缩短了,同时方便移植。
本篇论文比较详细的的介绍了各种硬件的基本特性,贪吃蛇游戏实现的基本功能与详细设计,软件设计的具体说明,每一个模块的细节要求,还有一些功能模块的程序流程图和关键部分代码的详细讲解等。
关键词:Proteus软件仿真;51单片机;Keil;贪吃蛇;LED点阵屏AbstractThis paper is mainly committed to the design and begin a 51 microcontroller based on the classic Snake game, is to study the hardware circuit design and software programming of the game, but also a brief introduction to how to use Proteus simulation software . With simulation software experimental tests, the basic realization of the game can be some simple basic functions. Until now, we all know and understand the 51 series of single-chip technology is relatively mature, the function is also very powerful, is widely used. The microcontroller as control core of this design, enabling greatly simplify the hardware circuit with microcontroller programming control software, hardware circuitry to be functional, you can reduce energy consumption, but also cost savings. Selection of the C programming language, more convenient and flexible, which greatly accelerated the pace of software development, shorten the development cycle, while convenient for transplant. This paper a more detailed introduction to the basic characteristics of various hardware realization of the basic functions of the Snake game with detailed design, software design, specify the details of the requirements of each module, there are some functional modules of the program flow chart and explain in detail the critical parts of the code and so on.Keywords:Proteus software simulation;51 microcontroller;Keil;Snake;LED lattice;目录摘要 (I)Abstract (II)目录 (Ⅲ)1 绪论 (1)1.1研究背景及意义 (1)1.2单片机发展状况 (1)1.3 LED发展状况 (2)1.4 设计特点 (3)2 系统总体设计 (3)2.1设计要求 (3)2.2 系统设计方案 (4)2.2.1硬件设计 (4)2.2.2软件设计 (4)3系统硬件设计 (4)3.18*8LED点阵的原理说明 (4)3.2 LED阵列驱动电路 (4)4系统软件设计 (5)4.1系统主要模块介绍 (5)4.1.1 主函数模块 (6)4.1.2 按键模块 (6)4.1.3 蛇运动控制模块 (6)4.2主程序工作流程 (6)4.3 游戏设计思想 (7)4.4 LED点阵初始化 (8)4.5 贪吃蛇的移动 (9)4.6 食物的随机出现 (9)5联调与测试 (9)5.1软件调试 (9)5.2硬件调试 (10)结论与展望 (13)致谢 (14)参考文献 (15)附录A:系统原理图 (16)附录B:系统PCB图 (17)附录C:系统仿真图 (18)附录D:系统实物图 (18)附录E:系统源程序 (20)1 绪论1.1研究背景及意义时代在不断的进步,人们的生活节奏也因此不断加快,越来越多的人加入了经济化全球化的世界。
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);再测试,后果显示完整正常下面持续开辟:九:为蛇增长吃到石头而逝世失落的功效。
基于android贪吃蛇游戏本科毕业设计(论文)

本科毕业设计(论文)题目名称:基于Android贪吃蛇游戏学院:计算机科学技术专业年级:计算机科学与技术08(师)级学生姓名:班级学号:2班28号指导教师:摘要本课题是利用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 本项目的开发方法 (9)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章过程论述................................................................................ 错误!未定义书签。
基于J2ME平台的手机游戏贪吃蛇程序的设计与实现毕业论文

(此文档为word格式,下载后您可任意编辑修改!)目录绪论 (4)1 课题总体介绍 (4)1.1 课题背景 (4)1.2国内外概况 (4)1.3研究内容 (5)2 开发平台与技术概述 (5)2.1开发环境 (5)2.2WTK、ECLIPSE与JAM的介绍 (5)2.3JAVA语言介绍 (6)3 J2ME及其体系结构概述 (7)3.1 J2ME简介 (7)3.2 J2ME 体系结构 (7)3.3 移动信息设备简表概述 (7)3.3.1 MIDP的目标硬件环境 (7)3.3.2 MIDP应用程序 (8)3.3.3 CLDC和MIDP库中的类 (8)4 手机游戏开发过程 (8)4.1 贪吃蛇游戏的规则简介 (8)4.2详细设计 (9)4.3代码设计 (9)4.3.1游戏地图代码设计 (9)4.3.2操作控制代码设计 (19)4.3.3进入游戏画面极其字体设计 (22)4.3.4分数记录 (25)5 总结 (29)致谢 (29)参考文献 (30)基于J2ME平台的贪吃蛇游戏的设计与实现摘要随着通信技术的发展和手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对于丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术,它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案。
以J2ME为开发平台,利用Java 提供的强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。
本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的全过程。
【关键词】:手机游戏嵌入式开发永久性数据 MIDP应用程序Design and Implementation of Snake Game Based on J2MEAbstract【key words】: Mobile games Embedded development Permanent data MIDPapplication program绪论Java自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。
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*算法来实现。
在设计和实现贪吃蛇游戏的过程中,我们还需要考虑一些性能优化和错误处理的问题。
例如,当蛇碰到自己的身体或边界时,游戏应该结束并显示得分。
此外,我们还需要考虑如何处理大规模的游戏界面和复杂的用户输入,以确保游戏的性能和可靠性。
综上所述,贪吃蛇游戏是一个经典的案例,用于教授和研究各种算法和数据结构。
在设计和实现贪吃蛇游戏的过程中,我们需要考虑游戏的基本设计思路和目标,实现游戏的图形界面和用户交互,并探讨一些有趣的扩展功能和算法。
贪吃蛇游戏的设计与实现毕业论文
毕业论文论文题目贪吃蛇游戏的设计与实现院(系)名称计算机与信息工程学院专业名称计算机应用技术班级学生姓名学号指导教师姓名目录内容摘要: (1)关键词: (1)Abstract: (1)Key words: (1)1.游戏设计背景 (1)1.1游戏设计原理 (1)1.2游戏设计的运行环境 (1)2.游戏设计相关知识介绍 (3)2.1 Flash理论基础知识要点 (3)2.2面向对象编程 (4)2.3游戏制作中常用函数的属性与方法 (4)3. 制作贪吃蛇游戏的整体规划 (7)3.1贪吃蛇游戏的大致结构图 (7)3.2游戏设计整体构思 (8)3.3透视游戏设计的核心重点算法 (8)3.4游戏设计核心重点函数控制 (8)4. 游戏详细设计与核心技术 (8)4.1游戏的详细设计 (8)4.2游戏的核心技术 (10)5.贪吃蛇游戏设计总结 (14)参考文献 (15)致谢 (16)内容摘要:贪吃蛇游戏,因为制作简单,逻辑性较强,通常是学做游戏的必练的项目。
贪食蛇游戏是目前各种流行手机中附带的一款休闲小游戏。
Flash是Macromedia公司发布的制作高压缩性网络内容的专业标准动画软件。
随便打开一个网页,都能发现Flash动画的身影Flash动画作品已经充斥整个网络。
毫无疑问Flash 已经是制作网络动画的霸主。
透过现象看本质:游戏的制作与Flash的基础原理密不可分,同时也与制作者的良好修养密不可分,进而提高本身综合素质的的整体提高!关键词:原理运行环境理论基础详细设计核心技术Abstract:Snake game, because the production of simple logic is strong, often the game will learn to practice projects. Snake mobile game is all included with a popular casual games. Macromedia Flash is the production company released the contents of high-compression network of professional standards for animation software. Casually open a web page, Flash animation can be found in the figures of Flash animation has flooded the entire network. There is no doubt that Flash is already the dominant animation production network. Look beyond the surface: the game's basic principles of production and Flash are inseparable, but also with the producers of good training are inseparable, and thus improve their overall quality of the overall improvement!Key words:Principle operating environment Theoretical basis Detailed design Core Technology1.游戏设计背景随着科技与经济的快速发达,知识经济的快速增长,娱乐逐渐变成人与智能的交流。
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. 拓展功能除了基本功能之外,还可以考虑添加一些拓展功能来提升游戏的趣味性和挑战性。
贪吃蛇游戏设计毕业设计论文
毕业设计设计题目:贪吃蛇游戏毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日贪吃蛇游戏摘要贪吃蛇游戏是一个深受人们喜爱的游戏,它能够让你在忙碌的工作中放松一下自己,游戏贪吃蛇就是在屏幕上画出蛇,同时随机地给出食物。
游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到后食物消失,然后再随机给出食物同时蛇的身体增长。
基于J2ME的贪吃蛇游戏设计与实现
基于J2ME的贪吃蛇游戏设计与实现
林昊南
【期刊名称】《计算机光盘软件与应用》
【年(卷),期】2012(000)024
【摘要】随着手机游戏的普及和发展,各大软件开发商都瞄准了Java手机游戏开发,文章在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。
【总页数】2页(P185-185,190)
【作者】林昊南
【作者单位】天津理工大学,天津 300384
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.基于J2ME智能手机的贪吃蛇游戏开发 [J], 王冬霞;张玉辉;占俊
2.基于J2ME手机游戏开发的主要技术——以"贪吃蛇"游戏为例 [J], 沈军彩;陶宗杰
3.浅析基于J2ME平台的贪吃蛇游戏开发 [J], 刘晓峥
4.基于J2ME的贪吃蛇游戏的开发与实现 [J], 蒋理
5.基于FPGA的贪吃蛇游戏设计与实现 [J], 李营;吕兆承;陈帅;权循忠
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科毕业设计(论文)基于J2ME的手机游戏贪吃蛇的开发毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:指导教师签名:日期:日期:注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘要J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。
J2ME虚拟机在手机上的普及为手机游戏的发展提供了最适合的土壤,随后MIDP2.0的发布,特别是其中新增的GameAPI使得手机游戏开发者可以更专注于游戏性的增强而不再是繁琐的动画处理与地图设计,让开发过程变得更加方便迅捷。
所以它成为手机游戏发展的重要里程碑。
本论文着眼于J2ME技术的应用,开发一款趣味性手机游戏——贪吃蛇。
本文首先介绍了手机游戏在国内外的发展现状及发展前景。
之后就基于我们这次的毕业课题,针对我们如何在MyEclipse平台应用J2ME进行手机游戏开发进行详细介绍,具体包括对本游戏程序的结构设计、界面设计、具体功能的实现以及游戏测试等。
关键词:J2ME;MIDP;手机游戏;贪吃蛇The Cellphone Game Greedy Snake Based On J2MEAbstractJ2ME(Java 2 Micro Edition) is a kind of fast developing technology implemented on various devices especially mobile communication equipments. Widespread use of KVM on the mobile phone increases the speed of mobile game development. With the release of MIDP 2.0, especially the newly added GameAPI, game developer can concentrate on the enhance of game performance, freeing themselves of animation making and game map design. Game development becomes rapid and more and more convenient. So, MIDP 2.0 becomes the milestone of mobile game development.This dissertation focuses on implementation of J2ME technology and has developed an interesting game suite running on mobile phones — Greedy Snake. Firstly, This dissertation introduces the developing status quo of the handset game in domestic and foreign, and also the foreground of the handset game. Then, it will make an introduction about how we develop the handset games using J2ME in MyEclipse platform in details, including the designing of this game program’s structure, the designing of the interface, the detailed implementation of the function , game testing, and so on.Key words: J2ME; MIDP; Handset Game; Greedy Snake目录摘要 (I)Abstract (IV)1 引言 (1)1.1 研究背景 (1)1.2 手机游戏研究的目的和意义 (1)1.3 手机游戏的国内外现状 (1)1.4 研究重点 (2)1.5 创新之处 (2)2 J2ME技术及开发环境的配置 (3)2.1 J2ME 简介 (3)2.2 J2ME中的虚拟机 (3)2.3 J2ME的架构 (4)2.4 MIDlet状态图 (5)2.5 MIDP应用程序 (6)2.6 J2ME 开发环境搭建 (7)2.6.1 开发工具安装 (7)2.6.2 贪吃蛇程序开发的模拟环境 (7)3 总体设计 (8)3.1 游戏的基本需求 (8)3.2 游戏界面框架 (8)3.3 游戏总体流程 (9)3.4 游戏程序组织结构 (10)3.5 关键技术 (11)3.5.1 高级用户界面 (11)3.5.2 低级用户界面 (11)3.5.3 内存优化技术 (12)4 详细设计 (14)4.1 双蛇模式 (14)4.1.1 双蛇模式的概述 (14)4.1.2 双蛇模式的操作流程 (14)4.1.3 双蛇模式代码结构 (15)4.1.4 关键类的设计 (16)4.2 关键代码的实现 (23)4.2.1 双蛇模式游戏地图代码设计 (23)4.2.2 食物的代码设计 (24)4.2.3 蛇的代码设计 (24)4.2.4 双蛇模式主循环 (26)5 程序的运行测试 (27)结论 (30)1 程序的不足之处..................................... 错误!未定义书签。
2 总结和展望......................................... 错误!未定义书签。
参考文献.. (31)致谢 (32)1 引言本章阐述了用MyEclipse开发基于J2ME手机游戏贪吃蛇的课题背景、课题研究的目的和意义、手机游戏的国内外现状、研究重点以及本贪吃蛇游戏的创新之处,同时也指出了当前手机游戏开发和手机游戏市场存在的问题以及解决问题的方向。
1.1 研究背景JAVA自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。
从2001年开始,日本的国内的移动电话开始搭载Java。
使用本来就是一种程序语言的Java之后,就可以在移动电话上完成以往静态的HTML内容所无法达成的计算处理、数据存储、与服务器的通信等等。
如果能利用Java上其他丰富功能,那么就可以实现更多的功能。
随着手机游戏的发展,国内外各大开发商纷纷运用Java进行手机游戏开发。
J2ME作为一种基于Java的便携设备开发平台,在各大手机开发公司得到了广泛应用。
1.2 手机游戏研究的目的和意义当前,无线通讯已经成为发展最快、最前沿的通讯领域之一。
手机及其它无线通讯设备越来越多地走进广大人们的工作和生活。
与此同时手机游戏自然而然成了现今社会的热点问题。
手机游戏市场已经成为资本市场最抢眼的蛋糕,各研发商和运营商的秘密武器。
面对潜力巨大的手机游戏市场,各游戏开发商、运营商、服务商以及手机终端厂商等产业链各环节的参与者都开始了各自的应战准备,以便抢占先机。
诺基亚、索爱、摩托罗拉等各大手机厂商开始不断提升手机在游戏方面的性能,同时还在手机操作系统方面采用开放式的平台,便于用户享受不同的手机游戏业务。
而国内游戏厂商,如盛大、网易等,已跻身手机游戏开发厂商的行列。
新浪、搜狐等著名的门户网站,也纷纷涉足手机游戏领域,相继开辟了专门的手机游戏频道和栏目,其它一些游戏网站也都全面加快了手机游戏开发的步伐。
2004年盛大成功收购中国领先的移动设备游戏开发商——北京数位红软件应用技术公司,更是将游戏界的目光牵引到极有前景的无线游戏市场。
1.3 手机游戏的国内外现状1998年诺基亚公司年发布了全球第一款内置游戏的手机——“变色龙6110”,内置贪食蛇、记忆力、逻辑猜图三款游戏,受到了全世界的欢迎,其他厂商纷纷跟进。
那时候的手机游戏都是在手机出厂时固化的,而且要针对不同机型量身订做,因此只是手机厂商吸引顾客一种手段。
受当时硬件平台的限制,手机游戏大多简单朴素,可玩性不高,而J2ME的普及为手机游戏的发展提供了最适合的土壤。
因为JVM的平台无关性使得标准的J2ME游戏几乎可以在所有内置了JVM的手机上运行,一方面提高了游戏的传播性,另一方面提高了开发者的积极性。
于是逐渐开始有第三方公司专门从事J2ME游戏的开发,形成了手机游戏产业化。
随着硬件水平的发展,手机游戏也一改往日的朴素形象,开始加入了更多的媒体元素,由最早的黑白两色、单音发展到了彩色动画与和弦音效甚至3D加立体声,手机厂商甚至推出了专门的游戏手机,如诺基亚的N.Gage[10]。
然而更多的情况下,手机只是PC与游戏机的一种替代。