1、本课程设计是以一款高性能的三星芯片s5pv210ah为核心,在Linux环境下生成可执行文件,通过LCD显示屏触摸操作,完成2048游戏开发。通过本课程设计,可以体现嵌入式技术的优越性。关键词: 嵌入式;LCD屏;Linux;游戏开发;一 总设计流程二、设计要求及内容(一)c语言源代码编写 经过分析,该游戏的开发主要以下分为五大部分:1、linux文件IO通过如下代码,我们将实现linux文件的输入与输出:fd = open(/dev/fb0, O_RDWR); if (fd = -1) perror(open failed:); / 打开失败 return -1; 以及在程序结束时,我们使用
2、完该文件关闭文件代码:close(fd);2、bmp图片格式解析为实现2048游戏的开发,对图片进行操作是必不可少的,通过找寻一些带数字的BMP格式的图片,将这些图片按照游戏规则显示显示在屏幕上。如下的代码即为如何将一张BMP格式的图片显示在LCD屏幕上。void LCD_Draw_Bmp(int x0, int y0, char *bmpname) int fd; int i = 0; int x, y; unsigned char pixels100*100*3; fd = open(bmpname, O_RDONLY); lseek(fd, 54, SEEK_SET); read(fd,
3、 pixels, 100*100*3); close(fd); / for (y = 0; y 100; y+) for (x = 0; x x+) unsigned char r, g, b; int color; b = pixelsi+; g = pixelsi+; r = pixelsi+; color = (r 16) |(g deltaY) if(endX startX) direct = MOVE_RIGHT; break; else direct = MOVE_LEFT; if(endY startY) / direct = MOVE_DOWN; direct = MOVE_U
4、P; close(fd);return direct;LINUX文件下会提供我们一个屏幕操作的接口,我们只需调用该接口文件,通过判断是X操作还是Y操作,通过不同的返回值,根据判断即可判断出屏幕滑动操作是往上下左右那个方向。4、C二维数组及矩阵变换算法该算法是本游戏的核心算法,也是2048游戏开发的难点所在,通过分析,发现我们主要是对matrix_2048XY矩阵进行变换操作,该变换操作可分为上下左右四种,为这四种操作分别写一子函数,其中向左移动时,该矩阵变换规律实现的代码如下:void Move_left() / 向左移动操作 int i,j,k; Zero_b(); for(i=0; i4;
5、 i+) / 通过一个buffer数组实现将不为的数左移 k=0; for(j=0; j j+) if(matrix_2048ij!=0) bufferik=matrix_2048ij; k+; i+) if(bufferij!=matrix_2048ij) Flag_Move=1; if(bufferij=bufferij+1&(j+1)4) bufferij=2*bufferij; for(k=j+2; k4&bufferik!=0; k+) bufferik-1=bufferik; bufferik-1=0; matrix_2048ij=bufferij;该算法的核心思想是把不为0的数先
6、往左移,然后判断相邻的数是否相等,如果相等即前前面一个数乘以2,后面的数被依次被更以后的数所覆盖,最终实现左移操作。5、随机函数2048游戏的实现离不开随机函数,当玩家进行一项滑动的操作时,屏幕上需在空白随机出现“2”或者“4”的图片,但是出现前者的概率应大于后者,在这里,为实现随机函数,我们取计算机的时间为随机数的种子,通过调用sandom()函数实现,具体代码如下:void Get_Random() int index_x=0,index_y=0,index_rad; int rad4= 2,2,4,2; int i,j; int num=0; int table44; index_rad
7、=random()%4; tableij=17; if(matrix_2048ij=0) tableij=num; num+; num=random()%num; if(tableij=num) matrix_2048ij=radindex_rad;为提高取随机数的效率,我们采用了对空白格子编号的方法,通过计算出空白格子个数,再对其进行取随机编号数,可一次性得到应该在哪个空白位置出现随机出现图片。(二)生成可执行文件生成C语言源代码编号后,需要将该源代码生成可执行文件,我们通过在电脑上安装虚拟机软件,并在虚拟机上运行Linux操作系统,在该系统终端我们进行一些命令操作得到了可在我们的嵌入式芯片
8、执行的文件。生成可执行文件命令:arm-linux-gcc -o (三)烧录得到了可执行文件后,我们最后就是将该可执行文件烧录进入我们的芯片中执行,在此我们借用了一个名为secureCRT绿色烧录软件。在此这里有一些该软件下进行操作的部分命令: rz :用串口命令下载文件到开发板上面去 chmod +x : 给这个文件加上可执行权限(excutable) ./ : 运行可执行文件 以下是该软件工作时的截图:三、结束语通过这次的课程设计,我深刻的感受到了嵌入式技术的魅力,比起单片机,嵌入式技术有着明显的优势,从处理速度上即可明显的看出二者优异。我很高兴能够顺利的完成此次课程设计,但是这次之所以能
9、够顺利地完成是与老师和同学的帮助离不开的。在刚开始时,我们组就遇到了不少的困难,老师每天讲的内容,总是有一些跟不上,多亏了老师的耐心的讲解,以及课后自己去认真专研,才逐渐消化了课上的知识,跟上了老师的脚步。在此,我想感谢一下此次课程设计的老师和我一起学习的同学。虽然这次课程设计结束了,但是我觉得我还是有必要继续学习下去,去更加深刻的了解什么是嵌入式技术。四、参考文献【1】 深圳托普微科技开发有限公司LM2028 LCD ModuleUser ManualEBOLhttp:wwwtopwaydisplaycorn,2O0412-20 【2】 谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003。【3】 宋春荣,通用集成电路速查手册,山东科学技术出版社,1995。【4】Arnold Berger,嵌入式系统设计,吕骏 译, 北京:电子工业出版社, 2002 五、附录源程序:#include sys/stat.hfcntl.hsys/mman.hstdio.herrno.hunistd.h#inc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1