嵌入式大作业贪食蛇的设计和实现作者姓名:学科、专业:学号:指导教师:完成日期:大连大学DalianUniversity摘要WinCE是微软公司嵌入式、移动计算平台的基础它是一个开放的、可升级的32位嵌入式操作系统是基于掌上型电脑类的电子设备操作系统。本文基于此,尝试设计了基于嵌入式winCE开发的一款贪吃蛇游戏,主要目的是通过开发嵌入式贪吃蛇游戏,掌握嵌入式开发的整个过程,同时介绍基于winCE嵌入式开发的详细设计步骤,向初学者介绍开发基于winCE方面嵌入式程序的整个框架流程。本论文软件方面采用的是EVC++4.0开发平台设计程序,PB5.0进行系统定制,硬件方面采用的是PXA270-S实验开发箱。整个设计流程将在本论文主体部分进行详细的叙述。从定制自己所需的winCE系统、运用MFC基于对话框的C++语言编写贪吃蛇游戏源代码到最终下载程序到实验开发板的整个过程都做了很详细的介绍。关键词:winCE5.0、EVC++4.0、PB5.0、嵌入式系统、贪吃蛇游戏目录摘要........................................................................................................................2引言........................................................................................................................11系统概要设计.............................................................................................................11.1系统的整体结构................................................................................................................11.1.1系统的定制...........................................................................................................11.1.2程序的编写...........................................................................................................21.2系统的硬件构建................................................................................................................31.3系统的软件组成................................................................................................................42.系统的详细设计.........................................................................................................42.1定制winCE内核...............................................................................................................42.1.1winCE内核定制原理以说明................................................................................42.1.2winCE内核定制....................................................................................................52.2贪吃蛇游戏详细设计开发...............................................................................................52.2.1贪吃蛇游戏的可行性分析...................................................................................52.2.2贪吃蛇游戏的需求分析.......................................................................................62.2.3贪吃蛇游戏的总体功能图...................................................................................72.2.4贪吃蛇游戏的实现的功能模块...........................................................................72.2.5贪吃蛇游戏的主要功能设计思路.......................................................................82.2.6贪吃蛇游戏界面的实现.....................................................................................102.2.7贪吃蛇游戏主要代码说明.................................................................................103.系统整合及测试.......................................................................................................123.1系统整合.........................................................................................................................123.2系统整体测试.................................................................................................................133.2.1系统规则测试.....................................................................................................133.2.2按键功能测试.....................................................................................................143.2.3分数和关卡测试.................................................................................................16结论..............................................................................................................................171引言随着计算机技术的快速发展,嵌入式技术也相应的取得了突破性的进展,嵌入式设备正日益渗透到人们的日常生活中,默默地为我们提供连接和服务,嵌入式设备往往是一个资源有限的系统,它们追求的是在有限的价格上满足一定的功能性要求。通常它们采用那些功能并不强大的CPU,这也是开发者不得不尽可能地压缩嵌入式系统性能的原因。最初的嵌入式设备是单一用途的,它们拥有各自独特的显示方式和用户界面,而今天它们变成了类似PC系统。它们可以运行很多相同的应用程序。针对嵌入式资源的限制,如何将对资源有很大依赖性的大规模的计算,成功的移植到嵌入式系统中,并能使其达到类似与在PC上计算的效果。针对此问题,必须对原适用于PC上的游戏引擎做出修改,才能使其在嵌入式系统中成功的运行。因此需要在特定的环境下开发相应的游戏,这样才能在以后下载到相应的板子上进行效果演示。目前嵌入式行业在中国得到了有效发展,但是规模相应的还与国际上有很大的差距,因此,为了能够让大家对基于嵌入式wince开发游戏得到有效的理解,本论文以贪吃蛇游戏为详细的例子,完整的阐述了嵌入式游戏的开发流程,以及演示结果,还有中间特别要注重的难点疑点的解析。本文对具体的开发流程都做了很详细的阐述,从编码到仿真,然后在定制系统内核,最后进行应用程序的下载,完成贪吃蛇游戏的具体效果演示,论文的后续都做了相当详细的解释。1系统概要设计1.1系统的整体结构1.1.1系统的定制首先所需winCE系统内核的定制,通过PlatformBuilders5.0来定制自己所需2要的系统内核,根据自己程序设计时所用到的win32程序的接口,以及用到的库函数,类库,各种所需要的驱动,例如USB驱动,屏幕显示驱动,鼠标驱动,键盘驱动等,来定制自己所需要的系统内核,系统不必过于繁琐,达到自己所需要的功能即可,因为我们所强调的是嵌入式,嵌入式是以方便为前提的,定制的系统是以简洁方便为目的的,具体的定制细节我们在第四章将会详细介绍。1.1.2程序的编写程序的名称是《贪吃蛇游戏》,采用的是VC++语言,MFC微软基础类库环境的单文档窗体。程序的大体思想是:采用一个二维数组(这里我们采用的是24*24的整形数组)作为贪吃蛇游戏的背景地图,数组的每个值代表地图上每个小矩形,而每个小矩形连续组成贪吃蛇的蛇身,在程序初始化窗体时候调用这个函数,刷新出程序的背景地图;程序贪吃蛇的蛇身用一个Cpoint类的一位连续数组,Cpoint类是一个结构体类型,结构体类型里包含着两个整形参数x和y代表的是屏幕窗体上的某一个对应的点的坐标,我们在得知点的坐标的同时,就明确了对应二维数组地图上的某个矩形区域的坐标值,这样用Cpoint类的一位数组我们可以存放蛇身的每个节点的坐标,于此同时,我们在程序snake类里面设定蛇头和蛇尾的坐标变量、蛇身长度的坐标变量,这样在程序调用Timer()系统函数定时刷新时,每次刷新只需要改变蛇头和蛇尾的坐标即可,每次刷新时,根据舍身前进方向判断下一个头节点的坐标值,然后添加到Cpoint类定义的蛇身节点,而蛇尾节点坐标值是前一个状态的倒数第二个节点,然后调用库函数FillSolildRect()函数刷新头节点为蛇的自身颜色,而尾节点是地图背景颜色,这样我们在外观看起来就是蛇身前进的效果。那么,我们怎么判断蛇头前进的方向呢?这个问题的解决方式是,在定义snake类的同时,定义了一个私有变量Direction为蛇动态前进的方向,而每次Timer()刷新时,动态的根据键盘响应函数来判断前进方向,并同时给Direction赋值,这样每次刷新的同时Direction为