文档库 最新最全的文档下载
当前位置:文档库 › 实验四 贪吃蛇—蛇类(Snake)设计与实现

实验四 贪吃蛇—蛇类(Snake)设计与实现

实验四  贪吃蛇—蛇类(Snake)设计与实现
实验四  贪吃蛇—蛇类(Snake)设计与实现

任务4 贪吃蛇—蛇类(Snake)设计与实现

【实验目标】

1.熟悉GDI+绘图;

2.会使用动态数组ArrayList;

3.会使用Try和Catch捕获异常;

4.会用IEnumerator接口;

5.会编写蛇类的成员代码。

【实验内容】

完成蛇类的创建,蛇类的成员主要包括构造函数、蛇序数属性、蛇位置属性、显示蛇和消除蛇的方法。完成如下代码:

重新开始游戏、只读蛇头位置属性、只读蛇是否碰到墙或碰到自身属性、蛇的运行方向属性、蛇的转向方法、蛇增长方法。

【蛇(Snake)类分析】

(1)蛇由多个块组成,所以要包含一个整型数据,保存蛇头的编号即蛇的长度;

(2)要有一个Point对象,保存蛇头的位置;

(3)要有一个ArrayList对象,用于存放组成蛇的所有块;

(4)蛇在场地运动,要用一个整型数据标识它的运动方向;

(5)蛇要在场地中不断移动,如果蛇吃了豆,它自身要增长一块;

(6)蛇的运行过程,就是蛇的不断显示过程;

(7)在蛇消失时,要把块消除掉;

(8)蛇运行过程中要不断地改变方向;

(9)如果蛇头碰到了它自身,蛇就要死亡即程序结束。

【蛇(Snake)类代码编写】

1.创建空白蛇类

创建蛇的空白类,代码如下:

using System;

using System.Drawing;

namespace贪吃蛇

{

///

///Snake的摘要说明。

///

public class Snake

{

}

}

2.蛇类主要成员—字段

在蛇类中,有1个动态数组、3个字段,其中blockList、direction和headNumber 只在蛇类内部使用。

ArrayList blockList; //声明一个动态数组blockList

private int headNumber; //蛇头序数或蛇长度

private Point headPoint; //蛇头位置(左上角坐标)

private int direction = 1; //0,1,2,3分别代表上、右、下、左

3.蛇类主要成员—构造函数

public Snake(Point vertex, int count)

(1)功能

根据游戏开始时蛇运动的默认方向和给定的参数,确定组成蛇的各块的位置,然后把各块添加到blockList中去;并初始化蛇的长度(蛇头的序数)字段headNumber 和蛇头位置字段headPoint。

(2)设计思路

首先创建一个ArrayList对象blockList,并实例化为count个元素,然后根据游戏开始时蛇运动的默认方向和给定场地位置参数vertex,确定蛇的开始位置,最后通过一个转count圈的循环,依次找到组成蛇的各块,把它们存入blockList 数组中,其他字段赋值即可。

(3)Snake构造函数代码

1)Snake构造函数流程图

开始

点PX坐标+5

实例化新块bb

设置bb的位置为P

设置bb块的序数为i+1

把块添加到blockList

i == count -1

Y

蛇头位置赋值

N

结束

2)Snake构造函数代码

添加无参数的构造函数:

public Snake()

{

//

// TODO: 在此处添加构造函数

//

}

添加有vertex和count参数的构造函数:

public Snake(Point vertex, int count)

