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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Arduino+proteus仿真 8x8點(diǎn)陣貪吃蛇游戲

  [復(fù)制鏈接]
ID:284589 發(fā)表于 2018-9-14 22:39 | 顯示全部樓層 |閱讀模式
本帖最后由 775913024 于 2018-9-25 11:07 編輯

開學(xué)無聊沒事干,做了個簡陋的貪吃蛇娛樂娛樂.

貪吃蛇演示.gif

接線如圖所示

貪吃蛇接線

貪吃蛇接線


代碼如下:
  1. //貪吃蛇游戲--2018.9.12
  2. int ckpin=4;
  3. int datapin=5;
  4. int latchpin=6;

  5. int Up,Down,Left,Right,a5;//記錄狀態(tài)的變量
  6. int Y[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行
  7. int X[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//列
  8. int Y1,Y2,Y3,Y4,Y5,Y6,Y7;//行
  9. int X1,X2,X3,X4,X5,X6,X7;//列
  10. int rn1,rn2;//行列的隨機(jī)數(shù)
  11. void setup()
  12. {
  13. randomSeed(analogRead(A0));//初始化隨機(jī)函數(shù)
  14. //595的控制端
  15. pinMode(ckpin,OUTPUT);
  16. pinMode(datapin,OUTPUT);
  17. pinMode( latchpin,OUTPUT);
  18. //按鈕控制端
  19. pinMode( 13,INPUT_PULLUP);//上
  20. pinMode( 12,INPUT_PULLUP);//下
  21. pinMode( 11,INPUT_PULLUP);//左
  22. pinMode( 10,INPUT_PULLUP);//右
  23. //按鈕的狀態(tài)標(biāo)記
  24. Up=0;
  25. Down=0;
  26. Left=0;
  27. Right=0;
  28. //吃到點(diǎn)的個數(shù)
  29. a5=0;
  30. //初始點(diǎn)的位置
  31. Y1=0;//初始點(diǎn)所在行數(shù)
  32. X1=0;//初始點(diǎn)所在列數(shù)
  33. //產(chǎn)生第一個隨機(jī)數(shù)
  34. rn1=random(0,8);//隨機(jī)行
  35. rn2=random(0,8);//隨機(jī)列
  36. }

  37. void loop()
  38. {
  39. //記錄7個走過的點(diǎn)的位置
  40. X7=X6;//列
  41. X6=X5;
  42. X5=X4;
  43. X4=X3;
  44. X3=X2;
  45. X2=X1;

  46. Y7=Y6;//行
  47. Y6=Y5;
  48. Y5=Y4;
  49. Y4=Y3;
  50. Y3=Y2;
  51. Y2=Y1;

  52. if(digitalRead(10)==1&&digitalRead(11)==1&&digitalRead(12)==1&&digitalRead(13)==0||Up==1)//按鈕上的事件處理
  53. {
  54. Y1=Y1+1;//行數(shù)+1
  55. Up=1;
  56. Down=0;
  57. Left=0;
  58. Right=0;
  59. }

  60. if(digitalRead(13)==1&&digitalRead(11)==1&&digitalRead(10)==1&&digitalRead(12)==0||Down==1)//按鈕下的事件處理
  61. {
  62. Y1=Y1-1;//行數(shù)-1
  63. Up=0;
  64. Down=1;
  65. Left=0;
  66. Right=0;
  67. }

  68. if(digitalRead(13)==1&&digitalRead(12)==1&&digitalRead(10)==1&&digitalRead(11)==0||Left==1)//按鈕左的事件處理
  69. {
  70. X1=X1+1;//列數(shù)+1
  71. Y1=Y2;
  72. Up=0;
  73. Down=0;
  74. Left=1;
  75. Right=0;
  76. }

  77. if(digitalRead(13)==1&&digitalRead(12)==1&&digitalRead(11)==1&&digitalRead(10)==0||Right==1)//按鈕右的事件處理
  78. {
  79. X1=X1-1;//列數(shù)-1
  80. Y1=Y2;
  81. Up=0;
  82. Down=0;
  83. Left=0;
  84. Right=1;
  85. }

  86. if(X1>7)//左碰壁
  87. {
  88. X1=0;
  89. Left=1;
  90. }
  91. if(X1<0)//右碰壁
  92. {
  93. X1=7;
  94. Right=1;
  95. }
  96. if(Y1>7)//上碰壁
  97. {
  98. Y1=0;
  99. Up=1;

  100. }
  101. if(Y1<0)//下碰壁
  102. {
  103. Y1=7;
  104. Down=1;
  105. }

  106. /*
  107. if(X1<0||X1>8)//左右碰壁自動重新歸位,清除所有標(biāo)記位
  108. {
  109. X1=0;
  110. Y1=0;
  111. Up=0;
  112. Down=0;
  113. Left=0;
  114. Right=0;
  115. a5=0;
  116. }
  117. if(Y1==8||Y1<0)//上下碰壁自動重新歸位,清除所有標(biāo)記位
  118. {
  119. X1=0;
  120. Y1=0;
  121. Up=0;
  122. Down=0;
  123. Left=0;
  124. Right=0;
  125. a5=0;
  126. }
  127. */

  128. for(int x=0;x<100;x++)//通過快速刷新的方式把點(diǎn)顯示出來
  129.    {
  130.    showPoint(Y[rn1],X[rn2]);//隨機(jī)點(diǎn)
  131.    
  132.    showPoint(Y[Y1],X[X1]);//第1個點(diǎn)
  133.    
  134.    showPoint(Y[Y2],X[X2]);//第2個點(diǎn)
  135.    
  136.         if(a5>=1)
  137.    showPoint(Y[Y3],X[X3]);//第3個點(diǎn)
  138.    
  139.         if(a5>=2)
  140.    showPoint(Y[Y4],X[X4]);//第4個點(diǎn)
  141.    
  142.         if(a5>=3)
  143.    showPoint(Y[Y5],X[X5]);//第5個點(diǎn)
  144.    
  145.         if(a5>=4)
  146.    showPoint(Y[Y6],X[X6]);//第6個點(diǎn)
  147.    
  148.         if(a5>=5)
  149.    showPoint(Y[Y7],X[X7]);//第7個點(diǎn)
  150.     delay(1);//加入延,時間可以自己看著辦
  151. }

  152. if(Y1==rn1&&X1==rn2)//點(diǎn)被吃到后產(chǎn)生新的隨機(jī)點(diǎn),同時蛇身長度的點(diǎn)數(shù)+1
  153. {a5=a5+1;
  154. rn1=random(0,8);//隨機(jī)行
  155. rn2=random(0,8);//隨機(jī)列
  156. }
  157. while(a5==6)//吃到第8個時,游戲結(jié)束,并重新開始
  158. {
  159.    showPoint(0x00,0xff);//勝利結(jié)束提示畫面
  160.    delay(1000);
  161.    showPoint(0xff,0xff);
  162.    delay(1000);
  163.    showPoint(0x00,0xff);
  164.    delay(1000);   
  165.    showPoint(0xff,0xff);
  166.    delay(1000);
  167.    showPoint(0x00,0xff);
  168.    delay(1000);   
  169.    showPoint(0xff,0xff);
  170.    delay(1000);  
  171.   
  172.    clearAllData(); //數(shù)據(jù)全清
  173.    
  174. }

  175. if(a5==2&&(X1==X4&&Y1==Y4))//追尾事件1
  176. {
  177. clearAllData();
  178. }

  179. if(a5==3&&(X1==X4&&Y1==Y4)||(X1==X5&&Y1==Y5))//追尾事件2
  180. {
  181.   clearAllData();
  182. }

  183. if(a5==4&&(X1==X4&&Y1==Y4)||(X1==X5&&Y1==Y5)||(X1==X6&&Y1==Y6))//追尾事件3
  184. {
  185. clearAllData();
  186. }

  187. if(a5==5&&(X1==X4&&Y1==Y4)||(X1==X5&&Y1==Y5)||(X1==X6&&Y1==Y6)||(X1==X7&&Y1==Y7))//追尾事件4
  188. {
  189.    clearAllData();
  190. }

  191. }


  192. void showPoint(int y,int x)
  193. {
  194. digitalWrite(latchpin,LOW);//
  195.     shiftOut(datapin,ckpin,LSBFIRST,y);//行
  196.     shiftOut(datapin,ckpin,LSBFIRST,x);//列
  197.     digitalWrite(latchpin,HIGH);
  198. }

  199. void clearAllData()
  200. {
  201.    X1=0;
  202.    Y1=0;
  203.    Up=0;
  204.    Down=0;
  205.    Left=0;
  206.    Right=0;
  207.    a5=0;
  208. }
復(fù)制代碼

回復(fù)

使用道具 舉報

ID:284589 發(fā)表于 2018-9-15 09:15 | 顯示全部樓層
admin 發(fā)表于 2018-9-15 01:45
樓主您好 能分享仿真工程嗎?

吶,工程放附件了,里面我重新改了一些注釋,應(yīng)該好多

Arduino 8x8點(diǎn)陣貪吃蛇proteus8.6仿真.rar

29.76 KB, 下載次數(shù): 165, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:486628 發(fā)表于 2019-3-8 00:31 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報

ID:681397 發(fā)表于 2020-1-5 08:45 | 顯示全部樓層
樓主  有連線圖嗎  
回復(fù)

使用道具 舉報

ID:284589 發(fā)表于 2020-1-18 13:29 | 顯示全部樓層
lijiayao 發(fā)表于 2020-1-5 08:45
樓主  有連線圖嗎

上圖我已經(jīng)給出了。
回復(fù)

使用道具 舉報

ID:742604 發(fā)表于 2020-5-2 00:34 | 顯示全部樓層
你好為什么我的點(diǎn)陣圖不會亮呀
回復(fù)

使用道具 舉報

ID:284589 發(fā)表于 2020-5-5 21:06 | 顯示全部樓層
有問題可以在帖子回復(fù),我盡量解答。
回復(fù)

使用道具 舉報

ID:802843 發(fā)表于 2020-7-13 23:32 | 顯示全部樓層
我用上面的程序和電路就不行的
回復(fù)

使用道具 舉報

ID:731673 發(fā)表于 2021-1-3 11:29 | 顯示全部樓層
又學(xué)到了,感謝樓主分享
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品99999 | 国产视频不卡一区 | 精品国产一区二区三区性色av | 日日夜夜精品 | 免费三级黄 | 欧美在线一区二区三区 | 亚洲综合无码一区二区 | 日韩欧美在线视频观看 | 91视频亚洲| 精品国产免费一区二区三区五区 | 亚洲精品99| 国产极品91| 午夜精品一区二区三区在线视频 | 国产精品久久久久久久久久 | 国产精品久久久久一区二区 | 亚洲精品乱码久久久久久按摩观 | 国产免费看 | 一区二区三区四区五区在线视频 | 欧美日韩一区精品 | 久久丝袜| 91伦理片| 国产精品无码永久免费888 | 欧美日韩三级 | 一区二区三区四区在线视频 | 日韩精品久久一区二区三区 | 一区二区三区四区视频 | 亚洲视频二区 | 99精品网 | 欧美性久久 | 精产国产伦理一二三区 | 久久五月婷 | 一区二区三区在线看 | 欧美精品乱码久久久久久按摩 | 欧美国产免费 | 91精品国产一区二区三区 | 久久精品国产a三级三级三级 | 国产综合精品一区二区三区 | 免费xxxx大片国产在线 | 国产一区二区三区高清 | 免费在线看黄 | 免费在线观看一区二区 |