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 + -
显示快捷键?