基于labview的贪吃蛇游戏程序设计

基于labview的贪吃蛇游戏程序设计
基于labview的贪吃蛇游戏程序设计

虚拟仪器课程设计(论文)

( 2008级 )

题目:基于labview的贪吃蛇游戏程序设计学院:工学院

班级:

姓名:

学号:

成绩:

基于labview的贪吃蛇游戏程序设计

一、程序设计背景

本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为“苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。

本程序的主要实现如下功能:1.小蛇在屏幕上不停的游走;2.用键盘方向键可控制小蛇的移动方向;3.吃过一个苹果后小蛇长度增加并随机产生另一个蛋;

4.小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续;

5.游戏可以有多种难度选择等。

二、程序介绍

(一)前面板的设置

采用LabVIEW中提供的“Express XY图”作为游戏界面,显示蛇和苹果,这样就可以通过方向键来移动小蛇到想要去的地方。对XY图的属性做如下修改:1.去除标尺及标签,设置标尺为0:1000;2.去除两个方向的网格,使最终屏幕全黑;3.修改各条曲线的宽度、颜色和点样式,使小蛇苹果能够以不同样式显示。结果如右图所示:方形红色的为苹果,圆形长条的为小蛇。

(二)程序框图设计

如何控制蛇移动去吃苹果同时避免碰到自己的身体或者撞墙是一个复杂的程序。特此将程序分成多个子程序来编写使程序简单明了。下面分别介绍贪吃蛇程序中的各个子程序。

1.XY坐标子程序

此程序的作用是把蛇的活动按有无蛇身、苹果赋值。通过XY坐标来显示蛇移动的轨迹,同时删除已走过的轨迹路径,避免与新的路径混淆使程序出错。程

序框图见下面:

图一输入XY坐标

图二删除XY坐标

2.小蛇的移动控制

由于蛇本身是一个可增加元素的数组,所以用一个含两个一维方向数组的簇来进行操作。每次读取坐标或者增添完坐标后都要用簇解绑及簇捆绑来处理,这样也便于在XY图中显示。

控制小蛇游走的方法是给定一个方向direction,然后利用这个direction 的值来控制当前点与下一点的变换。小蛇不停的移动,为了使之与苹果碰撞后能便捷的增加长度,这里采用这样的方法实现:小蛇每按direction移动一个,就在小蛇数组的开头添加一个点(此时这两个点是相邻的),然后将添加的点与苹果所在坐标比较,如果不同,就将蛇数组的最后一个元素删除,表示没有吃到苹果;如果相同,就保留这个元素(此时,相对于前一个位置时,小蛇的长度增加了),并且删除这个苹果,重新随机产生另一个苹果。循环往复(在while循环上添加移位寄存器)直到游戏结束。插入蛇头新坐标的子程序框图如下:

3.苹果增减的控制

对于苹果的操作主要是判断当前苹果的位置与蛇头位置是否相同,在相同的情况下,需要将苹果的位置重新赋值,这是处理一个苹果的时候。如果要设计多个苹果,只需判断当前苹果的个数是否减少,并在减少后随机产生一个新的苹果。程序里一次性最多可以产生20个苹果,用数组存储。当苹果的数量明显少于最大值时就随机产生一个苹果。当蛇头与苹果的位置相同时消掉该苹果,否则保留该苹果。为了便于苹果与蛇同时在屏幕上显示,特将苹果套用蛇数组的格式绑定为簇,然后与蛇数组合并为一个数组后同时显示在XY图上。程序框图如下:

4.撞墙事件

把蛇当前所在的位置的坐标与围墙的宽度作比较,如果超出了宽度范围则视为撞墙事件游戏结束,否则游戏继续。在设计程序中运用了两个<、两个>和一个逻辑与运算符号参与编辑,通过X、Y坐标与World Size作比较,最后结果为真则游戏继续,否则游戏结束。程序框图如下:

5.自杀事件

自杀事件比撞墙事件复杂,不过思路都一样,都是通过坐标的比较来判断。不同是的自杀事件是通过判断蛇头的坐标与蛇身的坐标是否一致,如果一致则认为发生了自杀事件,并跳出循环结束游戏,否则游戏继续。

再此VI中运用了两个条件结构来判断是否结束程序;运用一个WHILE循环比较蛇头与蛇身的坐标,当蛇头坐标与蛇身坐标一致时跳出循环游戏结束(只有当蛇的位移坐标有两个以上时才开始判断是否发生自杀事件)。以下是本VI的程序框图:

6.主程序程序框图

主程序程序框图运用平铺式顺序结构,第一帧是游戏介绍,第二帧是程序主程序。

