DSP技术及应用游戏设计Word格式文档下载.doc
《DSP技术及应用游戏设计Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《DSP技术及应用游戏设计Word格式文档下载.doc(29页珍藏版)》请在冰豆网上搜索。
目录
一、引言 2
二.CCS简介 2
三、设计题目 3
四、设计目的与要求 3
4.1设计目的 3
4.2设计要求 3
五.设计流程图 4
六.总体设计 4
6.1程序设计技术要点 4
七.整体程序设计全部代码 15
八.程序的调试 25
九.DSP课程设计心得 26
十.参考资料 28
一、引言
DSP即为数字信号处理器(Digital
Signal
Processing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。
它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。
自从数字信号处理器(Digital
Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。
随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。
二.CCS简介
CCS是TI公司推出的用于开发320系列DSP芯片的集成开发环境,采用Windows风格界面。
集编辑、编译、链接、软件仿真、硬件调试及实时跟踪等功能于一体,包括编辑工具、工程管理工具和调试工具等。
CCS有两种工作模式,即软件仿真器模式:
可脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。
硬件在线编程模式:
可实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。
使用CCS开发应用程序的一般步骤:
①打开或创建一个工程项目文件
②编辑各类文件
③对工程项目进行编译
④对结果和数据进行分析和算法评估
三、设计题目
利用dsp技术和ccs软件编写一个快快吃豆小游戏。
程序功能
快快吃豆游戏是一个经典小游戏,进入游戏后,通过键盘上的上下左右键来控制红色的球(自己)移动方向,在吃掉黄豆的同时要注意躲避绿色的球(敌人),若将地面上的所有黄豆吃完,则游戏成功,进入赢得画面;
若不幸碰到敌人则游戏结束,进入输的画面。
四、设计目的与要求
4.1设计目的
通过DSP课程设计的综合训练,培养我们实际分析问题、编程和动手能力,
据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;
通过调试典型例题或习题积累调试C程序的经验;
通过完成辅导教材中的编程题,逐渐编程能力、用计算机解决实际问题的能力。
最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容。
4.2设计要求
1.
分析课程设计题目的要求
2.
写出详细设计说明
3.
编写程序代码,调试程序使其能正确运行
4.
设计完成的软件要便于操作和使用
5.
设计完成后提交课程设计报告
五.设计流程图
系统模块图
程序流程图
六.总体设计
6.1程序设计技术要点
(1)敌人的移动过程
为了让游戏中的敌人自己行走,但是又不固定在两点间徘徊,在该游戏中我们采用了randomize函数对敌人的初始位置随机排列,在移动过程中对敌人的移动方向随机赋值,且新的方向不可以和原来的方向相反,若敌人碰到墙壁,则返回原始位置,等待下一次的随机方向。
游戏中的技术应用代码如下:
voidmovethem(structplay*them)/*them的移动过程*/
{
inti,loop;
rand();
/*随机排列,任意打乱*/
for(i=0;
i<
5;
i++)
{
/*只要控制者在身边就立即靠上去*/
if(you.x==them[i].x&
&
(them[i].y+1)==you.y)
them[i].y++;
elseif(you.x==them[i].x&
(them[i].y-1)==you.y)
them[i].y--;
elseif(you.y==them[i].y&
(them[i].x+1)==you.x)
them[i].x++;
(them[i].x-1)==you.x)
them[i].x--;
else
{
loop:
xx[i][0]=rand()%4+1;
/*这里的方向采取随机赋值,原则是新的方向不可以和原来的方向相反*/
if(xx[i][0]==1&
xx[i][1]==2||xx[i][0]==2&
xx[i][1]==1)
gotoloop;
if(xx[i][0]==3&
xx[i][1]==4||xx[i][0]==4&
xx[i][1]==3)
xx[i][1]=xx[i][0];
if(xx[i][0]==1)/*四个方向*/
{
them[i].x--;
if(a[them[i].x][them[i].y]==2)/*假如碰墙壁的话就回到原来的地方等待随机的方向*/
{
them[i].x++;
gotoloop;
}
}
elseif(xx[i][0]==2)
them[i].x++;
if(a[them[i].x][them[i].y]==2)
them[i].x--;
elseif(xx[i][0]==3)
them[i].y++;
them[i].y--;
elseif(xx[i][0]==4)
them[i].y--;
them[i].y++;
}
}
}
(2)按键控制游戏
在快快吃豆游戏中,主要使用按键来控制游戏的整个过程,例如按任意键进入游戏界面,按Esc键退出游戏,以及使用上下左右按键来控制红球的移动,因此在快快吃豆游戏中如何响应键盘操作,成为了游戏设计的重中之重。
在快快吃豆游戏中根据按键选择进入游戏还是退出游戏。
应用代码如下;
key=read_key(0);
/*接收键盘按键*/
if(key==KEY_CANCEL)
exit(0);
else
在游戏实现过程中,接收按键,通过kbhit()函数判断是否有键按下,若无按键按下,函数返回0,则执行循环语句,令游戏界面中敌人随机走动。
接收按键相关代码如下:
key=read_key
(2);
while(!
read_key()) /*当无按键时敌人自己移动*/
若有按键按下,则返回对应键值,跳出while循环,再次接收按键之值,进行比较,执行相应的按键功能。
6.2实现过程
(1)在css3.3中建立一个c文件。
(2)该游戏的预处理实现部分。
对游戏中应用到的系统函数进行“文件”处理,引用头文件。
实现代码如下:
#include"
reg5509a.h"
lcd.h"
stdlib.h"
#include"
stdio.h"
对项目中应用到的常量进行宏定义,例如,上下左右键以及退出和回车按键的控制码在lcd.h头文件中进行宏定义。
#defineKEY1 0x11
#defineKEY2 0x12
#defineKEY3 0x13
#defineKEY4 0x14
#defineKEY5 0x21
#defineKEY6 0x22
#defineKEY7 0x23
#defineKEY8 0x24
#defineKEY9 0x31
#defineKEY10 0x32
#defineKEY11 0x33
#defineKEY12 0x34
#defineKEY_CANCEL KEY4
#defineKEY_OK KEY7
#defineKEY_UP KEY3
#defineKEY_DOWN KEY11
#defineKEY_RIGHT KEY8
#defineKEY_LEFT KEY6
定义数组地图,数组地图中不同的数字代表不同的含义,1代表可以移动的地方,2表示墙壁,3表示红球(自己),4表示绿球(敌人),并自定义了游戏中人物的结构体。
inta[15][20]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,2,
2,1,2,2,2,1,1,2,1,1,0,0,0,1,1,4,1,1,0,2,
2,1,1,0,2,1,1,2,0,1,1,2,2,2,2,2,0,0,0,2,
2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,
2,1,2,1,2,1,1,2,1,3,2,2,1,1,1,1,2,2,1,2,
2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,
2,1,2,1,0,1,1,1,1,2,1,0,1,2,2,2,1,1,1,2,
2,1,0,1,0,1,2,1,1,2,1,0,1,2,1,1,4,1,1,2,
2,1,0,2,0,1,2,1,1,2,1,0,1,2,1,1,1,1,1,2,
2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,
2,1,1,2,1,1,2,1,1,2,1,0,2,1,1,2,2,1,1,2,