久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4431|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機貪吃蛇程序 支持液晶屏,矩陣鍵盤操作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:205071 發(fā)表于 2017-5-26 13:17 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
解壓縮,可以查看這個貪吃蛇程序。支持液晶屏,矩陣鍵盤操作


單片機源程序如下:
  1. /*
  2. * 貪吃蛇
  3. *
  4. * author:cole3
  5. * date:2010.11.28
  6. */


  7. #include <reg52.h>
  8. #include <stdlib.h>
  9. #include "lcd.h"

  10. #define LEN_MAX 40

  11. sbit KeyIn1 = P2^4;
  12. sbit KeyIn2 = P2^5;
  13. sbit KeyIn3 = P2^6;
  14. sbit KeyIn4 = P2^7;
  15. sbit KeyOut1 = P2^3;
  16. sbit KeyOut2 = P2^2;
  17. sbit KeyOut3 = P2^1;
  18. sbit KeyOut4 = P2^0;


  19. void key(void);
  20. void rand_dot(void);
  21. void turncount(int length,int position,int row,int page);


  22. int i=4,j=0,length=5,direction=2,k=0,dotx,doty,temx[LEN_MAX],temy[LEN_MAX];
  23. char speed=5, t_flag=0;

  24. main()
  25. {
  26.         unsigned int t,flag=1;

  27.         LCD12864_init();
  28.         TMOD = 0x01;
  29.         TH0 = 0x3C;
  30.         TL0 = 0xB0;
  31.         ET0 = 0;
  32.         TR0 = 0;
  33.         EA = 1;

  34.         printf2lcd(0, 0, "----------------");
  35.         printf2lcd(0, 2, "Gluttonous Snake");
  36.         printf2lcd(0, 4, "----------------");
  37.         printf2lcd(0, 6, "  Made By Kingst");
  38.         for (t=0; t<60000; t++);

  39.         ClearSree(0);

  40.         for (t=0; t<length; t++)
  41.         {
  42.                 change(t,0);
  43.                 temx[t] = t;
  44.                 temy[t] = 0;
  45.         }
  46.         rand_dot();

  47.         ET0 = 1;
  48.         TR0 = 1;

  49.         while(flag)
  50.         {
  51.                 key(); // 按鍵掃描

  52.                 // 是否前行
  53.                 if (t_flag == 1)
  54.                 {
  55.                         t_flag = 0;
  56.                         switch (direction)
  57.                         {
  58.                                 case 0: change(i,--j); break;
  59.                                 case 1: change(--i,j); break;
  60.                                 case 2: change(++i,j); break;
  61.                                 case 3: change(i,++j); break;
  62.                         }
  63.        
  64.                         clear(temx[0], temy[0]);
  65.                         for(t=0; t<length-1; t++)
  66.                         {
  67.                                 temx[t] = temx[t+1];
  68.                         }
  69.                         temx[length-1] = i;
  70.        
  71.                         for(t=0; t<length-1; t++)
  72.                         {
  73.                                 temy[t] = temy[t+1];
  74.                         }
  75.                         temy[length-1] = j;
  76.        
  77.                         if((i == dotx) && (j == doty))
  78.                         {
  79.                                 temx[length] = dotx;
  80.                                 temy[length++] = doty;
  81.                                 rand_dot();
  82.                         }
  83.                 }
  84.                 // 是否撞墻
  85.                 if ((i < 0) || (i > 31))
  86.                 {
  87.                         flag = 0;       
  88.                 }
  89.                 if ((j < 0) || (j > 15))
  90.                 {
  91.                         flag = 0;               
  92.                 }
  93.                 // 是否撞自己
  94.                 for (t=0; t<length-4; t++)
  95.                 {
  96.                         if ((i == temx[t]) && (j == temy[t]))
  97.                         {
  98.                                 flag = 0;
  99.                         }
  100.                 }

  101.                 // 是否晉級
  102.                 if (length == LEN_MAX)
  103.                 {
  104.                         TR0 = 0;
  105.                         ET0 = 0;
  106.                         ClearSree(0);
  107.                         speed--;
  108.                         if (speed < 0)
  109.                         {
  110.                                 printf2lcd(4, 1, "You Win!");
  111.                                 while (1);
  112.                         }
  113.                         else
  114.                         {
  115.                                 printf2lcd(3, 1, "Next level!");
  116.                                 for (t=0; t<60000; t++);
  117.                                 ClearSree(0);
  118.                         }
  119.                         length = 5;
  120.                         direction = 2;
  121.                         i = 4;
  122.                         j = 0;
  123.                         k = 0;
  124.                         for (t=0; t<length; t++)
  125.                         {
  126.                                 change(t,0);
  127.                                 temx[t] = t;
  128.                                 temy[t] = 0;
  129.                         }
  130.                         rand_dot();
  131.                         TR0 = 1;
  132.                         ET0 = 1;
  133.                 }
  134.         }

  135.         // game over
  136.         TR0 = 0;
  137.         ET0 = 0;
  138.         ClearSree(0);
  139.         printf2lcd(3, 1, "Game over!");
  140.         printf2lcd(3, 3, "score:");
  141.         ShowNum(9, 3, (length-5)+(LEN_MAX-5)*(5-speed));

  142.         while(1);                               
  143. }


  144. void key(void)
  145. {
  146.         KeyOut1 = 0;
  147.         KeyOut2 = 1;
  148.         KeyOut3 = 1;
  149.         KeyOut4 = 1;
  150.         if ((KeyIn4 == 0) && (direction != 3))
  151.                 direction = 0;
  152.        
  153.         KeyOut1 = 1;
  154.         KeyOut2 = 1;
  155.         KeyOut3 = 0;
  156.         KeyOut4 = 1;
  157.         if ((KeyIn4 == 0) && (direction != 0))
  158.                 direction = 3;

  159.         KeyOut1 = 1;
  160.         KeyOut2 = 0;
  161.         KeyOut3 = 1;
  162.         KeyOut4 = 1;
  163.         if ((KeyIn4 == 0) && (direction != 2))
  164.                 direction = 1;

  165.         KeyOut1 = 1;
  166.         KeyOut2 = 1;
  167.         KeyOut3 = 1;
  168.         KeyOut4 = 0;
  169.         if ((KeyIn4 == 0) && (direction != 1))
  170.                 direction = 2;
  171. }


  172. void rand_dot(void)
  173. {
  174.           int ii;
  175.        
  176.         while (1)
  177.         {
  178.                 dotx = rand() % 32;
  179.                   doty = rand() % 16;

  180.                   for (ii=0; ii<length; ii++)
  181.                 {
  182.                         if ((dotx == temx[ii]) && (doty == temy[ii]))
  183.                                 break;
  184.                 }
  185. ……………………

  186. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
貪吃蛇程序.rar (41.5 KB, 下載次數(shù): 16)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕成人av | 免费骚视频 | 国产一级片免费在线观看 | 亚洲精品一区国产精品 | 国内自拍视频在线观看 | 盗摄精品av一区二区三区 | 91国产在线播放 | 欧美一级二级三级视频 | 在线免费观看黄a | 97人人草| 国产高清自拍视频在线观看 | 精久久久| 久久9久 | 中文字幕在线免费视频 | 毛片一区二区三区 | 日韩欧美在线视频一区 | 久草www| 日本一道本视频 | 91影库 | 成人一区二区三区在线观看 | 久久久久久久国产 | 久久免费视频1 | 欧美日韩在线一区二区 | 欧美成人第一页 | 国产精品一区二区三区免费观看 | 国产亚洲一区在线 | 一二三区视频 | 一区二区亚洲 | 久青草影院 | 九九精品在线 | 99精品欧美一区二区三区综合在线 | 婷婷色国产偷v国产偷v小说 | 91欧美激情一区二区三区成人 | 国产日韩欧美一区 | 精品国产一区二区国模嫣然 | 日韩成人一区二区 | 91天堂网| 中文字幕第7页 | 亚洲第一成人av | 国产精品久久久久999 | 一级a爱片久久毛片 |