推箱子游戏89C52 12864.docx
《推箱子游戏89C52 12864.docx》由会员分享,可在线阅读,更多相关《推箱子游戏89C52 12864.docx(17页珍藏版)》请在冰豆网上搜索。
推箱子游戏89C5212864
#include
#defineuncharunsignedchar
#defineunintunsignedint
unchargame=0;//µ±Ç°µÚ¼¸¹Ø
uncharrenwu_x,renwu_y;//ÈËËùÔÚλÖõÄ×ø±ê
uncharmap_ram[8][8]={
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
};
/*¹Ø¿¨8*8µãÕóÈËÎï1שͷ2Ïä×Ó3Ä¿µÄ4³É¹¦5ÈËÎïÄ¿µÄ6*/
uncharcodemap[][8][8]={
/*µÚ1¹Ø*/
2,2,2,2,2,2,2,2,
2,0,0,0,0,0,1,2,
2,0,0,0,5,0,0,2,
2,0,0,2,2,2,2,2,
2,2,0,0,2,0,0,0,
2,0,3,0,2,0,0,0,
2,0,0,4,2,0,0,0,
2,2,2,2,2,0,0,0,
/*µÚ2¹Ø*/
0,0,2,2,2,2,2,0,
2,2,2,0,0,0,2,0,
2,0,3,0,2,0,2,2,
2,0,2,0,0,4,0,2,
2,0,0,0,0,2,0,2,
2,2,0,2,0,0,0,2,
0,2,1,0,0,2,2,2,
0,2,2,2,2,2,0,0,
/*µÚ3¹Ø*/
0,0,2,2,2,2,2,0,
2,2,2,0,0,0,2,0,
2,0,3,0,2,0,2,2,
2,0,2,0,0,4,0,2,
2,0,0,0,0,2,0,2,
2,2,3,2,4,0,0,2,
0,2,1,0,0,2,2,2,
0,2,2,2,2,2,0,0,
/*µÚ4¹Ø*/
0,0,0,2,2,2,2,0,
0,2,2,2,0,1,2,0,
0,2,0,0,3,0,2,0,
2,2,0,2,0,2,2,2,
2,0,0,2,0,2,4,2,
2,0,2,0,0,0,0,2,
2,0,0,0,0,0,0,2,
2,2,2,2,2,2,2,2,
/*µÚ5¹Ø*/
0,0,0,2,2,2,2,0,
0,2,2,2,0,1,2,0,
0,2,0,0,3,0,2,0,
2,2,0,2,0,2,2,2,
2,0,0,2,0,2,4,2,
2,0,2,0,0,3,4,2,
2,0,0,0,0,0,0,2,
2,2,2,2,2,2,2,2,
/*µÚ6¹Ø*/
0,0,0,2,2,2,2,0,
0,2,2,2,0,1,2,0,
0,2,0,0,3,0,2,0,
2,2,0,2,0,2,2,2,
2,0,0,2,0,2,4,2,
2,0,2,0,0,3,4,2,
2,0,3,0,0,0,4,2,
2,2,2,2,2,2,2,2,
/*µÚ7¹Ø*/
0,2,2,2,2,0,0,0,
2,2,0,0,2,0,0,0,
2,1,3,0,2,0,0,0,
2,2,3,0,2,2,0,0,
2,2,0,3,0,2,0,0,
2,4,3,0,0,2,0,0,
2,4,4,5,4,2,0,0,
2,2,2,2,2,2,0,0,
/*µÚ8¹Ø*/
0,0,0,2,2,2,2,0,
0,2,2,2,0,0,2,0,
2,2,0,1,3,0,2,0,
2,0,4,3,0,0,2,0,
2,0,4,5,0,2,2,0,
2,0,4,3,0,2,0,0,
2,2,0,0,2,2,0,0,
0,2,2,2,2,0,0,0,
/*µÚ9¹Ø*/
0,0,2,2,2,2,0,0,
0,0,2,4,4,2,0,0,
0,2,2,0,4,2,2,0,
0,2,0,0,3,4,2,0,
2,2,0,3,0,0,2,2,
2,0,0,2,3,3,0,2,
2,0,0,1,0,0,0,2,
2,2,2,2,2,2,2,2,
};
uncharcodemap0[]={
""
"ÁõÕÜÖÆ×÷"
"ÍÆÏä×Ó"
""
};
/****************¾«ÁéͼÏñ*******************/
uncharcodejingling[7][8]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//¿Õ°×
0x3C,0x3C,0x18,0x7E,0x5A,0x24,0x42,0x81,//ÈËÎï
0x77,0x77,0x77,0x00,0xEE,0xEE,0xEE,0x00,//שͷ
0xFF,0xC3,0xA5,0x99,0x99,0xA5,0xC3,0xFF,//Ïä×Ó
0x00,0x3C,0x5A,0x66,0x66,0x5A,0x3C,0x00,//Ä¿µÄ
0xFF,0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF,//³É¹¦
0x3C,0x3C,0x18,0x7E,0x5A,0x24,0x42,0x81,//ÈËÎïÄ¿µÄ
};
/****************¾«ÁéͼÏñ*******************/
voidinit_0(void);//³õʼ»¯¿ªÊ¼½çÃ棬µÈ´ý½øÈëÓÎÏ·
voiddelay(unintt);//ÑÓʱ×Ó³ÌÐò
voidchk_busy(void);//æ±ê־λ¼ì²é
voidwrite_cmd(uncharcmd);//дÃüÁîµ½LCD
voidwrite_dat(unchardat);//дÊý¾Ýµ½LCD
voidclear_map(void);//Çå³ýÏÔʾÕû¸öͼƬ
voidlcd_init(void);//³õʼ»¯½çÃæ
voidguoguan(void);//¹ý¹ØºóˢнçÃæ
voidprint_title(uncharxx,uncharyy,uncharcode*title1,uncharcode*title2);//ÔÚÖ¸¶¨Î»ÖÃÒ»´ÎÏÔʾÁ½¸ötitle
voidprint_onetitle(uncharxx,uncharyy,uncharcode*title);//ÔÚÖ¸¶¨Î»ÖôòÓ¡Ò»¸ötitle
voidshuaxin(void);//Ë¢ÐÂÆÁÄ»
voidanjian(charsx,charzy);
/********************************************************/
sbitRS=P1^0;
sbitRW=P1^2;
sbitE=P1^1;
sbitok=P3^0;
sbitshang=P3^1;
sbitxia=P3^2;
sbitzuo=P3^3;
sbityou=P3^4;
voidmain()
{
init_0();
while
(1)
{
if(shang==0)
{
delay(20);
if(shang==0)
{
anjian(1,0);
}
}
if(xia==0)
{
delay(20);
if(xia==0)
{
anjian(-1,0);
}
}
if(zuo==0)
{
delay(20);
if(zuo==0)
{
anjian(0,-1);
}
}
if(you==0)
{
delay(20);
if(you==0)
{
anjian(0,1);
}
}
if(ok==0)
{
delay(20);
if(ok==0)
{
clear_map();
shuaxin();
}
}
}
}
voidanjian(charsx,charzy)
{
if(map_ram[renwu_x][renwu_y]==1)
{
if(map_ram[renwu_x+sx][renwu_y+zy]==0)
{
print_onetitle(renwu_x,renwu_y,jingling[0]);
map_ram[renwu_x][renwu_y]=0;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[1]);
map_ram[renwu_x][renwu_y]=1;
}
elseif(map_ram[renwu_x+sx][renwu_y+zy]==4)
{
print_onetitle(renwu_x,renwu_y,jingling[0]);
map_ram[renwu_x][renwu_y]=0;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[6]);
map_ram[renwu_x][renwu_y]=6;
}
elseif(map_ram[renwu_x+sx][renwu_y+zy]==3)
{
if(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==0)
{
print_onetitle(renwu_x,renwu_y,jingling[0]);
map_ram[renwu_x][renwu_y]=0;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[1]);
map_ram[renwu_x][renwu_y]=1;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[3]);
map_ram[renwu_x+sx][renwu_y+zy]=3;
}
elseif(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==4)
{
print_onetitle(renwu_x,renwu_y,jingling[0]);
map_ram[renwu_x][renwu_y]=0;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[1]);
map_ram[renwu_x][renwu_y]=1;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[5]);
map_ram[renwu_x+sx][renwu_y+zy]=5;
}
}
elseif(map_ram[renwu_x+sx][renwu_y+zy]==5)
{
if(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==0)
{
print_onetitle(renwu_x,renwu_y,jingling[0]);
map_ram[renwu_x][renwu_y]=0;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[6]);
map_ram[renwu_x][renwu_y]=6;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[3]);
map_ram[renwu_x+sx][renwu_y+zy]=3;
}
elseif(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==4)
{
print_onetitle(renwu_x,renwu_y,jingling[0]);
map_ram[renwu_x][renwu_y]=0;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[6]);
map_ram[renwu_x][renwu_y]=6;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[5]);
map_ram[renwu_x+sx][renwu_y+zy]=5;
}
}
}
elseif(map_ram[renwu_x][renwu_y]==6)
{
if(map_ram[renwu_x+sx][renwu_y+sx]==0)
{
print_onetitle(renwu_x,renwu_y,jingling[4]);
map_ram[renwu_x][renwu_y]=4;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[1]);
map_ram[renwu_x][renwu_y]=1;
}
elseif(map_ram[renwu_x+sx][renwu_y+zy]==4)
{
print_onetitle(renwu_x,renwu_y,jingling[4]);
map_ram[renwu_x][renwu_y]=4;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[6]);
map_ram[renwu_x][renwu_y]=6;
}
elseif(map_ram[renwu_x+sx][renwu_y+zy]==3)
{
if(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==0)
{
print_onetitle(renwu_x,renwu_y,jingling[4]);
map_ram[renwu_x][renwu_y]=4;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[1]);
map_ram[renwu_x][renwu_y]=1;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[3]);
map_ram[renwu_x+sx][renwu_y+zy]=3;
}
elseif(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==4)
{
print_onetitle(renwu_x,renwu_y,jingling[4]);
map_ram[renwu_x][renwu_y]=4;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[1]);
map_ram[renwu_x][renwu_y]=1;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[5]);
map_ram[renwu_x+sx][renwu_y+zy]=5;
}
}
elseif(map_ram[renwu_x+sx][renwu_y+zy]==5)
{
if(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==0)
{
print_onetitle(renwu_x,renwu_y,jingling[4]);
map_ram[renwu_x][renwu_y]=4;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[6]);
map_ram[renwu_x][renwu_y]=6;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[3]);
map_ram[renwu_x+sx][renwu_y+zy]=3;
}
elseif(map_ram[renwu_x+sx+sx][renwu_y+zy+zy]==4)
{
print_onetitle(renwu_x,renwu_y,jingling[4]);
map_ram[renwu_x][renwu_y]=4;
renwu_x=renwu_x+sx;renwu_y=renwu_y+zy;
print_onetitle(renwu_x,renwu_y,jingling[6]);
map_ram[renwu_x][renwu_y]=6;
print_onetitle(renwu_x+sx,renwu_y+zy,jingling[5]);
map_ram[renwu_x+sx][renwu_y+zy]=5;
}
}
}
}
//³õʼ»¯¿ªÊ¼½çÃ棬µÈ´ý½øÈëÓÎÏ·
voidinit_0(void)
{
uncharlala=0;
lcd_init();
delay(50);
while(lala==0)
{
if(ok==0)
{
delay(20);
if(ok==0)
{
write_cmd(0x01);
write_cmd(0x01);
clear_map();
guoguan();
lala=1;
}
}
}
}
//ÑÓʱ×Ó³ÌÐò
voiddelay(unintt)
{
uninti,j;
for(i=0;ifor(j=0;j<100;j++);
}
//æ±ê־λ¼ì²é
voidchk_busy(void)
{
RS=0;
RW=1;
E=1;
P0=0xff;
while((P0&0x80)==0x80);
E=0;
}
//дÃüÁîµ½LCD
voidwrite_cmd(uncharcmd)
{
chk_busy();
RS=0;
RW=0;
E=1;
P0=cmd;
E=0;
}
//дÊý¾Ýµ½LCD
voidwrite_dat(unchardat)
{
chk_busy();
RS=1;
RW=0;
E=1;
P0=dat;
E=0;
}
//³õʼ»¯½çÃæ
voidlcd_init(void)
{
unchari;
uncharcode*p;
p=map0;
write_cmd(0x30);//Ñ¡Ôñ»ù±¾Ö¸Á
write_cmd(0x0c);//¿ªÏÔʾ(ÎÞÓαꡢ²»·´°×)
write_cmd(0x01);//Çå³ýÏÔʾ£¬²¢ÇÒÉ趨µØÖ·Ö¸ÕëΪ00H
write_cmd(0x06);//Ö¸¶¨ÔÚ×ÊÁϵĶÁÈ¡¼°Ð´Èëʱ//×Ô¶¯ÓÒÒÆ
for(i=0;i<64;i++)
{
write_dat(*p);
p++;
}
}
//Çå³ýÏÔʾÕû¸öͼƬ
voidclear_map(void)
{
uncharx,y;
write_cmd(0x34);//ʹÓÃÀ©³äÖ¸Áî
for(y=0;y<64;y++)
for(x=0;x<16;x++)
{
write_cmd(y+0x80);//ÐеØÖ·
write_cmd(x+0x80);//ÁеØÖ·
write_dat(0x00);
write_dat(0x00);
}
}
//¹ý¹ØºóˢнçÃæ
voidguoguan(void)
{
unchari,j;
clear_map();
clear_map();
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
map_ram[i][j]=map[game][j][i];
if(map_ram[i][j]==1)
{
renwu_x=i;
renwu_y=j;
}
}
for(i=0;i<4;i++)
for(j=0;j<8;j++)
{
print_title(i,j,jingling[map_ram[2*i][j]],jingling[map_ram[2*i+1][j]]);
}
game++;
}
//ÔÚÖ¸¶¨Î»ÖÃÒ»´ÎÏÔʾÁ½¸ötitle
voi