点阵贪吃蛇源代码

上传人:小** 文档编号:88031221 上传时间:2019-04-17 格式:PDF 页数:11 大小:313.56KB
返回 下载 相关 举报
点阵贪吃蛇源代码_第1页
第1页 / 共11页
点阵贪吃蛇源代码_第2页
第2页 / 共11页
点阵贪吃蛇源代码_第3页
第3页 / 共11页
点阵贪吃蛇源代码_第4页
第4页 / 共11页
点阵贪吃蛇源代码_第5页
第5页 / 共11页
点击查看更多>>
资源描述

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

1、 E:WHJ料资3216LED点阵时钟点吃蛇阵贪16_32LEDsource_codemain.c /*WHJWNAVY* /- / 文 件 名: main.c /- /公司: XXX科技 建创时间:2012.12.28 /建人创:WHJWNAVY 修改时间:2013.01.21 /片机单: STC89C54RD+ 点屏阵:8片8*8点拼接阵 /位型号选:74HC238器译码 段信号选:74HC595移位寄存器 /作用:主函数 /* / /明说: /本程序原本是我做的一个外遥控点红阵时钟,有带时间,闹钟,温度,湿度等功能。 /昨天突奇想发,想拿他来做点好玩的西东,于是就想到了吃蛇款典的游贪这经

2、戏。 /了个游为这戏,我把大部分功能都去掉了。我以前用VB做一个吃蛇的游过贪戏,贪 /吃蛇算法的灵魂就是从那里参考来的,我并没有制任何人的代复码,看了很多于关 /51片机玩吃蛇的单贪,感不是程序太乱就是太觉复杂。一始是使用开(构体结)链 /表来操作的,但是由于中出了多间现许问题,可能是由于本人表不熟悉对链还,最 /后就决定采用一的方法来种简单实现:构体数结组。就是个食蛇游算法的这这贪戏 /精髓。但是有一个这样问题,就是蛇身的最大度必事先定好长须规,个要更具你这 /采用的片机的单rom大小来决定。具体的可以看本人的代码。 /布个代发这码时,也就是完成本游制作之刚刚测试戏时,本人并没有仔的代细对码

3、 /行排进错,个代中肯定有多这码许错误,如果你了发现,希望能告知本人还,共同 /改进,共同步进。 /另外,源代我已共享到百度网里面了码经盘,迎下欢载! /http:/ sys_int(); while(1) /led_flash(1); /led_flash(0); if( KEY1=0) /入游进戏 led_clear(0); /清屏 init_creat_snake(); creat_food(); while(1) if( KEY2=0) snake_move(U); if( KEY3=0) snake_move(D); if( KEY4=0) snake_move(L); if( KE

4、Y5=0) snake_move(R); if(sKEY= 0XFF) snake_move(DIR); /无按按下键 if( KEY7=0)break; /退出 for(i=0;i #include /#include“ds1302.h“ #include “game_snake.h“ #define uchar unsigned char #define uint unsigned int #define sKEY P0 /按键I/O口定义 sbit KEY0= P00; sbit KEY1= P01; sbit KEY2= P02; sbit KEY3= P03; sbit KEY4=

5、P04; sbit KEY5= P05; sbit KEY6= P06; sbit KEY7= P07; extern uint idata disp_buffer32; extern void Delay_NOP(uint t); extern void disp_dot(uchar x,uchar y,uchar color); extern uchar get_dot(uchar x,uchar y); extern void refresh_disp(void); /extern void led_flash(uchar n); extern void led_clear(uchar

6、color); extern void sys_int(void); #endif Page: 2 E:WHJ料资3216LED点阵时钟点吃蛇阵贪16_32LEDsource_codemain.c /*WHJWNAVY* /- / 文 件 名: include.c /- /公司: XXX科技 建创时间:2012.12.28 /建人创:WHJWNAVY 修改时间:2013.01.21 /片机单: STC89C54RD+ 点屏阵:8片8*8点拼接阵 /位型号选:74HC238器译码 段信号选:74HC595移位寄存器 /作用:初始化文件 /* #include “include.h“ /74hc5

7、95的I/O口定义 /sbit MR=P16; /寄存器清0,避免数据位错 sbit CLK= P10; /移位入输时钟 sbit RCK= P11; /并行出输时钟 sbit DS= P12; /数据线 /* 器出译码输(1-32位信号选)*/ /用于器出的找表译码输查 uint code disp_b32= 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,

8、 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 ; /位找表查 uint code disp_buffer_bit116= 0xfffe, 0xfffd, 0xfffb, 0xfff7, 0xffef, Page: 3 E:WHJ料资3216LED点阵时钟点吃蛇阵贪16_32LEDsource_codemain.c 0xffdf, 0xffbf, 0xff7f, 0xfeff, 0xfdff, 0xfbff, 0xf7ff, 0xefff, 0xdfff, 0xbfff, 0x7fff, ; uint code disp_buffer_bit01

9、6= 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, ; /示冲区显缓 uint idata disp_buffer32= 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff

10、, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff ; Page: 4 E:WHJ料资3216LED点阵时钟点吃蛇阵贪16_32LEDsource_codemain.c /延函数时 void Delay_NOP(uint t) while(t-) _nop_(); /74hc595写操作序时 void writ_595(uint dat) uchar i; for(i=0;i0-32,y-0-15 void

11、 disp_dot(uchar x,uchar y,uchar color) if(color!=0) disp_bufferx else disp_bufferx |= disp_buffer_bit0y; /refresh_disp(); /得到某点的值 uchar get_dot(uchar x,uchar y) if( disp_bufferx else return 1; /刷新屏幕 void refresh_disp(void) uchar j=0; for(j=0;j typedef struct location charX; /x坐标 charY; /y坐标 ucharV;

12、/点的值 /uchar R;/属性,用于是食物是蛇身标记还 node; nodefood; nodeSnakeCOUNT; /构体数结组,用来存放蛇身 Page: 7 E:WHJ料资3216LED点阵时钟点吃蛇阵贪16_32LEDsource_codemain.c ucharDIR=R; /移方向动 ucharcount=2; /蛇身度长 ucharscore=0; /得分 ucharprocess=NORMAL; /游程戏进 ucharspeed=10; /速度 ucharseed=0; /随机数子种 /点是否已存在检测经 uchar test_exist(node * P) if( get

13、_dot(*P).X,(*P).Y)!=FALSE) /点已存在经 (*P).V=FALSE; else /不存在 (*P).V=TRUE; return (*P).V; /生食物产 void creat_food(void) while( test_exist( food.Y=seed /food.R=FOOD; /food.V=TRUE; disp_dot(food.X,food.Y,food.V); /示食物显 /生最初的那条蛇产 void init_creat_snake() /初始化坐标 Snake0.X=2; Snake0.Y=0; Snake0.V=TRUE; /Snake0.R =SNAK; disp_dot(Snake0.X,Snake0.Y,Snake0.V); /示蛇显 Snake1.X=1; Snake1.Y=0; Snake1.V=TRUE; /Snake1.R =SNAK; disp_dot(Snake1.X,Snake1.Y,Snake1.V); /示

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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