文档库 最新最全的文档下载
当前位置:文档库 › 贪吃蛇的研究与设计

贪吃蛇的研究与设计

贪吃蛇的研究与设计
贪吃蛇的研究与设计

广东技术师范学院天河学院JAVA程序设计课程设计报告

题目:______贪吃蛇的研究与设计____

学号: 2012041543210__

2012041543210_ 2012041543210___

班级: ______本软件122班__________

小组成员:___林盛东郭威彭更明____

指导教师: 郑英姿

所属系部: 计算机科学与技术系

2014年4月25 日

I

贪吃蛇的研究与设计

摘要

近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。

“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和NetBeans开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,八个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。

本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出二个功能模块的主框架以及八个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序列表,介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。

关键词:Java;NetBeans;贪吃蛇;开发流程

II

目录

摘要 ............................................................................................................................................................... I 1 引言 (2)

1.1 课题介绍 (2)

1.2 设计的背景和意义 (2)

2系统分析 (3)

2.1可行性分析 (3)

2.2系统需求分析 (4)

2.2.1 功能需求 (4)

2.2.2 性能需求 (4)

2.2.3界面需求 (4)

2.3开发环境 (4)

3系统概要设计 (5)

3.1程序流程图 (5)

3.2类模块设计 (6)

3.3 系统数据结构设计 (6)

3.3.1 蛇、食物的表示 (6)

3.3.2 蛇的移动 (6)

3.3.3 存储蛇身的数据结构 (7)

3.3.4 蛇的移动方向 (7)

3.3.5 如何显示蛇身 (7)

3.3.6 蛇身的移动方向 (7)

3.3.7 吃到食物判定 (7)

4 系统详细设计与实现 (7)

4.1 程序设计 (7)

4.1.1 主类Main (7)

4.1.2 类MainGui (8)

4.1.3 类Snake (8)

4.1.4 类Food (9)

4.1.5 类Box (9)

4.1.6 类SnakeKeyListener (9)

4.1.7 类Clock (10)

4.1.8 类PropertyPanel (10)

4.2 各功能界面截图 (10)

4.2.1 贪吃蛇游戏的基本运行界面 (10)

4.2.2 程序开始运行界面 (11)

5测试 (13)

5.1 测试的意义 (13)

6结论 (13)

参考文献 (14)

附录主要代码清单 (15)

1

贪吃蛇的研究与设计课程设计(论文)

1 引言

1.1 课题介绍

贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面的原因是为了将我们自己的所学知识加以运用;另一方面,虽然很小就接触这个游戏,但是它的制作方法对我们而言还是很神秘的。我们希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。希望通过这次实践,我们能从中提高自己的编程能力。并从中学会从零开始分析设计程序。

本游戏的开发语言为Java。开发工具选用NetBeans。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。NetBeans 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

类是面向对象程序设计语言中的一个概念。

类(Class)实际上是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。

类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。

1.2 设计的背景和意义

贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数

2

据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。

正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用NetBeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握NetBeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。

2系统分析

2.1可行性分析

贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。

贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。而在吃到食物的时候,则只需把食物入队即可。实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。

本次设计我将主要运用java语言来完成。Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。

由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。

3

贪吃蛇的研究与设计课程设计(论文)

2.2系统需求分析

2.2.1 功能需求

本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求:

(1) 利用方向键来改变蛇的运行方向。

(2) 空格键暂停或继续游戏,并在随机的地方产生食物。

(3) 吃到食物就变成新的蛇体,碰到墙或者自身则游戏结束,否则正常运行。

2.2.2 性能需求

本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。

2.2.3界面需求

游戏主界面模块:主要包括游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。游戏的主界面力求美观,爽心悦目。

游戏控制模块:主要完成控制游戏的开始、暂停、退出等功能,这部分做到易懂、易操作而且准确率高,不易出错。

游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面力求美观,爽心悦目。

游戏控制模块是游戏的中心环节,主要完成控制游戏的开始、暂停、退出等功能。为了能够给玩家一个很好的游戏环境,这部分做到易懂、易操作。

2.3开发环境

操作系统及版本:Windows7

工具软件:jdk1.7,NetBeans

编程语言:JAVA语言

4

5

3系统概要设计

3.1程序流程图

单击“开始游戏”按钮, 游戏开始,蛇开始随机。

键盘操作:

向上

右移 F11加速 左移 F12减速 向下 Enter 开始/暂停 蛇碰到边界

或者碰到自己 单击“是”再来一局 单击“否”退出游戏 游戏中途欲中断,稍后继续游戏

单击“暂停游戏”

游戏暂停

进入游戏

再次单击开始游戏,游戏

恢复

图1 游戏处理流程

贪吃蛇的研究与设计课程设计(论文)

3.2类模块设计

本系统共包括8个类文件。

java源文件及其功能如表所示。

表3.1 java源文件及其功能

序号文件名主要功能

1 Main 该文件为程序入口,含有main方法。

主界面类,该类用来创建游戏的用户界面,继承自

2 MainGui

JFrame类。对主窗口的属性的设置、注册监听者等

3 SnakeKeyListener 蛇的监听器,根据按键改变蛇的方向、速度等设置

4 Food 该文件实现组成蛇身的单位-食物。

5 Box 该文件实现蛇的活动场所

6 Snake 该文件实现蛇类,包含有关蛇的方法属性

7 Clock 该文件为工具类,实现时间,速度的控制

settingPanel的可视化设置.设置游戏运行状态,移

8 PropertyPanel

动以及分数更新,实现上下左右移动的方法接口。

