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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3291|回復(fù): 3
收起左側(cè)

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

[復(fù)制鏈接]
ID:254433 發(fā)表于 2018-3-14 18:28 | 顯示全部樓層 |閱讀模式
貪吃蛇程序,需要的拿走。
把仿真軟件文件夾下的壓縮包解壓,解壓得到的一個(gè)proteus的文件夾,依次Proteus\BIN找到ISIS.EXE,然后運(yùn)行。還不會(huì)用的,在群里問,或者問度娘。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png

單片機(jī)源程序如下:
  1. /***************************************
  2. ***武***
  3. 該程序只能實(shí)現(xiàn)簡單的移動(dòng),吃食物,
  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;              //延時(shí)時(shí)間,當(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ù)制代碼
0.png

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


回復(fù)

使用道具 舉報(bào)

ID:297942 發(fā)表于 2018-4-3 18:53 | 顯示全部樓層
不錯(cuò)、好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:301728 發(fā)表于 2018-4-3 21:36 來自手機(jī) | 顯示全部樓層
大佬!佩服佩服!
回復(fù)

使用道具 舉報(bào)

ID:613829 發(fā)表于 2019-10-21 20:54 | 顯示全部樓層
大佬文件仿真文件好像損壞了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 农村妇女毛片精品久久久 | 在线免费观看a级片 | 成人黄视频在线观看 | 国产成人一区二区三区久久久 | 久久之精品 | 亚洲www啪成人一区二区麻豆 | 日韩伦理一区二区三区 | a免费视频 | 亚洲综合无码一区二区 | 午夜免费福利片 | 久久精品| 中文字幕91av | 另类专区成人 | 久久久久久亚洲 | 91亚洲国产成人久久精品网站 | 国产精品一区二区无线 | 精品欧美一区二区三区精品久久 | 国产久视频 | 欧洲国产精品视频 | av在线一区二区三区 | www.亚洲精品 | 久久中文字幕视频 | 婷婷在线免费 | 亚洲精品久久久久久一区二区 | 一区二区三区四区av | 亚洲精品乱码久久久久久按摩观 | 亚洲欧美一区二区三区在线 | 欧美中国少妇xxx性高请视频 | 国产成人精品亚洲日本在线观看 | 日本又色又爽又黄的大片 | 日日操操| 日韩影院在线观看 | www国产精品 | 中文字字幕在线中文乱码范文 | 久久精品 | 久久网亚洲 | 激情婷婷 | 日韩国产一区二区 | 日韩在线免费视频 | 毛片网络| 久久免费视频1 |