找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6561|回复: 7
打印 上一主题 下一主题
收起左侧

基于STM32单片机的俄罗斯方块程序 TFT彩屏显示 速度可调

[复制链接]
跳转到指定楼层
楼主
利用STM32单片机+TFT彩屏设计的俄罗斯方块。速度可调。

全部源码下载:
Keil代码.7z (254.91 KB, 下载次数: 99)



部分单片机源程序:
  1. #include "game.h"
  2. #include "picture.h"
  3. u8 str1[]       = " NEXT ";
  4. u8 str2[]       = " MARK ";
  5. u8 str3[]       = " Design ";
  6. u8 str5[]       = " By ";
  7. u8 str6[]       = " LXY ";
  8. u8 str4[]       = " GAME OVER ";
  9. u16 hangdata[8];
  10. unsigned long fenshu=0;
  11. void putstring16x24(u16 x,u16 y,u8 *str,u16 charColor,u16 bkColor)
  12. {        
  13.         
  14.         u8 i=0;
  15.         for (;*str;str++)
  16.     {
  17.                
  18.         ili9320_PutChar_16x24(x+(16*i),y,*str,charColor,bkColor);
  19.                 i++;
  20.     }
  21. }
  22. void putstring8x16(u16 x,u16 y,u8 *str,u16 charColor,u16 bkColor)
  23. {        
  24.         
  25.         u8 i=0;
  26.         for (;*str;str++)
  27.     {
  28.                
  29.         ili9320_PutChar(x+(8*i),y,*str,charColor,bkColor);
  30.                 i++;
  31.     }
  32. }
  33. void setwindow()
  34. {
  35.         ili9320_Clear(White);                                   //设置窗口
  36.         GUI_Line(0,0,0,320,Red);
  37.         GUI_Line(1,0,1,320,Red);
  38.         GUI_Line(2,0,2,320,Red);
  39.         GUI_Line(3,0,3,320,Red);
  40.         GUI_Line(4,0,4,320,Red);
  41.         GUI_Line(138,0,138,320,Red);
  42.         GUI_Line(137,0,137,320,Red);
  43.         GUI_Line(136,0,136,320,Red);
  44.         GUI_Line(135,0,135,320,Red);
  45.         GUI_Line(134,0,134,320,Red);
  46.         GUI_Line(133,0,133,320,Red);
  47.         GUI_Line(0,320,140,320,Red);
  48.         GUI_Line(0,319,140,319,Red);
  49.         GUI_Line(0,318,140,318,Red);
  50.         GUI_Line(0,317,140,317,Red);
  51.         GUI_Line(0,316,140,316,Red);
  52.         GUI_Line(0,315,140,315,Red);
  53.         GUI_Line(0,314,140,314,Red);
  54.         GUI_Line(0,313,140,313,Red);
  55.         GUI_Line(0,312,140,312,Red);
  56.         GUI_Line(0,311,140,311,Red);
  57.         GUI_Line(0,310,140,310,Red);
  58.         GUI_Line(0,309,140,309,Red);
  59.         GUI_Line(0,308,140,308,Red);
  60.         GUI_Line(0,307,140,307,Red);
  61.         GUI_Line(0,306,140,306,Red);
  62.         GUI_Line(0,305,140,305,Red);
  63.         GUI_Line(0,304,140,304,Red);

  64.         GUI_Line(140,0,140,320,Red);
  65.         GUI_Line(139,0,139,320,Red);
  66.         GUI_Line(140,80,240,80,Red);
  67.         GUI_Line(140,140,240,140,Red);
  68. //        GUI_Line(140,200,240,200,Red);


  69.         putstring16x24(142,10,str1,Red,White);
  70.         putstring16x24(142,90,str2,Red,White);                   //设置提示语
  71.         putstring8x16(160,260,str3,Red,White);
  72.         putstring8x16(177,280,str5,Red,White);
  73.         putstring8x16(175,300,str6,Red,White);
  74.         putnum(175,115,Black,White,fenshu);
  75. //        tu5(50,50,1,1);
  76. //        Delay(1000);
  77. //        tu5(50,50,2,1);
  78. }
  79. void fk(u16 x,u16 y,u16 color)
  80. {
  81.          GUI_Square(x,y,15,color,1);
  82. }
  83. void tu1(u16 x,u16 y,u16 fangxiang,u8 flag)                        
  84. {
  85.         static u16 fangxiang1;
  86.         if((flag==0)|(fangxiang1!=fangxiang))
  87.         switch(fangxiang1)
  88.         {
  89.         case 1:fk(x+16,y,White);fk(x,y+16,White);fk(x+16,y+16,White);fk(x+32,y+16,White);break;
  90.         case 2:fk(x,y,White);fk(x,y+16,White);fk(x+16,y+16,White);fk(x,y+32,White);break;
  91.         case 4:fk(x+16,y,White);fk(x,y+16,White);fk(x+16,y+16,White);fk(x+16,y+32,White);break;
  92.         case 3:fk(x,y,White);fk(x+16,y,White);fk(x+32,y,White);fk(x+16,y+16,White);break;
  93.         }
  94.         if((flag==1)|(fangxiang1!=fangxiang))
  95.         switch(fangxiang)
  96.         {
  97.         case 1:fk(x+16,y,Black);fk(x,y+16,Black);fk(x+16,y+16,Black);fk(x+32,y+16,Black);break;
  98.         case 2:fk(x,y,Black);fk(x,y+16,Black);fk(x+16,y+16,Black);fk(x,y+32,Black);break;
  99.         case 4:fk(x+16,y,Black);fk(x,y+16,Black);fk(x+16,y+16,Black);fk(x+16,y+32,Black);break;
  100.         case 3:fk(x,y,Black);fk(x+16,y,Black);fk(x+32,y,Black);fk(x+16,y+16,Black);break;
  101.         }
  102.         fangxiang1=fangxiang;
  103. }
  104. void tu2(u16 x,u16 y,u16 fangxiang,u8 flag)
  105. {
  106.         static u16 fangxiang1;
  107.         if((flag==0)|(fangxiang1!=fangxiang))
  108.         switch(fangxiang1)                 //将原图像擦除
  109.         {
  110.         case 1:fk(x,y,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x+32,y+16,White);break;
  111.         case 2:fk(x+16,y,White);fk(x,y+16,White);fk(x+16,y+16,White);fk(x,y+32,White);break;
  112.         case 3:fk(x,y,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x+32,y+16,White);break;
  113.         case 4:fk(x+16,y,White);fk(x,y+16,White);fk(x+16,y+16,White);fk(x,y+32,White);break;
  114.         }
  115.         if((flag==1)|(fangxiang1!=fangxiang))
  116.         switch(fangxiang)                  //重绘新图像
  117.         {
  118.         case 1:fk(x,y,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x+32,y+16,Black);break;
  119.         case 2:fk(x+16,y,Black);fk(x,y+16,Black);fk(x+16,y+16,Black);fk(x,y+32,Black);break;
  120.         case 3:fk(x,y,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x+32,y+16,Black);break;
  121.         case 4:fk(x+16,y,Black);fk(x,y+16,Black);fk(x+16,y+16,Black);fk(x,y+32,Black);break;
  122.         }
  123.         fangxiang1=fangxiang;
  124. }
  125. void tu3(u16 x,u16 y,u16 fangxiang,u8 flag)
  126. {
  127.         static u16 fangxiang1;
  128.         if((flag==0)|(fangxiang1!=fangxiang))
  129.         switch(fangxiang1)                 //将原图像擦除
  130.         {
  131.         case 1:fk(x,y,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x,y+16,White);break;
  132.         case 2:fk(x,y,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x,y+16,White);break;
  133.         case 3:fk(x,y,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x,y+16,White);break;
  134.         case 4:fk(x,y,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x,y+16,White);break;
  135.         }
  136.         if((flag==1)|(fangxiang1!=fangxiang))
  137.         switch(fangxiang)                  //重绘新图像
  138.         {
  139.         case 1:fk(x,y,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x,y+16,Black);break;
  140.         case 2:fk(x,y,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x,y+16,Black);break;
  141.         case 3:fk(x,y,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x,y+16,Black);break;
  142.         case 4:fk(x,y,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x,y+16,Black);break;
  143.         }
  144.         fangxiang1=fangxiang;
  145. }
  146. void tu4(u16 x,u16 y,u16 fangxiang,u8 flag)
  147. {
  148.         static u16 fangxiang1;
  149.         if((flag==0)|(fangxiang1!=fangxiang))
  150.         switch(fangxiang1)                 //将原图像擦除
  151.         {
  152.         case 1:fk(x,y,White);fk(x+16,y,White);fk(x+32,y,White);break;
  153.         case 2:fk(x,y,White);fk(x,y+16,White);fk(x,y+32,White);break;
  154.         case 3:fk(x,y,White);fk(x+16,y,White);fk(x+32,y,White);break;
  155.         case 4:fk(x,y,White);fk(x,y+16,White);fk(x,y+32,White);break;
  156.         }
  157.         if((flag==1)|(fangxiang1!=fangxiang))
  158.         switch(fangxiang)                  //重绘新图像
  159.         {
  160.         case 1:fk(x,y,Black);fk(x+16,y,Black);fk(x+32,y,Black);break;
  161.         case 2:fk(x,y,Black);fk(x,y+16,Black);fk(x,y+32,Black);break;
  162.         case 3:fk(x,y,Black);fk(x+16,y,Black);fk(x+32,y,Black);break;
  163.         case 4:fk(x,y,Black);fk(x,y+16,Black);fk(x,y+32,Black);break;
  164.         }
  165.         fangxiang1=fangxiang;
  166. }
  167. void tu5(u16 x,u16 y,u16 fangxiang,u8 flag)
  168. {
  169.         static u16 fangxiang1;                                
  170.         if((flag==0)|(fangxiang1!=fangxiang))
  171.         switch(fangxiang1)                 //将原图像擦除
  172.         {
  173.         case 1:fk(x,y,White);fk(x,y+16,White);fk(x+16,y+16,White);fk(x+32,y+16,White);break;
  174.         case 2:fk(x,y,White);fk(x+16,y,White);fk(x,y+16,White);fk(x,y+32,White);break;
  175.         case 3:fk(x,y,White);fk(x+16,y,White);fk(x+32,y,White);fk(x+32,y+16,White);break;
  176.         case 4:fk(x,y+32,White);fk(x+16,y,White);fk(x+16,y+16,White);fk(x+16,y+32,White);break;
  177.         }
  178.         if((flag==1)|(fangxiang1!=fangxiang))
  179.         switch(fangxiang)                  //重绘新图像
  180.         {
  181.         case 1:fk(x,y,Black);fk(x,y+16,Black);fk(x+16,y+16,Black);fk(x+32,y+16,Black);break;
  182.         case 2:fk(x,y,Black);fk(x+16,y,Black);fk(x,y+16,Black);fk(x,y+32,Black);break;
  183.         case 3:fk(x,y,Black);fk(x+16,y,Black);fk(x+32,y,Black);fk(x+32,y+16,Black);break;
  184.         case 4:fk(x,y+32,Black);fk(x+16,y,Black);fk(x+16,y+16,Black);fk(x+16,y+32,Black);break;
  185.         }
  186.         fangxiang1=fangxiang;
  187. }
  188. void down(u16 xx,u16 yy,u8 tu,u16 sudu) //tu为哪个,sudu为下落速度,xy对应初始位置
  189. {
  190.         u16 fangxiang;        
  191.         fangxiang=fx;
  192.         switch(tu)
  193.         {
  194.         case 1:tu1(xx,yy,fangxiang,1);Delay(50*sudu);tu1(xx,yy,fangxiang,0);break;
  195.         case 2:tu2(xx,yy,fangxiang,1);Delay(50*sudu);tu2(xx,yy,fangxiang,0);break;
  196.         case 3:tu3(xx,yy,fangxiang,1);Delay(50*sudu);tu3(xx,yy,fangxiang,0);break;
  197.         case 4:tu4(xx,yy,fangxiang,1);Delay(50*sudu);tu4(xx,yy,fangxiang,0);break;
  198.         case 5:tu5(xx,yy,fangxiang,1);Delay(50*sudu);tu5(xx,yy,fangxiang,0);break;
  199.         }
  200.         xx=x;
  201.         yy=y;
  202.         
  203. }
  204. void ting(u8 tu)
  205. {
  206.         switch(tu)
  207.         {
  208.         case 1:tu1(x,y,fx,1);break;
  209.         case 2:tu2(x,y,fx,1);break;
  210.         case 3:tu3(x,y,fx,1);break;
  211.         case 4:tu4(x,y,fx,1);break;
  212.         case 5:tu5(x,y,fx,1);break;
  213.         }
  214. }
  215. u8 suiji()          //产生随机数
  216. {
  217.         u16 ADCvalue,precent,voltage;
  218.         u16 shu1,shu;
  219.         ADCvalue=GetADCConvertedValue();
  220.         precent=(ADCvalue*100/0x1000);
  221.         voltage=precent*33;
  222.         Delay(100);
  223.         printf("\r\n 当前AD转换结果为:0x%X,电压值为:%d.%d%dV,百分比为%d%%", ADCvalue,voltage/1000, (voltage%1000)/100, (voltage%100)/10,precent);
  224.         shu=((voltage%1000)/100)+((voltage%100)/10);
  225.         srand(shu);
  226.         shu1=rand()%6;
  227.         if(shu1==0)
  228.         shu1=5;
  229.         printf("%d",shu1);        
  230.         return shu1;

  231. }
  232. u16 bi(u16 x1,u16 y1,u16 x2,u16 y2)
  233. {
  234.         if((ili9320_GetPoint(x1,y1))==(ili9320_GetPoint(x2,y2)))
  235.         return 1;
  236.         else
  237.         return 0;
  238. }
  239. u16 zuobian()
  240. {
  241.         switch(tuxing)
  242.         {
  243.                 case 1:switch(fx)
  244.                         {
  245.                                 case 1:if((ili9320_GetPoint(x-1,y+16))==0xffff) return 1;else return 0;break;
  246.                                 case 2:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  247.                                 case 3:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  248.                                 case 4:if((ili9320_GetPoint(x-1,y+16))==0xffff) return 1;else return 0;break;
  249.                         }
  250.                 case 2:switch(fx)
  251.                         {
  252.                                 case 1:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  253.                                 case 2:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  254.                                 case 3:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  255.                                 case 4:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  256.                         }
  257.                 case 3:switch(fx)
  258.                         {
  259.                                 case 1:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  260.                                 case 2:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  261.                                 case 3:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  262.                                 case 4:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  263.                         }
  264.                 case 4:switch(fx)
  265.                         {
  266.                                 case 1:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  267.                                 case 2:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  268.                                 case 3:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  269.                                 case 4:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  270.                         }
  271.                 case 5:switch(fx)
  272.                         {
  273.                                 case 1:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  274.                                 case 2:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  275.                                 case 3:if((ili9320_GetPoint(x-1,y))==0xffff) return 1;else return 0;break;
  276.                                 case 4:if((ili9320_GetPoint(x-1,y+32))==0xffff) return 1;else return 0;break;
  277.                         }
  278.                
  279.         }
  280.         
  281. }

  282. u16 youbian()
  283. {
  284.         switch(tuxing)
  285.         {
  286.                 case 1:switch(fx)
  287.                         {
  288.                                 case 1:if((ili9320_GetPoint(x+49,y+16))==0xffff) return 1;else return 0;break;
  289.                                 case 2:if((ili9320_GetPoint(x+33,y+16))==0xffff) return 1;else return 0;break;
  290.                                 case 3:if((ili9320_GetPoint(x+49,y))==0xffff) return 1;else return 0;break;
  291.                                 case 4:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  292.                         }
  293.                 case 2:switch(fx)
  294.                         {
  295.                                 case 1:if((ili9320_GetPoint(x+49,y+16))==0xffff) return 1;else return 0;break;
  296.                                 case 2:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  297.                                 case 3:if((ili9320_GetPoint(x+49,y+16))==0xffff) return 1;else return 0;break;
  298.                                 case 4:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  299.                         }
  300.                 case 3:switch(fx)
  301.                         {
  302.                                 case 1:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  303.                                 case 2:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  304.                                 case 3:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  305.                                 case 4:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  306.                         }
  307.                 case 4:switch(fx)
  308.                         {
  309.                                 case 1:if((ili9320_GetPoint(x+49,y))==0xffff) return 1;else return 0;break;
  310.                                 case 2:if((ili9320_GetPoint(x+17,y))==0xffff) return 1;else return 0;break;
  311.                                 case 3:if((ili9320_GetPoint(x+49,y))==0xffff) return 1;else return 0;break;
  312.                                 case 4:if((ili9320_GetPoint(x+17,y))==0xffff) return 1;else return 0;break;
  313.                         }
  314.                 case 5:switch(fx)
  315.                         {
  316.                                 case 1:if((ili9320_GetPoint(x+49,y+16))==0xffff) return 1;else return 0;break;
  317.                                 case 2:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  318.                                 case 3:if((ili9320_GetPoint(x+49,y))==0xffff) return 1;else return 0;break;
  319.                                 case 4:if((ili9320_GetPoint(x+33,y))==0xffff) return 1;else return 0;break;
  320.                         }
  321.                
  322.         }
  323.         
  324. }
  325. u16 dibian()
  326. {
  327.         switch(tuxing)
  328.         {
  329.                 case 1:switch(fx)
  330.                         {
  331.                                 case 1:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)&&((ili9320_GetPoint(x+40,y+32))==0xffff)) return 1;else return 0;break;
  332.                                 case 2:if(((ili9320_GetPoint(x+8,y+48))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff))                                                                                         return 1;else return 0;break;
  333.                                 case 4:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+48))==0xffff))                                                                                         return 1;else return 0;break;
  334.                                 case 3:if(((ili9320_GetPoint(x+8,y+16))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)&&((ili9320_GetPoint(x+40,y+16))==0xffff)) return 1;else return 0;break;
  335.                         }
  336.                 case 2:switch(fx)
  337.                         {
  338.                                 case 1:if(((ili9320_GetPoint(x+8,y+16))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)&&((ili9320_GetPoint(x+40,y+32))==0xffff)) return 1;else return 0;break;
  339.                                 case 2:if(((ili9320_GetPoint(x+8,y+48))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff))                                                                                         return 1;else return 0;break;
  340.                                 case 3:if(((ili9320_GetPoint(x+8,y+16))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)&&((ili9320_GetPoint(x+40,y+32))==0xffff)) return 1;else return 0;break;
  341.                                 case 4:if(((ili9320_GetPoint(x+8,y+48))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff))                                                                                         return 1;else return 0;break;
  342.                         }
  343.                 case 3:switch(fx)
  344.                         {
  345.                                 case 1:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)) return 1;else return 0;break;
  346.                                 case 2:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)) return 1;else return 0;break;
  347.                                 case 3:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)) return 1;else return 0;break;
  348.                                 case 4:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)) return 1;else return 0;break;
  349.                         }
  350.                 case 4:switch(fx)
  351.                         {
  352.                                 case 1:if(((ili9320_GetPoint(x+8,y+16))==0xffff)&&((ili9320_GetPoint(x+24,y+16))==0xffff)&&((ili9320_GetPoint(x+40,y+16))==0xffff)) return 1;else return 0;break;
  353.                                 case 2:if((ili9320_GetPoint(x+8,y+48))==0xffff) return 1;else return 0;break;
  354.                                 case 3:if(((ili9320_GetPoint(x+8,y+16))==0xffff)&&((ili9320_GetPoint(x+24,y+16))==0xffff)&&((ili9320_GetPoint(x+40,y+16))==0xffff)) return 1;else return 0;break;
  355.                                 case 4:if((ili9320_GetPoint(x+8,y+48))==0xffff) return 1;else return 0;break;
  356.                         }
  357.                 case 5:switch(fx)
  358.                         {
  359.                                 case 1:if(((ili9320_GetPoint(x+8,y+32))==0xffff)&&((ili9320_GetPoint(x+24,y+32))==0xffff)&&((ili9320_GetPoint(x+40,y+32))==0xffff)) return 1;else return 0;break;
  360.                                 case 2:if(((ili9320_GetPoint(x+8,y+48))==0xffff)&&((ili9320_GetPoint(x+24,y+16))==0xffff)) return 1;else return 0;break;
  361.                                 case 3:if(((ili9320_GetPoint(x+8,y+16))==0xffff)&&((ili9320_GetPoint(x+24,y+16))==0xffff)&&((ili9320_GetPoint(x+40,y+32))==0xffff)) return 1;else return 0;break;
  362.                                 case 4:if(((ili9320_GetPoint(x+8,y+48))==0xffff)&&((ili9320_GetPoint(x+24,y+48))==0xffff)) return 1;else return 0;break;
  363.                         }
  364.                
  365.         }
  366.         
  367. }
  368. void readhang(u16 y1)
  369. {
  370.         u16 i=0,x=13;
  371.         for(i=0;i<8;i++)
  372.         {
  373.                 hangdata[i]=ili9320_GetPoint(x,y1);
  374.                 x=x+16;
  375.         }
  376. }
  377. void writehang(u16 y1,u8 f)                //f为1时,写上一行数据,f为0时将此行写白
  378. {
  379.         u16 i=0,x=5;
  380.         for(i=0;i<8;i++)
  381.         {
  382.                 if(f==1)
  383.                 fk(x,y1,hangdata[i]);
  384.                 if(f==0)                                   
  385.                 fk(x,y1,White);
  386.                 x=x+16;
  387.         }
  388. }
  389. u16 manhang(u16 y1)
  390. {
  391.            u16 i,x=13,b=0,w=0;
  392.         for(i=0;i<8;i++)
  393.         {
  394.                 if((ili9320_GetPoint(x,y1))==Black)
  395.                 b++;
  396.                 if((ili9320_GetPoint(x,y1))==White)
  397.                 w++;
  398.                 x=x+16;               
  399.         }
  400.         if(b==8)
  401.         return 1;        //满行为黑色则返回1
  402.         if(w==8)
  403.         return 2;        //满行为白色则返回2
  404. }
  405. void quxiao()
  406. {
  407.         u16 y2=288,y1;
  408.         while((manhang(y2))!=2)
  409.         {        
  410.                 if((manhang(y2))==1)
  411.                 {
  412.                         y1=y2;
  413.                         while((manhang(y1))!=2)
  414.                                 {
  415.                                         writehang(y1,0);
  416.                                         readhang(y1-16);
  417.                                         writehang(y1,1);
  418.                                         y1=y1-16;
  419.                                        
  420.                                 }
  421.                         putnum(175,115,White,White,fenshu);
  422.                         fenshu++;
  423.                         putnum(175,115,Black,White,fenshu);
  424.                         if(fenshu%5==0)
  425.                         sudu=sudu-2;
  426.                         if(sudu==0)
  427.                         sudu=0;               
  428.                 }               
  429.            y2=y2-16;
  430.         }
  431. }
  432. void tuxian()
  433. {
  434. //                switch(tuxing)
  435. //                {
  436. //                        case 1:tu1(165,40,1,0);break;
  437. //                        case 2:tu2(165,40,1,0);break;
  438. //                        case 3:tu3(165,40,1,0);break;
  439. //                        case 4:tu4(165,40,1,0);break;
  440. //                        case 5:tu5(165,40,1,0);break;
  441. //                }
  442.                 GUI_Rectangle(142,35,240,75,White,White);
  443.                 tuxing1=suiji();               
  444.                 switch(tuxing1)
  445.                 {
  446.                         case 1:tu1(165,40,1,1);break;
  447.                         case 2:tu2(165,40,1,1);break;
  448.                         case 3:tu3(165,40,1,1);break;
  449.                         case 4:tu4(165,40,1,1);break;
  450.                         case 5:tu5(165,40,1,1);break;
  451.                 }
  452. }
  453. void gameover()
  454. {
  455.         if(manhang(1)!=2)
  456.         {
  457.                  ili9320_Clear(Black);
  458.                  putstring16x24(30,100,str4,Red,Black);
  459.                  putstring16x24(70,140,str2,Red,Black);
  460.                  putnum(100,165,Red,Black,fenshu);
  461.                  while(1);
  462.         
  463.         }
  464. }
复制代码


评分

参与人数 2黑币 +10 收起 理由
f959367839 + 5 很给力!
1243449743 + 5 回帖助人的奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:316478 发表于 2018-4-25 19:04 | 只看该作者
有没有仿真出来的结果?
回复

使用道具 举报

板凳
ID:316478 发表于 2018-4-25 19:09 | 只看该作者
有没有仿真结果?
回复

使用道具 举报

地板
ID:202215 发表于 2018-5-25 08:48 | 只看该作者
也想求一个仿真的结果
回复

使用道具 举报

5#
ID:331618 发表于 2018-12-18 11:10 | 只看该作者
错误没解决就分享,骗我黑币
回复

使用道具 举报

6#
ID:559313 发表于 2019-6-11 19:24 | 只看该作者
芯片型号是啥?
回复

使用道具 举报

7#
ID:511461 发表于 2019-6-12 21:16 | 只看该作者
也不知道能不能实现?能不能发张图
回复

使用道具 举报

8#
ID:511461 发表于 2019-10-25 21:00 | 只看该作者
这个程序有问题吧,楼主还在吗

360截图20191025205911001.jpg (90.5 KB, 下载次数: 24)

360截图20191025205911001.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表