欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于cortex-a53的俄罗斯方块游戏设计与实现.docx

    • 资源ID:96763485       资源大小:5.79MB        全文页数:42页
    • 资源格式: DOCX        下载积分:35金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要35金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于cortex-a53的俄罗斯方块游戏设计与实现.docx

    基于Cortex-A53的俄罗斯方块游戏设计与实现摘要:因为社会的飞速发展,所以人们的生活节奏也在加速发展,随之而来的压力也在倍增,游戏逐渐成为释放压力的最热途径之一。而俄罗斯方块2048游戏则是这几年最火的智益游戏其中之一。本文因此选题基于Cortex-A53的俄罗斯方块游戏设计与实现,主要是在基于ARM Cortex-A53的6818开发板上用C语言进行开发,最终通过点击触摸屏实现两个及两个以上的相邻的相等数字合并成一个新的随机数,这个随机数是原来的两倍,被合并的位置也会产生一个新的随机数,直到出现2048或者相邻的数字不能合并的时候,便结束游戏。为了使游戏更多元化,还加入了音乐播放器和视频播放器这两个功能。本文首先分析了设计2048游戏的背景,然后讲述了2048的发展状况,并根据相关研究方法分析设计2048所需用到的相关知识及工具和环境,编写实现2048游戏的功能的算法和两个播放器的控制代码。关键词:2048游戏,Cortex-A53,播放器Design and Implementation of Tetris Game Based on Cortex-A53Abstract:Because of the rapid development of society, people's life rhythm is also accelerating, and the pressures that follow are also multiplying. Games have gradually become one of the hottest ways to release pressure. The Tetris 2048 game is one of the hottest puzzle games in recent years.The topic of this article is based on the design and implementation of the Tetris game based on Cortex-A53. It is mainly developed in the C language on the 6818 development board based on ARM Cortex-A53. Finally, two or more adjacent two or more adjacent Equal numbers are merged into a new random number. This random number is twice the original number. A new random number will also be generated at the merged position. Until 2048 or adjacent numbers cannot be merged, the game will end. In order to make the game more diversified, two functions of music player and video player have been added.This article first analyzes the background of designing 2048 games, then tells the development of 2048, and analyzes the relevant knowledge, tools and environment required to design 2048 according to relevant research methods, writes algorithms and two playbacks that implement the functions of 2048 The control code of the controller.Keywords:2048 game,Cortex-A53,PlayerII目 录1 绪 论11.1 研究背景和意义11.1.1 俄罗斯方块2048游戏的背景分析11.1.2 本课题的研究意义21.2 文献综述31.2.1 国内研究31.2.2 国外研究31.3课题研究方法和内容31.3.1 研究方法31.3.2 研究内容42 系统分析52.1 系统背景及现状52.2 系统需求分析52.2.1 综合描述52.2.2 用户需求62.2.3 功能需求62.3 可行性分析73 系统硬件环境83.1 系统总体设计83.2 6818开发板83.2.1 开发板简介83.2.2 开发板接口93.2.3 开发板硬件接口103.3 LCD触摸屏模块103.4 开发工具113.4.1 开发环境113.4.2 开发连接工具113.5 挂载124 系统软件实现134.1 系统整体流程图134.1.1 主函数144.1.2 获取坐标函数154.2 2048游戏控制代码的实现154.2.1 主函数164.2.2 初始化函数184.2.3 开始游戏函数184.2.4 触摸屏204.2.5 棋盘显示224.2.6 重置游戏244.2.7 结束游戏函数244.3 音乐播放器254.3.1 主函数254.3.2 初始化函数264.3.3 获取坐标函数274.4 视频播放器274.4.1 主函数284.4.2 功能函数285 系统测试315.1 开发板调试315.2 显示屏调试32参考文献:37致谢38IV1 绪 论1.1 研究背景和意义1.1.1 俄罗斯方块2048游戏的背景分析俄罗斯方块游戏是1990年代最热门的游戏,是Alexei Pakitnov发明的游戏。俄罗斯方块是下落版的休闲智益游戏的起源,是最经典的世界游戏之一,在当时,可以用游戏机来进行游戏,方便人们携带,因此也掀起了一段热潮。游戏规则是玩家控制各种形态不一的方块下落来通关。如图1-1所示:图1-1 经典俄罗斯方块游戏图本文实现的就是俄罗斯方块的其中一种叫2048,而本课题做的是2048游戏中的数字合合模式,游戏操作界面如图1-2。图1-2 2048小游戏操作界面2048的数字合合模式是由5*5的棋盘制作的,里面有25颗棋子,这25颗棋子是再开始游戏前便产生2,4,8这三个随机数分布再随机的位置上,开始游戏后选择相同的两个或两个以上数字进行合并,合并后产生新的数字是原数字的两倍,被合并的数字被清零后产生新的随机数(2,4,8),以此来进行游戏,出现数字2048游戏胜利。反之,若没有相同的数字进行合并,游戏便已失败告终。2048小游戏是一款休闲智益类的游戏,它操作简单,具有趣味性和脑力性,不仅可以在app上玩,也可以在微信上或者网页上完,十分方便有趣。因此,在人群中能看到不少学生、上班族、儿童或者老人都在玩这款游戏。1.1.2 本课题的研究意义在现代科技日益生活化的今天,单一的游戏格局已经不能满足我们的需求,因此需要我们去挖掘更能吸引人眼球的游戏画面和让人更放松的游戏玩法。而现有的2048游戏大部分都是电脑端或者手机安卓端的,而我在学习了cortex A53相关技术后,就萌生了一个想法,利用我在学校和公司学到的专业知识,用6818开发板实现一个基于ARM Cortex-A53的俄罗斯方块中的新2048游戏中的数字合合模式,该模式的玩法是选择相邻的相同的数字进行合并,当你成功合成2048方块的时候即为过关。课题将来要达成以下目标:完成硬件系统的搭建,将特定裁剪的内核烧入ARM53开发板,使2048合合游戏的棋盘显示在LCD屏幕上,且能用手指点击触屏合并相同的数字,模拟玩游戏,可以随时进行游戏和重新开始,并且计算游戏得分,还有音乐播放器和视频播放器这两个功能。2048游戏是基于Cortex-A53在嵌入式Linux平台进行开发,针对想进行休闲娱乐或者减压的人群进行开发设计,最终目的是希望实现一个用手触屏操作(上下左右移动),规则简单,容易操作的新2048游戏中的数字合合模式智益类小游戏,从而能够提高我自己的编程水平,帮助我熟练掌握c语言技术开发相关知识的运用,培养我的独立思考和解决问题的能力,为我今后的Linux系统开发设计和运用打下一个良好的基础。1.2 文献综述1.2.1 国内研究现在,随着社会飞速的发展,人们的生活多姿多彩,游戏逐渐成为生活的调味品,即减压器。压力需要被释放,身心才能健康,人才有动力和活力去工作。而2048则是大部分人分解压力的途径。因为2048的规则简单明了,所以玩家玩游戏的时候不会太烧脑,还能娱乐自己。因此,可以看到大街小巷的人群中有不少的人在玩这款游戏。不仅如此,在大学里,也可以看到大学生通过2048游戏解闷和释放压力。1.2.2 国外研究2048游戏是在1024游戏的基础上进行开发的,因此它是数字类游戏.现在的2048被发展成各种类型的衍生模式,其中2048中国朝代版特别适合热爱中国文化的玩家。2048游戏发展到现在,在全球多个国家的游戏排行榜上屡屡上榜,其中KETCHAPP公司的IOS版本的下载量最多和传播度最广。1.3课题研究方法和内容1.3.1 研究方法本论文在撰写过程中主要运用了以下两种研究方法:文献研究法:根据需求,通过线上查阅书籍和相关的文献来获取有关研究课题的资料,从而详细、科学、正确、客观、全面地了解2048游戏所需的技术,找研究2048游戏时出问题的本质属性,进而设计和编写程序。实验法,根据已有问题进行研究和分析,进行假设和验证的方法。通过相关书籍和文献资料等素材,进行实2048游戏的设计和编程等操作。包括游戏的界面设计,编程和测试。1.3.2 研究内容本论文一共分为五个部分,具体内容安排如下:第1章:绪论。主要介绍本论文的研究背景和意义,然后是国内外的文献综述,再然后,将2048游戏与社会实际发展情况相结合,阐述扫2048游戏的研究的背景和意义。第2章:系统分析。介绍2048游戏的开发背景和现状,进行需求分析和可行性的分析。第3章:系统硬件环境。介绍开发工具和系统总体设计、6818开发板和LCD显示屏,说明开发工具与硬件环境搭建和怎么挂载成功。第4章:软件系统设计,介绍具体的2048游戏和音乐播放器以及视频播放器的控制代码。第5章:系统测试。对开发板和显示屏进行调试,对2048游戏和播放器之间整体进行测试,呈现最终的效果。第6章:结论。总结系统设计的不足和收获。2 系统分析本章主要是介绍2048游戏的开发背景和现状调查,进行需求分析和可行性的分析,提出使用的开发工具。本设计需要实现2048的数字合合模式和音乐播放器和视频播放器,硬件需要用到Cortex-A53的开发板的显示屏和音频模块,最终实现在开发板点击触摸屏可以在界面的左侧打开音乐播放器和视频播放器,并能在界面的左侧进行游戏。2.1 系统背景及现状如今,社会的发展,科技的进步,使得人们的生活节奏也在不断加快,压力也变得越来越大了,而游戏成为人们减压的首选。在游戏中,能体验到不一样的乐趣和精神上的放松。智益游戏因规则简单,不需费什么脑力而发展迅速,成为这几年中最火爆的游戏之一。2048游戏则是这类游戏中之一,因为2048游戏的多种模式,适合多种人群使用,所以人们对其也变得越来越热衷。现在,2048游戏是人们游戏下载榜中的火热游戏,它不需联网也可以玩,模式和玩法也多种多样。故而,2048游戏正呈现出一种生机盎然的发展趋势。2.2 系统需求分析2.2.1 综合描述2048游戏是如今游戏排行榜的最火热游戏之一。用户工作疲惫之余,玩一玩2048游戏既可以抒发烦闷的心情,也可以放松一下紧绷的神经。2048游戏的合合模式只需滑动一下手指便能玩,即简单又自然,也是许多人爱上这种游戏模式的原因之一。本课题需要实现2048的数字合合模式,外加音乐播放器和视频播放器,需要Cortex-A53的开发板,如LCD显示屏即触摸屏,音频。总体实现是先将界面做出来,如做一个棋盘,音乐和视频这两个按键,再将2,4,8这三个数字的图片随机填到棋盘中,并把棋盘填满,这是最基本的界面设计。然后分析2048数字合合模式的算法,推算出棋子的合并算法和游戏结束的实现算法,最终能在显示屏上实现该游戏的开始和重新开始。音乐播放器和视频播放器则需要阅读相关文档,熟悉所要用到的命令格式,并用switch函数来实现音乐播放器的的功能(如:播放上一首、下一首、暂停、继续和退出。)与视频播放器的功能。(如:重新播放、暂停、继续、调节音量和退出播放。)视频播放器可以通过管道来实现这些功能的,但是要注意创建管道时的命令格式和路径。2.2.2 用户需求移动游戏正在渗透人们的生活,在工作之余,课间,睡前,甚至在交通工具上都有大量的人在玩游戏,听音乐和玩抖音。相对于工作能满足人们生活上的需求,游戏、音乐与视频更能满足人们的精神上的需求。2048游戏的数字合合模式正适用于生活在高压的现代社会的人们,他们急需在游戏中放松身心,才能身心保持健康。在此基础上,我还增加了音乐播放器和视频播放器以满足用户的需求,使得整个游戏变得更多样化。2.2.3 功能需求在这课题设计中,2048游戏的数字合合模式将会实现通过LCD触摸屏触动棋子来控制游戏的玩法,通过点击棋盘中的棋子来进行游戏,将实现开始和重新开始游戏等操作,同时加入音乐和视频进行舒缓身体的焦虑。2048游戏的数字合合模式的规则是:在一个5*5的格子里随机生成2X数字(X<=3,X>0),并把它填满棋盘中,玩家点击其中一个棋子时,这个棋子会和附近其他相同的数字合到一起生成一个新的数,该数字是之前的两倍,其他被合并的棋子会随机产生新的数字。当玩家玩到2048或者没有相同的相邻数字进行合并时就结束游戏。该游戏只需在触摸屏上以点击棋子的方式来实现棋盘上的棋子的移动,使得相邻的相等数字合并成一个新的数字,以此类推,直到出现2048或者棋子不能合并时,便结束游戏。2.3 可行性分析2048的数字合合模式功能简单,易实现,cortex53芯片具有体积小、成本低、支持多种品牌、可以联网、支持电源休眠唤醒,支持 Linux和Ubuntu嵌入式操作系统的特性,该芯片的显示屏是800*480的分辨率可支持2048游戏的实现,2048的界面是由80*80的图片组成游戏界面,因此显示屏足够显示游戏画面。显示屏还可以通过点击函数来实现音乐和视频播放器的功能,通过点击屏幕上的按键坐标来实现播放视频和音乐。由于在之前已经学习在触摸屏上播放音乐相册和播放音乐,所以对于触摸屏上的操作还是比较熟悉的。游戏使用arm-linux-gcc交叉编译环境在Linux的Ubuntu上用C语言编译,在开发板上挂载后进入/mnt目录下编译可执行文件,最后实现能在开发板的触摸屏上进行游戏和播放视频与音乐。该设计的图片是用bmp格式来显示的,但是在开发板上是24位显示的,所以要用函数把24位转换成32位int的方式显示,转换后先用lseek(fd, 54, SEEK_SET)偏移bmp格式头,即编移54个字节,然后用内存映射显示图片。音乐播放器则需要移植madplayer,而视频播放器移植mplayer来实现音乐和视频音频的播放。3 系统硬件环境3.1 系统总体设计2048游戏的数字合合模式是在LCD显示屏上进行操作的,先进入主界面,有三个触屏按键,分别是音乐播放器、游戏和视频播放器。点击按键可进入对应的功能界面,可通过点击按钮来控制这游戏和两个播放器的各种功能。首先搭建一个棋盘。因为之前学习了播放器的制作,所以先制作音乐播放器和视频播放器,再制作游戏。两个播放器主要是madplayer和mplayer的移植,游戏则要测试开发板与虚拟机之间的环境,是否能挂载和传输文件,最重要的是测试显示屏(触摸屏)是否完好。3.2 6818开发板2048游戏的数字合合模式是基于Cortex-A53的6818开发板所研究而实现的。开发板使用的是64位cortex-A53架构,它的频率、性能比cortex-A9强大很多,不用担心性能问题。6818开发板的应用领域很广,包括智能家居、医疗、和车载等领域。3.2.1 开发板简介2048游戏的数字合合模式设计用到6818开发板(如图 3-2)的以太网接口、USB口、音频(音频和视频)、串口和电源。开发板需要用电源线进行通电后才能开启,而开发板与虚拟机通过串口和USB口进行连接,要用以太网互相ping通后才进行挂载,音乐播放器和视频播放器则需要音频的输入口进行测试,用音频的输出口进行播放音乐和视频。这款开发板具有的特性:体积小、成本低、支持多种品牌、可以联网。图3-1 6818开发板图3.2.2 开发板接口本设计用到cortex53芯片的开发板接口参数如表 3-1所示:表3-1 接口参数表接口参数表LCD接口同时支持TTL、LVDS、MIPI接口输出Touch接口电容触摸,可使用USB或串口扩展电阻触摸音频接口AC97/IIS接口,支持录放音以太网接口支持千兆以太网UAART接口6路串口,支持带流控串口HDMI接口高清音视频输出接口,音视频同步输出启动配置接口无需启动配置,核心板自动适配3.2.3 开发板硬件接口本课题设计游戏及音乐和视频播放器所用到的硬件接口如下表3-2所示:表3-2 硬件接口表硬件接口名称说明UART0调试串口(默认调试串口,RS232电平)HDMI接口HDMI输出接口LCD接口RGB输出接口POWER开关电源控制开关,K53.3 LCD触摸屏模块触摸屏的原理图如图3-2 所示:图3-2 触摸屏原理图LCD显示屏是一个480*800的显示屏,2048游戏的数字合合模式主要通过这个触摸屏来操作,首先要测试屏幕是否完好,然后再将棋盘显示在LCD屏上,之后将棋子随机铺满棋盘,然后通过手指触动屏幕进行游戏。由此可见,LCD显示屏在这设计中有多重要。显示屏显示图片和颜色有两种方法:write() 和 内存映射。用write()测试屏幕好坏,用内存映射来显示设计中所用到的颜色和图片,通过open函数打开LCD屏幕驱动(/dev/fb0),然后通过read函数读取BMP格式图片(棋子)数据。期间需要把24BMP的数据转换成32位的LCD数据,再通过write函数将转换的32位数据写入屏幕驱动里面,之后关闭文件。最后将此模块封装成函数,以便调用。用触摸屏进行游戏设计:先封装函数,定义获取触摸屏数据函数,获取一次点击的坐标,每点击一次就会触动棋盘上的棋子的变化,如果相邻的棋子的数字和点击的棋子相等,相等的棋子会先被清零,再显示一个随机数的图片,而点击的坐标对应的棋子中的数字会是原来的2倍(即这个位置也会有新的图片显示代替原来的图片),一直点击直到每个棋子相邻的位置都没有相同的数字或者出现2048这个数字图片时,游戏就会结束,并回到菜单界面。3.4 开发工具3.4.1 开发环境软件:Vmware Workstation +Fedora Core 8 + MiniCom/Xshell + ARM-LINUX-GCC交叉编译开发环境。3.4.2 开发连接工具(1)安装USB转串口线驱动: PL2303_Prolific_DriverInstaller_v1210和Hl-340;(2)打开串口工具 :SecureCRT.zip ;(3)开发语言:C语言。(4)播放音乐和视频的播放器:madplayer和mplayer。3.5 挂载嵌入式开发当中通常会使用2 种方式来运行应用程序:下载和挂载。在目标机嵌入式设备存储资源有限的情况下受到存储容量的限制,因此,在调试阶段通常的嵌入式开发经常使用 NFS 挂载的方式进行。 NFS挂载在开发板上操作:mount -o nolock 192.168.5.20:/home/gec/nfs 。 电脑的IP:192.168.5.10,虚拟机的IP:192.168.5.20,开发板的IP:192.168.5.30,需要先在开发板和虚拟机上互相ping通才能挂载成功。因为开发板配有串口线,为了方便,一般都是用串口进行挂载。但是,由于串口的两端都是九针孔口,所以还需要串口来转接,也可以直接用串口转接线。串口下载的特点:串口下载速度非常慢,针对比较小的文件(500K以下文件)。串口下载只需要链接串口线就可以使用了。配置串口时要选协议Serial,端口则要去设备管理器查看所显示的是哪个端口,波特率要选115200,右边的流控把打勾的都去掉。如图3-3所示:图3-3 串口配置图4 系统软件实现4.1 系统整体流程图本设计的主界面是由音乐播放器、2048游戏和视频播放器三个按钮键组成,点击相应的按钮会进入相对应的子界面。若点击音乐播放器,一进去会先响起音乐和对应的歌名图片,音乐界面的右侧会有五个按钮,分别是播放上一首歌、播放下一首歌、暂停、继续和退出按钮;若点进去游戏界面,率先看到的是5*5的游戏界面图和开始、重置与退出三个按钮;若点进视频播放器,在视频播放器的下方会有一排按钮,即播放、暂停、继续、调节音量大小和退出按钮。系统整体流程图设计如图4-1所示:图4-1系统整体流程图4.1.1 主函数主菜单函数包括2048游戏、音乐播放器和视频播放器三个已经封装好的函数。代码如下:4.1.2 获取坐标函数get_direction()函数为获取点击游戏、音乐播放器以及视频播放器的按钮坐标。4.2 2048游戏控制代码的实现如图4-2所示,为整体游戏流程图设计:图4-2整体游戏流程图要研究这款游戏,首先是分析游戏系统的流程。在编写好每个部分的功能后,要将其封装,然后合并,最后一步是检查系统的可行性。游戏结束:当相邻的数据都不相同棋子不能移动或者棋盘显示2048的数字图片时,那么就判定为游戏结束。游戏的核心函数是自我调用函数,当点击某一个棋子时,就会触动递归调用的自我调用函数来查询附件与之相等的棋子,如果相等,则继续自我调用,以此方法来遍历整个棋盘中的棋子,最后将与之相邻并相等的棋子的数字清零,并产生一个新的随机数,点击的棋子的数字乘以2,以此来进行游戏。4.2.1 主函数设置一个main程序为主程序,作为模块的框架程序,调用功能函数实现模块功能。该函数主要调用change_matrix()来实现游戏的开始和重置的功能。4.2.2 初始化函数init_matrix():在随机位置填充随机值。因为每次点击的数字不相同,合并的数字的位置也不规律,所以要把要合并的数字清零,在填充随机数。rand()是生成随机数的函数,rand()%5是指随机生成0-4,并在这5个数字中随机选择一个数字。代码如下:4.2.3 开始游戏函数star_game():包括change_matrix()获取点击坐标、func()把与点击数字相邻的相等数字清零和draw_rand()给清零位置赋予新的随机数函数。func(int xy)函数是遍历点击的数字的相邻位置是否有数字与之相等,相等的就可我调用,把相等的数字的位置清零。代码如下:change_matrix():获取点击坐标matrix,并把该坐标的值赋值给value,返回值是0-24。代码如下:4.2.4 触摸屏get_finger_direction()是用来获取点击matrix00到matrix44的的坐标函数,返回值是0-24。由于数字图片的像素是80*80的,而触摸屏的大小是480*800,所以是从坐标(185,50)开始显示游戏界面的。要先打开显示屏系统设备(/dev/input/event0),判断是否触动触摸屏,再去设置棋盘matrix55坐标的值。由于代码很长,所以在这里只展示了部分的坐标设置代码,代码如下:4.2.5 棋盘显示void draw_bmp_byname(const char *bmpfile, int x0, int y0, int w, int h)这个程序是在特定的位置显示图片。Bmpfile:要显示的bmp图片的文件名,x0:在屏幕上显示的左上角顶点的x轴坐标,y0:在屏幕上显示的左上角顶点的y轴坐标,w: 位图宽度,h: 位图高度。图片显示代码如下:draw_matrix()把棋盘矩阵在屏幕上显示出来,由于棋盘是5*5的,所以BOARDSIZE的值是5,i是矩阵的行,j是控制矩阵的列,PIECE_SIZE是棋子的像素大小。因为棋盘即矩阵初始化是0,所以先在显示屏上描绘出5*5的矩阵,再在矩阵上铺满随机数2,4,8的棋子。代码如下:4.2.6 重置游戏重置游戏,即重新开始,初始值归零。代码如下:4.2.7 结束游戏函数如果显示图片2048,或者相邻数字不相等时,便结束游戏。4.3 音乐播放器音乐播放器通过设置特定的坐标来在显示屏上显示按键(功能),并点击相对应的按键来控制音乐播放器。用开关控制游戏。使用音乐需要进行madplayer移植。madplay是基于以前的oss建构的,所以在内核配置时要选上。4.3.1 主函数主函数用开关控制音乐播放器的这些功能:播放上一首歌、播放下一首歌、暂停播放、继续播放和退出播放。先进行初始化music_init(),再定义一个变量move来获取点击按钮的坐标,再进入开关控制功能的实现。若是点击播放上一首歌的按钮,会显示出相对应的图片,图片存储在bmp数组里面,而music数组存放的是所要播放的歌曲。4.3.2 初始化函数music_init()函数主要是打开LCD设备,显示音乐播放器界面图,然后播放第一首歌并显示相应的图片。4.3.3 获取坐标函数get_finger_direction():是用来获取功能按钮的坐标的。以下是部分代码:4.4 视频播放器MPlayer是一款开源的多媒体播放器,用命令来实现播放器,这次主要用的是slave工作方式。slave的操作有两种方法:从控制台输入控制命令(用于测试)和从有名管道(fifo)输入控制命令(应用编程中使用)。现在使用的是方法二,需要创建管道,创建命令:mkfifo pipe_名字。创建管道后要加权限。4.4.1 主函数主函数是先打开LCD设备,再创建管道,通过管道实现各个功能的运行时不会冲突,然后用内存映射显示视频播放器的界面,最后调用show_vedio()函数实现播放器的功能。4.4.2 功能函数视频播放器的show_vedio()函数主要通过get_direction()函数来获取点击的功能坐标,通过switch()来实现视频播放器的播放,暂停播放,继续播放,调节音量,重新播放和退出功能。实现代码如下:5 系统测试 5.1 开发板调试挂载时的调试主要是先测试是否能与开发板ping得通,然后再测试用串口连通虚拟机和开发板,即是否能挂载。一般都能挂载,刚开始的时候因为挂载不上,后来买了转接口就能挂载了。测试开发板与虚拟机之间的网络是否通畅要先配置好IP。如图5-1所示:图5-1 虚拟机配置ip图配置好IP后发现还是不能够ping通,发现是防火墙没有关的问题,关防火墙后,就能ping通了。Ping通后用命令挂载,挂载成功。如图5-2 所示:图5-2 挂载成功图调试音乐播放器在开发板上的使用:将madplay拷贝到根本文件系统的/bin路径下,然后检查开发板/lib目录下有没libz.so 和libm.so, 如果没有则需要把交叉编译路径下的对应库文件复制过去。利用库文件api接口编写代码,实现录制和播放,录音和播放时都要戴上耳机,有时候板子会不灵敏,需要多测试几遍,而且要大声地对着耳机说话,不然放出来的声音会听不到。测试开发板与视频播放器是否能正常使用和测试音乐播放器类同。5.2 显示屏调试首先是输入子系统之触摸屏的测试,用点对点函数进行测试,即用手指触摸显示屏,显示滑动时的坐标有变化即触摸屏没问题。如果退出后乱码,断开重新连接。然后测试图片显示是否正确,由于图片显示在LCD屏上是上下相反的,检查了一下代码,发现并没有出错,而是图片转换的问题,所以需要提前将图片旋转好或者是用函数将其翻转。如图5-3所示:图5-3 图片垂直翻转图如果要显示在特定的位置,则需要用坐标、内存映射和偏移量来指定图片的位置,我第一次因为没有规划好棋盘的位置和图片的大少,导致画面重叠了,然后一步步地改变代码中图片的坐标,慢慢实现了设想的效果。最后,测试在棋盘上触动棋子。是否能正确地移动棋子和产生相应的数字图片对于整个游戏画面来说至关重要,有时候触摸屏会死机,需要重新启动开发板再进行测试。发现滑动函数并没有问题,再测试点击音乐,视频是否能播放,暂停和继续。我发现音乐图片显示回和游戏界面有一些重叠了,所以就慢慢调整他们的距离,最终实现音乐和游戏不会冲突,也可以自如地再显示屏上操作游戏。在实现视频播放器的时候,发现创建管道后还是不能用其他功能,最后发现是在创建管道的时候填写的路径不对,我创建在挂载的目录下(./pipe2),但是代码中写的路径是在根目录下(/pipe2),改正后得以正确使用视频播放器。使用800*480显示屏时一定要精准地计算图片与图片的距离,不然和容易会重叠在一起,也要把握好坐标的计算。我第一次用到棋子像素是80*80,几乎覆盖掉整个画面,所以把棋子的像素改成70*70了,70*70的像素会使图片偏移,最后还是用到80*80的像素图片。把描绘棋盘和棋子的函数封装好,游戏界面就能做出来了,如图5-4所示。图5-4 游戏界面图2048游戏的数字合合模式的算法困扰了我很长一段时间,因为是点击某一个数字进行数字的合并的,所以要遍历与这个棋子相邻的四个方向,如果相等要继续遍历下去,最终递归算法的自我调用函数来实现遍历的。最终的游戏测试只能实现开始游戏、重新开始的功能操作,音乐播放器(如图5-5)能实现播放上一首、下一首、暂停播放、继续播放和退出的功能。视频播放器(如图5-6)基本能实现的播放、重新播放、暂停、继续和退出基本功能,2048游戏的得分和其他非功能还在完善当中。图5-5 音乐播放器图图5-6 视频播放器图6 结 论 历经艰辛,我含泪完成了2048游戏合合模式的设计,基本达到了预期的目的与效果。该系统有一个LCD显示屏模块和6818开发板,在Linux系统中编译好代码,在开发板中运行,最终在显示屏上进行游戏的操作,通过触动相邻的相等数字的棋子合并形成一个新的数字,其他被合并的棋子则随机产生数字2、4、8,依次类推来进行游戏,当相邻的棋子都不相等时,游戏失败,合成2048则成功。 并能通过点击屏幕来控制音乐播放器和视频播放器的功能的实现。制作2048游戏,我的代码编辑能力有所提高,对于Linux系统的理解也不断加深,对于Shell脚本的应用也变得熟练了,但是我清楚地认识到我自己独立完成一个项目的能力还是有点不足的,今后会继续学习的。从一路走来,我走得很慢很难,但只要坚持下去,总会走到尽头的。 由于个人水平有限,本游戏做得界面简陋,功能很简单,所以增加了音乐播放器和视频播放器这两个功能。当初设想的功能很多,但做起来很难,所以有很多功能未实现,有机会的话会继续完善游戏的。参考文献:1. Keir Thomas.Ubuntu Pocket Guide and ReferenceM .MacFreda Publishing,2009.25-702.Garrels, Machtelt.Introduction to Linux (Third Edition)M.Fultus Corporation,2010.120-2103.Sarath Lakshman.Linux Shell Scripting CookbookM.Packt Publishing,2011.95-1294.弓雷. ARM嵌入式Linux系统开发详解(第2版)M.清华大学出版社,2014.228-3965.韦东山.嵌入式Linux应用开发完全手册M.人民邮电出版社,2008.33-806.沈大海.手机游戏开发技术与项目实战详解 M.人民邮电出版社,2008.280-4007.宋宝华.Linux设备驱动开发详解M. 人民邮电出版社,2010.6-318.高凌琴,陈青华.俄罗斯方块游戏关键技术探讨J. 信息技术与信息化,2008.2-39.(美)坦思利著 徐焱等译.Linux与Unix Shell 编程指南M. 机械工业出版社,2000.3-1510. 吴恒奎.Linux指令速查手册M.人民邮电出版社 ,2007.52-54致谢岁月如梭,自从大四开始,沈兰老师和梁秀妍辅导员一直很认真、关心和负责我的实习工作与生活,很感谢她们,因为她们的付出让我才不会手忙脚乱地度过这段日子。在我还分不清人生方向时给我指明路标和建议,同时也很感谢这些日子给予我安慰、关心和教导的人,让我踏近社会的步伐变得更轻松和懂得更多社会道理,还有与人相处之道。今后,我会继续努力工作,以此来回报家人的付出和期盼,不负老师的教导!38

    注意事项

    本文(基于cortex-a53的俄罗斯方块游戏设计与实现.docx)为本站会员(封****n)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开