历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2019年10月12日 | 基于protues arm2124仿真贪吃蛇程序

2019-10-12 来源:eefocus

mdk keil写的  直接导入hex文件就可以运行
 

单片机源程序如下:
  1. /*********************************************************************************************

  2. File Name  : snake.c

  3. Content    : snake management module

  4. **********************************************************************************************/

  5. #include "snake.h"



  6. /**********************************************************************************************

  7. 不允许被外部调用的函数,受保护的对象

  8. **********************************************************************************************/

  9. static void Game_CreateFood(void);

  10. static void Game_AddSnake(void);

  11. static void Game_Over(void) ;

  12. static int  Game_Collide(void);

  13. static void Game_SnakeMove(void);



  14. /**********************************************************************************************

  15. 所引用别的文件中的全局变量

  16. **********************************************************************************************/

  17. extern uint8 ucGameBegin_Flag;

  18. extern uint8 ucGamePause_Flag;

  19. extern uint8 ucGameOver_Flag;

  20. extern INT8U ucKey;

  21. extern INT8U ucLastKey;

  22. extern long long time ;


  23. /**********************************************************************************************

  24. 本文件中定义的全局变量,记录蛇的信息

  25. **********************************************************************************************/

  26. INT32U Snake[2][LEN]={{2,1,0},{3,3,3}};

  27. INT32U SHead = 3;

  28. INT32U SEnd = 0;

  29. INT32U Row_Food;

  30. INT32U Col_Food;

  31. INT32U uiScore = 0;

  32. uint16 uiLevel = 0;

  33. INT8U ucRow;

  34. INT8U ucCol;

  35. INT8U ucSnakeSpeed;



  36. /**********************************************************************************************

  37. 所取的一些游戏中需要的文字和图像的模

  38. **********************************************************************************************/

  39. INT8U ucGameOver[5][32] = 

  40. {

  41.         {0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

  42. 0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20

  43. },

  44.         {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

  45. 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00

  46. },

  47.         {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

  48. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00

  49. },

  50.         {0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

  51. 0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00

  52. },

  53.         {0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  54. 0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  55. }

  56. } ;


  57. INT8U ucFuck[3][32] = 

  58. {

  59.         {0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,

  60. 0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00

  61. },

  62.         {0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,

  63. 0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00

  64. },

  65.         {0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,

  66. 0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00

  67.         }

  68. };


  69. /*********************************************************************************************

  70. Function   : Game_CreateSnake(INT8U row, INT8U col)

  71. Content    : 创建一条蛇

  72. Parameter  : row               蛇位置的行

  73.                          col                           蛇位置的列

  74. Return     : none

  75. Date       : 2012/09/18 

  76. Description: 创建一条蛇

  77. Remark     : 

  78. **********************************************************************************************/ 

  79. void Game_CreateSnake(INT8U row, INT8U col)

  80. {

  81.         ucRow = row;

  82.         ucCol = col;


  83.         Snake[0][0] = row;

  84.         Snake[0][1] = row;

  85.         Snake[0][2] = row;


  86.         Snake[1][0] = col - 2;

  87.         Snake[1][1] = col - 1;

  88.         Snake[1][2] = col; 


  89.         LCD2_DisPoint(row, col--);

  90.         LCD2_DisPoint(row, col--);

  91.         LCD2_DisPoint(row, col--);


  92.         SEnd = 0;

  93.         SHead = 3;

  94.         Game_CreateFood();

  95.         ucSnakeSpeed = 20;


  96.         LCD1_DisplaySco(uiScore);

  97.         LCD1_DisplayTime(time);

  98.         LCD1_ShowInt(0xcb, uiLevel);

  99. }


  100. /*********************************************************************************************

  101. Function   : Game_CreateFood(void)

  102. Content    : 食物生成的实现函数

  103. Parameter  : void

  104. Return     : none

  105. Date       : 2012/09/18 

  106. Description: 食物生成的实现函数

  107. Remark     : 

  108. **********************************************************************************************/ 

  109. void Game_CreateFood(void)

  110. {

  111. TEST:

  112.         do

  113.         {

  114.                 Row_Food = (int)rand() % 14 + 1;

  115.                 Col_Food = (int)rand() % 30 + 1;

  116.         }while(LCD2_IfPoint(Row_Food, Col_Food));

  117.         LCD2_DisPoint(Row_Food, Col_Food);

  118.         if(!LCD2_IfPoint(Row_Food, Col_Food))

  119.                 goto TEST;

  120.         return;

  121. }


  122. /*********************************************************************************************

  123. Function   : Game_AddSnake(void)

  124. Content    : 蛇节点的增加

  125. Parameter  : void

  126. Return     : none

  127. Date       : 2012/09/18 

  128. Description: 蛇增加一个节点,并重新随机生成一个食物

  129. Remark     : 

  130. **********************************************************************************************/ 

  131. void Game_AddSnake(void)

  132. {


  133.         switch(ucKey)

  134.         {

  135.                 case UP:

  136.                 {

  137.                            Snake[0][SHead] = ucRow  - 1;

  138.                         Snake[1][SHead] = ucCol;

  139.                         if(SHead + 1 == LEN)

  140.                                 SHead = 0;

  141.                         else

  142.                                 SHead++;

  143.                         ucRow--;

  144.                         Game_CreateFood();

  145.                 }break;

  146.                 case DOWN:

  147.                 {

  148.                         Snake[0][SHead] = ucRow  + 1;

  149.                         Snake[1][SHead] = ucCol;

  150.                         if(SHead + 1 == LEN)

  151.                                 SHead = 0;

  152.                         else

  153.                                 SHead++;

  154.                         ucRow++;

  155.                         Game_CreateFood();

  156.                 }break;

  157.                 case LEFT:

  158.                 {

  159.                         Snake[0][SHead] = ucRow;

  160.                         Snake[1][SHead] = ucCol - 1;

  161.                         if(SHead + 1 == LEN)

  162.                                 SHead = 0;

  163.                         else

  164.                                 SHead++;

  165.                         ucCol--;

  166.                         Game_CreateFood();

  167.                 }break;

  168.                 case RIGHT:

  169.                 {

  170.                           Snake[0][SHead] = ucRow;

  171.                         Snake[1][SHead] = ucCol + 1;

  172.                         if(SHead + 1 == LEN)

    推荐阅读

    史海拾趣

    ARMKEIL Microcontroller Tools公司的发展小趣事

    ARMKEIL Microcontroller Tools公司的起点可以追溯到Keil公司的成立。1985年,Keil Elektronik GmbH(凯尔电子有限责任公司)在德国慕尼黑正式成立,由一群热衷于嵌入式系统开发的工程师创立。起初,公司的主要业务是开发和销售嵌入式系统的开发工具,这些工具为当时的电子工程师提供了强大的支持。随着业务的发展,Keil逐渐在嵌入式系统开发领域崭露头角。

    Digital Core Design公司的发展小趣事

    1996年,Core Design推出了其标志性作品《古墓丽影》。这款游戏以其独特的女主角Lara Croft和精心设计的游戏世界吸引了全球玩家的关注。Lara Croft成为游戏界最具代表性的女性角色之一,而《古墓丽影》系列也成为Core Design最成功的游戏系列之一。这款游戏的成功不仅为Core Design带来了巨大的经济收益,也使其在全球游戏市场上赢得了极高的声誉。

    Advanced Milliwave Laboratories Inc公司的发展小趣事

    Advanced Milliwave Laboratories Inc(AML)成立于XXXX年,最初由几位在微波技术领域具有丰富经验的专家组成。初创期,AML专注于高频微波技术的研发,通过不断的实验和创新,成功开发出多款具有高性能和稳定性的微波产品。这些产品迅速获得了市场的认可,为AML在微波技术领域奠定了坚实的基础。

    台湾凯励(Carli)公司的发展小趣事

    作为一家有社会责任感的企业,凯励公司始终关注环境保护和可持续发展。公司积极推广绿色生产技术和资源循环利用方案,减少生产过程中的能源消耗和废弃物排放。同时,凯励公司还积极参与社会公益活动,为社区和环境贡献自己的力量。这些举措不仅体现了凯励公司的社会责任感,也为其在电子行业树立了良好的形象。

    Digital公司的发展小趣事

    随着业务的不断发展和市场的不断扩大,DIALIGHT公司逐渐实现了全球化布局。他们在美国、英国、丹麦、德国、马来西亚、新加坡、澳大利亚、墨西哥和巴西等地设立了分支机构或办事处,为全球客户提供及时、高效的服务。此外,DIALIGHT还积极寻求与其他企业的合作与共赢,通过战略合作协议的签署,为双方带来新的业务机遇和合作空间。这些举措不仅增强了DIALIGHT的市场竞争力,也为其未来的发展奠定了坚实的基础。

    请注意,由于篇幅限制,以上三个故事仅为DIALIGHT公司发展历程的简要概述。如需更详细的信息和更多故事,建议查阅相关资料或访问公司官网。

    Dailywell Electronics Co Ltd公司的发展小趣事

    随着公司实力的不断增强和业务的不断扩展,德利威电子开始实施全球化战略。2002年,公司成立了珠海富鼎厂,正式将东莞的电子产能进行移转。这一举措不仅进一步提升了公司的生产能力和产品品质,也为其进一步拓展国际市场提供了有力支持。此外,公司还在2003年和2006年分别成立了中国东莞办事处和北京办事处,进一步加强了其在中国市场的布局和服务能力。通过这些举措的实施,德利威电子逐步实现了从单一市场向全球市场的转变。

    以上五个故事简要概述了德利威电子股份有限公司在电子行业中的发展历程和关键节点。这些故事不仅展示了公司的成长轨迹和实力提升过程,也反映了其在技术创新、品质管理、国际化布局等方面的努力和成就。

    问答坊 | AI 解惑

    单片机解密,芯片解密PCB抄板,烧录IC

    深圳市南源电子科技有限公司 芯片解密/单片机解密/IC解密/PLD解密/CPLD解密: (慎重声明:仅限合法研究用途) 单片机(MCU)解密、IC解密 、PLD解密、CPLD解密、鉴定芯片型号;成功率高,周期短,费用合理. 大量供应PIC/EMC兼容IC,性能稳定, ...…

    查看全部问答>

    wavescan 可以一下子读入批量psf吗?

    cadence 中的 wavescan 能够一下子读取多个psf吗? 比如ocean产生多个corner的结果,放在不同的路径下。 sx可以实现,不过sx的结果会有一点点差别,所以不是很愿意用。 我试着找些文档,看看能否用skill/tcl等command的方式进行,不过没有找到。 ...…

    查看全部问答>

    vs2005下安装platform builder插件后设置winceroot问题

    先安装好vs2005,再装上Embedded CE 6.0   用vs2005建立Platform Builder for CE 6.0工程时,提示要先设置好 WINCEROOT才能使用。 请问高人,怎么设置WINCEROOT?? 十分感谢 …

    查看全部问答>

    关于MPY和MAC的溢出饱和问题

    本帖最后由 dontium 于 2015-1-23 13:33 编辑      .mmregs      .def  _Lmac      .text _Lmac  .equ $      SSBX   OVM ...…

    查看全部问答>

    求购闲置的DSP板子!!!!!!

    大家好,小弟今年学校教这本教材:   (原文件名:QQ截图未命名.gif) 引用图片所以想买个板子练练手。。。望哪位大虾有吃灰的,闲置不用的板子转让给俺,仿真器是必须!!!! 学生没有多少米,有最小系统既可,做些简单的 ...…

    查看全部问答>

    24LC02B有时候不能读写

    MSP430F149与24LC02B I2C通讯,存储电机脉冲数据,每次动作结束的时候存储一次,用写进去再读出来的方法验证数据是否存储成功,当存储成功时,指示灯亮,不成功时,while循环再次写读指示灯闪烁。问题是:读写成功的机会是随机的,有时候能读写成功 ...…

    查看全部问答>

    寻创业合作伙伴

    寻志同道合,愿在工控领域创业的合作伙伴。因我们是技术类人员,因此创业合作伙伴希望是市场类人员。基本要求,有创业的热情、人品端正、能吃苦,对工控行业有较深入的理解。地点:西安请将个人情况介绍发至xaqtdz@126.com, 我们见面详谈,真诚感谢 ...…

    查看全部问答>

    有关修改设备逻辑类型的问题?

    在协议栈中添加了NV_INIT,不知为何第一次无法修改设备逻辑类型,总是以协调器的身份启动 而不是我配置的路由器设备启动。而没加却可以,请问下这是为什么呢? #if defined ( BUILD_ALL_DEVICES )   // The \"Demo\" target is setup ...…

    查看全部问答>

    2013电子设计大赛

    本帖最后由 paulhyde 于 2014-9-15 03:02 编辑 2013电子设计大赛    …

    查看全部问答>