C语言编写的《推箱子》游戏.docx
《C语言编写的《推箱子》游戏.docx》由会员分享,可在线阅读,更多相关《C语言编写的《推箱子》游戏.docx(26页珍藏版)》请在冰豆网上搜索。
C语言编写的《推箱子》游戏
C-语言编写的《推箱子》游戏
C语言编写的《推箱子》游戏.txt爱尔兰﹌一个不离婚的国家,一个一百年的约定。
难过了,不要告诉别人,因为别人不在乎。
★真话假话都要猜,这就是现在的社会。
C语言编写的《推箱子》游戏
看到别人用C编出了《俄罗斯方块》,心想:
简直不可思意。
心里满是佩服,跟本没想到C还能有这么搞法,心里非常兴奋,我这个人就是爱编些小东西(大东西编不来),感觉有意思的都总想动手搞搞,以前用VB做过《推箱子》游戏,用C还没做过,当时也觉得用C不可能,觉得要是能那是太难了,现在看了别人用C对图形的处理,慢慢觉得《推箱子》游戏自己可以把它写出来,于是就开始编写《推箱子》游戏(自觉得伟大的工程),今天写完,心里非常兴奋,迫不及待的就往论坛里发,想炫耀一下,满足下虚荣心,唉!
我这人就是这样,虚荣的很。
大家支持一下,有夸奖才有动力。
呵呵!
·
·
·
程序在TC2.0、Win-TC下测试通过。
程序代码:
#include
#include
#include
#include
#include
#defineSIZE20
#defineKEY_UP0x4800
#defineKEY_DOWN0x5000
#defineKEY_LEFT0x4b00
#defineKEY_RIGHT0x4d00
#defineKEY_ESC0x011b
#defineRe0x1372
intStep=0,right_Step,top_Step;
voidcheshi(inta[][6],intn,intm)
{
inti,j;
for(i=0;i{
for(j=0;jprintf("%d",a[i][j]);
printf("\n");
}
}
voidColoring(intx,inty,intsubscript)
{
switch(subscript)
{
case0:
{
setfillstyle(1,DARKGRAY);
break;
}
case1:
{
setfillstyle(6,YELLOW);
break;
}
case2:
{
setfillstyle(8,DARKGRAY);
break;
}
case3:
{
setfillstyle(1,CYAN);
break;
}
case4:
{
setfillstyle(1,RED);
break;
}
case5:
{
setfillstyle(1,CYAN);
break;
}
case6:
{
setfillstyle(1,RED);
break;
}
}
bar(x,y,x+SIZE,y+SIZE);
}
voiddisplay(intguan[][6],intimax,intjmax)
{
intgdriver=DETECT,gmode,errorcode;
intleft,top,right,bottom,x,y;
inti,j;
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if(errorcode!
=grOk)
{
printf("Graphicserror:
%s\n",grapherrormsg(errorcode));
printf("Pressanykeytohalt:
");
getch();
exit
(1);
}
left=getmaxx()/2-jmax*SIZE+jmax*2+2;
top=getmaxy()/2-((imax/2*SIZE)+(imax/2+4));
right=left+jmax*SIZE+jmax*2+2;
bottom=getmaxy()/2+(((imax-imax/2)*SIZE)+((imax-imax/2)+4));
right_Step=right;
top_Step=top;
rectangle(left,top,right,bottom);
for(i=0;i{
for(j=0;j{
x=left+(j+1)*2+j*SIZE;
y=top+(i+1)*2+i*SIZE;
Coloring(x,y,guan[i][j]);
}
}
setcolor(YELLOW);
outtextxy(left,top-20,"UserYuH:
BOX");
setcolor(WHITE);
outtextxy(right+10,top,"Guan:
");
outtextxy(right+10,top+20,"Step:
");
rectangle(left,bottom+4,left+82,bottom+20);
settextjustify(LEFT_TEXT,TOP_TEXT);
outtextxy(left+4,bottom+8,"R:
refresh");
rectangle(left+86,bottom+4,left+162,bottom+20);
settextjustify(LEFT_TEXT,TOP_TEXT);
outtextxy(left+92,bottom+8,"Esc:
exit");
}
voidCopyGuan(intguan[][6],intguan_all[][6],intimax,intjmax)
{
inti,j;
for(i=0;ifor(j=0;jguan[i][j]=guan_all[i][j];
}
voidselect_guan(intguan_all[][6],intguan[][6],intsubi_j[],intijmax[],intguan_num,int*fulfil)
{
inti,j;
switch(guan_num)
{
case1:
{
*fulfil=2;
subi_j[0]=2,subi_j[1]=0;
ijmax[0]=6,ijmax[1]=4;
CopyGuan(guan,guan_all,ijmax[0],ijmax[1]);
break;
}
case2:
{
*fulfil=2;
subi_j[0]=2,subi_j[1]=0;
ijmax[0]=5,ijmax[1]=5;
CopyGuan(guan,guan_all,ijmax[0],ijmax[1]);
break;
}
case3:
{
*fulfil=1;
subi_j[0]=3,subi_j[1]=3;
ijmax[0]=6,ijmax[1]=6;
break;
}
case4:
{
*fulfil=0;
subi_j[0]=1,subi_j[1]=1;
ijmax[0]=6,ijmax[1]=6;
break;
}
case5:
{
*fulfil=0;
subi_j[0]=4,subi_j[1]=2;
ijmax[0]=5,ijmax[1]=6;
break;
}
case6:
{
*fulfil=1;
subi_j[0]=0,subi_j[1]=4;
ijmax[0]=6,ijmax[1]=5;
break;
}
case7:
{
*fulfil=0;
subi_j[0]=2,subi_j[1]=4;
ijmax[0]=6,ijmax[1]=5;
break;
}
case8:
{
*fulfil=0;
subi_j[0]=0,subi_j[1]=4;
ijmax[0]=6,ijmax[1]=6;
break;
}
case9:
{
*fulfil=0;
subi_j[0]=3,subi_j[1]=1;
ijmax[0]=4,ijmax[1]=6;
break;
}
case10:
{
*fulfil=1;
subi_j[0]=3,subi_j[1]=3;
ijmax[0]=6,ijmax[1]=5;
break;
}
case11:
{
*fulfil=1;
subi_j[0]=4,subi_j[1]=1;
ijmax[0]=6,ijmax[1]=5;
break;
}
case12:
{
*fulfil=0;
subi_j[0]=0,subi_j[1]=2;
ijmax[0]=5,ijmax[1]=6;
break;
}
case13:
{
*fulfil=1;
subi_j[0]=2,subi_j[1]=3;
ijmax[0]=6,ijmax[1]=5;
break;
}
case14:
{
*fulfil=0;
subi_j[0]=3,subi_j[1]=0;
ijmax[0]=5,ijmax[1]=6;
break;
}
case15:
{
*fulfil=1;
subi_j[0]=0,subi_j[1]=3;
ijmax[0]=6,ijmax[1]=6;
break;
}
case16:
{
*fulfil=0;
subi_j[0]=0,subi_j[1]=3;
ijmax[0]=5,ijmax[1]=5;
break;
}
case17:
{
*fulfil=0;
subi_j[0]=3,subi_j[1]=5;
ijmax[0]=4,ijmax[1]=6;
break;
}
case18:
{
*fulfil=1;
subi_j[0]=0,subi_j[1]=1;
ijmax[0]=6,ijmax[1]=6;
break;
}
case19:
{
*fulfil=0;
subi_j[0]=5,subi_j[1]=4;
ijmax[0]=6,ijmax[1]=6;
break;
}
case20:
{
*fulfil=2;
subi_j[0]=1,subi_j[1]=4;
ijmax[0]=5,ijmax[1]=6;
break;
}
}
CopyGuan(guan,guan_all,ijmax[0],ijmax[1]);
}
voidEixt()
{
exit(0);
}
voidMove(intpoint,intguan[][6],intsubi_j[],intimax,intjmax,int*fulfil)
{
inti,j,*ir,*jr,left,top;
left=getmaxx()/2-jmax*SIZE+jmax*2+2;
top=getmaxy()/2-((imax/2*SIZE)+(imax/2+4));
ir=&subi_j[0],jr=&subi_j[1];
i=*ir,j=*jr;
switch(point)
{
case1:
{
if(i>0)i--;
elsebreak;
if(guan[i][j]==0)
{
if(guan[*ir][j]==6)
{
guan[i][j]=4;
guan[*ir][j]=2;
}
else
{
guan[*ir][j]=0;
guan[i][j]=4;
}
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(*ir+1)*2+*ir*SIZE,guan[*ir][j]);
*ir=i;
Step++;
}
elseif(guan[i][j]==3)
{
if(i>0&&(guan[i-1][j]==0||guan[i-1][j]==2))
{
if(guan[i-1][j]==0)
guan[i-1][j]=3;
else
{
guan[i-1][j]=5;
(*fulfil)++;
}
guan[i][j]=0;
Coloring(left+(j+1)*2+j*SIZE,top+((i-1)+1)*2+(i-1)*SIZE,guan[i-1][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
}
}
elseif(guan[i][j]==5)
{
if(i>0&&(guan[i-1][j]==0||guan[i-1][j]==2))
{
if(guan[i-1][j]==0)
guan[i-1][j]=3;
else
{
guan[i-1][j]=5;
(*fulfil)++;
}
guan[i][j]=2;
Coloring(left+(j+1)*2+j*SIZE,top+((i-1)+1)*2+(i-1)*SIZE,guan[i-1][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
(*fulfil)--;
}
}
elseif(guan[i][j]==2)
{
guan[i][j]=6;
if(guan[*ir][j]==4)
guan[*ir][j]=0;
else
guan[*ir][j]=2;
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(*ir+1)*2+*ir*SIZE,guan[*ir][j]);
*ir=i;
Step++;
}
break;
}
case2:
{
if(ielsebreak;
if(guan[i][j]==0)
{
if(guan[*ir][j]==6)
{
guan[i][j]=4;
guan[*ir][j]=2;
}
else
{
guan[*ir][j]=0;
guan[i][j]=4;
}
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(*ir+1)*2+*ir*SIZE,guan[*ir][j]);
*ir=i;
Step++;
}
elseif(guan[i][j]==3)
{
if(i{
if(guan[i+1][j]==0)
guan[i+1][j]=3;
else
{
guan[i+1][j]=5;
(*fulfil)++;
}
guan[i][j]=0;
Coloring(left+(j+1)*2+j*SIZE,top+((i+1)+1)*2+(i+1)*SIZE,guan[i+1][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
}
}
elseif(guan[i][j]==5)
{
if(i{
if(guan[i+1][j]==0)
guan[i+1][j]=3;
else
{
guan[i+1][j]=5;
(*fulfil)++;
}
guan[i][j]=2;
Coloring(left+(j+1)*2+j*SIZE,top+((i+1)+1)*2+(i+1)*SIZE,guan[i+1][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
(*fulfil)--;
}
}
elseif(guan[i][j]==2)
{
guan[i][j]=6;
if(guan[*ir][j]=4)
guan[*ir][j]=0;
else
guan[*ir][j]=2;
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(j+1)*2+j*SIZE,top+(*ir+1)*2+*ir*SIZE,guan[*ir][j]);
*ir=i;
Step++;
}
break;
}
case3:
{
if(j>0)j--;
elsebreak;
if(guan[i][j]==0)
{
if(guan[i][*jr]==6)
{
guan[i][j]=4;
guan[i][*jr]=2;
}
else
{
guan[i][*jr]=0;
guan[i][j]=4;
}
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(*jr+1)*2+*jr*SIZE,top+(i+1)*2+i*SIZE,guan[i][*jr]);
*jr=j;
Step++;
}
elseif(guan[i][j]==3)
{
if(j>0&&(guan[i][j-1]==0||guan[i][j-1]==2))
{
if(guan[i][j-1]==0)
guan[i][j-1]=3;
else
{
guan[i][j-1]=5;
(*fulfil)++;
}
guan[i][j]=0;
Coloring(left+((j-1)+1)*2+(j-1)*SIZE,top+(i+1)*2+i*SIZE,guan[i][j-1]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
}
}
elseif(guan[i][j]==5)
{
if(j>0&&(guan[i][j-1]==0||guan[i][j-1]==2))
{
if(guan[i][j-1]==0)
guan[i][j-1]=3;
else
{
guan[i][j-1]=5;
(*fulfil)++;
}
guan[i][j]=2;
Coloring(left+((j-1)+1)*2+(j-1)*SIZE,top+(i+1)*2+i*SIZE,guan[i][j-1]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
(*fulfil)--;
}
}
elseif(guan[i][j]==2)
{
guan[i][j]=6;
if(guan[i][*jr]==4)
guan[i][*jr]=0;
else
guan[i][*jr]=2;
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(*jr+1)*2+*jr*SIZE,top+(i+1)*2+i*SIZE,guan[i][*jr]);
*jr=j;
Step++;
}
break;
}
case4:
{
if(jelsebreak;
if(guan[i][j]==0)
{
if(guan[i][*jr]==6)
{
guan[i][j]=4;
guan[i][*jr]=2;
}
else
{
guan[i][*jr]=0;
guan[i][j]=4;
}
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Coloring(left+(*jr+1)*2+*jr*SIZE,top+(i+1)*2+i*SIZE,guan[i][*jr]);
*jr=j;
Step++;
}
elseif(guan[i][j]==3)
{
if(j{
if(guan[i][j+1]==0)
guan[i][j+1]=3;
else
{
guan[i][j+1]=5;
(*fulfil)++;
}
guan[i][j]=0;
Coloring(left+((j+1)+1)*2+(j+1)*SIZE,top+(i+1)*2+i*SIZE,guan[i][j+1]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][j]);
Step++;
}
}
elseif(guan[i][j]==5)
{
if(j{
if(guan[i][j+1]==0)
guan[i][j+1]=3;
else
{
guan[i][j+1]=5;
(*fulfil)++;
}
guan[i][j]=2;
Coloring(left+((j+1)+1)*2+(j+1)*SIZE,top+(i+1)*2+i*SIZE,guan[i][j+1]);
Coloring(left+(j+1)*2+j*SIZE,top+(i+1)*2+i*SIZE,guan[i][