3.3 系统数据结构设计

3.3.1 蛇、食物的表示

我们可以把显示区域想象成一个大大的表格,里面的格子就是组成蛇的基本单位,一个格子可以代表一个食物,使用坐标来区分这些格子。

3.3.2 蛇的移动

蛇向前移动一步,可以看作是蛇头前面增加了一个节点,蛇的尾巴上少了一个节点(即去尾,加头)

6

3.3.3 存储蛇身的数据结构

由于要区分蛇头和蛇尾,因此这个数据结构必须是有序的。另一方面,我们需要经常的访问第一个和最后一个节点,所以LinkedList最合适。因为它有getFirst(),getLast(),和removeLast()方法。

3.3.4 蛇的移动方向

这里讨论蛇的移动方向控制。蛇下一步移动到哪里,是由方向来控制的。这里我们用int型常量来表示蛇的移动方向。因为我们是根据原蛇头的坐标和方向来确定新蛇头的坐标。在原坐标的基础上,根据蛇头的运动方向来确定新蛇头的坐标,比如向上移动就是y-1.

3.3.5 如何显示蛇身

显示蛇身,其实就是填充用颜色填充格子。

需要4个参数,像素坐标x,像素坐标y,格子宽度,格子高度。

像素坐标就是矩形左上角的坐标

3.3.6 蛇身的移动方向

(1)相反方向

和上一次移动的方向相反的方向称为相反方向,这种输入应该忽略。这样可以防止蛇从自己的身体中穿过。

(2)无效方向

在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个非相反方向,只有最后一个是有效方向,其他的都是无效方向。

蛇的最终运动方向以有效方向为准。

3.3.7 吃到食物判定

这里通过判定坐标是否重合来判断,只需要判断蛇头是否和食物重合就可以了,因为蛇的身体都是走蛇头走过的地方。

4 系统详细设计与实现

4.1 程序设计

4.1.1 主类Main

(1)主类为此程序的入口,定义了Main的对象frame,开始运行此程序。

(2)源代码见文件Main.Java

7

贪吃蛇的研究与设计课程设计(论文)

4.1.2 类MainGui

(1)成员变量见表4.1

表4.1 主要成员变量

成员变量描述变量类型名称

设置面板private settingPanel settingPanel

按键监听private keyListener keyListener

蛇场对象private Box Box

主窗口高度int windowHeight windowHeight

主窗口宽度int windowWidth windowWidth

(2)方法见表4.2

表4.2 主要方法

方法名功能

addListener() 注册监听

getBox() 更新蛇长

getSettingPanel() 更新方向

4.1.3 类Snake

(1)成员变量见表4.3

表4.3 主要成员变量

成员变量描述变量类型名称

上下左右(方向) Int UP、DOWN、LEFT、RIGHT 蛇体LinkedList body

蛇场Box box

前进方向int direction

是否活着boolean islive

颜色Color snakeColor 下一节点坐标Point nextSite

8

(2)方法见表4.4

表4.4 主要方法

方法名功能

init() 初始化蛇,方向初始化为向右,增加初始的节点countNewSite() 计算下一个位置

drawMe() 将蛇画出

stareNewGame() 死亡之后重新开始游戏

4.1.4 类Food

(1)成员变量见表4.5

表4.5 主要成员变量

成员变量描述变量类型名称

颜色foodColor Color

表4.6 主要方法

方法名功能

drawMe() 将食物画出

newMe() 重新产生一个食物

4.1.5 类Box

蛇场类。继承自JPanel,Box,蛇的活动场所,也是食物出现的地方. 重写了该类的paint()方法,当重绘时时会调用蛇、食物、网格的绘制方法。由定时器Timer控制,每隔delay时间,执行:

1.重新计算一下位置

2.绘制新图像

3.更新属性面板的显示,即该游戏的主要原理。属性面板的时间由countTimer中获取,运行在另外一个线程中,减小计时的误差

4.1.6 类SnakeKeyListener

此类为蛇的监听类,实现蛇运动的监听,根据按键改变蛇的方向、速度等设置

该类包含控制器和处理按键逻辑,控制器,控制Box,Snake,Food.负责游戏的逻辑.处理按键事件,可以处理Snake 触发的事件,该类覆盖keyPressed()方法:处理按键事件,根据按键不同,发出不同的指令:

UP: 改变蛇的移动方向为向上

DOWN: 改变蛇的移动方向为向下

LEFT: 改变蛇的移动方向为向左

RIGHT: 改变蛇的移动方向为向右

newGame()开始新游戏的方法

9

贪吃蛇的研究与设计课程设计(论文)

10 源代码见文件SnakeKeyListener.java

4.1.7 类Clock

主要功能是计时。

源代码见文件Globel.java

4.1.8 类PropertyPanel

settingPanel的可视化设置.设置游戏运行状态,移动以及分数更新,实现上下左右移动的方法接口。

源代码见文件PropertyPanel.java

4.2 各功能界面截图

4.2.1贪吃蛇游戏的基本运行界面

图4.1初始界面

图4.2 控制面板

4.2.2程序开始运行界面

(1)按enter键开始游戏,并有暂停和继续功能:

图4.4 开始游戏(地图1)

(2)、在蛇运动过程中可以按F11、F12或Z、X进行减速或加速。

(3)、当蛇运动过程中碰到壁时会死亡,选择是否继续。如图

11

贪吃蛇的研究与设计课程设计(论文)

12

(3)游戏过程中,若蛇头碰到蛇尾 则游戏结束,选择是否继续

5测试

5.1 测试的意义

系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并利用这些实例来运行程序,以便发现错误。系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析系统设计和实施的最后复查。根据测试的概念和目的,在进行信息系统测试时应遵循以基本原则。

(1)拟定测试计划。在制定测试计划时,要充分考虑整个项目的开发时间和开发进童以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。

(3)根据测试大纲设计和生成测试用例。在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档,其内容主要有被测项目、输人数据、测试过程、预期输出结果等。

(4)实施测试。测试的实施阶段是由一系列的测试周期组成的。在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。

(5)生成测试报告。测试完成后,要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误,另外,给出一些建议,如可采用的修改方法,各项修改预计的工作量及修改的负责人员。

程序运行正常,没有发现什么错误。

6结论

通过这次课程设计,我对上学期所学的JA V A语言程序设计有一个更深刻的了解,将所学的知识应用于实践,由于所学知识有限,为了使游戏能够能够实现自己预先的构想,我们这组通过上网找代码和去图书馆借书找程序,比较画好的流程图及功能模块,不断阅读修改代码使程序达到预期所要实现的目标,完成课程设计后,可以感觉到自己对Java程序的又有了新的认识。

在做Java设计之前也有做过其他的课程设计,大多规模很小。综合运用以前所学习的知识,设计一个JAVA小游戏即贪吃蛇,并能实现以下的功能:游戏背景及样式的控制、蛇与食物的颜色控制、游戏的速度控制、游戏暂停、游戏重新开始、游戏的结束。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。总之,通过本次的课程设计,使我平时学到的理论知识得到了很好地升华,理论与实际得到一次很好的结合,为我今后参加工作打下了坚实的基础,使我受益匪浅。

13

贪吃蛇的研究与设计课程设计(论文)

14 参考文献

[1]Narcisio Tumushabe , TAN Guan-zheng An overview of authentication security

features in ASP. NET, 《School of Computer Science and Information Technology》

2003(3)

[2]Anders Hejlsberg Scott Wiltamuth Peter Golde. The C# Programming Language[M]. POSTS&TELECOM Press,2008.

[3] Karli Watson. Beginning Visual C# 2005 [M]. Wrox,2005

[4]马苏拉,许锦兴.校友通信录的UML建模和C#实现[J].计算机与数字工程,2008年第12期

[5]徐龙.基于https://www.wendangku.net/doc/5815195704.html,技术的电子留言板设计与实现[J].电脑知识与技术,2009年第25期

[6]刘震.广播电视大学校友录系统的实现[J].江西广播电视大学学报,2009年第1期

[7] 马骏,郑逢斌,沈夏炯. C#网络应用高级编程. 人民邮电出版社,2009

[8]梅晓冬,颜烨青. Visual C#网络编程技术与实践.清华大学出版社,2008.

[9]张军伟.基于三层框架的C# ASP.NE工程序设计[J].电脑编程技巧与维护,2010年第9期

[10]刘克成,张凌晓.C#程序设计.中国铁道出版社,2009.

[11]刘艾侠.基于https://www.wendangku.net/doc/5815195704.html,的web service调用[J].科技信息,2010,第23期

[12]任艳斐基于https://www.wendangku.net/doc/5815195704.html,动态移动Web查询系统的设计,《通信技术》2008年4期

[13]王西锋,张晓孪.应用程序中数据库自动备份的实现[J].《现代电子技术》2008年8期

附录主要代码清单

一.MainGui

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.Toolkit;

import javax.swing.JFrame;

import mysnake.box.Box;

import mysnake.contral.SnakeKeyListener;

import mysnake.settingground.PropertyPanel;

public class MainGui extends JFrame {

int windowHeight;//加数字是为了显示效果,下同

int windowWidth;

private Box box = new Box(this);

SnakeKeyListener keyListener = new SnakeKeyListener(this);

private PropertyPanel settingPanel = new PropertyPanel();

public MainGui() {

super("贪吃蛇1.0");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

windowWidth = 880 + 17;

windowHeight = 600 + 40;

Toolkit kit = Toolkit.getDefaultToolkit(); //定义工具包

Dimension screenSize = kit.getScreenSize(); //获取屏幕的尺寸

int screenWidth = screenSize.width; //获取屏幕的宽

int screenHeight = screenSize.height; //获取屏幕的高

setLocation(screenWidth / 2 - windowWidth / 2,

screenHeight / 2 - windowHeight / 2); //设置窗口居中显示setSize(windowWidth, windowHeight);

setLayout(new BorderLayout());

add(box, BorderLayout.CENTER);

add(settingPanel, BorderLayout.SOUTH);

addListener();

setVisible(true);

getBox().requestFocus();

}

public Box getBox() {

return box;

}

private void addListener() {

this.addKeyListener(keyListener);

box.addKeyListener(keyListener);

15

贪吃蛇的研究与设计课程设计(论文)

16

settingPanel.addKeyListener(keyListener);

settingPanel.getRuleText().addKeyListener(keyListener);

}

public PropertyPanel getSettingPanel() {

return settingPanel;

}

}

二.Box.java

import mysnake.MainGui;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JPanel;

import javax.swing.Timer;

import mysnake.settingground.Clock;

public class Box extends JPanel {

MainGui gui;

private Snake snake;

private Food food;

private Timer timer;

private int delay = 100;

private Color backgroundColor = Color.DARK_GRAY;

private Color webColor = Color.DARK_GRAY;

private int webStyle = 1;

private Clock clock;

public Box(MainGui inGui) {

gui = inGui;

snake = new Snake(this);

food = new Food(this);

setBackground(backgroundColor);

timer = new Timer(delay, new ActionListener() {

public void actionPerformed(ActionEvent e) {

getSnake().countNewSite();

repaint();

updateProperty();

}

});

clock = new Clock();

clock.getTimeThread().start();

}

@Override

public void paint(Graphics g) {

setBackground(getBackgroundColor());

super.paint(g);

paintBackgroundRect(g, getWebStyle());

getSnake().drawMe(g);

getFood().drawMe(g);

}

private void paintBackgroundRect(Graphics g, int style) {

g.setColor(getWebColor());

switch (style) {

case 0:

return;

case 1:

for (int i = 0; i < getWidth(); i += 20) {

for (int j = 0; j < getHeight(); j += 20) {

g.fill3DRect(i, j, 20, 20, true);

}

}

break;

case 2:

for (int i = 0; i < getWidth(); i += 20) {

for (int j = 0; j < getHeight(); j += 20) {

g.fill3DRect(i, j, 20, 20, false);

}

}

break;

case 3:

for (int i = 0; i < getWidth(); i += 20) {

g.drawLine(i, 0, i, getHeight());

}

for (int i = 0; i < getHeight(); i += 20) {

g.drawLine(0, i, getWidth(), i);

}

break;

}

}

private void updateProperty() {

gui.getSettingPanel().getSnakeLengthLabel().setText("" + getSnake().getBody().size());

switch (gui.getBox().getSnake().getDirection()) {

17

贪吃蛇的研究与设计课程设计(论文)

18

case Snake.DIRECTION_DOWN:

gui.getSettingPanel().getDirectionLabel().setText("下,↓");

break;

case Snake.DIRECTION_LEFT:

gui.getSettingPanel().getDirectionLabel().setText("左,←");

break;

case Snake.DIRECTION_RIGHT:

gui.getSettingPanel().getDirectionLabel().setText("右,→");

break;

case Snake.DIRECTION_UP:

gui.getSettingPanel().getDirectionLabel().setText("上,↑");

break;

}

gui.getSettingPanel().getSnakeSiteLabel().setText("("

+ (getSnake().getBody().getLast().x + 20) / 20

+ ","

+ (getSnake().getBody().getLast().y + 20) / 20

+ ")");

gui.getSettingPanel().getFoodSiteLabel().setText("("

+ (getFood().x + 20) / 20

+ ","

+ (getFood().y + 20) / 20

+ ")");

gui.getSettingPanel().getTimeLabel().setText(getClock().getTime()+"秒");

gui.getSettingPanel().getSpeedLabel().setText("格/"+getTimer().getDelay()+"毫秒"); }

public Snake getSnake() {

return snake;

}

public Timer getTimer() {

return timer;

}

public Food getFood() {

return food;

}

public Clock getClock() {

return clock;

}

public Color getBackgroundColor() {

return backgroundColor;

}

public int getWebStyle() {

return webStyle;

}

分类垃圾桶底座热流道注射成型工艺及模具设计_毕业论文

分类垃圾桶底座热流道注射成型工艺 及模具设计 作者姓名:吴杰 专业名称:机械工程及自动化 指导教师:王二讲师

摘要 本毕业设计论文详细记录了分类垃圾桶底座热流道模具的设计全过程。 本文主要内容包括:垃圾桶的改进方案、制品的选材、制品的工艺分析、注射机的选择及校核、热流道浇注系统的设计、脱模机构的设计、成型零件和结构零件的设计以及相关尺寸的计算校核、排气系统及温控系统的设计、模具材料的选择等注射模设计中的关键问题。其中热流道浇注系统的设计是本次毕业设计的重点。 此外,本文中还包括一篇文献综述。 关键词:垃圾桶底座热流道注射机注射模具

Abstract The thesis of the graduate design notes the whole design processes of the hot runner mould for the rubbish bin pedestal in details. The thesis mainly includes: the improving method of the rubbish bin, the selecting material of the product, the technical analysis of the product, the option and check of the injector machine, the design of hot runner system, the design of the ejection mechanism, the design of the moulding,parts and makeup parts,as well as some key problem in injection mould design. Such as: the calculations of the related sizes, exhausting system and temperature control system, the choices of the mould materials. And the emphasis of this design is the design of the hot runner system. Besides, this thesis includes a literature summary. Key words:rubbish bin pedestal hot runner system injector machine injection mould

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.wendangku.net/doc/5815195704.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

java课程设计之贪吃蛇

系统描述 (1) 1.1本设计的目的和意义 (1) 1.2设计的主要内容 (1) 1.3设计要达到的目标 (2) 1.4设计需要实现的功能和目标 (2) 1.5游戏设计环境 (2) 二分析与设计 (3) 2.1 游戏处理流程 (3) 2.2需求分析 (4) 2.3功能模块设计 (4) 2.4详细设计 (8) 三系统测试 (19) 四心得体会 (21) 五参考文献 (22) 六附录 (24)

基于Java的游戏“贪吃蛇”的设计和实现 内容提要: “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软 件开发流程的目的。 一系统描述 1.1本设计的目的和意义 贪吃蛇游戏一款非常经典的手机游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 贪吃蛇游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2设计的主要内容 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现开始、暂停、退出等功能。

DOS贪吃蛇程序设计思路及代码

游戏背景及设计原因 蛇引诱夏娃吃了苹果之后,就被贬为毒虫,成为阴险的象征。而蛇吃东西是整只动物吞进去的,很久以前(大概文艺复兴的时候)就有人发明了一种游戏,就是现在贪吃蛇的前身,后来慢慢的发展就变成了今天的贪吃蛇了—一个很受欢迎、为人熟知、给很多人美好时光的经典小游戏。 贪吃蛇在我们曾经的岁月里留下了很多美好的记忆,也伴随我们走过了很长一段的人生路,对于贪吃蛇这个游戏有着特殊的感情,也一直很好奇这个游戏是怎么设计的,所以这次我们就选择了这个题目。一是弄清楚这个游戏的设计;二是学习程序的编辑过程和对编程的进一步深入了解。 程序结构图 程序流程图

程序设计及说明 1、边墙(Wall) 该类规定游戏的范围大小。 2、蛇类(Snake) 用该类生成一个实例蛇snake。 3、移动(Move) 该类用于实现对蛇的操作控制,即蛇头方向的上下左右的移动操作。 4、食物类(Food) 该类是游戏过程中食物随机产生的控制和显示。 5、判断死亡(Dead) 该类是对游戏过程中判断玩家操作是否导致蛇的死亡,其中包括蛇头咬食自己身体和蛇头是否触及游戏“边墙”。 6、蛇结点(SnakeNode) 该类是蛇吃下随机产生的食物从而增加长度的控制类,其中包括蛇长度增加和尾部的变化。 7、计分统计(Score) 该类由于玩家的游戏成绩记录,及游戏结束时的得分输出。 ... 部分函数及说明 1.Char menu(); /*用于玩家选择的游戏速度,返回一个char值*/ 2.DELAY(char ch1); /*用于控制游戏速度*/ 3.void drawmap(); /*绘制游戏地图函数* 4、void menu() /*游戏帮助信息的输出* ...

智能垃圾箱创业计划书

毕业论文 智能垃圾箱项目策划书 专业名称:市场营销 班级: 111601 学生姓名:梁宝 学号: 201116060118 指导教师:李亨英 二零一五年六月

摘要 活垃圾造成的污染一直是中国最严重的社会公害之一。鉴于改革开放以来中国经济的高速发展、城市数量以及人口显著增加、城市规模和范围不断扩大、城市化进程的加快,中国城市生活垃圾产量不断增长,尤其是近年来,随着经济的迅猛发展,公共场合的垃圾不能很好的收集,造成垃圾污染环境和影响市容的问题也越来越严重。所以,把垃圾良好的收集、处理,防止环境污染,保护环境,维持生态平衡创造良好的市容市貌,已成为社会发展的一项重要举措。而就如何科学合理的收集和处理垃圾,垃圾箱的设计起着直接影响作用。于是基于调查的基础上,响应社会需求,我们设计的智能垃圾箱应运而生。 关键词:职能;垃圾箱;环保

Abstract Living garbage pollution has been one of the most serious social public hazards in China. Because of the high speed development of China's economy since the reform and opening up, number of cities and the population increased significantly, the urban scale and scope expands unceasingly, the speeding up of urbanization, city life garbage output growing in China, especially in recent years, with the rapid development of economy, public garbage cannot very good collection, environment and the city garbage pollution problem is becoming more and more serious. Good so, put the garbage collection, processing, to prevent environmental pollution, protect the environment and maintaining ecological balance to create a good districts, has become an important measure of social development. And how to scientific and reasonable collected and disposed of the rubbish, trash can play a direct impact on the design. Then based on the investigation on the basis of the response to the social needs, we design intelligent dustbin arises at the historic moment. Keywords:intelligent;dustbin ;environmental protection

STM32课程设计贪吃蛇

STM32大作业报告 学生: 学号: 所在院系:光电信息与计算机工程学院专业班级: 授课教师: 完成时间:2016年

前言 随着科学技术的不断进步,嵌入式近些年来逐渐兴起,其领域比较新,发展非常迅速,由于它属于新兴领域,接触的人并不是很多,但是嵌入式在各种电子设备上的应用越来越越广泛,并且各种电子设备也在朝着嵌入式微系统,智能化的方向前进。STM32系列是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M核。作为21世纪的人才,为了与社会实际需要相衔接,提高我们的学习兴趣,利用STM32系列单片机进行了一次嵌入式系统设计。 摘要 在本次作业中采用STM32系列中的STM32F103RCT6微控制器芯片,采用ALIENTEK战舰STM32开发板,使用MiniSTM32开发板上的LCD 接口,来点亮TFTLCD,实现触摸屏功能。

一、课程设计任务要求 本次的课程设计目的是实现一个经典的贪吃蛇游戏,整个游戏实现功能分别为: 1、初始化程序。 2、随机红点、左转、右转、判断边框。 二、系统硬件设计 硬件设计原理图 根据此硬件设计图再结合软件设计就能做出此游戏。 三、系统软件实现 此次的课程设计在于开发个贪吃蛇游戏,其流程图如下图所示。

程序流程图 为方便介绍,此软件实现只给出主要程序部分: 1、本例程提供了硬件平台的初始化 GPIO是常规输入/输出端口,STM32F103RCT6有PA、PB、PC、PD、PE 共5个16位的GPIO。STM32的GPIO都可编程,具有很多复用功能。GPIO 可以配置为很多总模式,这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。通过对GPIO寄存器编程,可以设置每个端口的工作模式。 24C02 EEPROM是开发板板载的2Kbit(256 个字节)EEPROM ,型号为:24C02,用于掉电数据保存。因为STM32 部没有EEPROM,所开发板外扩了24C02,用于存储重要数据,用来做IIC 实验,该芯片直接挂在STM32 的IO 口上。 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的两线式

C语言贪吃蛇程序设计说明书

C语言贪吃蛇程序设计说明书 题目:贪吃蛇游戏 学校: 系别: 专业 班级: 姓名: 学号: 指导老师: 日期: 一、设计题目: 贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。 二、功能设计: 本游戏要求实现以下几个功能: (1) 用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长; (2) 用户可以调节蛇的运行速度来选择不同的难度; (3) 游戏分多个难度级别; (4) 用户可自选颜色; (5) 记录成绩前五名的游戏玩家; (6) 增加背景音乐; (7) 提高障碍物和游戏级别。 三、程序模块图: 贪吃蛇游戏 初画控设帮 始图制置助 模模模模化 块块块块

墙蛇食移食死变成等音 体身物动物亡长绩级效 2 四、算法流程图: 开始初始化界面和蛇身 放置食物 获取按键 开始运动 碰到边界 是 否 否蛇吃到食 是 蛇长大 蛇死亡是 继续 否 结束 3 五、函数原型与功能 1.主函数:void main() 启动程序,触动其他函数。 2.初始化:void init () 设置背景框大小、蛇体初始值,随机产生食物。 3.随机产生食物:void setfoodcrd()

设置食物生成坐标,0表示食物被吃。 4.画食物:void showfood() 用矩形框来画食物 5.画蛇:void showsnake() 根据蛇的坐标和节数,循环用矩形框来画蛇。 6.蛇移动:void snakemove() 根据按键,重设坐标 7.改变蛇的方向:void changeskdir() 响应用户的运动方向 8.判断蛇是否死亡:void judgeslod 判断蛇是否碰到自己或墙。 9.判断蛇是否吃到食物:void judgefood() 判断是否吃到食物,吃食后变0,蛇增长一节。 10.结束游戏:void gameover() 结束话语,并执行下一步。 六、基本代码 #include #include #include #pragma comment(lib,"Winmm.lib") #include "MyTimer.h" #define SIZEMAX 100 /*蛇最大长度*/ #define SPEED 100 /*初始速度*/ #define len 20 /*蛇宽度*/ #define lm 10 /*蛇每次移动距离*/ #define initlen 600 /*初始化窗口正方形的长度*/ #define Min_snakelen 2 /*蛇的最小长度*/ typedef struct { int x,y; }DIR; int snakelen=Min_snakelen; /*蛇的长度*/

《贪吃蛇游戏课程设计》报告资料整理

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。

3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int i,key; int score=0; int gamespeed=250;//游戏速度可根据实际情况自行调整 struct Food { int x;//食物的横坐标 int y;//食物的纵坐标 int yes;//判断是否要出现食物的变量 }food;//食物的结构体 struct Snake { int x[M]; int y[M]; int node;//蛇的节数 int direction;//蛇的移动方向 int life;//蛇的生命,0表示活着,1表示死亡 }snake; void Init();//图形驱动

贪吃蛇设计规格说明书

贪吃蛇设计规格说明书 院系:信息技术学院 姓名:livechange 指导老师:XXX 日期:2016-06-07

目录 一、设计背景 (2) 二、需求分析 (2) 三、运行环境 (3) 四、设计概要 (3) 五、详细设计 (5) 六、停止游戏 (8)

贪吃蛇 一、设计背景 随着科技的发展,笔记本、手机的价格相对于以前下降很多,现在很多普通人也可以使用笔记本、智能手机。笔记本、手机不再只是主要用来办公、接打电话。更多的用户希望在工作、学习之余通过方便灵巧可随身携带的设备休闲娱乐。因此,为了迎合众多用户的需求并适应用户要求,开发具有很强的娱乐性和交互性的贪吃蛇小游戏。可以说该游戏的优势在于它的简单易行,不论是笔记本、iPad,还是智能手机,都能很快顺利的运行。在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。这款小型的游戏,可以让我们随时随地都能享受游戏。让我们从繁重的日常生活中解脱出来。游戏的主界面应该力求简单,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。由于本程序简单易操作,交互性好,对用户没什么特别要求。一般用户经过几分钟练习都可以熟悉本游戏的规则。 二、需求分析 贪吃蛇游戏是一个小型益智游戏,它可以锻炼人们的反应能力,尤其是在开发人的智力方面,很受人们的欢迎。本组该次小游戏程序设计包含二维数组、鼠标操作及图形化函数等方面知识。具体需求概

要如下: 1.初始化游戏界面为700*600大小。 2.在HTML中用格子初始蛇长及蛇的位置,用上、下、左、右控制方向进行游戏。游戏过程中,每吃到一次食物蛇身增加一格,分数加10分。 3.蛇头咬到蛇尾或蛇头接触边框,则停止游戏,显示累计分数,游戏结束。 三、运行环境 本程序对硬件配置要求不高,只需要设备支持HTML5即可。适合在笔记本、iPad、智能手机运行。 四、设计概要 1.初始化模块: 屏幕初始化,屏幕初始化用于显示游戏信息; 2.游戏界面模块: 设计灰色的边框,边框内用白色灰框格子填充作为游戏活动区域;3.游戏运行模块: 运用函数控制蛇长及食物的关系,并使用键盘控制方向,空格键暂停(继续)。 4.判断模块: 头咬到尾或头接触活动区域外围,则游戏结束,显示累计分数。

java课程设计贪吃蛇游戏设计

前言 Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

【完整版毕业论文】家用垃圾分类系统

家用垃圾分类系统 摘要 随着社会科学技术的飞速发展,人们的生活质量和速度也在不断提高。大多数传统的家用垃圾桶已经过时且缺乏新颖性,并且缺乏人性化设计。使用起来既不方便也不卫生,并且所有的生活垃圾和废物垃圾都被均匀地装载,没有经过仔细的分类。随之而来的是,清洁工的任务量正以几何速度增长,并且浪费大量时间检查垃圾的种类以及往返检查的过程中。在提倡效率和尽可能减少劳动时间的时代,人们越来越依赖于科学技术进步带来的便利。为了更好地解决此类问题,设计了一种以STC89C52单片机为核心的智能垃圾分类收集系统。该系统应由以下部分组成:语音识别模块会根据用户发出的指令自动对垃圾分类,AD收集语音信息,驱动相应的伺服电机根据垃圾类型旋转,打开相应的垃圾收集区域,并在十秒钟后自动重置。采用本系统不仅节省了大量的人力,物力和财力,而且有效地降低了垃圾进入站后的分类处理难度,具有较高的应用价值。 关键词:垃圾分类,单片机,语音识别,电机控制

DOMESTIC WASTE SORTING SYSTEM ABSTRACT With the rapid development of social science and technology, people's quality of life and speed are also constantly improving. Most of the traditional household trash cans are outdated and lack novelty, and they lack human design. It is neither convenient nor hygienic for people to use, and all domestic garbage and waste garbage are uniformly loaded without careful classification. What follows is that the task volume of cleaners is increasing at a geometric speed, and a lot of time is wasted in checking the types of garbage and on the way to and from the inspection. At the moment when efficiency is advocated and labor production time is reduced as much as possible, people increasingly rely on the convenience brought by scientific and technological progress. In order to better solve this kind of problem, an intelligent garbage separation and collection system with STC89C52 single-chip microcomputer as the core is designed. This system should be composed of the following parts. The voice recognition module automatically classifies the garbage according to the instructions issued by the user. AD collects voice information, drives the corresponding servo to rotate according to the type of garbage, opens the corresponding garbage collection area, and resets automatically after ten seconds. Adopting this system not only saves a lot of manpower, material resources and financial resources, but also effectively reduces the difficulty of sorting and processing after the garbage enters the station, and has high application value. KEYWORDS:waste sort,mcu,voice re cognition,motor control

贪吃蛇课设

唐山学院 一、设计题目、内容及要求 题目:贪吃蛇游戏程序设计 内容:游戏开始时弹出初始菜单,游戏者按任意键进入游戏。游戏者用←↓→↑键来控制蛇在游戏场景内运动,每吃到一个食物,游戏者得10分,分数累加结果会在计分板上显示;与此同时蛇身长出一节。当贪吃蛇的头部撞击到游戏场景边框或者蛇的身体时游戏结束,并显示游戏者最后得分。 要求:程序结构合理、算法准确、语法正确,并生成可执行文件。 C语言程序设计课程设计 题目贪吃蛇游戏程序设计 系(部) 信息工程系 班级电信4班 姓名康林林 学号4130220436 指导教师 2014年2 月24 日至 3 月7 日共 2 周 2014年3月7 日

二、要求的设计成果(课程设计说明书、设计实物、图纸等) 1. 课程设计说明书:课程设计说明书1份,不少于2000字。说明书中要包含需求分析、总体设计、详细设计以及主要的算法描述等内容。 2. 源代码:程序清单 三、进程安排 2.24-2.5:完成需求分析和程序总体设计。 2.26-2.27:完成数据录入、删除、修改、插入和浏览功能模块的设计。 2.28- 3.3:程序调试无误,生成可执行文件。 3.4-.5:撰写课程设计说明书初稿。 3.6-3.7:提交课程设计说明书、程序和数据。 四、主要参考资料 [1] 谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:高等教育出版社, 2006 [2] 吕凤煮.C语言基础教程——基础理论与案例[M].北京:清华大学出版社, 2005 [3] 黄明、梁旭、万洪莉.C语言课程设计[M].北京:电子工业出版社,2006 [4] 郭宁,郑小玲.管理信息系统[M].北京:人民邮电出版社,2006 [5] 赵池龙,杨林,陈伟.实用软件工程[M].北京:电子工业出版社,2006指导教师(签名):教研室主任(签名): C语言程序设计课程设计任务书 课程设计成绩评定表

Java课程设计之贪吃蛇

Java课程设计之贪吃蛇 安阳工学院计算机学院 JAVA课程设计报告 专业班级: 学生姓名: 学生学号: 小组成员: 指导教师姓名: 宋强 目录 一选题目的与系统概述 (1) 1.1选题目的 (1) 1.2系统概述.................................................................................1 二系统可行性分析与相关技术背景分析 (2) 2.1系统可行性分析 (2) 2.2相关技术背景分析.....................................................................2 三系统设计与关键技术 (3) 3.1系统设计 (3) 3.2关键技术.................................................................................5 四系统测试与操作实施方法.........................................................9 五系统设计总结与回顾 (11) 六参考文献 (12) 一、选题目的与系统概述 1.1 选题目的 贪吃蛇游戏是一款非常经典的游戏,因为它比较简单有趣,无论老少都比较适合。贪吃蛇的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个贪吃蛇游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 正是因为如此,本次设计的目的在于学习Java程序设计基本技术,学习用Netbeans开发Java程序的相关技术,熟悉游戏“贪吃蛇”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握Netbeans环境的使用方法,培养起初步的项目分析能力和程序设计能力。 1.2 系统概述 1.2.1 设计的主要内容 贪吃蛇游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制模块。在此只实现游戏的游戏主界面模块、游戏控制模块。可实现开始、暂停、改变速度,更换颜色等功能。 1.2.2 设计要达到的目标 本次设计要达到的目标分别从以下模块进行阐述: 游戏主界面模块: 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏场景、状态栏、颜色设置、网格模式、及相关提示信息等。从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的开始、暂停等功能。为了能

公共垃圾箱的设计

毕业论文(设计)任务书题目:垃圾箱的设计 院系:培黎工程技术学院 学生姓名:苏小霞 指导教师:于国红 起讫日期: 2011年12月至2012年5月

摘要 随着社会经济的日益发展,社会竞争也越发激烈,人们开始追求越发简单快捷的生活方式,生活垃圾、工业垃圾也因此增多,为了环保以及给人类提供方便,我特选此题。 由生活垃圾造成的污染一直是中国最严重的社会公害之一,如何科学合理的收集和处理垃圾,避免其对环境造成污染是长期以来难以解决的问题。各种各样的公共垃圾箱,毫不起眼而又不可或缺,它们都直接影响着垃圾回收的效率,也影响着我们赖以生存的环境。本文将分析现有公共垃圾箱的设计缺陷并对存放有害物质的地方和扔垃圾的入口处进行了一些改良的设计,希望通过发挥设计者的聪明才智,能为广大群众带来方便,让环境更加优美,社会更加和谐! 关键词:公共垃圾箱;回收;缺陷;有害;改良。

目录 0.1垃圾箱的特点及其应用…………………………………………………….. 0.2垃圾箱的分类……………………………………………………………………….. 0.3垃圾箱的发展……………………………………………………………………….. 第一章设计任务的提出……………………………………………………………….. 第二章设计调查…………………………………………………………………………….. 2.1垃圾箱的结构……………………………………………………………………….. 2.2垃圾箱的颜色……………………………………………………………………….. 2.3调查资料分析……………………………………………………………………….. 第三章垃圾箱设计思路与方向………………………………………………….. 第四章垃圾箱的人机工程学分析…………………………………………….. 4.1尺寸………………………………………………………………………………………….. 4.2形状………………………………………………………………………………………….. 4.3摆放………………………………………………………………………………………….. 第五章垃圾箱设计中的防破坏理念和无盖化启示....... 第六章设计构思…………………………………………………………………………….. 第七章设计方案分析…………………………………………………………………….. 7.1产品的功能分析…………………………………………………………………….. 7.2产品方案的形态分析…………………………………………………………….. 7.3产品方案的色彩分析……………………………………………………………..

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计 (小游戏贪吃蛇的程序设计报告)

设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C 语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。

贪吃蛇游戏详细设计说明书

详细设计说明书 1 引言 1.1 编写目的 本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。 本说明书预期的读者是软件开发小组的产品实现人员。 1.2 背景 说明: 系统名称:贪吃蛇游戏 任务提出者:手机策划人员 开发者:软件开发小组的产品实现人员 用户:NOKIA手机用户 运行该程序系统的计算中心:NOKIA手机芯片 1.3 定义 1.节: 一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。节是蛇身上最小的单位。 2.链表: 用来保存每一段的状态,链表的元素单位是节。且链表的第一个元素表示蛇的头部。 3.坐标系: 以左上角那点为(0,0),向右则x递增,向下则y递增。 1.4 参考资料 张海藩:《软件工程导论》第五版清华大学出版社 肖刚等:《实用软件文档写作》清华大学出版社

2 程序系统的组织结构 2.1每个模块和子程序的名称、标识符: 1Ground类: 1)private int TYPE; 2)public int[][] rocks=new int[Global.WIDTH][Global.HEIGHT]; 3)public void setGround(int type){} 根据不同的Type值将rocks的不同下标的元素设为1,其他元素为0。 4)public boolean isSnakeEatRock(Snake snake){} 判断蛇头的所在的位置在数组rocks中的值是否为1,如果是1,则表示蛇吃 到了石头,返回TRUE,否则返回FALSE。 5)public Point getPoint(){} 产生一组随机数(x,y),是食物的坐标 6)public void drawMe(Graphics g){} 将数组rocks中值为1的元素填充为石头颜色。 2Snake类: 1)public static int x,y; 2)private int oldDirection,newDirection; 用于判断newDirection和oldDirection是否为相反方向,用于选取有效方向。 3)private Point oldTail; 用于判断蛇头是否和蛇身的某个节点的坐标重合,即蛇是否吃到自己。 4)public LinkedList body=new LinkedList(); 5)public void die(){} 设置变量life=FALSE;使控制进程的条件为假,进程结束。 6)public void move(){} 实现蛇身沿着蛇头的轨迹移动 7)public void changeDirection(int direction){} 根据方向键,改变蛇头的x、y的值,即改变方向 8)public void drawMe(Graphics g){}//把属于蛇的格子画出来 9)private class SnakeDriver implements Runnable{}//蛇不停走动 3Food类: 1)public void drawMe(Graphics g){} 根据产生的一组随机坐标,在其坐标处画出食物 4Controller类: 功能:处理按键事件及鼠标点击事件,处理逻辑。根据不同的情况向Snake,Food,Ground发出不同的命令。 实现接口snakeMoved,蛇每移动一步,就要判断一次,蛇是否吃到石头、是否吃到自己,是的话就snake.die()并停止计时;不是则不进行任何操作。如果吃到食物,就要加分、重画食物、蛇身加长。 实现(N)NewGame功能、(E)Exit功能、(R)Resume功能、(L)LowLevel功能、(H)HighLevel功能、(P)Pause功能。 5GamePanel类: 功能:画出Snake,Food,Ground,并实现重新显示

相关文档
相关文档 最新文档