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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

自己做的用單片機(jī)控制8*8點(diǎn)陣的貪吃蛇

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63839 發(fā)表于 2014-8-27 18:59 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include<stc12.h>      //用六個(gè)按鍵四個(gè)方向鍵 一個(gè)暫停鍵 一個(gè)重新開(kāi)始健
  2. #include<stdlib.h>      //P1控制正極 P0控制負(fù)極
  3. #define uint unsigned int    //
  4. #define uchar unsigned char
  5. int addx,addy,n,s1,s2,e,a,b,c,d,k;   //addx addy位移改變量  n蛇身長(zhǎng)度 s1,s2新果實(shí)的位置
  6. uchar x[21];       //a重新開(kāi)始標(biāo)志 b暫停標(biāo)志 e代表蛇身運(yùn)動(dòng)速度大小
  7. uchar y[21];       //兩個(gè)數(shù)組用來(lái)儲(chǔ)存蛇身的地址
  8. void key();
  9. void deal();
  10. void move(int);
  11. uchar mux(int);
  12. void delay(uint);
  13. void main()
  14. {
  15. n=3,e=300,addx=0,addy=0,k=0;        //最初游戲設(shè)定
  16. x[0]=7;y[0]=2;          //果實(shí)
  17. x[1]=7;y[1]=7;               //蛇尾
  18. x[2]=7;y[2]=6;          //蛇身
  19.   x[n]=7;y[n]=5;             //蛇頭
  20. P0=0x7f;P1=0xe4;
  21. while(1)
  22. {
  23.   key();
  24.   if(b==0)
  25.   {
  26.   key();
  27.   move(e);
  28.   deal();
  29.   }
  30.   if(b==1)
  31.   { uint i;             //
  32.       for(i=0;i<=n;i++)         //
  33.         {             //
  34.        P0=255-mux(x[i]);P1=mux(y[i]);     //
  35.        delay(5);          //
  36.        P0=0xff;P1=0x00;              //和數(shù)碼管的消影差不多的作用
  37.    }
  38.   }
  39. }
  40. }
  41. void move(int e)  //實(shí)現(xiàn)移動(dòng)
  42. {
  43. uint i;
  44. if(k>0)
  45. {
  46.   while(e--)            //
  47.   {              //
  48.      for(i=0;i<=n;i++)          //
  49.        {              //
  50.       P0=255-mux(x[i]);P1=mux(y[i]);      //
  51.       key();            //
  52.       delay(5);           //
  53.       P0=0xff;P1=0x00;                  //和數(shù)碼管的消影差不多的作用
  54.       }
  55.   }                 //
  56.   for(i=1;i<n;i++)          //
  57.   {x[i]=x[i+1];y[i]=y[i+1];}        //
  58.   x[n]=x[i]+addx;y[n]=y[i]+addy;       //              
  59. }
  60. }
  61. void deal()             //判斷函數(shù)
  62. {
  63. uint i;
  64. if(x[n]>7|x[n]<0|y[n]>7|y[n]<0)       //撞墻而死
  65. {
  66.   P0=0xef;P1=0x5e;delay(10000);      //游戲結(jié)束標(biāo)志         
  67.   n=3,e=300,addx=0,addy=0,a=0,b=0,k=0;     //最初游戲設(shè)定
  68.   x[0]=7;y[0]=2;          //果實(shí)
  69.   x[1]=7;y[1]=7;               //蛇尾
  70.   x[2]=7;y[2]=6;          //蛇身
  71.    x[n]=7;y[n]=5;             //蛇頭
  72.   P0=0x7f;P1=0xe4;      
  73. }
  74. for(i=1;i<n;i++)          //撞自己而死
  75. {
  76.   if(x[i]==x[n]&y[i]==y[n])
  77.   {
  78.    P0=0xef;P1=0x5e;delay(30000);      //游戲結(jié)束標(biāo)志
  79.    n=3,e=300,addx=0,addy=0,a=0,b=0,k=0;   //回到最初游戲設(shè)定
  80.    x[1]=7;y[1]=7;            //蛇尾
  81.    x[2]=7;y[2]=6;
  82.       x[n]=7;y[n]=5;          //蛇頭
  83.    P0=0x7f;P1=0xe4;
  84.   }         
  85. }
  86. if((x[0]==x[n]+addx)&(y[0]==y[n]+addy))   //判斷是否吃到果實(shí)
  87. {
  88.   n=n+1;
  89.   x[n]=x[0];y[n]=y[0];
  90.   if(n==13)         //判斷是否過(guò)關(guān)
  91.   { e=e-50;          //
  92.    P0=0x00;P1=0xff;delay(30000);      //游戲結(jié)束標(biāo)志
  93.    n=3,addx=0,addy=0,a=0,b=0,k=0;      //回到最初游戲設(shè)定
  94.    x[1]=7;y[1]=7;            //蛇尾
  95.    x[2]=7;y[2]=6;
  96.       x[n]=7;y[n]=5;          //蛇頭
  97.    P0=0x7f;P1=0xe0;         
  98.   }
  99.   c=rand(); s1=c%10000%1000%100%10;
  100.   d=rand(); s2=d%10000%1000%100%10;   // 新的果實(shí)
  101.   if(s1>6)  s1=s1-3;
  102.   if(s2>6)  s2=s2-3;
  103.   x[0]=s1;y[0]=s2;       //
  104.   for(i=1;i<n;i++)       //判斷是否與蛇身重合
  105.   {
  106.     if((x[0]==x[i])&(y[0]==y[i]))
  107.     {
  108.      c=rand(); s1=c%10000%1000%100%10;
  109.    d=rand(); s2=d%10000%1000%100%10;  
  110.    if(s1>6)  s1=s1-3;
  111.    if(s2>6)  s2=s2-3;
  112.    x[0]=s1;y[0]=s2;      // 新的果實(shí)
  113.    i=1;
  114.     }
  115.     }
  116. }
  117. }
  118. void key()             //矩陣按鍵掃描
  119. {
  120. uchar t;
  121. P3=0xdf;
  122. t=P3;
  123. t=t&0x1c;
  124. if(t!=0x1c)
  125. {
  126.   delay(10);
  127.   t=P3;
  128.   t=t&0x1c;
  129.   if(t!=0x1c)
  130.    {
  131.     t=P3;
  132.    switch(t)
  133.    {
  134.     case 0xdb:a=1;break;
  135.     case 0xd7:k=1;break;
  136.     case 0xcf:b++;break;
  137.     default:  break;
  138.    }
  139.    while(t!=0x1c)
  140.    {
  141.     t=P3;
  142.     t=t&0x1c;
  143.    }
  144.    }
  145. }
  146. P3=0xbf;
  147. t=P3;
  148. t=t&0x1c;
  149. if(t!=0x1c)
  150. {
  151.   delay(10);
  152.   t=P3;
  153.   t=t&0x1c;
  154.   if(t!=0x1c)
  155.    {
  156.     t=P3;
  157.    switch(t)
  158.    {
  159.     case 0xbb:k=2;break;
  160.     case 0xb7:k=3;break;
  161.     case 0xaf:k=4;break;
  162.     default:  break;
  163.    }
  164.    while(t!=0x1c)
  165.    {
  166.     t=P3;
  167.     t=t&0x1c;
  168.    }
  169.    }
  170. }
  171. b=b%2;
  172. switch(k)
  173. {
  174.   case 1: addy=-1,addx=0;break;
  175.   case 2: addx=1,addy=0;break;
  176.   case 3: addy=1,addx=0;break;
  177.   case 4: addx=-1,addy=0;break;
  178. }
  179. }
  180. uchar mux(int temp)      //十進(jìn)制轉(zhuǎn)化為十六進(jìn)制
  181. {
  182. if(temp==7)return 128;
  183. if(temp==6)return 64;
  184. if(temp==5)return 32;
  185. if(temp==4)return 16;
  186. if(temp==3)return 8;
  187. if(temp==2)return 4;
  188. if(temp==1)return 2;
  189. if(temp==0)return 1;
  190.            return 0;
  191. }
  192. void delay(uint z)
  193. {
  194. uint x,y;
  195. for(x=z;x>0;x--)
  196.   for(y=110;y>0;y--);
  197. }
