基于java的贪吃蛇游戏设计课设.docx

上传人:h**** 文档编号:26559055 上传时间:2022-07-18 格式:DOCX 页数:14 大小:16.02KB
返回 下载 相关 举报
基于java的贪吃蛇游戏设计课设.docx_第1页
第1页 / 共14页
基于java的贪吃蛇游戏设计课设.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《基于java的贪吃蛇游戏设计课设.docx》由会员分享,可在线阅读,更多相关《基于java的贪吃蛇游戏设计课设.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于java的贪吃蛇游戏设计课设 成绩评定表 课程设计任务书 目录 1.Java语言特点. 错误!未定义书签。 1.1Java简介. 错误!未定义书签。 1.2应用环境 (2) 2.需求分析 (3) 2.1游戏开发可行性 (3) 2.2设计目的 (3) 3.功能设计及源程序的主要部分. . 错误!未定义书签。 3.1游戏流程图 (4) 3.2功能的实现,类的实现及类层次 (5) 4.游戏运行及分析 (16) 4.1游戏运行结果 (16) 4.2测试结果 (19) 5.设计总结与体会 (19) 5.1遇到的问题及解决办法 (19) 5.2心得体会 (19) 6.参考文献 (21) 1.Java语

2、言的特点 1.1 Java简介 Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。Sun提供的基于字符模式的Java开发工具包JDK: Java开发工具(JDK)是许多Java专家最初使用的开发环境。Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。 Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。 所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类