{

Block bb;

Point p = new Point(vertex.X + 25, vertex.Y + 25); //定义起始位置blockList = new ArrayList(count); //初始数组长度为count

for (int i = 0; i < count; i ++) //通过循环填充blockList

{

p.X = p.X + 5; //x坐标加

bb = new Block(); //实例化新块

bb.Origin = p; //块的位置赋值

bb.Number = i + 1; //蛇中块序数从蛇尾开始序号

blockList.Add(bb); //把块添加到blockList中

//如果是蛇头就把位置(顶点)赋给headPoint

if (i == count -1)

{

headPoint = bb.Origin; //给蛇的头位置赋值

}

}

headNumber = count; //给蛇头序数(蛇长度)赋值}

【程序分析】

1.创建ArrayList对象并实例化

ArrayList blockList = new ArrayList(count);

在这里是把这条语句分开写为以下2条语句:

ArrayList blockList; //声明(创建)一个动态数组blockList对象

blockList = new ArrayList(count); //实例化blockList,初始数组长度为count

2.开始蛇的第一块位置

Point p = new Point(vertex.X + 25, vertex.Y + 25); //定义起始位置3.创建块并给属性赋值

Block bb;

------

p.X = p.X + 5; //x坐标加

bb = new Block(); //实例化新块

bb.Origin = p; //块的位置赋值

bb.Number = i + 1; //蛇中块序数从蛇尾开始序号说明:实例化新块可以把下面两条语句:

Block bb;//创建新块bb对象

bb = new Block(); //实例化新块

写为一条语句:

Block bb = new Block(); //创建新块bb对象,并实例化新块4)把块添加到blockList中

blockList.Add(bb); //把块添加到blockList中

开始

定义新块bb

定义并实例化点

p(vertex.X + 25, vertex.Y + 25)

实例化blockList[count]

定义i=0

N

i<=count?

Y

块添加到blockList中

i=i+1

headNumber=count

结束

4.蛇类主要成员—属性

为了判断蛇是否碰撞到它自身,增加了一个只读属性getHitSelf属性,故设置了三个个属性。

(1)getHeadPoint属性

在蛇类外只需要读取蛇头位置(左上角坐标)headPoint字段的值,把它的属性设计为只读属性。

public Point getHeadPoint //只读蛇头位置属性

{

get { return headPoint; }

}

(2)Direction属性

蛇在场地运动,要用一个direction整型数据标识它的运动方向,把它的属

性设计为读写属性。

public int Direction //蛇的运行方向属性

{

get { return direction; }

set { direction = value; }

}

(3)getHitSelf属性

设置此属性的目的是判断蛇在运行过程中是否碰撞到了它自身,如果蛇碰撞到了它自己,蛇就死亡,游戏结束。在这个属性中,只要读取结果,所以设计成只读属性。

通过一个循环,遍历所有组成蛇的块,判断非蛇头块的位置是否与蛇头的位置相同,如果有相同的,就是蛇碰撞到它自身,否则,没有碰撞到它自身。

流程图如下:

getHitSelf属性代码如下:

public bool getHitSelf //只读蛇是否碰到墙或碰到自身属性{

get

{ //定义并实例化枚举接口

IEnumerator myEnumerator = blockList.GetEnumerator();

try

{

while ( myEnumerator.MoveNext() ) //通过循环遍历蛇的各块

{

Block b = (Block)myEnumerator.Current; //读取当前块

//当前块不是蛇头且与蛇头位置相同

if (b.Number != headNumber && b.Origin.Equals(headPoint))

{

return true; //返回true

}

}

}

catch(Exception e)

{

System.Console.WriteLine(e.ToString());

}

return false; //返回false }

}

【程序分析】

定义一个IEnumerator接口变量myEnumerator,并由blockList的GetEnumerator 方法初始化它。

IEnumerator myEnumerator = blockList.GetEnumerator();

通过一个循环,遍历所有组成蛇的块,判断非蛇头块的位置是否与蛇头的位置相同,如果有相同的,就是蛇碰撞到它自身,否则,没有碰撞到它自身。

while ( myEnumerator.MoveNext() ) //通过循环遍历蛇的各块

{

Block b = (Block)myEnumerator.Current; //读取当前块

//当前块不是蛇头且与蛇头位置相同

if (b.Number != headNumber && b.Origin.Equals(headPoint))

{

return true; //返回true

}

}

读取myEnumerator的Current属性来获得当前元素,既读取当前块。

Block b = (Block)myEnumerator.Current;

判断组成蛇的其他块与蛇头的位置是否相同,可用Point.Equals(point headPoint)方法,如果结果为true,两块的位置相同,否则两块的位置不

同。

if (b.Number != headNumber && b.Origin.Equals(headPoint))

{

return true; //返回true

}

本属性也可以定义成方法,基本原理相同。这里将它处理成属性,只是为了让大家了解属性不仅能完成对字段的存取处理,也可以完成其它功能。

5.蛇类主要成员—方法

在蛇类中,相比较而言方法都比较复杂,所以这部分是蛇类的重点。

(1)蛇显示方法(Display)

1)功能:在蛇的运行过程中显示蛇。

2)设计思路:把显示在场地上蛇的最后一块消除掉,且把蛇原来的最后一个块从blockList中移出,然后遍历blockList中的所有块,把它们输出,当找到头块,根据当前的运动方向,在头块前增加一个新块,作为新的头块,并显示它,最后显示原头块。

3)程序及流程图

本方法是显示蛇方法,不管是新块还是老块都要显示出来。蛇显示方法(Display)流程图如下:

蛇显示方法(Display)代码如下:

public void Display(Graphics g) //显示蛇方法,参数为图形对象{

try

