ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:199.41KB ,
资源ID:27052525      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27052525.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪吃蛇java课程设计贪吃蛇程序设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪吃蛇java课程设计贪吃蛇程序设计.docx

1、贪吃蛇java课程设计贪吃蛇程序设计课程设计说明书 NO.1贪吃蛇程序设计1.程序设计的目的Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了对所学的课程进行加深理解,熟练的掌握JAVA的语法与语句,对其进行应用。通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念与其面向对象的特性,锻炼我们熟练的应用面向对象

2、的思想和设计方法解决实际问题的能力。使我们通过进行课程设计,把所学课程与相关知识加以融会贯通,全面掌握Java语言的编程思想与面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。通过课程设计来对JAVA语言有更深的了解,以与应用。2.设计方案论证2.1系统模块图如图1所示图1系统模块图沈 阳 大 学课程设计说明书 NO.22.2主要部分流程图如图2所示:图2主要流程图沈 阳 大 学课程设计说明书 NO.32.3设计思路与具体实现方法2.3.1产生一个窗口(1)定义一个框架,确定大小。其大小使600,400;(2)定义一个贪吃蛇的类,确定其大小比例;(3)在窗口上方定义一个Score得分;

3、(4) 在窗口的下方定义各按钮的位置。使贪吃蛇运动起来 通过函数的调用,使贪吃蛇运动起来,用按键来调节贪吃蛇的运动方向,运动的速度。定义各功能键的作用(1) PageUp使贪吃蛇加速,减速。并确定其按键位置;(2) PageDown使贪吃蛇减速。并确定其按键位置;(2) ENTER ,R ,S 重新开始游戏,界面回到开始界面;(3) SPACE ,P暂停游戏。使贪吃蛇听指挥(1)加键盘监听器类;(2)添加键盘监听器;(3)定义其按键上,下,左,右;(4)针对不同的键改变贪吃蛇的位置,与重画线程结合产生不同方向运动。通过上下左右来调节。进行贪吃蛇类的确定(1)定义背景的颜色为白色;(2)定义贪吃

4、蛇的颜色为黑色;(3)定义食物的颜色为红色。食物出现的位置 通过随机函数调用,实现食物的出现,当贪吃蛇吃完一各食物,随即再生成一个食物。贪吃蛇身增加一节运用for函数实现,当贪吃蛇每吃到食物,贪吃蛇蛇身就增加一节,然后在框架中又重新出现新的食物。得分增加当贪吃蛇每吃到一块食物,贪吃蛇蛇身就增加一节,分数就有次序的增加。在框架的上方有显示。贪吃蛇死亡(1)当贪吃蛇撞到框架或自身的时候,则贪吃蛇死亡。然后弹处一个对话框,显示you failed。(2)如果想继续游戏,点击“确定”,再按ENTER ,R ,S 重新开始游戏,界面回到开始界面。游戏结束显示you failed,你取消对话框即退出了贪吃

5、蛇游戏。沈 阳 大 学课程设计说明书 NO.42.4设计的源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class GreedSnake implements KeyListenerJFrame mainFrame;Canvas paintCanvas;JLabel labelScore;SnakeModel snakeModel = null;public static final int canvasWidth = 600;public static f

