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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

貪吃蛇snake單片機(jī)版本:含源文件 點(diǎn)陣顯示 仿真文件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:254433 發(fā)表于 2018-3-14 18:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
貪吃蛇程序,需要的拿走。
把仿真軟件文件夾下的壓縮包解壓,解壓得到的一個proteus的文件夾,依次Proteus\BIN找到ISIS.EXE,然后運(yùn)行。還不會用的,在群里問,或者問度娘。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. /***************************************
  2. ***武***
  3. 該程序只能實現(xiàn)簡單的移動,吃食物,
  4. 以及撞死后的初始化,其他的功能就你們自己改進(jìn)了。
  5. *****************************************/

  6. #include <reg52.h>
  7. #include "contronl.h"

  8. /*****************
  9. 主程序
  10. *****************/        
  11. void main(void)
  12. {
  13.         P0=0x00;
  14.         P1=0xff;
  15.         P2=0x00;
  16.         P3=0x00;
  17.         init();
  18.         while(1)
  19.                 {
  20.                         display();
  21.                 }
  22. }
復(fù)制代碼
  1. #include "contronl.h"

  2. sbit key_enable=P3^6;                        //方向使能

  3. sbit up=P3^3;
  4. sbit down=P3^1;
  5. sbit right=P3^2;
  6. sbit left=P3^4;
  7. uchar x[SNAKE+1];
  8. uchar y[SNAKE+1];         
  9. uchar time,n,i,e=SPEED;              //延時時間,當(dāng)前蛇長,通用循環(huán)變量,當(dāng)前速度               
  10. char addx,addy;                //位移偏移量

  11. /*******************************************
  12. *1*碰撞判斷
  13. *******************************************/
  14. bit knock()
  15. {
  16.         bit k=0;
  17.         
  18.         if(x[1]>7||y[1]>7)
  19.                 k=1;                             //撞墻
  20.         for(i=2;i<n;i++)
  21.                 if((x[1]==x[i])&(y[1]==y[i]))
  22.                         k=1;                                                                                                  //撞自己
  23.         return k;
  24. }

  25. /*****************
  26. *2*方向控制
  27. *****************/
  28. void turnkey()
  29. {
  30.         if(key_enable)
  31.         {
  32.                 if(left)
  33.                 {
  34.                         addy=0;
  35.                         if(addx!=1)
  36.                                 addx=-1;
  37.                         else
  38.                                 addx=1;
  39.                 }
  40.                         if(right)
  41.                         {
  42.                                 addy=0;
  43.                                 if(addx!=-1)
  44.                                         addx=1;
  45.                                 else
  46.                                         addx=-1;
  47.                         }
  48.                         if(up)
  49.                         {        
  50.                                 addx=0;
  51.                                 if(addy!=-1)
  52.                                         addy=1;
  53.                                 else
  54.                                         addy=-1;
  55.                         }
  56.                         if(down)
  57.                         {
  58.                                 addx=0;
  59.                                 if(addy!=1)
  60.                                         addy=-1;
  61.                                 else
  62.                                         addy=1;
  63.                         }
  64.         }
  65. }

  66. /*****************
  67. *3*蛇的狀態(tài)
  68. *****************/
  69. void timer0(uchar timer)
  70. {
  71.         while(timer--)
  72.         {
  73.                 for(i=0;i<SNAKE+1;i++)
  74.                 {
  75.                         P2=mux(x[i]);P1=255-mux(y[i]);
  76.                         turnkey();                     //上下左右鍵位處理
  77.                         delay(TIME);                   //顯示延遲
  78.                         P2=0x00;P1=0xff;
  79.                 }
  80.         }
  81. }
  82. /*****************
  83. *4*乘方程序
  84. *****************/
  85. uchar mux(uchar temp)
  86. {
  87.         if(temp==7)return 128;
  88.         if(temp==6)return 64;
  89.         if(temp==5)return 32;
  90.         if(temp==4)return 16;
  91.         if(temp==3)return 8;
  92.         if(temp==2)return 4;
  93.         if(temp==1)return 2;
  94.         if(temp==0)return 1;
  95.         return 0;
  96. }
  97. /****************
  98. *5*初始化蛇的狀態(tài)
  99. *****************/
  100. void init()
  101. {
  102.         for(i=3;i<SNAKE+1;i++)
  103.                 x[i]=100;
  104.         for(i=3;i<SNAKE+1;i++)
  105.                 y[i]=100;                                                                                                                                                                                                                //初始化狀態(tài)
  106.         x[0]=4;y[0]=4;                                                //食物坐標(biāo)   
  107.         n=3;                                                          //蛇長n=-1
  108.         x[1]=1;y[1]=0;                                                //蛇頭坐標(biāo)
  109.         x[2]=0;y[2]=0;                                                //蛇尾坐標(biāo)
  110.         addx=0;addy=0;                                                //位置
  111. }
  112. /****************
  113. *6*運(yùn)行游戲
  114. *****************/
  115. void display()
  116. {
  117.         for(;;)//方向是否改變
  118.         {
  119.                 if(key_enable) break;
  120.                 else timer0(1);
  121.         }
  122.         for(;;)
  123.         {
  124.                 timer0(e);
  125.                 if(knock())//碰撞判斷
  126.                 {
  127.                         e=SPEED;
  128.                         init();
  129.                         break;
  130.                 }                                                                                                         
  131.                         
  132.                 if((x[0]==x[1]+addx)&(y[0]==y[1]+addy))         //是否吃東西
  133.                 {
  134.                         n++;
  135.                         if(n==SNAKE+1)
  136.                         {
  137.                                 n=3;
  138.                                 e=e-10;
  139.                                 for(i=3;i<SNAKE+1;i++)x[i]=100;
  140.                                 for(i=3;i<SNAKE+1;i++)y[i]=100;
  141.                         }
  142.                         x[0]=x[n-2];
  143.                         y[0]=y[n-2];
  144.                 }
  145.                         
  146.                 for(i=n-1;i>1;i--)
  147.                 {
  148.                         x[i]=x[i-1];
  149.                         y[i]=y[i-1];
  150.                 }        
  151.                         
  152.                 x[1]=x[2]+addx;
  153. ……………………

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


所有資料51hei提供下載:
snake(單片機(jī)版本:含源文件 點(diǎn)陣顯示 仿真文件 仿真軟件).rar (5.19 MB, 下載次數(shù): 49)


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

使用道具 舉報

沙發(fā)
ID:297942 發(fā)表于 2018-4-3 18:53 | 只看該作者
不錯、好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

板凳
ID:301728 發(fā)表于 2018-4-3 21:36 來自手機(jī) | 只看該作者
大佬!佩服佩服!
回復(fù)

使用道具 舉報

地板
ID:613829 發(fā)表于 2019-10-21 20:54 | 只看該作者
大佬文件仿真文件好像損壞了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕国产日韩 | 久久久精品视频免费看 | 久久99精品久久久久久国产越南 | 久久99精品久久久久久国产越南 | 免费看a | 天天摸天天干 | 四虎影音 | 国产精品一区二区三区在线播放 | 久久久久黄色 | 欧美国产精品 | 亚洲视频免费在线观看 | 日韩成人精品在线 | 毛片一区二区三区 | 亚洲国产欧美在线人成 | 亚洲人在线观看视频 | 成人免费在线观看 | 国产日韩欧美电影 | 欧美在线亚洲 | 精品少妇一区二区三区在线播放 | 在线一区视频 | 色av一区| 成人免费视频网址 | 欧美激情99 | 国产精品久久久久久一区二区三区 | 久久国产精品偷 | 日本aa毛片a级毛片免费观看 | 99re国产视频 | 夜色www国产精品资源站 | 欧美一级免费看 | 97超碰在线免费 | 97成人在线 | 中文字幕成人免费视频 | 综合久久久久 | 欧美日韩亚洲一区二区 | 国产精品一区二区三区免费观看 | 久久久久亚洲av毛片大全 | 国产精品呻吟久久av凹凸 | 在线观看日本高清二区 | 欧美国产一区二区 | 国内精品免费久久久久软件老师 | 在线观看欧美日韩视频 |