1.贪吃蛇程序设计报告
原发布者:yue710218347
《Java程序设计》课程设计报告题目:贪吃蛇游戏的设计与实现指导老师:沈泽刚专业:计算机科学与技术班级:10-3姓名:梁潇一、课程设计目的贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。目的是更好地了解和掌握java语言,并熟练的运用java语言来实现项目。培养自主学习的能力。本软件在设计方面本着方便、实用及娱乐性高的宗旨,在外界进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。二、课程设计要求贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块、游戏控制模块。三、课程设计报告内容(一)系统设计1、程序概述本程序是一个利用Java应用软件制作的贪吃蛇小游戏。在游戏过程中,用户通过点击小键盘区的方向键来控制蛇的运行方向;当蛇没有吃到食物且碰到墙壁或自己的身体时游戏结束。本程序的另一个功能是在程序运行窗口的左上角显示,用户在游戏过程中所得的分数,不过缺点就是在退处程序后,下次打开程序时无法保存。2、游戏的主界面设计游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示
2.求一个关于JAVA的论文
目 录 一、概要设计……………………………………………………………3 二、程序整体设计说明…………………………………………….…..4 三、程序部分源代码及注释…………………………………………….9 四、测试结果………………………………………………………….24 五、设计心得…………………………………………………………25 六、致 谢…………………………………………………………25 七、参考文献…………………………………………………………25 【摘 要】该程序是一个图形界面的java文档编辑器,其界面主要采用了awt包, 程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用Time类的schedule方法实现了文件的定时自动更新功能,并创建备份文件,由于该编辑器是用的awt包,所以在技术上没有实现将Java的关键字以不同颜色显示功能。
【关键字】java 编辑器 一、概要设计 Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。 图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。
线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。 文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。
由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。 在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。
主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。
这样设计的缺点是:不利于共享类中的方法。 二、程序整体设计说明 2.1、程序框架图 2.2、程序中所用类说明 (1)用户自定义类 类名:EditInstantiation 作用:实例化对象 继承的父类:WindowAdapter 主要成员变量: Frame myFrm // 定义主窗体 TextArea myText // 定义文本编辑区 Dialog myDlgFind,myDlgFindont //查找及设置字体对话框 TextField TFfind, TFreplace, TffontSize //查找对话框和字体窗体中的文本行 Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮 Label Lf, Lr, Ls //定义和创建各标签 MenuBar Mbbar //定义和创建主菜单 Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项 Toolkit toolKit Clipboard myCB //剪切板对象 FileDialog myFDlg //定义文件对话框 Choice ChfontName //定义和创建字体选择框 private int VIindex = 1; //构成文件名后缀变量 private String VSsubFixStr=".java"; //构成文件名扩展名变量 private String VSmyFileName = "Document1",VSmyBFileName; //文件名及备份文件名变量 private File VFmyFile=new File(VSmyFileName+VIindex+".java"); //文件名变量 private int VIsearchPosition=0; //查找位置指针 private Timer VTtime; //实例化一个Time类 private int VImin=1; // schedule方法中的一个时间参数 private int VItype=JOptionPane.INFORMATION_MESSAGE; //提示对话框类型 private String VStitle; //提示对话框标题 private String VSmessage; //提示对话框信息 private boolean VBchanged = true; //改变字体的一个标识 private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //设置字体大小及步长 主要成员方法: public void init() //初始化各部件菜单的定义和事件的监听 public void displayEdit ()//显示窗体及调用Time中的schedule方法 public void windowClosing () //关闭窗体 public void save //保存文件方法 a.内部类类名:KeyEvents 作用:实现菜单的事件的响应功能 继承的父类:KeyAdapter 主要成员变量:无 成员方法:actionPerformed()、keyPressed() b.内部类类名:FindKeyEvent 作用:实现查找中各部件事件的响应功能 继承的父类:无 主要成员变量:无 成员方法:actionPerformed () c.内部类类名:fontEvent 作用:实现字体中各部件事件的响应功能 继承的父类:无 主要成员变量:无 成员方法:ItemListener(),ActionListener() (2)用户自定义类与Java类的继承关系图如下: 自定义类 Java 类 线程使用说明 2.3、实现接口方法 本程序用到的方法有:schedule其方法描述如下: schedule(事件,启动时间,间隔时间); 2.4、线程应用 本程序为文本编辑器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新 2.5、异常处理说明 (1)打开文件时的异常处理 需要处理的异常:IOException 处理方法:捕获异常后,显示捕获的异常 (2)保存文件时的异常处理 需要处理的异常:IOException 处理方法:捕获异常后,。
3.用JAVA设计游戏:贪吃蛇游戏
用MVC方式实现的贪吃蛇游戏,共有4个类。
运行GreedSnake运行即可。主要是观察者模式的使用,我已经添加了很多注释了。
1、/* * 程序名称:贪食蛇 * 原作者:BigF * 修改者:algo * 说明:我以前也用C写过这个程序,现在看到BigF用Java写的这个,发现虽然作者自称是Java的初学者, * 但是明显编写程序的素养不错,程序结构写得很清晰,有些细微得地方也写得很简洁,一时兴起之 * 下,我认真解读了这个程序,发现数据和表现分开得很好,而我近日正在学习MVC设计模式, * 因此尝试把程序得结构改了一下,用MVC模式来实现,对源程序得改动不多。 * 我同时也为程序增加了一些自己理解得注释,希望对大家阅读有帮助。
*/package mvcTest;/** * @author WangYu * @version 1.0 * Description: * * Create on :Date :2005-6-13 Time:15:57:16 * LastModified: * History: */public class GreedSnake { public static void main(String[] args) { SnakeModel model = new SnakeModel(20,30); SnakeControl control = new SnakeControl(model); SnakeView view = new SnakeView(model,control); //添加一个观察者,让view成为model的观察者 model.addObserver(view); (new Thread(model)).start(); }} -------------------------------------------------------------2、package mvcTest;//SnakeControl.javaimport java.awt.event.KeyEvent;import java.awt.event.KeyListener;/** * MVC中的Controler,负责接收用户的操作,并把用户操作通知Model */public class SnakeControl implements KeyListener{ SnakeModel model; public SnakeControl(SnakeModel model){ this.model = model; } public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); if (model.running){ // 运行状态下,处理的按键 switch (keyCode) { case KeyEvent.VK_UP: model.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: model.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT: model.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: model.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: model.speedUp(); break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: model.speedDown(); break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: model.changePauseState(); break; default: } } // 任何情况下处理的按键,按键导致重新启动游戏 if (keyCode == KeyEvent.VK_R || keyCode == KeyEvent.VK_S || keyCode == KeyEvent.VK_ENTER) { model.reset(); } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { }}-------------------------------------------------------------3、/* * */package mvcTest;/** * 游戏的Model类,负责所有游戏相关数据及运行 * @author WangYu * @version 1.0 * Description: * * Create on :Date :2005-6-13 Time:15:58:33 * LastModified: * History: *///SnakeModel.javaimport javax.swing.*;import java.util.Arrays;import java.util.LinkedList;import java.util.Observable;import java.util.Random;/** * 游戏的Model类,负责所有游戏相关数据及运行 */class SnakeModel extends Observable implements Runnable { boolean[][] matrix; // 指示位置上有没蛇体或食物 LinkedList nodeArray = new LinkedList(); // 蛇体 Node food; int maxX; int maxY; int direction = 2; // 蛇运行的方向 boolean running = false; // 运行状态 int timeInterval = 200; // 时间间隔,毫秒 double speedChangeRate = 0.75; // 每次得速度变化率 boolean paused = false; // 暂停标志 int score = 0; // 得分 int countMove = 0; // 吃到食物前移动的次数 // UP and DOWN should be even // RIGHT and LEFT should be odd public static final int UP = 2; public static final int DOWN = 4; public static final int LEFT = 1; public static final int RIGHT = 3; public SnakeModel( int maxX, int maxY) { this.maxX = maxX; this.maxY = maxY; reset(); } public void reset(){ direction = SnakeModel.UP; // 蛇运行的方向 timeInterval = 200; // 时间间隔,毫秒 paused = false; // 暂停标志 score = 0; // 得分 countMove = 0; // 吃到食物前移动的次数 // initial matirx, 全部清0 matrix = new boolean[maxX][]; for (int i = 0; i < maxX; ++i) { matrix[i] = new boolean[maxY]; Arrays.fill(matrix[i], false); } // initial the snake // 初始化蛇体,如果横向位置超过20个,长度为10,否则为横向位置的一半 int initArrayLength = maxX > 20 ? 10 : maxX / 2; nodeArray.clear(); for (int i = 0; i < initArrayLength; ++i) { int x = maxX / 2 + i;//maxX被初始化为20 int y = maxY / 2; //maxY被初始化为30 //nodeArray[x,y]: [10,15]-[11,15]-[12,15]~~[20,15] //默认的运行方向向上,所以游戏一开始nodeArray就变为: // [10,14]-[10,15]-[11,15]-[12,15]~~[19,15] nodeArray.addLast(new Node(x, y)); matrix[x][y] = true; } // 创建食物 food = createFood(); matrix[food.x][food.y] = true; } public void changeDirection(int newDirection) 。
4.java 贪吃蛇思想
我不懂JAVA,但是我可以告诉你我用C++写过的贪吃蛇的思想;我定义一个2维数组里面存了一些点,即屏幕的坐标点,比如你要绘制一个正方形,你可以保存它的两个顶点坐标到数组里面,然后把你的窗口的坐标都保存起来,再定义一个2维数组,先全0,为1表示有方块,移动的时候就对这个数组里的数据进行操作,然后绘制到桌面上判断第二个数组的数值,是1的话到第一个数组相同的索引里面取出坐标然后绘制,这样可以少了很多复杂的问题,至于如何判断你得自己动动脑子了!
多思考才能收获。
5.如何用Java语言写一个贪吃蛇游戏
去百度文库,查看完整内容>内容来自用户:5702309用Java编写的贪吃蛇代码下面是我用java编写的一个贪吃蛇游戏源代码.我个人是比较喜欢玩游戏的,所以学习编程二年多了,很想做个游戏程序,由于能力有限,一直没能做好,后来突然看同学在手机上玩“贪吃蛇”,故想做出来,其一是因为此游戏界面容易设计,算法也比较简单,今天我就把我程序的代码和算法介绍一下,顺便把程序界面皮肤设计说一下。
程序中一个关于游戏信息的类如下,由于类的说明在程序中写的很清楚了,就不再多解释了:#include "time.h"//方向定义const CPoint UP(CPoint(0,-1));const CPoint DOWN(CPoint(0,1));const CPoint LEFT(CPoint(-1,0));const CPoint RIGHT(CPoint(1,0));//速度快慢定义const int HIGH = 75;const int NORMAL = 180;const int SLOW = 300;const int MAX = 80; //表示转向数const int LENGTH = 10;class GameMsg{public:GameMsg(void): m_icon(0){InitGame();}void InitGame(int up = VK_UP, int down = VK_DOWN, int left = VK_LEFT, int right = VK_RIGHT){srand((unsigned)time(NULL));m_gameSpeed = NORMAL;m_speedNum = 2;m_snakeNum = 4;for(int i=0; i 转载请注明出处众文网 » java贪吃蛇毕业论文