{

Block b=new Block(); //定义并初始化新块b

b=(Block)blockList[0]; //取出blockList的第一个元素给b

b.UnDisplay(g); //消除b块显示

blockList.RemoveAt(0); //从blockList中移出第一块

Block bb = new Block(); //定义新块并初始化

//定义枚举接口变量并初始化

IEnumerator myEnumerator = blockList.GetEnumerator();

while ( myEnumerator.MoveNext() ) //通过循环遍历数组

{

b = (Block)myEnumerator.Current; //读取当前块并给b

b.Number--; //当前块的序数属性值减

//如果是最后一块,前面增加一块

if (b.Number == (headNumber - 1))

{

int x = b.Origin.X;

int y = b.Origin.Y;

switch(direction)

{

case 0:

y = y - 5;

break;

case 1:

x = x + 5;

break;

case 2:

y = y + 5;

break;

case 3:

x = x - 5;

break;

} //由坐标构造头位置点

Point headP = new Point(x, y); //在头块前增加一个新块

bb.Origin = headP;

bb.Number = headNumber;

bb.Display(g); //显示新的头块

headPoint = bb.Origin; //重新指定蛇头的点

}

b.Display(g); //显示原头块

}

blockList.Add(bb); //把新的头块添加到blockList里面}

catch (Exception e)

{

System.Console.WriteLine(e.ToString());

}

}

【程序分析】

BlockList是ArrayList对象,可以通过访问数组的方法来访问,把它的第一个元素读出并给块b。

b=(Block)blockList(0);

从blockList中移出(消除)第一个元素用它的RemoveAt(元素索引号)方法。

blockList.RemoveAt(0);

由于蛇尾块被消除了,blockList中各块的序数要依次改变为它原来的序数减1,所以在遍历其他块找蛇头时,要把每块的序数属性取出处理。

开始

读取当前块位置X

读取当前块位置Y

根据蛇方向改变坐标

由坐标构造头位置点

给新块的位置属性值

给新块的序数属性值

显示新块

蛇头位置赋值

结束

(2)蛇消除方法(UnDisplay)

当蛇死亡即程序结束后,如果要重新开始,必须把死蛇给消除掉,就要用此方法。

1)功能:消除场地上的死蛇。

2)设计思路:通过循环,遍历整个blockList,调用块的消除方法UnDisplay 把场地上的死蛇消除掉。

蛇消除方法(UnDisplay)流程图如下:

开始

M o v e N e x t ()

用C u r r e n t 得到当前块

结束

F

T

定义新块b b 并实例化定义并用b l o c k L i s t 实例化

枚举接口变量

消除当前块

蛇消除方法(UnDisplay )代码如下:

public void UnDisplay(Graphics g) //消除蛇方法 { try { Block bb = new Block (); //定义并实例化新块 //定义枚举接口变量并实例化 IEnumerator myEnumerator = blockList.GetEnumerator(); while ( myEnumerator.MoveNext() ) //通过循环遍历数组 { Block b = (Block )myEnumerator.Current; //读取当前块 b.UnDisplay(g); //消除当前块 } } catch (Exception e) { System.Console .WriteLine(e.ToString()); }

}

(3)转向方法(TurnDirection )

1)功能:根据当前蛇的运行方向和传递来的参数来设置蛇的新运动方向。 2)设计思路

根据蛇原来的运动方向(direction ),结合键盘的上、下、左、右键的按键

操作,利用多分支语句(switch),分别判断蛇的最终运动方向。

3)转向方法(TurnDirection)代码

//蛇的转向方法,参数为蛇要改变方向

public void TurnDirection(int pDirection)

{

switch(direction)

{

case 0: //原来方向向上

if (pDirection ==3) //如果改变方向为左

direction = 3;

else if (pDirection == 1) //如果改变方向为右

direction = 1;

break;

case 1: //原来方向为右

if (pDirection == 2) //如果改变方向向下

direction = 2;

else if (pDirection == 0) //如果改变方向向上

direction = 0;

break;

case 2: //原来方向向下

if (pDirection == 3) //如果改变方向为左

direction = 3;

else if (pDirection == 1) //如果改变方向为右

direction = 1;

break;

case 3: //原来方向为左

if (pDirection == 2) //如果改变方向向下

direction = 2;

else if (pDirection == 0) //如果改变方向向上

direction = 0;

break;

}

}

(4)蛇生长方法(Growth)

1)功能:当蛇吃到一粒豆后,蛇就要在它的当前头前增加一块即蛇增长。

2)设计思路

找到蛇头,根据蛇的运行方向,在蛇头前面增加一个块。即通过一个循环,遍历blockList中的各块,找到蛇头,然后在它前面增加一块。遍历blockList中各

块的方法与上面getHitSelf 属性中相同;在蛇头前增加一块的位置由原来的蛇头块位置和蛇的运动方向决定。

3)蛇生长方法(Growth )流程图