3、库,开发人员需要用这些类来访问Java语言的功能。JDK 是整个Java的核心,包括了Java运行环境(Java RuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。 JDK里面是java类库和java的语言规范,它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.没有jdk,你的java程序根本就不能用。 最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,B

4、EA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。 1.2.应用环境 (1)操作系统:Solaris、Windows NT、Windows 95等 (2). 应用软件:jdk1.5 2.需求分析 2.1游戏开发的可行性 游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。游戏这个名

5、称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦”。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。 2.2设计目的 综合运用在校期间所学理论知识和技能,设计开发贪吃蛇游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力。 2.3游戏需求 给出1条小蛇和随机出1个食物当小蛇吃到食物时就加分。 2.3.1游戏界面需求 良好的用户界面,有分数显示。有存取档功能,并且可以暂停,还有“英雄榜”记录分数排名情况,并且可调节小蛇运动速度。 2.

6、3.2游戏形状(方块)需求 良好的方块形状设计,绘制小蛇和食物,小蛇由几个方块组成,食物由1个方块组成。 2.3.3键盘处理事件 小蛇可通过键盘方向键(上、下、左、右键)进行向上、向下、向左、向右移动。 2.3.4显示需求 当小蛇吃掉几个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物。 2.3.5 接口控制 本软件需求通过键盘进行操作,在Windows的操作系统下,利用键盘的上、下、左、右键对小蛇进行移动操作,要使用键盘的接口事件。 3.功能设计及源程序的主要部分 3.1 游戏流程图 图1游戏流程图 3.2功能的实现,类的实现及类层次 3.2.1游戏界面 public Sn

7、akeFrame() setSize(width, height); /设置窗体大小 setTitle(贪吃蛇); /标题 SnakePanel panel = new SnakePanel();/游戏面板 add(panel); /将面板添加到窗体中 setLocation(260, 160); /设置窗体位置 setVisible(true); setResizable(false); /禁用窗体最大化 3.2.2功能按钮 public SnakePanel() /构造函数 /添加功能按钮 setLayout(null); add(startGame); add(stopGame); ad

8、d(saveGame); add(listGame); add(newGame); add(exitGame); /设置位置 startGame.setBounds(402, 50, 80, 40); stopGame.setBounds(402, 100, 80, 40); saveGame.setBounds(402, 150, 80, 40); listGame.setBounds(402,200, 80, 40); newGame.setBounds(402, 250, 80, 40); exitGame.setBounds(402, 300, 80, 40); /添加监视器 Butt

9、onListener btnListener=new ButtonListener(); startGame.addActionListener(btnListener); stopGame.addActionListener(btnListener); saveGame.addActionListener(btnListener); listGame.addActionListener(btnListener); newGame.addActionListener(btnListener); exitGame.addActionListener(btnListener); /取消所有Butt

10、on 的焦点 startGame.setFocusable(false); stopGame.setFocusable(false); saveGame.setFocusable(false); listGame.setFocusable(false); newGame.setFocusable(false); /速度 String speed=1,2,3,4,5,预设; combspeed=new JComboBox(speed); combspeed.setBorder(BorderFactory.createTitledBorder(速度); add(combspeed);/添加组合框

11、combspeed.setBounds(402,340,80,46); comboBoxListener comblistener=new comboBoxListener(); combspeed.addActionListener(comblistener);/添加监视器 combspeed.setFocusable(false); /取消焦点 initGame(); /初始化游戏 addKeyListener(new Listener();/添加键盘按键监视器 setFocusable(true); /将焦点设置在当前面板上以便通过键盘控制游戏 thiswin=this; 3.2.3键盘

12、监视器 class Listener implements KeyListener public void keyPressed(KeyEvent e) int key = e.getKeyCode();/获得键码 if (key = KeyEvent.VK_LEFT & direction != 2) direction = 0; /左 else if (key = KeyEvent.VK_UP & direction != 3) direction = 1; /上 else if (key = KeyEvent.VK_RIGHT & direction != 0) direction =

13、2; /右 else if (key = KeyEvent.VK_DOWN & direction != 1) direction = 3; /下 public void keyReleased(KeyEvent e) Override public void keyTyped(KeyEvent e) public void keyPressed(KeyEvent e) int key = e.getKeyCode();/获得键码 if (key = KeyEvent.VK_LEFT & direction != 2) direction = 0; /左 else if (key = KeyE

14、vent.VK_UP & direction != 3) direction = 1; /上 else if (key = KeyEvent.VK_RIGHT & direction != 0) direction = 2; /右 else if (key = KeyEvent.VK_DOWN & direction != 1) direction = 3; /下 3.2.4蛇和食物的变化 3.2. 4.1蛇和食物的产生: public void drawSnake(Graphics g) Graphics2D g2d = (Graphics2D) g; for(int i=0;i for(i

15、nt j=0;j if(arrayListij = 1) /蛇身 g.setColor(frontcolor); /蛇身颜色 else if(arrayListij = 2)/蛇头 g.setColor(Color.RED); /蛇头颜色 else if(arrayListij = 3) /食物 g.setColor(foodcolor); /食物颜色 if (arrayListij != 0) int curx = border_left + i * 10; int cury = border_top + j * 10; g2d.draw(new Rectangle2D.Double(cur

16、x, cury, 8, 8); 3.2. 4.2小蛇移动和吃掉食物: public boolean Move() /移动 if (direction = 0) x -= 1; /左 else if (direction = 1) y -= 1; /上 else if (direction = 2) x += 1; /右 else if (direction = 3) y += 1; /下 /向前移动一步 if(GameOver()/游戏结束 clock.stop(); gameover=true; flag=false; /不再产生新的豆豆 if(x =arrayList.length | y

17、 = arrayList0.length) else arrayListxy=2; /此时蛇头位置 int headx=snakeBody.get(0).x; /头部坐标 int heady=snakeBody.get(0).y; arrayListheadxheady=1; /蛇头变蛇身 int tailx=snakeBody.get(snakeBody.size()-1).x;/尾部坐标 int taily=snakeBody.get(snakeBody.size()-1).y; arrayListtailxtaily=0; /修改尾部 return false; /游戏结束 arrayL

18、istxy=2; /此时蛇头位置 int headx=snakeBody.get(0).x; /头部坐标 int heady=snakeBody.get(0).y; arrayListheadxheady=1; /蛇头变蛇身 snakeBody.add(0,new Point(x,y);/添加新的头部 int tailx=snakeBody.get(snakeBody.size()-1).x;/尾部坐标 int taily=snakeBody.get(snakeBody.size()-1).y; if(x = foodx & y = foody) /吃掉了豆豆 flag=true; /可以产生

19、新的豆豆 score+=time; /总分数 time=30; /新豆豆的分值 else arrayListtailxtaily=0; /修改尾部 snakeBody.remove(snakeBody.size()-1);/删除旧的尾部 return true; 3.2.5记录游戏的功能 3.2.5.1判断是否可进入记录: public boolean enableShow() if(score = 0) return false; if(!new File(Data).exists()/Data 目录不存在 return true; if(!new File(Data,list.snake)

20、.exists()/list.snake 文件不存在 return true; File file=new File(Data,list.snake); try BufferedReader iostream=new BufferedReader(new FileReader(file); String strline=iostream.readLine(); if(strline = null)/空文件 return true; int row=0; while(strline!=null) String str=strline.split(#);/信息以#分隔成name 和score 两部分 if(str.length!=2) /格式错误时删除文件 iostream.close();/关闭流否则无法删除文件 file.delete(); /删除文件 return true; int gain=Integer.parseInt(str1); if(score = gain) return true;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