復(fù)制代碼

評(píng)分

參與人數(shù) 2威望 +30 黑幣 +25 收起 理由
jiege + 5 + 5 贊一個(gè)!
admin + 25 + 20 絕世好帖!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:51088 發(fā)表于 2014-8-27 21:01 | 只看該作者

回帖獎(jiǎng)勵(lì) +1

樓主能發(fā)一個(gè)完整的工程文件嗎  好像還差頭文件  最好有電路圖
回復(fù)

使用道具 舉報(bào)

板凳
ID:63839 發(fā)表于 2014-8-28 13:03 | 只看該作者
jiege 發(fā)表于 2014-8-27 21:01
樓主能發(fā)一個(gè)完整的工程文件嗎  好像還差頭文件  最好有電路圖

我不知道如何穿文件 頭文件是根據(jù)自己的單片機(jī)型號(hào)而修改 P1控制點(diǎn)陣的正極 P0控制負(fù)極 其他的I/O口可以用作鍵盤
回復(fù)

使用道具 舉報(bào)

地板
ID:63839 發(fā)表于 2014-8-28 13:07 | 只看該作者
我用的鍵盤是矩陣鍵盤 大家可以用獨(dú)立鍵盤 我是在我之前的單片機(jī)上外接一個(gè)8*8的點(diǎn)陣 并沒(méi)有做出來(lái)實(shí)物  但是在面包板上調(diào)試一切正常 我就是想暑假無(wú)聊做些東西 既然程序ok 就沒(méi)必要一定做出硬件
回復(fù)