在主程序的上半部分采用一个while循环、一个事件结构和一个条件结构来设置游戏的输入循环,根据按键以否来判断游戏的下步动作方向。在主程序的下

半部分运用while循环来控制游戏的循环。游戏结束时通过用户的输入指令来决定游戏是否循环,输入“Yes”指令时游戏继续,否则游戏结束跳出循环。在while 循环里再运用一个while循环来控制游戏的运动循环,当发生“自杀”事件或者“撞墙”事件时游戏结束跳出循环,否则游戏继续循环。程序框图如下:

三、程序改进

1.控制方向的改进

在整个程序运行中我发现一个问题,即在游戏运行过程中想要准确控制蛇的移动方向不是很方便,因为原程序仅仅采用两个方向键“left”键和“right”键来控制。他把方向按不同的象限分成八个部分,沿逆时针方向依次分布为0、1、2、3、4、5、6、7,其中X轴正半轴是0负半轴是4,Y轴正半轴是2负半轴是6。根据这样的划分当按下不同的键时有不同的反应。

当按下“left”键时,程序自动把当前蛇的方向值加1(设为X)后与程序允许的最大方向值Y做比较。如果X>Y则返回值“true”,蛇向X值所指向的方向移动;否则返回值“false”,蛇向0值所指向的方向移动。程序框图如下:

当按下“right”键时,蛇移动方向控制与“left”键相似,不同的是把蛇当前的方向值减1后的值X与方向值0做比较。如果X<0则返回值“true”,蛇向方向值为7的方向移动;否则返回值“false”,蛇向反向值为X的方向移动。程序框图如下:

这样的设置不是很理想,需要用户在游戏过程中不断的准确计算好下一步的方向值。话说这样设计可以让用户在游戏过程中锻炼思维的反应力和脑计算力,但是同时给用户在游戏过程中带来很大的不便,不利于游戏的继续进行。我构思着如果把方向键从复杂的左右两键改成简单的上下左右四个键,不仅可以形象的描述各个方向的控制移动,而且可以提高用户的玩游戏的速度,有一个好的心情。

为此我经过大量的实验和改进,最后终于把自己的构想用程序表达出来了。下面简单介绍我修改的程序。

我的构思主要是得益于原作者的程序思路,是在他的基础上修改的。即把方

向按坐标系中坐标轴的方向分为“0-right”、“2-up”、“4-left”和“6-down”四个方向。在方向控制程序中运用了一个while循环、事件结构和条件结构。运用事件结构是因为需要运用事件结构中事件数据节点的“V键”节点来控制方向的改变,而事件结构是与while循环配套使用的。运用条件结构是便于不同方向键按下时激活不同的条件状态控制蛇的移动。

下面仅就“down键”来说明我的思路。当按下“down键”时,把当前的方向值X与下方向值6做比较,如果结果为“true”时输出方向为“down”,如果结果为“false”时输出方向为“down”,即强制性的向下移动。其他方向上的控制跟“down”方向的控制相同,中心思想是强制性实施动作。

2.添加了“游戏暂停”按钮

我觉得在原程序中没有暂停按钮是一个很大的缺憾,假设发生这种情况即用

户使用这个程序的过程中可能会有急事需要离开可是又不想结束掉

正在运行的程序,这样的设计就不够人性化。如果添加一个“暂停”

按钮这个问题就可以迎刃而解了。为此我在“运动循环”中添加了一

个“暂停”按钮。即在一个while循环中添加一个“等待下一个整数

倍毫秒”来控制等待时间,一个“非”来激活命令。程序框图见图:

四、程序存在的一些不足

(一)、可能是时间太过仓促,本程序在设计上存在一些不足。我把自己看到的一些不足列举如下:

1.程序初始化时蛇身过长。虽说在设计程序时有专门控制蛇身长度的控件,可是在修改初始化时蛇身长度的数值后蛇身的长度依然没有太多的变化。

2.蛇身长度无节制的增长。蛇在移动过程中蛇身长度会增长,即使是在没有吃掉苹果时蛇身的长度也会增长,这些都有悖常理。

3.感觉把collision_self.vi程序弄的复杂化了。

(二)、我看不懂的部分程序

由于程序很复杂,我有很多看不懂的地方,列举如下:

1.我不知道子VI是如何运用的。在程序中常用子VI,这虽然便于简化程序框图,却给我读程序造成很大的不便。不便的原因主要是在上课实践过程中没有运用过子VI完成作业或者做练习,虽然我在潜意识里知道子V I的用途很大。看着遍布程序框图的子VI我不知道它怎么运用、为什么这样运用,练习子VI 的原程序框图了解该子VI后我还是不知道如何运用。

