在单片机中,以往我看到前辈们学长们做贪吃蛇的时候不是用汇编就是用FPGA语言编写。那我就在想,C语言可是最简单的语言。怎么不用C语言写呢。首先我们必须要知道。在设计单片机游戏时。我们要知道设计游戏的概念,对于大部分单片机+LCD的游戏设计,基本采用前后台方式,就是一个台中断,一个台循环 ,LCD部分基本是以固定点阵形式设计,什么叫固定点阵??首先先明确,我们设计的游戏不是什 么魔兽争霸或CS,而是黑白形式的固定点阵游戏,例如常见著名游戏贪吃蛇或俄罗斯方块。他们的每个点 都是预先就固定下来的,而且是比较大的点,这类专门的游戏机玻璃是经过厂家开模出来 的,有固定的COM,SEG线,然后接到专门的单片机上,例如常用的6502指令集合的单片机,常用的有stc和at系列的他们的资料你可以到
www.51hei.com去查询。对于业余设计的游戏,我们一般用如128*64的LCD来显示,那么我们设计的时候首先应该把 这个128*64的LCD分块,也就是分出固定点阵出来。LCD的基本点阵是128*64,就是· ¥##¥总之就是好多个点啦,但我们事实上不一定要运算这么多个点,除非你做的游戏很 有看头。例如你只用左边64*64的地方来做贪吃蛇,那么你打算你的贪吃蛇的活动空间是多 少呢?如果是8*8个点的话,算一下就是每个点64/8,64/8,也就是8*8个基本点阵,不过想好玩一点,当然就是要有16*16个点的活动空间啦,那么每个固定点阵就要占4*4的基本 点阵了。要注意,这些4*4的东西在64*64LCD上共16*16个,每个都要用来独立运算。
第二就是时钟:这个其实是游戏的速度,对于一般的弱智类游戏机,他也代表了难度,物体在每个时钟到 达的时候就传动一次,例如俄罗斯方块没个时刻向下跑一层。赛车游戏每个时刻想前走一 步。一般这类时钟的时间在0.X秒到1秒之间,物体有规律地匀速运动,让人看到感觉是连动。
第三运动:在这里,我先介绍两种比较普遍的弱智游戏机的物体运动规则:柔体传动,刚体传动。 刚体传动 代表作是俄罗斯方块,所谓刚体,就是硬硬的一个东东,运动的时候也不怎么旋转(注 意,俄罗斯方块是会旋转,但其实他是没有经过算法的旋转,纯提取数组的方式,也就是 把一个放块做成4个模式的点阵结构,其实就是4个方向,呵呵)对于刚体的传动,在每个 时钟到达的时候向一个方向(很可能是用户输入的)运动一个固定点阵。如果以坐标来表 达,就是物体的所有基本点阵同时向一个方向(X或Y)移动一个单位。 柔体传动
代表作是贪吃蛇,贪吃蛇跑动的时候并不是整条蛇向一个方向动的(呵呵,蛇蛇身体僵硬 了),而是在每个时钟的到来,物体由能量头带动(如蛇头),每个点的方向都向下一个 点传播,然后自己向新的方向走动一步,走动后,下一个点由于得到了上一个点的方向并
同样地运动一步,所以,他会马上填补上一个点的地方,如此类推。 说的好象没说,看不懂没关系,因为实际的算法可以简化(傻瓜才会一个个点来走的), 实际上在设计贪吃蛇的时候,只需要把蛇尾巴的那个点阵去掉,然后在蛇头的新方向放一 个点阵就是了。期间需要记录下每个蛇身的固定点阵的位置,并且在每个运动时刻过后刷 新一次每个点的位置。
第四显示接口: 我们用的一般是点阵式LCD,就是一大片点点,128*64,132*64,240*128等等等等啦,这 些又叫条屏,就是一写就写一条——8个点(有的也提供写一个点的功能,但贵,至少我没 有),那么如果你只想写一个点怎么办?那就得先把这个点所在的条读出来,然后通过 与,或,的运算后,再放回到LCD上,这时候就要涉及到一个读LCD的问题了,有的LCD提供 读的功能,你写过什么在上面他记的很清楚,但有的便宜货 就不行了,那么我们怎么办?没关系,你在内存中提取出一片空间,虚拟一个LCD出来,每 次写在真实LCD上面的时候,也同时写到内存的哪个虚拟LCD上,那么你要读出LCD的值的时 候实际就是读出虚拟LD上的数据,然后与或后,再重新写到LCD上,记得也要写到虚拟LCD 上哦。你可以把这片缓冲叫做显存,
第五。游戏流程:蛇向一个固定方向进行柔体传动,没个运动时钟到达要做:1。判断食物标志,没有食物了 就放一个,放的时候判断,不能和蛇身重叠 2。得到用户按键值,蛇走一步,并判断是否 撞死了,没撞死,再判断是否吃到东西了,没有吃到,就等下一个运动时钟,吃了?就增 长一点。置一个没有食物的标志。然后等待下一个时刻的来临。 呵呵,其实程序就是这么简单,基本设计只有LCD部分和按键部分是和单片机有关的,其他 都是程序思维和算法。对于菜鸟来说,难度在于思维,而不是单片机。本程序源代码可从 http://www.51hei.com/bbs/dpj-18901-1.html 处下载。
仿真效果如下:
关键字:单片机 游戏设计 贪吃蛇
引用地址:
单片机游戏设计之贪吃蛇用C语言也是有可能的
推荐阅读最新更新时间:2024-03-16 14:23
通过MSP430F1232最小系统测试单片机AD10程序
工作记录:测试单片机程序,包括单片机初始化设置,时钟等,主要是AD模块的设置,通过TI官网的1232例程进行程序的编写。 1、创建IAR项目,对项目的option进行设置,添加TI的例程c文件,编译。没有问题就可以连接JTAG向单片机中烧程序了。 2、单片机程序需要解决的几个问题: (1) 单片机时钟 上电默认情况下,主系统时钟(MCLK)和子系统时钟(SMCLK)采用的是内部DCO(采用内部电阻)产生的800KHz的时钟,辅助系统时钟采用的是片内超低功耗12KHz的内部振荡器(VLOCLK)产生的12KHz时钟。 Msp430F1232时钟源有两个,一个是LFXT1CLK,一个是内部的DCOCLK。ACLK只
[单片机]
基于单片机的数字PID实现直流电机调速(智能车)
现在做很多的智能车,都需要对车速进行控制.或匀速或变速,在调速算法中,PID的经典永垂不朽. 其实,简单的51单片机尚能轻易的实现平滑良好的调速,更不用说性能优良的单片机.然而,要做到最好,是需要很高的专业水平和动手能力.但是,工程上能达到我们的目标即可. 抱着 够用就好 的思想,我们来开始我们的调速旅程: 所谓的PID是肯定基于一个闭环系统而言的,什么是闭环系统呢,我简单的介绍一下: 看上面的这个系统,就不是一个闭环系统,而是一个开环系统.再看下面的这个就是闭环系统: 上图这个系统就是典型的闭环系统.大家也许看出来了, 开环 系统,就是系统没有反馈,是个 打开的环 ,而闭环
[单片机]
一种基于单片机的工频干扰滤除快速算法
工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等。一般可以通过滤波电路消除工频干扰,但这必将增加硬件结构的复杂程度。实际上,还可以采用数字信号处理的相关算法,通过软件滤波器滤除工频干扰。软件滤波算法的采用,无疑会在简化电路结构的同时,使系统的硬件资源得到更加充分的利用,并达到降低产品成本的要求。 AVR单片机是Atmel公司生产的8位精简指令集(RISC)单片机。与同类单片机相比,在运算速度、外设资源、灵活性等方面性能均衡,性价比较高。AVR单片机适合C语言开发,Mega系列AVR单片机还有一个内部硬件乘法器单元。这些特点都为软件滤波器的实现提供了极大的便利。
[单片机]
PIC单片机有什么特点和优势?
PIC系列单片机有什么优势? 自从我95年接触PIC单片机以来,便一直热衷于这种单片机的开发与应用。有不少朋友问我:PIC到底有什么优势?也许你也会有这样的疑问,所以我在这里略谈几点自己的看法。 1) PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片机,投资大不说,使用起来也不方便。PIC系列从低到高有几十个型号,可以满足各种需要。其中,PIC12C508单片机仅有8个引脚,是世界
[单片机]
Python 和OpenMV如何玩转 STM32 MCU
如今网络边缘侧的机器学习现状如何?哪些工具可以帮助工程师收集数据并执行推断运算?在哪里可以找到ST MEMS,它们对现实生活中的产品有哪些影响?本文是我们即将举行的STM32全国研讨会系列的第二篇专题文章。在第14届STM32全国研讨会上,我们将通过应用演示、产品展示以及工程师与观众互动回答问题的方式,来与蝶粉社区近距离交流。在STM32全国研讨会专题系列报道第一部分我们着重介绍了云连接方面的用例,如一款新的智能门铃功能演示,还介绍了工业和数据安全相关应用。 今天,我们将重点探讨人工智能、计算以及感知技术。 人工智能与计算 Qeexo 和STM32Cube.AI 当今边缘机器学习解决方案的种类越来越多,本届STM32全国
[嵌入式]
STC单片机开发注意事项
ISP烧写程序注意事项 程序无法下载进MCU,可能出错的地方有:如果准备条件充分 (驱动程序安装成功、STC_ISP.EXE安装成功),在下载程序进入MCU的时候,需要对ISP软件进行参数的设置。 Ⅰ:MCU Type选项,我用的是STC89C54RD+。(型号必须匹配) Ⅱ:(CH3415SER.EXE)驱动安装成功后,设备管理器中查看端口(COM和LPT), 其中的USB-SERIAL CH340(COM4)中的COM4是可以和MCU连接的通信端口。其他通讯端口(COM1和COM2) 在没有必要的情况下不要使用。选择COM4,Max Buad参数选默认。 Ⅲ:根据MCU支持的晶振频率选择OSCDN(OSC Con
[单片机]
学习51系列单片机经验
本人从事单片机相关工作多年,首先是从51系列单片机开始学习的。自己想把学习经验写下来,与大家共同探讨学习单片机的捷径。 具体如下: 1、学习电子技术 基础 知识,如电路、模拟电路和数字电路。这是学习电类相关专业的基础。 2、学习计算机硬件知识,如计算机的简单组成原理(只需要了解),当然要知道CPU是什么?总线是什么?一些相关概念。 3、程序编写的相关知识,主要是汇编语言和C语言。了解结构化语言的程序设计方法,也就是三种结构(顺序结构、分支结构(或称选择结构)、循环结构),会一些常用的算法。 4、以上是基础,有了这些基础,学习51单片机就只要花几周的时间就能上手。但学习单片机时,主要从单片机的存储器开始,其中特殊功能寄存器是重点,学会
[单片机]
嵌入式TCP/IP协议单片机技术在网络通信中的应用
摘要:介绍了嵌入式TCP/IP协议单片机在网络通信中的数据传输技术。将TCP/IP协议嵌入式单片机中,借助网卡芯片CS8900实现了单片机在局域网内和通过局域网在因特网上的数据传输。用户终端以单片机系统板为媒介,通过网络与远程数据终端实现数据通信。
关键词:TCP/IP协议 单片机 因特网 局域网 网卡芯片
在因特网上,TCP/IP协议每时每刻保证了数据的准确传输。在数据采集领域,如何利用TCP/IP协议在网络中进行数据传输成为一个炙手可热的话题。在本系统中,笔者利用TCP/IP协议中的UDP(用户数据报协议)、IP(网络报文协议)、ARP(地址解析协议)及简单的应用层协议成功地实现了单片机的网络互连,既提高了数据传输的速度,
[嵌入式]