开始定义新块b b 定义并用b l o c k L i s t 实例化枚举接口变量

M o v e N e x t ()

用C u r r e n t 得到当前块

结束

F

T

b l o

c k L i s t 中添加块

当前是蛇头?

N

Y

开始

读取当前块位置X

读取当前块位置Y 根据蛇方向改变坐标由坐标构造头位置点给新块的位置属性值结束

给新块的序数属性值蛇头位置赋值

把块添加到b l o c k L i s t

h e a d N u m e r 加1

4)蛇生长方法(Growth )代码

public void Growth() //蛇增长方法 { Block bb = new Block (); //定义并实例化新块 //定义并实例化枚举接口变量 IEnumerator myEnumerator = blockList.GetEnumerator(); try { while ( myEnumerator.MoveNext() ) //通过循环遍历当前蛇中块 { Block b = (Block )myEnumerator.Current; //读取蛇的当前块 if (b.Number == headNumber) //如果当前块是蛇头 { int x = b.Origin.X; //读取当前块即蛇头的位置坐标 int y = b.Origin.Y; switch (direction) //根据当前运动方向设置新块坐标 { case 0: //向上y 坐标减 y = y - 5;

break;

case 1:

x = x + 5;

break;

case 2:

y = y + 5;

break;

case 3:

x = x - 5;

break;

}

Point headP = new Point(x, y); //由坐标构造头位置点

bb.Origin = headP; //把点赋给新块的位置属性

//当前块的序数+1赋给新块的序数属性

bb.Number = b.Number + 1;

blockList.Add(bb); //把新块添加到blockList中

headNumber ++; //头块的序数(蛇的长度)增加

headPoint = headP; //给头位置赋新值

}

}

}

catch(Exception e)

{

System.Console.WriteLine(e.ToString());

}

}

(5)重新开始游戏(Reset)

重新开始游戏Reset(Point vertex, int count)与蛇类的构造函数Snake(Point vertex, int count)相似,根据游戏开始时蛇运动的默认方向和给定的参数,确定组成蛇的各块的位置,然后把各块添加到blockList中去;并初始化蛇的长度(蛇头的序数)字段headNumber 和蛇头位置字段headPoint。

重新开始游戏(Reset)代码如下:

public void Reset(Point dian, int count) //重新开始游戏{

Block bb;

Point p = new Point(dian.X + 25, dian.Y + 25);

blockList = new ArrayList(count);

for (int i = 0; i < count; i ++)

{

p.X = p.X + 5;

bb = new Block();

bb.Number = i + 1;

bb.Origin = p;

blockList.Add(bb);

//如果是蛇头就把顶点赋给headPoint

if (i == count -1)

{

headPoint = bb.Origin;

}

}

headNumber = count;

direction = 1; //方向

}

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

辽宁科技大学课程设计说明书 设计题目:基于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/ec247796.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

基于单片机的贪吃蛇设计

基于单片机的贪吃蛇设计 本篇论文主要是设计并且着手致力于实现一种基于51单片机的经典的贪吃蛇游戏,主要是研究该游戏的硬件电路和软件编程的设计,同时也简单介绍了应该如何使用Proteus软件进行仿真。借助仿真软件进行实验测试,可以基本实现游戏一些简单的基本功能。直至现在,大家都知道且明白了51系列的单片机技术相对而言比较成熟,功能也十分强大,应用较为广泛。将单片机作为本设计的控制核心,能够使硬件电路大大地简化,用软件来编程控制单片机,来加以实现硬件电路的功能,可以降低能耗,同时也节约成本。选用C语言编程,比较方便灵活,极大地加快了软件开发的速度,使开发周期缩短了,同时方便移植。本篇论文比较详细的的介绍了各种硬件的基本特性,贪吃蛇游戏实现的基本功能与详细设计,软件设计的具体说明,每一个模块的细节要求,还有一些功能模块的程序流程图和关键部分代码的详细讲解等。 关键词:Proteus软件仿真;51单片机;Keil;贪吃蛇;LED点阵屏

目录 1 绪论 (1) 1.1研究背景及意义 (1) 1.2单片机发展状况 (1) 1.3 LED发展状况 (2) 1.4 设计特点 (3) 2 系统总体设计 (3) 2.1设计要求 (3) 2.2 系统设计方案 (4) 2.2.1硬件设计 (4) 2.2.2软件设计 (4) 3系统硬件设计 (4) 3.18*8LED点阵的原理说明 (4) 3.2 LED阵列驱动电路 (4) 4系统软件设计 (5) 4.1系统主要模块介绍 (5) 4.1.1 主函数模块 (6) 4.1.2 按键模块 (6) 4.1.3 蛇运动控制模块 (6) 4.2主程序工作流程 (6) 4.3 游戏设计思想 (7) 4.4 LED点阵初始化 (8) 4.5 贪吃蛇的移动 (9) 4.6 食物的随机出现 (9) 5联调与测试 (9)

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 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

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 公司开发的两线式