2.我不知道两个while循环是如何合作的。在主程序的第二帧中的那两个子while循环没有任何的联系,我不知道它们是怎么合作的。

3.我不知道“delete when we have not ate an apple in the last 5 moves”是如何运行的。

4.为什么要设置“last index ate apple at”这一步,这一步有什么作用吗?

5.collision_self.vi很复杂我看不懂。我不知道为什么要把XY分成ABCDEF 六个数据来处理。

程序来源

范例的网址:https://www.360docs.net/doc/4e7626369.html,/f/12925856.html?from=like

论文参考:https://www.360docs.net/doc/4e7626369.html,/view/962c86bfc77da26925c5b0e9.html

贪吃蛇设计文档.doc

贪吃蛇游戏的设计文档 目录 一、需求分析 ................................................. 错误 ! 未定义书签。1.功能需求 . .............................................. 错误 ! 未定义书签。 2.非功能需求 错误 ! 未定义书签。 . ............................................ 二、系统设计 ................................................. 错误 ! 未定义书签。 1. 实际思路 . ............................................... 错误 ! 未定义书签。2,结构设计 . .............................................. 错误 ! 未定义书签。 (1), main(), 主函数; . ................................ 错误 ! 未定义书签。 (2), init() , 图形化驱动函数 . ......................... 错误 ! 未定义书签。 (3), help(), 帮助信息函数 . ............................ 错误 ! 未定义书签。 (4), drawfence(), 周围墙壁函数 . ....................... 错误 ! 未定义书签。 (5), printscore(), 得分显示函数 . ...................... 错误 ! 未定义书签。 (6), playgame(), 游戏控制函数 . ........................ 错误 ! 未定义书签。 (7), gameover(), 游戏结束函数 . ........................ 错误 ! 未定义书签。 (8), closegraph(), 关闭图形驱动函数 ................... 错误 ! 未定义书签。 三、系统实现 ................................................. 错误 ! 未定义书签。 1, help() 函数流程图 . ...................................... 错误 ! 未定义书签。 2, drawfence() 函数流程图 . ................................. 错误 ! 未定义书签。 3, printscore() 函数流程图 . ................................ 错误 ! 未定义书签。 4, playgame() 函数流程图 . .................................. 错误 ! 未定义书签。 5, gameover() ,游戏结束函数 . .............................. 错误 ! 未定义书签。 四、系统测试 ................................................. 错误 ! 未定义书签。

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

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

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

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

贪吃蛇游戏设计之设计思路

贪吃蛇游戏设计思路 1.首先制作游戏的窗体布局。其中包括窗体的大小,位置,添加按钮组件,在窗体上面划定游戏区域等。 2.为按钮添加监听器,为开始按钮,结束按钮,键盘,还有游戏结束的时候的确定按钮. 3.单击开始按钮,看到的效果是在游戏区域里面看到一个随机产生的食物,和蛇体。产生随见事物使用Random类,随机定位一个游戏区域里面的方块,然后使用Graphrics可以定位到这个方块的坐标图上颜色,这样就产生了肉眼可见的食物。关于蛇体,我们将蛇体的每个方块添加到集合里面,使用的是List,为什么不用数组,原因是数组的长度总是有限的,你不知道蛇体里面最终存放多少方格,而且数组比较繁琐。我们将蛇体的每个方块另外创建一个类(蛇体的每个方格)snakeAct,包含成员变量方格的坐标,每个snakeAct对象实例就是一个方块,将这个对象添加到列表List中就好了,然后再用Graphics,循环画出列表中的每个对象,就成功的画出了蛇体。设置蛇体的初始长度只有蛇头,并设置蛇头的初始位置为居中。 4.通过方向键设置蛇头的移动,定义move()方法,蛇头每移动一次位置就会变化到另外一个方块,对应的坐标x,y都是有相应的变化,例如按下UP键,坐标的变化就是,x不变,y减1。 5.蛇头可以运动只有面临的问题就是要吃食物,而吃食物的过程是在移动过程中,所以在move()方法中添加eat()方法,吃到食物的条件是蛇头的坐标和食物的坐标对应相等,蛇头吃到食物的过程就是将列表中没有吃到食物前的最后一个方格重新画一遍,这样列表的长度就加一,而列表中的对象就多了一个。 6.将食物添加到列表中之后,仍然只是蛇头可以移动,让蛇体跟着蛇头移动定义othermove()方法,就是将蛇体的每个蛇块替换移动前的前一个蛇块的坐标,这样在移动只有,整个蛇体就可以移动了,othermove方法也写在move()方法里面,move()方法写在键盘的监听方法里面。 7.撞墙的或者蛇头撞到自己的身体,可以再move()方法里面进行预判,如 果蛇头移动满足判定条件,才可以移动,若蛇头碰到墙壁或者自己的身体,弹出对话框,点击确定按钮,恢复初始化,清空列表。

