基于单片机的贪吃蛇游戏的实现

来源 :科技尚品 | 被引量 : 0次 | 上传用户:cyon
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:文章是基于ALIENTEK精英STM32开发板,在μC/OS-II嵌入式操作系统下,用C语言进行的简单贪吃蛇游戏设计。本游戏设计主要利用触屏显示模块、LED测试模块和RTC时钟模块来控制游戏运行。利用LCD触摸屏实现四个轻触按键,将按键信息发送至邮箱,控制上下左右,实现贪吃蛇的简单吃豆、计数和整个游戏界面显示等相应功能。
  关键词:贪吃蛇游戏;STM32单片机;μC/OS-II嵌入式操作系统
  中图分类号:TP368.12 文献标识码:A
  手机游戏的历史已经超过十年,其是现代生活的一种娱乐方式。贪吃蛇游戏作为早期的嵌入式开发游戏,虽然游戏内容和画面都很简单,但在手机游戏出现的早期,其是一款相当经典的游戏[1]。
  1 总体方案设计
  本次设计的主要硬件模块,选择使用ALIENTEK精英STM32开发板。基于开发板的Cotrex-M3内核,及μC/OS-II嵌入式操作系统,将μC/OS-II嵌入式操作系统移植到ALIENTEK精英STM32开发板上。在μC/OS-II嵌入式操作系统下,利用单片机的内设LED显示灯模块以及RTC系统时钟等两个模块相互配合,并结合STM32搭载外设4.3寸TFTLCD液晶显示屏的显示和触摸功能,来实现贪吃蛇游戏的简单吃豆、计数以及整个游戏界面显示等相应功能。系统总体设计框图如图1所示。
  2 游戏的软件设计
  2.1 系统总程序设计
  本游戏从游戏开始后进行难度选择,通过选择难度确定蛇运动的速度,由此开始游戏。开始游戏时,蛇首先向指定方向运动,再通过按键控制蛇的运动方向以及游戏的暂停与开始。如果蛇吃到食物,则蛇身增长;如果蛇碰到自身和墻壁,则游戏结束,通过触屏按键重新开始游戏。游戏的总流程图如图2所示。
  2.2 优先级任务设计
  在μC/OS-II嵌入式操作系统下,软件设计要分不同任务进行设计,且每个任务按各自优先级高低顺序执行,任务之间通过信号量及消息邮箱进行通信。
  此次设计主要创建三个不同优先级别的任务:LED任务(led_task)、触摸屏任务(touch_tesk)、贪吃蛇任务(snake_task)。优先级的顺序为touch_tesk>snake_task>led_tesk。即开始游戏就执行贪吃蛇任务,如果屏幕扫描到有触摸按键按下,就发送触摸事件消息到邮箱;此时,游戏任务从邮箱中获取消息,开始执行游戏任务。
  优先级任务设计流程图如图3所示。
  2.3 游戏显示任务设计
  设计的主要思路为,将屏幕界面分为按键控制模块和游戏界面模块,初始页面使用LCD的画键盘功能设计游戏等级,选择等级后清屏进入游戏界面。游戏界面将屏幕分成720个小方块,即地图上有720个点,每个点的数值代表0位空地,大于0为蛇身,-1为食物。一开始设定所有的点都为0,利用RTC时钟随机将一个点的数值设为-1,再将连续3个点分别置1、2、3代表蛇身,这就是贪吃蛇的初始长度,之后蛇身数值增长,因此蛇身的数值都是大于1的。
  2.4 蛇身运动设计
  根据输入的键位值来确定蛇的方向。蛇的运动方式为柔体传动,即蛇身的位置不变,蛇头向相应的方向前进,蛇尾相对于上一次响应减少一个方块,而不是输入某一个方向后整体向同一个方向移动。
  因此,在设计时要定义一个数组map[i],用来储存蛇身的数据,用LCD写入颜色的功能将这个数组涂上贪吃蛇的颜色。定义蛇尾为1,蛇头每前进一步,len增长,map值自加,向前的格子涂上蛇身颜色。同时,通过坐标检测确定蛇并没有吃到食物,此时使用len自减。这样,贪吃蛇的总长度就没有发生变化。将map=1的格子涂上白色,即去掉蛇尾,再将map自减,完成蛇的一次向前运动。同理,如果蛇吃到了食物,则将食物涂为蛇身颜色,此时len增长,map增长,且将不做自减。此时,蛇再进行向前运动。
  具体实现细节如下。
  2.4.1 判断蛇的移动方向
  初始时将cl定义为蛇的运动方向,当触屏任务将发送指令时,蛇头向相应位置的坐标增加,即蛇向相应的方向移动。在运动过程中,如果输入的运动方向与贪吃蛇正在运动的运动方向相反,则会发生反向运动。为了避免反向运动造成程序运行错误,需要判定运动方向不为指令方向的反方向。
  2.4.2 判断蛇是否吃到食物
  根据蛇头的坐标与食物的坐标是否相等,来判断蛇是否吃到食物。如果吃到食物,则蛇的长度和游戏分数均加1,并执行RTC时钟指令,出现下一个食物。吃掉食物后,蛇的关节数加1,并根据蛇的移动重新画出蛇的身体。
  2.5 结束任务设计
  根据设定的游戏区域范围,如果蛇头的坐标超过该范围,即相当于蛇撞墙死掉,游戏结束;当蛇长超过3的时候,就有可能与自身相撞,判断当蛇头的坐标与蛇身体的任一坐标相等时,蛇就死掉,游戏结束。判断如果蛇的sh.x和sh.y在设定的区域外或map[sh.y * 30 + sh.x]大于1,则说明蛇死掉,就触发游戏结束。
  蛇死掉后,游戏任务触发信号量,开启时钟延时。此时,游戏结束任务获取信号量,开始执行游戏结束任务,即在LCD显示屏上显示“GAME OVER!”和“RESET”按键。点击“RESET”按键,可以重新回到游戏页面。
  3 结语
  本次设计实现了贪吃蛇游戏的基本功能:游戏开始时,通过方向键控制贪吃蛇的运动方向;当贪吃蛇吃到随机出现的食物时蛇身增长,当蛇碰到墙壁或者自身时,蛇死亡,游戏结束。并且在按键、吃到食物以及贪吃蛇死亡时配合不同音效,同时游戏有三个可调节的难度供选择
  参考文献
  [1] 刘晓峥.浅析基于J2ME平台的贪吃蛇游戏开发[J].科技视界,2013(17):38-39.
