box.c

来自「redboy for gba 是BPNS为GBA编写的一个小软件。软件的邹形是B」· C语言 代码 · 共 597 行 · 第 1/3 页

C
597
字号
0x7C00,0x7C00,0x7C00,0x0190,0x0190,0x0190},//LEFT
{0x431F,0x431F,0x431F,0x431F,0x431F,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,
0x7C00,0x431F,0x431F,0x431F,0x0190,0x431F,0x2298,0x2298,0x2298,0x7C00,
0x7C00,0x7C00,0x001F,0x001F,0x001F,0x001F,0x7C00,0x7C00,0x7C00,0x431F,
0x0190,0x2298,0x2298,0x2298,0x7C00,0x7C00,0x001F,0x001F,0x001F,0x001F,
0x001F,0x001F,0x001F,0x001F,0x7C00,0x7C00,0x0190,0x2298,0x0190,0x0190,
0x7C00,0x001F,0x001F,0x001F,0x7C00,0x7C00,0x7C00,0x7C00,0x001F,0x001F,
0x001F,0x7C00,0x0088,0x0190,0x431F,0x431F,0x7C00,0x001F,0x7C00,0x7C00,
0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x001F,0x7C00,0x431F,0x431F,
0x2298,0x2298,0x7C00,0x7C00,0x7C00,0x03FF,0x7C00,0x03FF,0x03FF,0x7C00,
0x03FF,0x7C00,0x7C00,0x7C00,0x2298,0x2298,0x2298,0x7C00,0x03FF,0x7C00,
0x03FF,0x03FF,0x7C00,0x03FF,0x03FF,0x7C00,0x03FF,0x03FF,0x7C00,0x03FF,
0x7C00,0x2298,0x0190,0x0190,0x7C00,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,
0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x7C00,0x0190,0x0190,0x431F,0x431F,
0x001F,0x0000,0x03FF,0x7C00,0x7C00,0x03FF,0x03FF,0x7C00,0x7C00,0x03FF,
0x03FF,0x7C00,0x0190,0x431F,0x2298,0x7C00,0x7FFF,0x7FFF,0x03FF,0x03FF,
0x7C00,0x7C00,0x7C00,0x7C00,0x03FF,0x03FF,0x0000,0x001F,0x0190,0x2298,
0x2298,0x7C00,0x7FFF,0x7FFF,0x7C00,0x7C00,0x03FF,0x03FF,0x03FF,0x03FF,
0x7C00,0x7C00,0x7FFF,0x7FFF,0x7C00,0x2298,0x0190,0x0190,0x0190,0x0190,
0x001F,0x7C00,0x7C00,0x001F,0x001F,0x7C00,0x7C00,0x001F,0x7FFF,0x7FFF,
0x7C00,0x0190,0x431F,0x431F,0x431F,0x7C00,0x7C00,0x03FF,0x7C00,0x7C00,
0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x6318,0x431F,0x2298,0x2298,
0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x001F,0x001F,
0x001F,0x001F,0x7C00,0x2298,0x2298,0x7C00,0x001F,0x001F,0x001F,0x001F,
0x7C00,0x2298,0x2298,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x2298,
0x0190,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x0190,0x0190,0x0190,
0x0088,0x0190,0x0190,0x0190,0x0190,0x0190},//down
{0x431F,0x431F,0x431F,0x431F,0x431F,0x431F,0x7C00,0x7C00,0x7C00,0x7C00,
0x7C00,0x431F,0x431F,0x431F,0x0190,0x431F,0x2298,0x2298,0x2298,0x2298,
0x2298,0x7C00,0x001F,0x001F,0x001F,0x001F,0x001F,0x7C00,0x2298,0x431F,
0x0190,0x2298,0x2298,0x2298,0x2298,0x7C00,0x001F,0x001F,0x001F,0x001F,
0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x0190,0x2298,0x0190,0x0190,
0x7C00,0x001F,0x001F,0x001F,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,
0x7C00,0x7C00,0x7C00,0x0190,0x431F,0x431F,0x7C00,0x001F,0x001F,0x7C00,
0x7C00,0x03FF,0x03FF,0x7C00,0x03FF,0x7C00,0x7C00,0x7C00,0x431F,0x431F,
0x2298,0x7C00,0x001F,0x001F,0x7C00,0x7C00,0x03FF,0x03FF,0x03FF,0x7C00,
0x03FF,0x7C00,0x2298,0x2298,0x2298,0x2298,0x2298,0x7C00,0x03FF,0x03FF,
0x7C00,0x7C00,0x7C00,0x03FF,0x03FF,0x03FF,0x03FF,0x03FF,0x2298,0x2298,
0x2298,0x2298,0x0190,0x7C00,0x03FF,0x03FF,0x03FF,0x7C00,0x03FF,0x03FF,
0x7C00,0x03FF,0x03FF,0x03FF,0x03FF,0x0190,0x0190,0x0190,0x431F,0x7C00,
0x7C00,0x03FF,0x03FF,0x03FF,0x03FF,0x7C00,0x7C00,0x7C00,0x7C00,0x03FF,
0x03FF,0x431F,0x0190,0x431F,0x2298,0x2298,0x7C00,0x7C00,0x7C00,0x7C00,
0x7C00,0x7FFF,0x001F,0x0000,0x7C00,0x7C00,0x7C00,0x431F,0x0190,0x2298,
0x2298,0x2298,0x7C00,0x001F,0x001F,0x001F,0x7C00,0x7FFF,0x7FFF,0x03FF,
0x03FF,0x7C00,0x2298,0x431F,0x0190,0x2298,0x0190,0x0190,0x7C00,0x001F,
0x001F,0x001F,0x7C00,0x7FFF,0x7FFF,0x001F,0x7C00,0x001F,0x7C00,0x0190,
0x0088,0x0190,0x431F,0x431F,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,
0x7C00,0x7C00,0x7C00,0x7C00,0x7C00,0x431F,0x431F,0x431F,0x2298,0x2298,
0x2298,0x2298,0x7C00,0x001F,0x001F,0x001F,0x7C00,0x7C00,0x7C00,0x7C00,
0x2298,0x2298,0x2298,0x2298,0x2298,0x2298,0x2298,0x2298,0x7C00,0x7C00,
0x7C00,0x7C00,0x7C00,0x001F,0x7C00,0x2298,0x2298,0x2298,0x2298,0x2298,
0x0190,0x0190,0x0190,0x0190,0x0190,0x0190,0x0190,0x7C00,0x7C00,0x7C00,
0x7C00,0x0190,0x0190,0x0190,0x0190,0x0190}//right
};
const char box_data[42][152]={//关卡数据
"BBBBBBBBAAAAABBBBBBBBBBABBBABBBBBBAAABACCBABBBBBBADABABCBABBBBBBADAAABAAABBBBBBADBBBBAABBBBBBBABBABBBABBBBBBBAAAABBBABBBBBBBBBBAAAAABBBBBBBBBBBBBBBBBBLB",
"BBBBBBBBBBBBBBBBBBBBAAAABBBBBBBBBAAABBABBBBBBBBBABBCBABBBBBBBBAABABAAABBBBBBBABBABADABBBBBBBABABBCDABBBBBBBABCBBBDABBBBBBBAAAAAAAABBBBBBBBBBBBBBBBBBBBHC",
"BBBBBBBAAAAABBBBAAAAAAABBBABBBBABBBABBCBBABBBBABBBBBBADDABBBBAACBBBCADDABBBBABBCACBADDABBBBABBBBBBAAAABBBBAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDF",
"BBBBBBBBBBBBBBBBBBAAAAAAABBBBBBBBABBDDDABBBBBBBBABBBAAAABBBBBBAAACBBBBABBBBBBABBBACABABBBBBBABCBABBBABBBBBBABBBAAAAABBBBBBAAAAABBBBBBBBBBBBBBBBBBBBBBBFC",
"BAAAAAAAAAAABBBBABBBAABBABABBBBABBBCBBBABABBBBACBAAABCABABBBAABADDDABABABBBAABADDDABABABBBABCBBCBBCBAABBBABBBABBBBBABBBBAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBG",
"BBBBBBBBBBBBBBBBBBAAAAAABBBBBBBBBABBBBAAABBBBBBAABAACBDAABBBBBABBBCBCDDABBBBBAABCBCBDDABBBBBBABBAAAAAABBBBBBAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEC",
"BBBBBBBBBBBBBBBBBBAAAAABBBBBBBBBAABBDAAAABBBBBBABBDCDCBABBBBBBABCABACBABBBBBBABBDBDCBABBBBBBABCACAAAABBBBBBABBDBDABBBBBBBBAAAAAAABBBBBBBBBBBBBBBBBBBBBJE",
"BBBBBBBBBBBBBBBBBBAAAAAAABBBBBBAAABBBBBABBBBBBABBBAAACAABBBBBABCBBCBBBABBBBBAABCBADDBABBBBBBABBBADDAABBBBBBAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBIE",
"BBBBBBBBBBBBBBBBBAAAAAAAAAAABBBBABBBBBBBBBABBBBABAAAABAABABBBBABDBCDCBABABBBBABABCDCBDBABBBBABAABAAAABABBBBABBBBBBBBBABBBBAAAAAAAAAAABBBBBBBBBBBBBBBBBDC",
"BBBBBAAAAABBBBBAAAABABBBAABBBBABBAAABABBABBBBABCDDDDDABAABBBABBAADDDCBBABBBABBBBCAACABABBBABCACBBBCBBABBBAABBBAAACABABBBBAAAAABABBBABBBBBBBBBBAAAAABBBDH",
"BBBBAAAAAAAAAABBBBBABBBBBBBBABBBBAABBBBADABABBBBABDACBCBABABBBBABABBBBBABABBBBABABCBCADBABAAAABABABBBBAABABBBBBBDAAABABBABBBBAABBBBBABBAAAAAAAAAAAAABBEH",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAABCBBDDDBBBBBBBABCBADDDCCCCCCBABCBBDDDBBBBBBBAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAE",
"BBBBBBBBBBBBBBBBBBAAAAAABBBBBBBBBABBBBABBBBBBBBBABCCCAAABBBBBBBABDDCBBABBBBBBBAADDDCBABBBBBBBBABBAAAABBBBBBBBAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBIE",
"BBBBBBBBBBBBBBBBBBBAAAAABBBBBBBBBBABBBAAABBBBBBBAABDCBBABBBBBBBABDCDBBABBBBBBBABCCDAAABBBBBBBAABBBABBBBBBBBBBAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBFC",
"BBBBBBBBBBBBBBBBBAAAAAAABBBBBBBBABBABBAABBBBBBBABBABBBABBBBBBBABCBCBCABBBBBBBABBAACBABBBBBBBAABABCBAAABBBBBBABBDDDDDABBBBBBAAAAAAAAABBBBBBBBBBBBBBBBBBDC",
"BBBBBBBBBBBBBBBBBBBBAAAAAABBBBBBBBBABBBBABBBBBBBBAACCCBABBBBBBAAADDABBABBBBBBABCDDBBAABBBBBBABBBBBBABBBBBBBAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBHG",
"BBBBBBBBBBBBBBBBBBAAAAAABBBBBBBBBADDDBABBBBBBBBBADDDDAAAABBBBAAABCAAABBABBBBABCCBBCBCBABBBBABBBBCBCBBABBBBABBBAAABBBABBBBAAAAABAAAAABBBBBBBBBBBBBBBBBBKG",
"AAAAAABBABBBBBBABBABBBBABBBBBBABBBBCCBABBBBBBABBABBACAAAAAAAAACAAADDDCDABBAABBBBBCDCADABBAABBBABACDADABBAAAAAABADDDDCCBABBBBABAABACCBBABBBBABBBBABBBBANJ",
"BBBBBBBBBBBBBBBBBBAAAAAAAABBBBBBBABBBBBBABBBBBBBABBCCABABBBBBBBABADDDBABBBBBBAABCDDDAABBBBBBABCBAABABBBBBBBABBCBBCABBBBBBBABBBABBABBBBBBBAAAAAAAABBBBBDI",
"BBBBBBBBBBBBBBBBBBBBAAAABBBBBBBBBBBADDABBBBBBBBBBAADBAABBBBBBBBBADCBBABBBBBBBBAABBCBAABBBBBBBABCCABBABBBBBBBABBBBBBABBBBBBBAAAAAAAABBBBBBBBBBBBBBBBBBBIH",
"BBBBBBBBBBBBBBBBBBBAAAABBBBBBBBBBBABBABBBBBBBBBBBABBABBBBBBBBBAAABDAAAABBBBBBABBDCBBBABBBBBBABCDDBCBABBBBBBAAABCAAAABBBBBBBBABBABBBBBBBBBBBAAAABBBBBBBDG",
"BBBBBBBAAAAABBBBBBBBBBABBBABBBBBBBBBBABBCAAABBBBBBAAACBBBBABAAAAAABCBBCBBAADDBBAABAAABABBBDDBBBBBBBBCBBCBDDBBABAAAABAAAAAAAAABBBBBBABBBBBBBAAAAAAAABBBFG",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAABBBBBBABBBBBBBAABBBBBABCACABBBABBBBBADCDBBCCBABBBBBADDDAAABBABBBBBAAAAABAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBLG",
"BBAAAAAAAAAAAABAAABBBBBABBDDABABBCBCBBABBDDABABBAAAACABBDDABABBAABBBBBBDDABAABCBBABABBDDABABCBCAABAAAAAABABCBCBCBBCBABBBABBBBBABBBBABBBAAAAAAAAAAAABBBFE",
"BBBAAAAAABBBBBBBBBABBBAAAAABBBBBBABBDBBCBABBBBBBAAADDBCBABBBBBBAAACCBCBABBBBAAABDCDBAAABBBBABBCDDDCAABBBBBABBBAADCBABBBBBAAAAAABBBABBBBBBBBBBAAAAABBBBKE",
"BBBBBBBBBBBBBBBBBAAAAAABBBBBBBBBABBBDAAAABBBBBBABBCCCBBABBBBBBADAADAADABBBBBBABBBCBBBABBBBBBAABADCBBABBBBBBBABBBAAAABBBBBBBAAAAABBBBBBBBBBBBBBBBBBBBBBDC",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAABBBBBABBBBDBBBAAABBBABBAACAABBBABBBAACDBDBDCBBABBBBABAACAACBAABBBBABBBDBBBBABBBBBAAAAAAAAAABBBBBBBBBBBBBBBBBBBJF",
"BBBBBBBBBBBBBBBBBBBAAAAAABBBBBBBBBADDBDABBBBBBBBBADCBDABBBBBBBBAACBBAAABBBBBBBABCBBCBABBBBBBBABAACABABBBBBBBABBBBBBABBBBBBBAAAAAAAABBBBBBBBBBBBBBBBBBBEH",
"BBBBBAAAAABBBBBBBBBBABBBABBBBBBAAAAACDCAAABBBBABBBCBDBBBABBBBABBBAACAABABBBBAAAAABDBBBABBBBBBBBABDBBBABBBBBBBBABBBAAABBBBBBBBABBBABBBBBBBBBBAAAAABBBBBDD",
"BBBBBBBBBBBBBBBBBBBAAAAAAABBBBBBBBADDCDDABBBBBBBBADDADDABBBBBBBBABCCCBABBBBBBBBABBCBBABBBBBBBBABCCCBABBBBBBBBABBABBABBBBBBBBAAAAAAABBBBBBBBBBBBBBBBBBBFF",
"BBBBBBBBBBBBBBBBBBBBBAAAABBBBBBBAAAAABBABBBBBBBABBAABCAABBBBBBABBCBCBBABBBBBBABCAABBBABBBBBAAABAADAAABBBBBABCBCDDDABBBBBBABBBBDDAABBBBBBAAAAAAAABBBBBBGE",
"BBBBBBBBBBBBBBBBAAAAAAAABBBBBBBABDBBBBAAAABBBBABDCBCBCBBABBBBAADAAAADBBABBBBBABBCBCDCBABBBBBAAAABBDBBABBBBBBBBAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDF",
"BBBBABBAAAAABBBBBBAACBBCBBABBBBBAABCBCBBBAAABAAABBBBABABBBABABBBCBADDDBBBABABAABCADDDACBABABBACBADDDBBBABAABBBBCDDDABAABBAAABCCBCAABABBBBBAAABBBBBBABBFH",
"BBBBBBABBBBBBABBBAAAAABBBCBBABBBABBBCBBBAAAABBBABBCBACAABBABAAAABABABBBBBABBBBCCBCBCBAABAABBBABBBABBABBBAAAAAAAAAAAABBBABBBBBBBBBBADDDDBBBBBBBBBBADDDDME",
"BBBBBBBBBBBBBBBBBBBAAAAABBBBBBBAAAABBBAAABBBBBABCBCDDBBABBBBBABBBADAABAAAABBAABADDDCBBBBABBBABAADAACAABABBBABCBCBBBBCBABBBAAABBBABBBAABBBBBAAAAAAAAABBDF",
"BBBBBBBBAAAAABBAAAAAAAAABBBABBABBBBBBBCBCBABBABBCCABCBBAAAAAAAABBBBAABABBBABBACBBAABBBDDDABBABBCBBCCADDDABBAABBABBBADDDABBBAAAAAAAAAAAABBBBBBBBBBBBBBBHG",
"AAAAAAAABBBBBBBABBBBBBABBBBBBBAABCACBABBBBBBBBACBBCBABBBBBBBBABCBCAABBBBBBBAABABCBAAAAAAAABBCBBCBAABBDDDDBBBCBBCBBBBDDDAAAAAAAAAABBDDDDBBBBBBBBAAAAAAACB",
"BAAAAAABBBBBBBBBABBBDAAAAAABBBBABAADDABBBABBBBABBBDDCBBBABBBBAABADBABBBABBBBABBACAABAAAABBBABCCBBBBCBBABBBABBABBACABBABBBAAAAAAABBBBABBBBBBBBBAAAAAABBKH",
"AAAAABBBAAAAAABADBBABAAABBBBABADDDABABCBCBBABADBBAAABCBBABABADBBCBBBCCCBBABADBBACBBCBBAAABADDDABCACBBABBBADBBABBBBBAABBBAAAAAAAAAAABBBBBBBBBBBBBBBBBBBCE",
"ABBBBAAAAAAAAAAAAAAAADDDDDCBBBABBBBAAAAAABCBBABCCBABBBBBCBCBABBBCBBCAAABCBBABBCBBCBBDDCBBBAAABCACBAAAAAAABBABBABCDDDDABBBBABBABBDDDDABBBBAAAAAAAAAAABBBE",
"BBBBBBAAAABBBBBAAAAAAABBABBBBBABBBBBCBBABBBBBABBBCAABCABBBBBAACADDDABABBBBBBABCDDDBBABBBBBBABADBDABAABBBBBABBBABACBABBBBBACBBCBBBBAABBBBABBAAAAAAAABBBHC",
"BAAAAAAAAAAAAABBABBAABBABBBBABAACBBCCBABCCCABABDDDDBBABBCBABABDAADCABBCBBABAADDDDBACBABBABABDAADCABBCBCAAABDDDDCBBCBBCBAAAAAAABBAAABBBABBBBBAAAABAAAAAHI"};
extern void load_scr(u16 *sav,u8 xp,u8 yp,u8 xsp,u8 ysp);
typedef struct
{
   u8 dre;
   u8 act;
}box_sav;//历史记录
void box_show_map(u8 id,u8 xp,u8 yp)
{
   xp=xp<<4;
   yp=yp<<4;
   load_scr(box_map[id],xp,yp,xp+15,yp+15);
}
u8 load_box_data(u8 id,u8 box[10][15],u8 *xp,u8 *yp)//载入关卡数据
{
   int i,j;
   u8 cnt=0;
   for (i=0;i<10;i++)
   for (j=0;j<15;j++)
   {
      box[i][j]=box_data[id][i*15+j]-'A';
      if (box[i][j]==box_b1) cnt++;
      else if (box[i][j]>4) return 0;
   }
   *xp=box_data[id][150]-'A';
   if (*xp>14) return 1;
   *yp=box_data[id][151]-'A';
   if (*yp>9) return 0;
   return cnt;//返回箱子个数
}
void show_box_data(u8 box[10][15])
{
   int i,j;
   for (i=0;i<10;i++)
   for (j=0;j<15;j++) box_show_map(box[i][j],j,i);
}
void box_pview(u8 id)
{
   u8 box[10][15];
   u8 xp,yp;
   load_box_data(id,box,&xp,&yp);
   show_box_data(box);
   box_show_map(box_up,xp,yp);
}
u8 box_check_do(u8 box[10][15],u8 *xp,u8 *yp,u8 dre)//方向
{
   int x=*xp,y=*yp;
   int xd=0,yd=0;
   switch(dre)
   {
      case box_up:
         yd=-1;
         break;
      case box_down:
         yd=1;
         break;
      case box_left:
         xd=-1;
         break;
      case box_right:
         xd=1;
         break;
      default:
         return 0;
   }
   x+=xd;
   y+=yd;
   if (x<0 || x>14 || y<0 || y>9) return 0;//不能产生任何动作
   if (box[y][x]==box_zk) return 0;//不能行走
   if (box[y][x]==box_db || box[y][x]==box_dd) {*xp=x,*yp=y;return box_move;}//可以走到此位置
   if (x+xd<0 || x+xd>14 || y+yd<0 || y+yd>9) return 0;
   if (box[y][x]==box_b2)//有已经放置好的箱子
   {
      if (box[y+yd][x+xd]==box_db)//将箱子推出
      {
         box[y+yd][x+xd]=box_b1;
         box[y][x]=box_dd;
         box_show_map(box[y+yd][x+xd],x+xd,y+yd);
         box_show_map(box[y][x],x,y);
         *xp=x;
         *yp=y;
         return box_push_out;
      }
      if (box[y+yd][x+xd]==box_dd)//推到另外一个放置点
      {
         box[y+yd][x+xd]=box_b2;
         box[y][x]=box_dd;
         box_show_map(box[y+yd][x+xd],x+xd,y+yd);
         box_show_map(box[y][x],x,y);
         *xp=x;
         *yp=y;
         return box_push;
      }
      return 0;
   }
   if (box[y][x]==box_b1)//有箱子
   {
      if (box[y+yd][x+xd]==box_db)//将箱子推到另外一个空地
      {
         box[y+yd][x+xd]=box_b1;
         box[y][x]=box_db;//置为空地
         box_show_map(box[y+yd][x+xd],x+xd,y+yd);
         box_show_map(box[y][x],x,y);

⌨️ 快捷键说明

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