为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

8X8点阵贪吃蛇游戏(单片机)_c程序

2017-09-19 10页 doc 46KB 102阅读

用户头像

is_998870

暂无简介

举报
8X8点阵贪吃蛇游戏(单片机)_c程序#include #include #include #include sbit keystar = P3^0; sbit keyup = P3^1; sbit keylift = P3^5; sbit keydown = P3^6; sbit keyright = P3^7; int n; int dir = 1;  // lift->1  up->2  right->3  down->4 int timer1count = 0; int state_point = 1; int time = 50000; char...
8X8点阵贪吃蛇游戏(单片机)_c程序
#include #include #include #include sbit keystar = P3^0; sbit keyup = P3^1; sbit keylift = P3^5; sbit keydown = P3^6; sbit keyright = P3^7; int n; int dir = 1;  // lift->1  up->2  right->3  down->4 int timer1count = 0; int state_point = 1; int time = 50000; char green_point_row = 0x01; char green_point_list = 0xfe; char row[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; char redlist[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; char greenlist[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; int temp_point_row[8] = {1,2,4,8,16,32,64,128}; int temp_point_list[8] = {254, 253, 251, 247, 239, 223, 191, 127}; idata char  snakerow[64] = {0x08,0x08,0x08}; idata char snakelist[64] = {0xfe,0xfd,0xfb}; void delay_ms (int time)        // Every time 1 millisecond {     int i, k;     for (i = 0; i < time; i++)         {             for (k = 0; k < 901; k++);         } } void init ()      // Initialize timer  // Every time 50 milliseconds {     TMOD = 0x01;  // Open the two timers     EA = 1;     ET0 = 1;     TH0 = (65536 - time) / 256;     TL0 = (65536 - time) % 256;     keyup = 1; } void keyscan (void) {        if (0 == keylift)         {             delay_ms(3);             if (0 == keylift)                 {                     dir = 1;                 }             return;         }     if (0 == keyup)         {             delay_ms(3);             if (0 == keyup)                 {                     dir = 2;                 }             return;         }     if (0 == keydown)         {             delay_ms(3);             if (0 == keydown)                 {                     dir = 4;                 }             return;         }     if (0 == keyright)         {             delay_ms(3);             if (0 == keyright)                 {                     dir = 3;                 }             return;         }                 } void arr_con (int i)  // An array of conversion {     int num;     switch(dir)         {             case 1:            //lift                 {                     if (snakelist[strlen(snakerow) - 1] == 0x7f)                         {                             while(1)                             {                                 P0 = 0xff;                                 P1 = 0x00;                                 P2 = 0xff;                             }                         }                     snakerow[i] = snakerow[i - 1];                     snakerow[i + 1] = '\0';                     for (num = 0; num < 8; num++)                         {                             if (snakelist[i - 1] == redlist[num])                                 {                                     break;                                 }                         }                     snakelist[i] = redlist[num - 1];                     snakelist[i + 1] = '\0';                     for (i = 0; i < strlen(snakerow); i++)                         {                             snakerow[i] = snakerow[i + 1];                             snakelist[i] = snakelist[i + 1];                         }                 }; break;             case 2:    //up                 {                     if (snakerow[strlen(snakerow) - 1] == 0x01)                     {                         while(1)                         {                             P0 = 0xff;                             P1 = 0x00;                             P2 = 0xff;                         }                     }                     snakelist[i] = snakelist[i - 1];                     snakelist[i + 1] = '\0';                     for (num = 0; num < 8; num++)                         {                             if (snakerow[i - 1] == row[num])                                 {                                     break;                                 }                         }                     snakerow[i] = row[num - 1];                     snakerow[i + 1] = '\0';                     for (i = 0; i < strlen(snakerow); i++)                         {                             snakerow[i] = snakerow[i + 1];                             snakelist[i] = snakelist[i + 1];                         }                 };break;                    case 3:  // rignt                 {                     if (snakelist[strlen(snakelist) - 1] == 0xfe)                         {                             while(1)                             {                                 P0 = 0xff;                                 P1 = 0x00;                                 P2 = 0xff;                             }                         }                     snakerow[i] = snakerow[i - 1];                     snakerow[i + 1] = '\0';                     for (num = 0; num < 8; num++)                         {                             if (snakelist[i - 1] == redlist[num])                                 {                                     break;                                 }                         }                     snakelist[i] = redlist[num + 1];                     snakelist[i + 1] = '\0';                     for (i = 0; i < strlen(snakerow); i++)                         {                             snakerow[i] = snakerow[i + 1];                             snakelist[i] = snakelist[i + 1];                         }                 }; break;             case 4:    //down                 {                     if (snakerow[strlen(snakerow) - 1] == 0x80)                     {                         while(1)                         {                             P0 = 0xff;                             P1 = 0x00;                             P2 = 0xff;                         }                     }                     snakelist[i] = snakelist[i - 1];                     snakelist[i + 1] = '\0';                     for (num = 0; num < 8; num++)                         {                             if (snakerow[i - 1] == row[num])                                 {                                     break;                                 }                         }                     snakerow[i] = row[num + 1];                     snakerow[i + 1] = '\0';                     for (i = 0; i < strlen(snakerow); i++)                         {                             snakerow[i] = snakerow[i + 1];                             snakelist[i] = snakelist[i + 1];                         }                 };break;                         } } void longer (void) {     int length;     length = strlen(snakerow);     snakerow[length] = snakerow[length - 1];     snakerow[length + 1] = '\0';     snakelist[length] = snakelist[length - 1];     snakelist[length + 1] = '\0'; } void main (void) {     int i;     int length_point;     int temp;     init();     while(1)     {         if (0 == keystar)  // If press keystar,go on.             {                 delay_ms(2);                 if (0 == keystar)        // The key to eliminate jitter                     {                            P0 = 0x01;                         TR0 = 1;                                             while (1)                             {                                 for (i = 0; i < strlen(snakerow); i++)        // The original image                                    {                                            P1 = 0xff;                                     P2 = 0xff;                                        P0 = snakerow[i];                                     P2 = snakelist[i];                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                        _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     _nop_();                                     P2 = 0xff;                                     P0 = green_point_row;                                     P1 = green_point_list;                                 }                                 for (i = 0;  i < 8; i++)                                     {                                         if (green_point_list == greenlist[i])                                             {                                                 break;                                             }                                     }                                 length_point = strlen(snakerow);                                 if ((snakerow[length_point - 1] == green_point_row)&&(snakelist[length_point - 1] == redlist[i]))                                     {                                         time = time + 1000;                                         if (state_point)                                             {                                                 do                                                     {                                                         green_point_row = temp_point_row[rand() % 8];  // 1 2 4 8 16 32 64 128                                                         green_point_list = temp_point_list[rand() % 8];    // 254 253 251 247 239 223 191 127                                                         for (temp = 0; temp < strlen(snakerow); temp++)        //To test whether red dot green dot overlap                                                             {                                                                 if ((green_point_row == snakerow[temp])&&(green_point_list == snakelist[temp]))                                                                     {                                                                         break;                                                                     }                                                             }                                                     }while(temp < strlen(snakerow));                                                 longer();                                                                                                 state_point = 0;                                                }                                            }                                     for (temp = 0; temp < (strlen(snakerow) - 3); temp++)                                             {                                                 if ((snakerow[strlen(snakerow) - 1] == snakerow[temp])&&(snakelist[strlen(snakerow) - 1] == snakelist[temp]))                                                     {                                                         while(1)                                                             {                                                                 P0 = 0xff;                                                                 P1 = 0x00;                                                                 P2 = 0xff;                                                             }                                                     }                                                                                         }                                 keyscan();                             }                     }             }                 } } void timer0 (void) interrupt 1 {     int i;     TH0 = (65536 - time) / 256;     TL0 = (65536 - time) % 256;     n++;     if (n >= 20)         {             i = strlen(snakerow);             arr_con(i);             state_point = 1;             n = 0;         } }
/
本文档为【8X8点阵贪吃蛇游戏(单片机)_c程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索