其他文献
摘 要:文章对状态检测技术基本原理和应用进行分析,选取了某地区220kv变电站电气设备状态检测的三个典型案例进行分析,简述各案例的试验方法和诊断方式,综合诊断故障原因。通过案例分析现阶段状态检测存在的问题,针对现场状态检测项目工作注意事项进行简要分析,为实际工作中存在的主要问题制定相应对策。最后针对状态检测现状,进行总结与展望。  关键词:状态检测;案例;存在问题;趋势  中图分类号:TM507
目前,台湾房屋仲介业正加快步伐抢占上海滩头。继台湾信义公司、太平洋房屋公司在上海设立分公司之后,原本采用商标授权形态进入上海市场的台湾住商不动产公司,已决定由台湾
The key question of this talk is whether work can be extracted from a heat engine by using purely quantum mechanical information.If the answer is yes, what is i
会议
一、上海外商投资企业发展概况 随着上海经济的高速发展和浦东开发的快速启动,上海的外商投资出现了迅猛发展的势头。截止到1993年底,已有54个国家和地区在上海投资8056个项
摘 要:在当前城市建设发展的过程中,建筑工程的数量不断增多,民众对城市建筑工程的质量要求也不断提高,大部分施工团队也越来越在意建筑工程的质量。但由于城市建筑工程数量的不断增加,施工场地周边的自然生态环境已经遭受到严重的破坏,并且一些建筑工程管理人员的能力存在着一定的不足,从而导致施工的质量不断下降。而在全球当中,大部分施工企业需要面临环境、能源两方面的问题,而这两点已经使人们的生存环境不堪一击。在
摘 要:随着全球科技的迅速发展,VR技术在儿童出版业的应用,大大提高了儿童出版行业的多样化发展。但VR技术仍处于发展起步阶段,本文对其中存在的问题进行分析,为今后VR技术与儿童出版业更好地结合提出具体建议。  关键词:VR技术;儿童出版业;问题及对策  中图分类号:G230.7 文献类型:A  学者马歇尔·麦克卢汉认为:“任何一种新兴媒介对人类事物的尺度、进度和标准产生影响,从而强有
耕种概要: 移栽3月27~28日(尼龙大棚使用塑料薄膜0.15M/M×210cm;银灰色薄膜0.05M/M×180cm)。座瓜5月8~14日(砧木:使用杂种优势的葫芦)。收获调查 6月 21~22日。西瓜的栽培要
会议
许多年轻父母认为鸡蛋营养丰富,是婴幼儿最好的食品,结果一日三餐给孩子吃鸡蛋,吃得孩子烦躁不安,毛发脱落,面色苍白。这是因为鸡蛋吃多了,使孩子体内含氮物质堆积,引起营养
摘 要:2003年至今,研究人工智能在智能建筑上的应用的文献大概有5000篇。其中大概有期刊1500篇、博硕士论文2000篇、报纸1000篇等。纵观大多现有的研究成果,对人工智能在智能建筑上的应用这一概念已经有了透彻的理解,对人工智能在智能建筑应用上存在的主要问题已经研究的比较全面。文章将以人工智能在智能建筑上的应用为例,分析其在发展中存在的问题和相应的解决对策,并重点总结当前我国人工智能在智能建