贪吃蛇课设

唐山学院 一、设计题目、内容及要求 题目:贪吃蛇游戏程序设计 内容:游戏开始时弹出初始菜单,游戏者按任意键进入游戏。游戏者用←↓→↑键来控制蛇在游戏场景内运动,每吃到一个食物,游戏者得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语言程序设计课程设计任务书 课程设计成绩评定表

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

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固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();//图形驱动

Android贪吃蛇课程设计报告

XXXX学院 计算机科学系 《Android程序设计》课程设计报告 题目:贪吃蛇 专业:计算机科学与技术 ! 班级: B11计科班 学号: 0 姓名:凌波微步 Q Q :25 指导教师: , 2014年6月

, 目录 第一章绪论 (2) 游戏简介 (2) 开发目的及意义 (3) 开发环境及工具 (3) 第二章需求分析 (4) 游戏界面分析 (4) 游戏角色分析 (4) — 游戏控制分析 (4) 第三章总体设计 (5) 系统功能模块层次图 (5) 运行机制 (6) 贪吃蛇功能流程图 (7) 第四章详细设计与实现 (9) SnakeActivity类 (9) MyTile类 (10) : NextActivity类 (18) SysApplication类 (19) 界面设计 (20) 第五章测试 (26) 功能测试 (26) 测试结果 (27) 第六章结论 (27)

