贪吃蛇游戏开发设计.docx

上传人:h**** 文档编号:25740716 上传时间:2022-07-13 格式:DOCX 页数:11 大小:15.04KB
返回 下载 相关 举报
贪吃蛇游戏开发设计.docx_第1页
第1页 / 共11页
贪吃蛇游戏开发设计.docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《贪吃蛇游戏开发设计.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏开发设计.docx(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、贪吃蛇游戏开发设计 广州商学院 课程论文题目:贪吃蛇游戏开发设计 课程名称面对对象程序设计 考查学期2022/2022学年第 1学期姓名陈思明李权康 学号202206110047 202206110044 专业计算机科学与技术 指导教师包汉宗 移植性和平台无关性等优点,得到了广泛地应用,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的 接受和认可。 “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,四个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,

2、达到学习Java技术和熟悉 软件开发流程的目的。 关键词:贪吃蛇,Java,游戏 一、可行性分析 1.1经济可行性 游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件的水平的提高。游戏开发新技术层出不穷,经典游戏比比皆是,游戏这个名称一直存在于每个人的日常生活中。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色.而从技术方面来看,现在的java技术也融入了手机中。这些都为开发的这款贪吃蛇游戏提供了条件。 1.2技术可行性 本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平

3、台上运行。 由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。 二、需求分析 2.1游戏的介绍 游戏的名称叫“贪吃蛇”,节:一条蛇可以看成有许多正方形的“小格子”拼凑成,我把它称作节。节是蛇身上最小的单位。 段:当许多节连成一条直线,我称它为段。贪吃蛇只有一段,如果它拐弯就变成两段。 链表:用来保存每一段的状态,链表的元素单位是段。且链表的最后一个元素表示蛇的头部段。 坐标系:MIDP中的坐标以左上角那点为(0,0),向右则x递增,向下则y递增。 2.

4、2游戏开发的可行性 游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件的水平的提高。游戏开发新技术层出不穷,经典游戏比比皆是,游戏这个名称一直存在于每个人的日常生活中。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色.而从技术方面来看,现在的java技术也融入了手机中。这些都为开发的这款贪吃蛇游戏提供了条件。 2.3设计目的 综合运用在校所学的知识和技能,设计开发贪吃蛇游戏,使自 己熟悉应用系统的开发的过程,培养独立思考的能力,校验学习效果和动手能力,提高工程实践能力。 2.4游戏需求 给出一条小蛇和随机出现一个食物,当小蛇吃到食物时就加分。 2.4.1游戏界面需求 良好的用

5、户界面,有分数显示和暂停。 2.4.2游戏形状需求 良好的方块形状设计,绘制小蛇和食物,小蛇由几个方块组成,食物由一个方块组成。 2.4.3键盘事件处理 小蛇可以通过键盘方向键(上,下,左,右)进行方向的移动。 2.4.4显示需求 当小蛇吃掉几个食物后会变长,平且吃完食物时食物会消失, 并立即产生一个1个新的事物。 2.4.5接口控制 本软件通过键盘进行操作,在windows操作系统下,利用键盘 的上下左右键进行操作,要使用键盘的接口事件。 2.4.6环境介绍 操作系统:Microsoft Windows 7程序语言:Java 2 开发包:Java(TM) 2 Standard Edition

6、 (5.0) Sun Micro. J2ME Wireless Tool Kit 2.2 IDE: Eclipse4.4 三、功能设计 3.1 游戏的流程图 3.2游戏主界面的开发 屏幕的背景用白色,由于屏幕高比宽长,所以取以宽为边长的矩形区域作为游戏区域,下面的部分作为分数、信息区域。 图一(游戏的主界面) 3.3 绘制蛇身 public void repaint() Graphics g = canvas.getGraphics(); / 背景 g.setColor(Color.black); g.fillRect(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT);

7、 / 蛇 g.setColor(Color.PINK); LinkedList snakeNode = snake.nodeArray; Iterator it = snakeNode.iterator(); while (it.hasNext() Node n = (Node) it.next(); drawNode(g, n); / 食物 g.setColor(Color.RED); Node n = snake.food; drawNode(g, n); updateScore(); / 绘画某一结点(蛇身或食物) private void drawNode(Graphics g, No

8、de n) g.fillRect(n.x * nodeWidth, n.y * nodeHeight, nodeWidth - 1, nodeHeight - 1); / 更新分数 public void updateScore() String s = 分数: + snake.score; label.setText(s); 3.4创建初始“蛇”及“蛇”的移动 蛇的初始长度为5,边长为10个像素(背景为黄色),蛇头初始位于屏幕(100,30),方向向左,用向量表来记录每个蛇的位置以及方向。 部分参考代码如下: if (e.getKeyCode() != KeyEvent.VK_Y & !pl

9、aying) return; / TODO Auto-generated method stub /* 根据按键不同, 让蛇改变不同的方向*/ switch (e.getKeyCode() /* 方向键上*/ case KeyEvent.VK_UP: if (snake.isPause() snake.changePause(); for (GameListener l : listeners) l.gameContinue(); snake.changeDirection(Snake.UP); break; /* 方向键下*/ case KeyEvent.VK_DOWN: if (snake

10、.isPause() snake.changePause(); for (GameListener l : listeners) l.gameContinue(); snake.changeDirection(Snake.DOWN); break; /* 方向键左*/ case KeyEvent.VK_LEFT: if (snake.isPause() snake.changePause(); for (GameListener l : listeners) l.gameContinue(); snake.changeDirection(Snake.LEFT); break; /* 方向键右*

11、/ case KeyEvent.VK_RIGHT: if (snake.isPause() snake.changePause(); for (GameListener l : listeners) l.gameContinue(); snake.changeDirection(Snake.RIGHT); break; 3.5 吃掉食物,蛇身增长 当小蛇吃掉食物后,会增长, 部分代码: public void snakeMoved() /* 判断是否吃到食物*/ if (food != null & food.isSnakeEatFood(snake) /* 吃到食物后, 蛇增加身体, 再重新

12、丢一个食物*/ snake.eatFood(); food.setLocation(ground = null ? food.getNew() : ground .getFreePoint(); /* 如果吃到食物, 就肯定不会吃到石头*/ else if (ground != null & ground.isSnakeEatRock(snake) /* 如果吃到的是石头, 或吃到自己的身体, 就让蛇死掉*/ stopGame(); if (snake.isEatBody() stopGame(); if (gamePanel != null) gamePanel.redisplay(grou

13、nd, snake, food); /* 更新提示*/ if (gameInfoLabel != null) gameInfoLabel.setText(getNewInfo(); 3.6随机产生食物 部分代码: * 产生食物 * 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合 if (food != null & food.isSnakeEatFood(snake) /* 吃到食物后, 蛇增加身体, 再重新丢一个食物*/ snake.eatFood(); food.setLocation(ground = null ? food.getNew() : ground .getFreePoint(); public Point getNew() Point p = new Point(); p.x = random.nextInt(Global.WIDTH); p.y = random.nextInt(Global.HEIGHT); return p; 3.7键盘事件处理 可以通过键盘控制蛇的移动方向 /* 方向键上*/ case KeyEvent.VK_UP: if (snake.isPause() snake.changePause(); for (GameListener l : listeners)

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com