贪吃蛇游戏程序设计一课程设

贪吃蛇游戏程序设计__ 一、课程设.txt 同志们:别炒股,风险太大了,还是做豆腐最安全!做硬了是豆腐干,做稀了是豆腐脑,做薄了是豆腐皮,做没了是豆浆,放臭了是臭豆腐!稳赚不亏呀!贪吃蛇游戏程序设 计 一、课程设计任务贪吃蛇小游戏程序设计 二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合 理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩 三、需求分析3.1 、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 3.2 、设计思想程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。3.3 、流程图 开始 初始化界面和蛇身 放置食物 蛇开始运动 蛇吃到食? 蛇长大 蛇死亡? 继续? 退出界面 N Y N

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

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;

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

详细设计说明书 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,并实现重新显示

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单班级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.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单 班级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.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

C语言贪吃蛇实验报告

C语言程序设计报告 题目:贪吃蛇游戏的程序设计 院系:西语学院英语教育6班 : 学号:

1.1题目: 设计贪吃蛇小游戏 1.2题目的要求: 玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。 1.3设计的步骤: ●分析设计题目的要求,即需求分析。 ●总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。 ●详细设计,确定每个模块的功能,绘制主要函数的流程图。 ●编写程序代码,调试程序使其能正确运行。要求书写规范,注意采用缩进格式。函数 名、变量名要见文晓意,注释要简而不失、详而不缀。设计完成的软件要便于操作和使用。 ●程序测试,发现程序中存在的错误并改正。 ●完成报告。 2详细设计说明 2.1课程设计的要求: 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 ●收集资料,分析课题,分解问题,形成总体设计思路;

●对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具 体介绍; ●上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能 正常运行; ●完成课程设计报告。 2.2程序的功能: 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 2.3课程设计的思想: 程序关键在于表示蛇的图形及蛇的移动。用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画一个圆点和覆盖原来的圆点。为了便于理解,定义两个结构体:食物与蛇。

基于labview的贪吃蛇游戏程序设计

成绩评定表

课程设计任务书

目录 1 目的及基本要求 0 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小 蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为 “苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的 身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 0 4.1 运行结果 (8)

1 目的及基本要求 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为“苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现贪吃蛇游戏的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。 2 贪吃蛇游戏设计原理 贪吃蛇游戏大体上可分为以下几个部分: 1) 控制部分就是通过输入输出来控制蛇的运动 2) 逻辑部分进行判断蛇吃了没有是否撞墙同时把蛇的长度增加一节还要实现分数的计算 3) 图象显示部分就是将游戏显示出来 本程序的主要实现如下功能:1.小蛇在屏幕上不停的游走;2.用键盘方向键可控制小蛇的移动方向;3.吃过一个苹果后小蛇长度增加并随机产生另一个蛋; 4.小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续; 5.游戏可以有多种难度选择等 3 贪吃蛇游戏设计与仿真 3.1 前面板设计 采用LabVIEW中提供的“Express XY图”作为游戏界面,显示蛇和苹果,这样就可以通过方向键来移动小蛇到想要去的地方。对XY图的属性做如下修改:

贪吃蛇游戏程序说明2

C语言程序设计之贪吃蛇 一.程序功能介绍 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。 二.程序整体设计说明 一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。 2.1设计思路 这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块 2.2数据结构设计及用法说明 开始部分: 游戏是运行在图形模式下的,所以第一步一定是初始化图形模式,接着要有开始的界面,就像书有封面一样,我设置了一个游戏的标题画面,除了游戏标题画面我还设置了一个欢迎画面。标题画面以后,还要为游戏的运行部分作初始化,包括绘制游戏运行时的背景,对游戏某些重要变量的初始化。 运行部分: 作为游戏的核心部分,这里包括的函数比较多,也就是模块比较多,首先让我模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一部分,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有第三颗……它的身子是一直的加长,它不管自己过长身体的麻烦——转身不便,继续吃下去,现在它是直接把巴张大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去(不是毒死);又或者它往食物冲锋的时候,它失去控制,撞到了墙上。 第一轮循环:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线(A、B): A :第四步,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运动方向;第七步,第二

贪吃蛇游戏设计报告

贪吃蛇游戏设计 班级: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指令完成

相关文档
最新文档