第一章绪论 @ 游戏简介 贪吃蛇游戏是一款手机游戏,同时也是一款比较需要耐心的游戏。贪吃蛇游戏是一条蛇,不停地在手机屏幕上游走,吃在手机屏幕上出现的食物。当蛇吃掉1个食物后会变长,并且吃完食物时食物会消失,并立即随机生成1个新的食物,只要蛇头碰到屏幕四周或者碰到自己的身子,蛇就立即毙命。 开发目的及意义 通过本次课程设计,了解android软件的开发过程,熟悉并掌握JAVA语言,程序关键在于表示蛇的图形及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用一节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动。意义是方便人们在休闲时通过玩手机游戏获得一点快乐,同时锻炼自己的大脑。 开发环境及工具 在Window8下进行,采用eclipse开发工具,基于安卓操作系统。 环境搭建: 1. JDK安装 [ 2. Eclipse安装 3. Android SDK安装 4. ADT安装创建AVD

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

C语言贪吃蛇

------------ 大学 C语言程序设计课程设计(论文)题目:贪吃蛇 院(系): 专业班级: 学号: 学生姓名: 指导教师: 教师职称: 起止时间:

课程设计(报告)任务及评语 院(系):教研室: 学号学生姓名专业班级 程序设计 (报告) 题目 贪吃蛇 程序设计(报告)任务 程序设计的任务与要求: (1)掌握C语言编程的基础知识。 (2)较熟练地编写C语言应用程序。 (3)了解C语言的常用标准函数、编程技巧、异常处理。 (5)联系已学过的内容,巩固所学的理论,增强独立工作能力。 (6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 指 导 教 师 评 语 及 成 绩 成绩:指导教师签字: 2011年 1 月 4 日

目录 第1章 C语言课程设计的实训目的与要求 (1) 1.1 C语言课程设计目的 (1) 1.2 C语言课程设计的实验环境 (1) 1.3 C语言课程设计的预备知识 (1) 1.4 C语言课程设计要求 (1) 第2章 C语言课程设计内容 (2) 2.1程序功能介绍 (2) 2.2程序整体设计说明 (2) 2.2.1设计思路 (2) 2.2.2数据结构设计及用法说明 (3) 2.2.4各模块的功能及程序说明 (7) 2.2.5程序结果 (8) 2.3程序源代码及注释 (10) 第3章 C语言课程设计总结 (17) 参考资料.. (20)

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,并实现重新显示

单片机贪吃蛇课程设计报告模板

电气与信息工程学院 单片机课程设计报告 设计题目:基于单片机的贪吃蛇设计 2016 年11月22 日 一、设计任务及要求 基本功能: 制作一个8*8点阵的贪吃蛇游戏,系统以单片机的C语言的软件设计,系统通过LED

点阵屏为载体显示数据,并用五个输入端表示五个控制键(上下左右及加速)。系统硬件部分由STC89C52RC单片机,8*8点阵屏,5个按键,软件部分在keil环境下用C51语言编写,包括游戏初始化蛇的节数,以及障碍墙壁,游戏结束时自动复位。 具体要求: 1、用四个按钮控制贪吃蛇的行径,一个按钮控制贪吃蛇的加速,蛇的初始长度为2点,设置墙壁。 2、蛇吃到长度为1点的食物时,自身长度增加1点。 2、速度按钮带有一次加速,按两下速度按钮蛇的行进速度回到初始值。 3、当蛇碰到墙壁或自己的身体时游戏结束。 4、用proteus设计,仿真基于STC89C52RC单片机的8x8点阵贪吃蛇的硬件电路。 5、游戏结束,系统自动复位。 二、硬件电路设计 本系统以STC89C52RC为核心,设置12MHz的晶振,使得单片机有合理的运行速度。LED 点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。五个独立按键控制蛇的游走方向(上下左右)和加速减速的功能。贪吃蛇是一款经典的小游戏,玩家通过按键操控贪吃蛇不断地吃食物,蛇身逐渐伸长,当蛇碰到蛇身和墙壁时游戏结束。 需要注意的是实际元件中,点阵的封装不尽相同,因此需要测试出每个引脚的功能,以便正确连线。注意,每个像素点的额定电压在3v左右,电压过大将会彻底损坏。

java贪吃蛇课程设计

1设计目的 1.1背景 近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,特别是Java与万维网的完美结合,使其成为网络编程和嵌入式编程领域的首选编程语言。JBuilder是Borland公司用于快速开发Java应用的一款优秀的集成开发环境,它以其友好的开发界面、强大的组件支持等优点,得到广大程序员的接受和认可。 “贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Java技术和JBuilder开发环境,开发了一个操作简单、界面美观、功能较齐全的“贪吃蛇”游戏。整个游戏程序分为二个功能模块,六个类模块,实现了游戏的开始、暂停、结束。通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 本文在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个生命周期的各个开发阶段进行了详细地介绍。首先,分析了开发本游戏软件的可行性,重点分析本设计所采用的技术的可行性。其次,从游戏主界面等几方面,分析了本游戏的功能需求;从可使用性和安全性方面分析了属性需求。然后,进行了游戏的概要设计和详细设计,这也是本文的重点。概要设计给出二个功能模块的主框架以及六个类模块的函数调用关系;详细设计介绍了Java2标准运行环境的配置,重点给出各个类模块的程序流程图以及UML图,列表介绍了各个类包含的变量、使用的方法,展示了游戏的界面。为了保证程序代码的正确性和功能实现的可靠性,本文还介绍了游戏软件的程序调试过程和功能测试结果。 1.2目标 本软件是针对贪吃蛇小游戏的JAVA程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2 总体设计 2.1 设计思路 本系统主要是完成贪吃蛇游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求: (1) 利用方向键来改变蛇的运行方向。 (2) 空格键暂停或继续游戏,并在随机的地方产生食物。 (3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。 2.2 设计说明 本系统共包括1个java源文件和7个类文件。

基于C语言的贪吃蛇游戏开发与设计

计算机科学与技术学院 学年设计说明书(论文) 作者:呼斯勒都仍 学号:159040642003 院系:计算机科学与技术学院(软件外包) 专业:计算机科学与技术 题目:基于C语言的贪吃蛇游戏开发与设计

目录前言 第一章概述 1.1中国手机游戏产业现状 1.2中国手机游戏的未来展第二章开发工具的简介 2.1可行性分析 2.2 功能性分析 第三章 3.1概要设计 3.1功能介绍 3.2概要设计图 第四章详细设计 第五章

前言 C语言是目前世界上流行、使用最广泛的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。 常用的编译软件有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C,等等...... C语言的发展历史 C语言的发展颇为有趣。它的原型ALGOL 60语言。 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统 而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE 在B语言的基础上最终设计出了一种新的语言,他取了BGPL的第二个字母作为这种语言的名字,这就是C语言。 为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。 1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言

贪吃蛇详细设计说明书

贪吃蛇_详细设计说明书 编写人: 完成日期:X年X月X日 文档名称:详细设计规格说明书 1

项目名称:贪吃蛇游戏 项目负责人:XXX XXX 编写 TEST __X___年_X_月___X_日 校对所有小组成员 __2015___年___6__月___13_日 审核所有小组成员 ____2015_年___6__月___13_日 批准 XXX _2015____年___6__月___14__日 开发单位 __XXX班_____ 组员: XXX XXX

目录 1.引言 (2) 1.1编写目的 (2) 1.2背景 (2) 1.3定义 (2) 1.4参考资料 (3) 2.系统的结构 (4) 2.1 每个模块的名称、标识符如下所示: (4) 2.2模块之间的关系: (5) 3.模块1(标识符)设计说明 (6) 3.1模块描述 (6) 3.2功能 (7) 3.3性能 (7) 3.4输入项 (8) 3.5输出项 (8) 3.6设计方法(算法) (8) 3.7流程逻辑 (11) 3.8接口 (12) 3.9存储分配 (12) 3.10注释设计 (12) 3.11限制条件 (12) 3.12测试计划 (13)

3.13尚未解决的问题 (13) 1.引言 1.1编写目的 本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。 本说明书预期的读者是软件开发小组的产品实现人员。 1.2背景 说明: 系统名称:贪吃蛇游戏 任务提出者:手机策划人员 开发者:软件开发小组的产品实现人员 用户:Android操作系统手机用户 运行该程序系统的计算中心:Android操作系统手机芯片 1.3定义 1. 节:一条蛇可以看成由许多正方形的“小格子”拼凑成,称

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单 班级0982011 学生刘某某 课程名称计算机课程设计 课题贪吃蛇游戏程序设计 设计要求 1.学习游戏设计有关知识。 2.设计贪吃蛇游戏程序。 3.调试并修改程序。 4.完成课程设计论文。 课题发给日期 2011年6月25日 课程设计完成日期 2011年7月09日 指导教师余某某 评语:

贪吃蛇游戏 学生姓名:刘某某班级:0882011 指导老师:余某某 摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。 作为一个完整的程序,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏的内在素质是另一方面。一个游戏的优劣,最终由玩家决定。在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。 关键词:贪吃蛇流程图 c语言源程序

目录 1 前言 (1) 2 课设内容 (3) 2.1课设目的 (3) 2.2设计功能 (3) 2.3结构设计 (7) 3结论 (11) 参考文献 (15) 附录A (16)

1 前言 C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。 制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。 通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。为了弥补这一点,学校开设了本课程设计。它比教学实验复杂一些,涉及的深度广些并更加接近实用。目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。 这次课程设计的主要特点如下: 1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

java贪吃蛇设计文档

姓名:XXXXXX 学号:XXXXXX

目录 1 引言 (5) 1.1 编写目的 (5) 1.2 项目背景 (5) 1.3 开发工具和语言 (6) 1.4 术语说明 (6) 1.4.1 数据结构 (6) 1.4.2 类 (6) 2 概要设计 (7) 2.1 目标 (7) 2.2 运行环境 (8) 2.3 总体设计 (8) 2.3.1 游戏设计思路 (8) 2.3.2 算法中的基本概念 (9) 2.3.3 游戏结构 (9) 2.3.4 游戏整体流程 (9) 3 数据结构设计 (10) 3.1 蛇、石头、食物的表示 (10) 3.2 蛇的移动 (10) 3.3 存储蛇身的数据结构 (11)

3.5 如何显示蛇身 (11) 3.6 蛇身的移动方向 (12) 3.7 吃到食物判定 (12) 4 类的设计 (12) 4.1 设计 (12) 4.1.1 GamePanel类 (12) 4.1.2 Snake类 (13) 4.1.3 Food类 (13) 4.1.4 Ground类 (13) 4.1.5 Controller类 (13) 4.1.6 Mouse类 (13) 4.2 通过事件监听建立联系 (13) 5 详细设计 (13) 5.1 controller包 (14) 5.1.1 Controller类 (14) 5.2 mouse包 (14) 5.2.1 Mouse类 (14) 5.3 entities包 (15)

5.3.2 Ground类 (15) 5.3.3 Snake类 (16) 5.4 game包 (17) 5.4.1 Game类 (17) 5.5 listener包 (17) 5.5.1 Snakelistener类 (17) 5.6 util包 (17) 5.6.1 Global类 (17) 5.7 view包 (17) 5.7.1 GamePanel类 (17) 5.8 sound包 (18) 5.8.1 Sound类 (18) 6 UI设计 (18)

贪吃蛇游戏策划书(第四组)

贪吃蛇游戏策划书(第四组) 贪吃蛇游戏设计文档 一.概述 本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。此外,其功能更多更强,可以选择难度。不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。这些也是贪吃蛇游戏的优点。 因水平有限,只能设计简单的贪吃蛇游戏。不过,在功能上,比传统贪吃蛇游戏更丰富。蛇可以反向运动,操作起来,显得更为灵活。界面的颜色选用绿色,不易使眼睛疲劳。 系统名称:贪吃蛇游戏组长评分成员分工刘利霞肖莎田君刘子豪骆兵 二.制作工具 后期调试、代码整合数据操作模块模型设计软件整体框架设计以及模块划分视图层设计

本课题研究的是基于J2ME的手机贪吃蛇游戏,利用EclipseIDE工具和Sun Java ME SDK ,JAVA语法和J2ME系 统的API来实现。主要研究的对象是: 1.简单人工智能的 实现。 操作系统:Microsoft Windows XP 程序语言:Java 2 开发包:Sun Java(TM) Wireless Toolkit for CLDC IDE:Eclipse 2.面向对象的编程技巧; 的低级、高级界面的开发; 内专门游戏开发包Game包的使用 5.多线程技术的应用; 三. Game play 以及外观 贪吃蛇游戏的规则简介 在贪吃蛇游戏中,玩家操作小方块连接而成的蛇,去吃 随机散落在画面内的小方块,每吃一块就增加一小方块长度,要是撞壁以及撞自己的尾,就属于失败,如无失败则直 到通关为止。同时食物也是会变动位置的,在一定时候没有 吃到的话食物就会变换位置。屏幕的长度的行向为11单位,纵向为18单位。在这个范围内,玩家通过操作方向键来控 制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各 种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示 效果。

贪吃蛇游戏设计报告

贪吃蛇游戏设计 班级:13级7班 学号: 姓名: 一、实验目的 1.熟练掌握C6713 的中断结构和对中断的处理过程。 2.熟练掌握C6713 定时器的控制和使用方法。 3.熟练掌握键盘的使用原理及编程方法。 4.熟练掌握使用C6713DSP的扩展空间控制外围设备信息的方法;掌握蜂鸣器发声原理和音乐发生方法;掌握液晶显示器的显示控制原理及编程方法。 5.掌握C6713的系统自启动设计方法。 6.熟练掌握C语言开发DSP程序的流程及调试方法。 二、实验设备 计算机,ICETEK-C6713-EDU 实验箱,示波器。 三、实验内容(*号为选做内容) 1、在液晶屏上显示游戏背景、初始蛇身及运动、随机产生食物。 2、可以用键盘控制蛇身运动、暂停游戏。 3、游戏烧写到FLASH内,可以上电自启动运行。 四、设计原理 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个按键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体叉蛇头撞倒自

己身体游戏结束。 要想实现贪吃蛇功能,需要应用到键盘,按键中断,和液晶显示。想要正常使用按键,就要调用包含于有文件"ICETEK-C6713-A.h"中的init_emif();和InitCTR();程序用来初始化emif和ICETEK-CTR。 中断原理:dsp有三种类型的中断cpu的TMS320C6000:重置、可屏蔽的、不可屏敝的复位中断优先级最高,对应于复位信号。不可屏蔽中断优先级最高,对应于第二敝中断信号。最低优先级中断中断4?15对应INT4?INT15信号。重置,敝中断,一些INT4?INT15信号映射到C6000设备上的别针。一些INT4?INT15中断信号是内部使用的外设和一些可能不可用或在软件的控制下可以使用。 外中断区别于计时器等片内设备中断,它来源于DSP 片外,属于硬件中断。外中断信号通过DSP 器件封装上的专用管脚输入DSP,属于可屏蔽中断。TMS3206713DSP 有三个外中断:EXT_INT4~EXT_INT7,如果CPU 允许,这四个信号线上的低脉冲信号会中断CPU。 中断是为使CPU 具有对外界异步事件的处理能力而设置的。通常DSP 工作在包含多个外界异步事件环境中,当这些事件发生时,DSP 应及时执行这些事件所要求的任务。中断就是要求CPU 暂停当前的工作,转而去处理这些事件,处理完成后,再回到原来被中断的地方继续原来的工作。显然,服务一个中断包括保存当前处理现场,完成中断服务,恢复各寄存器和现场,然后返回继续执行被暂时中断的程序。请求CPU 中断的请求源称为中断源。这些中断源可以是片内的,如定时器等,也可以是片外的,如A/D 转换及其他片外装置。片外中断请求连接到芯片的中断管脚,并且在这些管脚处的电平上升沿产生。如果这个中断被使能,则CPU开始处理这个中断,将当前程序流程转向中断服务程序。当几个中断源同时向CPU 请求中断时,CPU 会根据中断源的优先级别,优先响应级别最高的中断请求。TMS320C6000 有11 个寄存器管理中断服务: *控制状态寄存器CSR 控制全局使能或禁止中断 *中断使能寄存器IER 使能或禁止中断处理 *中断标志寄存器IFR 指示有中断请求但未被响应的中断发生 *中断设置寄存器ISR 手动设置IFR 中的标志位 *中断清除寄存器ICR 手动清除IFR 中的标志位 *中断服务表指针ISTP 指向中断服务表的起始地址 *不可屏蔽中断返回指针NRP 包含从不可屏蔽中断返回的地址,该中断返回通过B NRP指令完成

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