6、inal int canvasHeight = 400;public static final int nodeWidth = 10;public static final int nodeHeight = 10;public GreedSnake() mainFrame = new JFrame(GreedSnake);Container cp = mainFrame.getContentPane();labelScore = new JLabel(Score:);cp.add(labelScore, BorderLayout.NORTH);paintCanvas = new Canvas(

7、);paintCanvas.setSize(canvasWidth+1,canvasHeight+1);paintCanvas.addKeyListener(this);cp.add(paintCanvas, BorderLayout.CENTER);JPanel panelButtom = new JPanel();panelButtom.setLayout(new BorderLayout();JLabel labelHelp;labelHelp = new JLabel(PageUp, PageDown for speed;, JLabel.CENTER);panelButtom.add

8、(labelHelp, BorderLayout.NORTH);labelHelp = new JLabel(ENTER or R or S for start;, JLabel.CENTER);panelButtom.add(labelHelp, BorderLayout.CENTER);labelHelp = new JLabel(SPACE or P for pause,JLabel.CENTER);panelButtom.add(labelHelp, BorderLayout.SOUTH);cp.add(panelButtom,BorderLayout.SOUTH);mainFrame

9、.addKeyListener(this);mainFrame.pack();mainFrame.setResizable(false);mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mainFrame.setVisible(true);沈 阳 大 学课程设计说明书 NO.5begin();public void keyPressed(KeyEvent e)int keyCode = e.getKeyCode();if (snakeModel.running)switch(keyCode)case KeyEvent.VK_UP

10、:snakeModel.changeDirection(SnakeModel.UP);break;case KeyEvent.VK_DOWN:snakeModel.changeDirection(SnakeModel.DOWN);break;case KeyEvent.VK_LEFT:snakeModel.changeDirection(SnakeModel.LEFT);break;case KeyEvent.VK_RIGHT:snakeModel.changeDirection(SnakeModel.RIGHT);break;case KeyEvent.VK_ADD:case KeyEven

11、t.VK_PAGE_UP:snakeModel.speedUp();break;case KeyEvent.VK_SUBTRACT:case KeyEvent.VK_PAGE_DOWN:snakeModel.speedDown();break;case KeyEvent.VK_SPACE:case KeyEvent.VK_P:snakeModel.changePauseState();break;default:if (keyCode = KeyEvent.VK_R |keyCode = KeyEvent.VK_S |keyCode = KeyEvent.VK_ENTER)snakeModel

12、.running = false;沈 阳 大 学课程设计说明书 NO.6begin();public void keyReleased(KeyEvent e)public void keyTyped(KeyEvent e)void repaint()Graphics g = paintCanvas.getGraphics();/draw backgroundg.setColor(Color.WHITE);g.fillRect(0,0,canvasWidth,canvasHeight);/ draw the snakeg.setColor(Color.BLACK);LinkedList na =

13、 snakeModel.nodeArray;Iterator it = na.iterator();while(it.hasNext()Node n = (Node)it.next();drawNode(g,n);/ draw the foodg.setColor(Color.RED);Node n = snakeModel.food;drawNode(g,n);updateScore();private void drawNode(Graphics g, Node n)g.fillRect(n.x*nodeWidth, n.y*nodeHeight, nodeWidth-1, nodeHei

14、ght-1);public void updateScore()String s = Score: + snakeModel.score;labelScore.setText(s);void begin()沈 阳 大 学课程设计说明书 NO.7if (snakeModel = null | !snakeModel.running)snakeModel = new SnakeModel(this,canvasWidth/nodeWidth,canvasHeight/nodeHeight);(new Thread(snakeModel).start();public static void mai

15、n(String args)GreedSnake gs = new GreedSnake();class SnakeModel implements RunnableGreedSnake gs;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;in

16、t score = 0;int countMove = 0;/ UP and DOWN should be even/ RIGHT and LEFT should be oddpublic 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(GreedSnake gs, int maxX, int maxY)this.gs = gs;this.maxX = maxX

17、;this.maxY = maxY;/ initial matirx沈 阳 大 学课程设计说明书 NO.8matrix = new booleanmaxX;for(int i=0; i 20 ? 10 : maxX/2;for(int i = 0; i initArrayLength; +i)int x = maxX/2+i;int y = maxY/2;nodeArray.addLast(new Node(x, y);matrixxy = true;food = createFood();matrixfood.xfood.y = true;public void changeDirectio

18、n(int newDirection)if (direction % 2 != newDirection % 2)direction = newDirection;public boolean moveOn()Node n = (Node)nodeArray.getFirst();int x = n.x;int y = n.y;switch(direction)case UP:y-;break;case DOWN:y+;break;case LEFT:x-;break;case RIGHT:沈 阳 大 学课程设计说明书 NO.9x+;break;if (0 = x & x maxX) & (0

19、 = y & y 0? scoreGet : 10;countMove = 0;food = createFood();matrixfood.xfood.y = true;return true;elsereturn false;elsenodeArray.addFirst(new Node(x,y);matrixxy = true;n = (Node)nodeArray.removeLast();matrixn.xn.y = false;countMove+;return true;return false;public void run()running = true;while (run

20、ning)tryThread.sleep(timeInterval);沈 阳 大 学课程设计说明书 NO.10catch(Exception e)break;if(!paused)if (moveOn()gs.repaint();elseJOptionPane.showMessageDialog(null,you failed,Game Over,JOptionPane.INFORMATION_MESSAGE);break;running = false;private Node createFood()int x = 0;int y = 0;doRandom r = new Random()

21、;x = r.nextInt(maxX);y = r.nextInt(maxY);while(matrixxy);return new Node(x,y);public void speedUp()timeInterval *= speedChangeRate;public void speedDown()timeInterval /= speedChangeRate;public void changePauseState()沈 阳 大 学课程设计说明书 NO.11paused = !paused;public String toString()String result = ;for(in

22、t i=0; inodeArray.size(); +i)Node n = (Node)nodeArray.get(i);result += + n.x + , + n.y + ;return result;class Nodeint x;int y;Node(int x, int y)this.x = x;this.y = y;3设计结果与分析 本设计是在JCreator +JDK平台上开发、调试运行的,运行的结果截图如下几个图所示。图3程序运行起始界面沈 阳 大 学课程设计说明书 NO.12图3游戏开始界面图4游戏进行中界面图4游戏进行中界面沈 阳 大 学课程设计说明书 NO.134.设计

23、心得体会这次课程设计历时二个星期多左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。通过对Java的程序设计,感觉到自己在知识的理解上有很大的不足,对知识的掌握程度还是不那么的深入。在这个课程设计中,融入了太多的汗水,就因为付出了很多,才感觉到这个课程设计所给我带来的深刻意义。在知识的海洋里,我们应该勇于发现问题,积极的去探索问题,不应该遇到比较棘手的问题就对自己放松,对自己就降低了要求。这个课程设计就是我自己的辛辛苦苦的劳动成果,所以当我顺利的完成了这个课程设计的时候,我的心情使无比的激动。重拾教材与实验手册

24、,对知识系统而全面进行了梳理,遇到难处先是苦思冥想再向同学请教,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难知识,学会了如何思考的思维方式,找到了设计的灵感。在此过程中,有太多的艰辛,有太多的坎坷。正是有了老师的耐心辅导,还有同学们的辛苦帮助,我才能这么顺利的完成这个课程设计。所以我要谢谢他们每个人。我想说:为完成这次课程设计我们确实很辛苦,但苦中仍有乐,和同学这十几天的一起完成课程设计的日子,让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的实习,我感觉我和同学们之间的距离更加近了。5参考文献1陈德志、冯智圣. Java程序设计习题解析M. : 冶金工业,2004.7:101-1882 李向明,姜遇姬. Java程序设计教程M. : 人民邮电大学, 2004.6:2042603 刘其红. Java程序设计实例教程M. : 冶金, 2004.7:51-1274 朱喜福. Java程序设计M. : 清华大学, 2005.3:120150沈 阳 大 学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1