使用道具 舉報(bào)

5#
ID:1 發(fā)表于 2014-8-28 15:52 | 只看該作者
按照這個(gè)步驟即可在回帖的時(shí)候上傳圖片(上傳附件就在圖片的旁邊 方法一樣)


選擇圖片的時(shí)候可以多選,這樣就能一次性上傳很多圖片(上傳附件就在圖片的旁邊 方法一樣)
回復(fù)

使用道具 舉報(bào)

6#
ID:63839 發(fā)表于 2014-8-28 16:00 | 只看該作者
admin 發(fā)表于 2014-8-28 15:52
按照這個(gè)步驟即可在回帖的時(shí)候上傳圖片(上傳附件就在圖片的旁邊 方法一樣)

謝啦 thanks
回復(fù)

使用道具 舉報(bào)

7#
ID:63839 發(fā)表于 2014-9-1 13:39 | 只看該作者
大家覺(jué)得好就給點(diǎn)分
回復(fù)

使用道具 舉報(bào)

8#
ID:94279 發(fā)表于 2015-11-1 12:48 | 只看該作者
看看怎么樣
回復(fù)

使用道具 舉報(bào)

9#
ID:111188 發(fā)表于 2016-3-28 23:02 | 只看該作者
學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

10#
ID:148621 發(fā)表于 2016-12-1 21:23 | 只看該作者
實(shí)際運(yùn)行的時(shí)候它怎么不動(dòng)呀QAQ
回復(fù)

使用道具 舉報(bào)

11#
ID:155589 發(fā)表于 2016-12-18 18:36 | 只看該作者
只有程序呀
回復(fù)

使用道具 舉報(bào)

12#
ID:183929 發(fā)表于 2017-3-28 18:55 | 只看該作者
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

13#
ID:139785 發(fā)表于 2017-5-12 10:42 來(lái)自手機(jī) | 只看該作者
我做的 比你做的好玩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品中文字幕在线 | 91精品久久久久久久久 | 在线国产精品一区 | 亚洲综合区 | 在线一区二区三区 | 久久精品国产久精国产 | 久久精品二区 | 黄色免费网 | 9久久婷婷国产综合精品性色 | 范冰冰一级做a爰片久久毛片 | 国产精品视频一区二区三区不卡 | 成人福利网站 | 99精品久久 | 91在线视频网址 | 精品乱码一区二区 | 国产黄色电影 | 中文字幕亚洲一区 | 一区二区三区免费在线观看 | 青春草在线 | 国产在线一区二区三区 | 国产毛片毛片 | 欧美中文在线 | 视频一区在线观看 | 国产精品视频导航 | 日本精品一区二区三区视频 | 中文字幕三区 | 天天综合久久 | 亚洲综合成人网 | 日韩一级免费看 | 亚洲欧洲日韩精品 中文字幕 | 亚洲一区二区三区观看 | 美女久久久久久久 | 综合久久久久久久 | 国产精品网址 | 久久久精品视频免费看 | 欧美日韩成人 | 成人亚洲一区 | 国产成人99久久亚洲综合精品 | 欧美精品电影一区 | 久在线 | 亚洲视频免费观看 |