贪吃蛇实验

上传人:折*** 文档编号:301794908 上传时间:2022-05-31 格式:DOCX 页数:6 大小:17.89KB
返回 下载 相关 举报
贪吃蛇实验_第1页
第1页 / 共6页
贪吃蛇实验_第2页
第2页 / 共6页
贪吃蛇实验_第3页
第3页 / 共6页
贪吃蛇实验_第4页
第4页 / 共6页
贪吃蛇实验_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《贪吃蛇实验》由会员分享,可在线阅读,更多相关《贪吃蛇实验(6页珍藏版)》请在金锄头文库上搜索。

1、本文格式为Word版,下载可任意编辑贪吃蛇实验 测验:贪吃蛇 一、测验目的 1.运用所学过的单片机学识,编写简朴的贪吃蛇嬉戏; 2.学会单片机大片面功能的运用。 二、测验原理 1. TFT 彩屏工作原理 TFT(Thin Film Transistor)LCD 即薄膜场效应晶体管LCD,是有源矩阵类型液晶显示器(AM-LCD)中的一种。和TN 技术不同的是,TFT 的显示采用“背透式”照射方式假想的光源路径不是像TN 液晶那样从上至下,而是从下向上。这样的作法是在液晶的背部设置特殊光管,光源照射时通过下偏光板向上透出。由于上下夹层的电极改成FET 电极和共通电极,在FET 电极导通时,液晶分子

2、的表现也会发生变更,可以通过遮光和透光来达成显示的目的,响应时间大大提高到80ms 左右。因其具有比TN LCD 更高的比较度和更丰富的色调,荧屏更新频率也更快,故TFT 俗称“真彩”。 LCD 是由二层玻璃基板夹住液晶组成的,形成一个平行板电容器,通过嵌入在下玻璃基板上的TFT 对这个电容器和内置的存储电容充电,维持每幅图像所需要的电压直到下一幅画面更新。液晶的彩色都是通明的务必给LCD 衬以白色的背光板上才能将五颜六色表达出来,而要使白色的背光板有反射就需要在四周加上白色灯光。因此在TFT LCD 的底部都组合了灯具,如CCFL 或LED。 2.矩阵按钮 矩阵按键又称为行列式按键,他是用4

3、 条I/O 线作为行线,4 条I/O 线作为列线组成的按键,在行线和列线的每一个交错点上,设置一个按键。如下图, 按键识别原理: 在某一时刻只让一条列线处于低电平,其余列线均处于高电平,那么当这一列有键按下时,该键所在的行电平将会由高电平变为低电平,可判定该列相应的行 有键按下。当第0 列处于低电平日,逐行查找是否有行线变低,若有,那么第0 列与该行的交错点按键按下;若无,那么表示第0 列无键按下,再让下一列处在低电平,依此循环,这种方式称为键盘扫描。 3.贪吃蛇操作原理 贪吃蛇本身是由好几个点连成的一条线段,只要通过延时函数使线段在时间前后往指定的方向进一步就行了,即将全体线段上的点往指定方

4、向移动一段,就会展现贪吃蛇的根本运动。贪吃蛇的方向可以通过设置几个指定的按钮来操纵。 贪吃蛇吃的食物那个点可以由随机函数rand()产生一个随机数组,再每次显示一个数组里的点就可以达成预计的随机点。 结果再通过判断边界,输赢条件,使程序更加完善,界面美观。 三、测验代码。 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #

5、include #include #include #include #include #include #include #include / Provide a definition for M_PI, if it was not provided by math.h. #ifndef M_PI #define M_PI 3.14159265358979323846F #endif uint16_t sc; /长度 unsignedint k=0,start=0,s=3000; /k按键数,start开头键 unsignedint sum=0;/吃到的食物数量 /* uint32_t g_

6、ui32SysClock; staticvolatileunsignedlong g_ulTickCount; #define SERIES_LENGTH 240 typedefstruct _snack uint32_tx; uint32_ty; ssnack; staticssnack snack40,a50;/a为随机数 staticssnack food;/食物 voidTFTLCD_DrawLine(ssnack sk1,ssnack sk2,uint32_t color) / 画蛇线段 uint32_t i=0,PointNum = 0; if(sk1.x=sk2.x) /沿Y方向

7、画线 PointNum = abs(sk1.y-sk2.y); if(sk1.y=sk2.y) for(i=0;iPointNum;i+) TFTLCD_DrawPoint(sk1.x,sk1.y+i,color); Else for(i=0;iPointNum;i+) TFTLCD_DrawPoint(sk1.x,sk2.y+i,color); elseif (sk1.y=sk2.y)/沿X方向画线 PointNum = abs(sk1.x-sk2.x); if(sk1.x=sk2.x) else void SnackInit(void) /对蛇举行初始化 uint32_t i; snack

8、0.x=50; snack0.y=50; for(i=1;i=5;i+) snacki.x=50; snacki.y=50+10*i; TFTLCD_DrawLine(snacki-1,snacki,GREEN); for(i=0;iPointNum;i+) TFTLCD_DrawPoint(sk2.x+i,sk2.y,color); for(i=0;iPointNum;i+) TFTLCD_DrawPoint(sk1.x+i,sk2.y,color); TFTLCD_DrawHorizontalLine(0,240,340,GREEN); void SnackDown(void) / 往下走

9、 uint32_t n; TFTLCD_DrawLine(snack1,snack0,BLACK); SysCtlDelay(500*(20000000/s);/2 for(n=0;nsc;n+) snackn=snackn+1; snacksc.y=snacksc.y+10; TFTLCD_DrawLine(snacksc-1,snacksc,GREEN); SysCtlDelay(500*(20000000/s);/2 void SnackRight(void)/往右走 uint32_t n,j; j=sc-1; TFTLCD_DrawLine(snack1,snack0,BLACK); SysCtlDelay(500*(20000000/s);/2 for(n=0;n=j;n+) snackn=snackn+1; snacksc.x=snacksc.x+10; TFTLCD_DrawLine(snackj,snacksc,GREEN); SysCtlDelay(500*(20000000/s);/2 void SnackLeft(void) /往左走 uint32_t n,j; j=sc-1; 6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号