⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pic_game.lst

📁 单片机控制实现几个小游戏:贪吃蛇、俄罗斯方块、推箱子
💻 LST
字号:
     1: #ifndef __PIC_GAME_c__
     2: #define __PIC_GAME_c__
     3: #include "PIC_GAME.h"
     4: 
     5: void main(void)
     6: {
     7:         uint8_t i;
     8:         delay(255);
     9:         cpu_inti();
    10:         for(i=0;i<16;i++)displaybuffer_16mux16[i]=game_dora[i];
    11:         LED_UEN_0123;
    12:         //for(i=0;i<16;i++)displaybuffer_16mux16[i]=game_lostway[i];
    13:         //flash_displaybuffer[5]=0x5555;//闪烁调试代码
    14:         //flash_status=FLASH_NO_TIME;
    15:         //flash_time=40;
    16:         //while(keywords!=UP);
    17:         //display_moving_up(game_snake);
    18:         
    19:         while(1)
    20:                 {
    21:                         (*game[Current_game].my_game)();
    22:                 }
    23: }
    24: 
    25: void display_moving_down(const int16_t *cur)
    26: {       
    27:         uint8_t i;
    28:         INTE=0;
    29:         GIE=0;  
    30:         for(i=0;i<16;i++)displaybuffer_16mux16[i]=cur[i];
    31:                 /*
    32: //      uint16_t temp;
    33: //      temp=displaybuffer_16mux16[15];
    34:         for(i=0;i<SPEED_0;i++)
    35:         {               
    36:                 displaybuffer[16+i]=cur[i];
    37:                 displaybuffer_16mux16++;
    38:                 delay_long_int(display_speed_0[i]);
    39:         }
    40:         for(i=0;i<16;i++)displaybuffer[i]=cur[i];
    41:         displaybuffer_16mux16=&displaybuffer[0];
    42:         for(i=0;i<SPEED_1;i++)
    43:         {
    44:                 //displaybuffer[16+i]=next[i];
    45:                 displaybuffer[16+i]=0;
    46:                 displaybuffer_16mux16++;
    47:                 delay_long_int(display_speed_1[i]);
    48:         }
    49:         for(i=0;i<SPEED_2;i++)
    50:         {
    51:                 //displaybuffer[32]=temp;
    52:                 displaybuffer_16mux16--;
    53:                 delay_long_int(display_speed_2[i]);
    54:                 
    55:         }
    56:                 displaybuffer_16mux16++;
    57:                 delay_long_int(display_speed_3);
    58:                 */
    59:                 keywords=0;
    60:                         INTE=1;
    61:                                 GIE=1;  
    62: }
    63: 
    64: void display_moving_up(const int16_t *cur)
    65: {
    66:                 uint8_t i;
    67:                 GIE=0;
    68:                 INTE=0; 
    69:                 for(i=0;i<16;i++)displaybuffer_16mux16[i]=cur[i];
    70: 
    71:                 /*
    72:                 for(i=0;i<16;i++)displaybuffer_16mux16[i+16]=displaybuffer_16mux16[i];
    73:                 displaybuffer_16mux16=&displaybuffer[16];
    74:                 for(i=0;i<SPEED_0;i++)
    75:                 {
    76:                 displaybuffer[15-i]=cur[i];
    77:                 displaybuffer_16mux16--;
    78:                 delay_long_int(display_speed_0[i]);
    79:         }
    80:         for(i=0;i<16;i++)displaybuffer_16mux16[i+16]=displaybuffer_16mux16[i];
    81:         displaybuffer_16mux16=&displaybuffer[16];
    82:         for(i=0;i<SPEED_1;i++)
    83:         {               
    84:                 //displaybuffer[15-i]=next[i];
    85:                 displaybuffer[15-i]=0;
    86:                 displaybuffer_16mux16--;
    87:                 delay_long_int(display_speed_1[i]);
    88:         }
    89:         for(i=0;i<SPEED_2;i++)
    90:         {       
    91:                 //displaybuffer[32]=temp;
    92:                 displaybuffer_16mux16++;
    93:                 delay_long_int(display_speed_2[i]);
    94:         }
    95:                 displaybuffer_16mux16--;
    96:                 delay_long_int(display_speed_3);
    97:                 */
    98:                 keywords=0;
    99:                 INTE=1; 
   100:                 GIE=1;
   101: }
   102: 
   103: void delay(uint8_t MS)  //短延时程序
   104: {
   105: while(MS--){}
   106: }
   107: 
   108: void delay_long(uint16_t MS)//超长延时程序
   109: {
   110: while(MS--){}
   111: }
   112: 
   113: void delay_long_int(uint16_t MS)//超长延时程序
   114: {
   115: while(MS--){}
   116: }
   117: 
   118: void defaults(void)
   119: {
   120:                 if(keywords==UP){display_moving_up(game[select_game].my_game_wait);}
   121:                 if(keywords==DOWN){display_moving_down(game[select_game].my_game_wait);}
   122:                 display_LED_total_NO();
   123:                 if(game_model==A_model)seg_7_led_buffer[3]=CODE_A;else seg_7_led_buffer[3]=CODE_B;
   124: }
   125: 
   126: void defaults_key(void)
   127: {
   128:         switch(keywords)
   129:         {       
   130:         case UP:
   131:                 if(select_game==LOSTWAY)select_game=DEFAULTS; else select_game++;
   132:                         break;
   133:         case DOWN:
   134:                 if(select_game==DEFAULTS)select_game=LOSTWAY; else select_game--;
   135:                         break;
   136:         case OK:
   137:                 Current_game=select_game;break;
   138:         case RIGHT:
   139:                 if(game_model==A_model)game_model=B_model;else game_model=A_model;
   140:                 break;
   141:         case LEFT:
   142:                 if(game_model==A_model)game_model=B_model;else game_model=A_model;
   143:                 break;
   144:         default:
   145:                 Current_game=DEFAULTS;
   146:                 break;
   147:         }
   148: //      keywords=0;                     //清除键值
   149: }
   150: 
   151: void display_cmd(uint8_t cmd,uint16_t d_data)//对显示器送数据或地址
   152: {
   153:         uint8_t i;
   154:         switch(cmd)
   155:         {       
   156:         case DISPLAY_CMD_CLR:
   157:                 for(i=0;i<16;i++)displaybuffer_16mux16[i]=0;break;      
   158:         case DISPLAY_CMD_BG_CLR:
   159:                 for(i=0;i<16;i++)BG_display_16mux16[i]=0;break;
   160:         case DISPLAY_CMD_ROLE_CLR:
   161:                 for(i=0;i<16;i++)ROLE_display_16mux16[i]=0;break;
   162:         case DISPLAY_CMD_OVER:
   163:                 for(i=0;i<16;i++)displaybuffer_16mux16[i]=game_over[i];break;//游戏结束信息送入显缓区
   164:         case DISPLAY_CMD_WIN:
   165:                 for(i=0;i<16;i++)displaybuffer_16mux16[i]=game_win[i];break;//游戏胜利信息送入显缓区
   166:         case DISPLAY_CMD_FLASH_CLOSE:
   167:                 flash_status=NO_FLASH;break;
   168:         case DISPLAY_CMD_FLASH_CLR:
   169:                 for(i=0;i<16;i++)flash_displaybuffer[i]=0;break;        
   170:         case DISPLAY_CMD_FLASH:
   171:                 flash_status=FLASH_NO_TIME;break;       
   172:         case DISPLAY_CMD_FLASH_TIME:
   173:                 flash_time=d_data;flash_status=FLASH_YES_TIME;break;    
   174:         default:
   175:                 break;
   176:         }       
   177: }
   178: #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -