📄 c语言编写的推箱子程序.htm
字号:
4:LineEnd(LineX,LineY);break;<BR>
case
5:LineWorker(LineX,LineY);break;<BR>
case
6:LineEndBox(LineX,LineY);break;<BR>
}<BR>
LineX+=20;<BR>
}<BR>
LineY+=20;<BR>
LineX=139;</P>
<P> }</P>
<P>}</P>
<P>void FormatPath(int Key,struct Map
*Point)<BR>{<BR> int
style,style1,style2;<BR>
style=Point->path[WorkerX][WorkerY];<BR>
switch(Key)<BR>
{<BR> case
VK_UP:<BR>
{<BR>
style1=Point->path[WorkerX][WorkerY-1];<BR>
style2=Point->path[WorkerX][WorkerY-2];<BR>
if(style1==3&&style2==0)/*旁边是箱子后面是空地*/<BR>
Point->path[WorkerX][WorkerY-2]=3;<BR>
else
if(style1==3&&style2==4)/*旁边是箱子后面是目的地*/<BR>
Point->path[WorkerX][WorkerY-2]=6;<BR>
else
if(style1==6&&style2==4)/*旁边是已推好的箱子后面是目的地*/<BR>
Point->path[WorkerX][WorkerY-2]=6;<BR>
else
if(style1==6&&style2==0)/*旁边是已推好的箱子后面的空地*/<BR>
Point->path[WorkerX][WorkerY-2]=3;<BR>
Point->path[WorkerX][WorkerY-1]=5;<BR>
Point->path[WorkerX][WorkerY]=0;<BR>
WorkerY--;<BR>
break;<BR>
}<BR> case
VK_DOWN:<BR>
{<BR>
style1=Point->path[WorkerX][WorkerY+1];<BR>
style2=Point->path[WorkerX][WorkerY+2];<BR>
if(style1==3&&style2==0)/*旁边是箱子后面是空地*/<BR>
Point->path[WorkerX][WorkerY+2]=3;<BR>
else
if(style1==3&&style2==4)/*旁边是箱子后面是目的地*/<BR>
Point->path[WorkerX][WorkerY+2]=6;<BR>
else
if(style1==6&&style2==4)/*旁边是已推好的箱子后面是目的地*/<BR>
Point->path[WorkerX][WorkerY+2]=6;<BR>
else
if(style1==6&&style2==0)/*旁边是已推好的箱子后面的空地*/<BR>
Point->path[WorkerX][WorkerY+2]=3;<BR>
Point->path[WorkerX][WorkerY+1]=5;<BR>
Point->path[WorkerX][WorkerY]=0;<BR>
WorkerY++;<BR>
break;<BR>
}<BR> case
VK_LEFT:<BR>
{<BR>
style1=Point->path[WorkerX-1][WorkerY];<BR>
style2=Point->path[WorkerX-2][WorkerY];<BR>
if(style1==3&&style2==0)/*旁边是箱子后面是空地*/<BR>
Point->path[WorkerX-2][WorkerY]=3;<BR>
else
if(style1==3&&style2==4)/*旁边是箱子后面是目的地*/<BR>
Point->path[WorkerX-2][WorkerY]=6;<BR>
else
if(style1==6&&style2==4)/*旁边是已推好的箱子后面是目的地*/<BR>
Point->path[WorkerX-2][WorkerY]=6;<BR>
else
if(style1==6&&style2==0)/*旁边是已推好的箱子后面的空地*/<BR>
Point->path[WorkerX-2][WorkerY]=3;<BR>
Point->path[WorkerX-1][WorkerY]=5;<BR>
Point->path[WorkerX][WorkerY]=0;<BR>
WorkerX--;<BR>
break;<BR>
}<BR> case
VK_RIGHT:<BR>
{<BR>
style1=Point->path[WorkerX+1][WorkerY];<BR>
style2=Point->path[WorkerX+2][WorkerY];<BR>
if(style1==3&&style2==0)/*旁边是箱子后面是空地*/<BR>
Point->path[WorkerX+2][WorkerY]=3;<BR>
else
if(style1==3&&style2==4)/*旁边是箱子后面是目的地*/<BR>
Point->path[WorkerX+2][WorkerY]=6;<BR>
else
if(style1==6&&style2==4)/*旁边是已推好的箱子后面是目的地*/<BR>
Point->path[WorkerX+2][WorkerY]=6;<BR>
else
if(style1==6&&style2==0)/*旁边是已推好的箱子后面的空地*/<BR>
Point->path[WorkerX+2][WorkerY]=3;<BR>
Point->path[WorkerX+1][WorkerY]=5;<BR>
Point->path[WorkerX][WorkerY]=0;<BR>
WorkerX++;<BR>
break;<BR>
}<BR> }<BR>
style1=9;<BR>
for(style=7;style<11;style++)<BR>
{<BR>
if(Point->path[style][style1]!=5&&Point->path[style][style1]!=6)<BR>
Point->path[style][style1]=4;<BR>
}<BR>}</P>
<P>int Victoryed(struct Map
*P)<BR>{<BR>
if(IsVictory==P->Condition)<BR>
return(1);<BR> return(0);<BR>}</P>
<P>int MayMove(int key,struct Map
*head)<BR>{<BR> int
style,style1,style2;<BR>
switch(key)<BR>
{<BR> case
VK_UP:<BR>
{<BR>
style=head->path[WorkerX][WorkerY];<BR>
style1=head->path[WorkerX][WorkerY-1];<BR>
style2=head->path[WorkerX][WorkerY-2];<BR>
break;<BR>
}<BR> case
VK_DOWN:<BR>
{<BR>
style=head->path[WorkerX][WorkerY];<BR>
style1=head->path[WorkerX][WorkerY+1];<BR>
style2=head->path[WorkerX][WorkerY+2];<BR>
break;<BR>
}<BR> case
VK_LEFT:<BR>
{<BR>
style=head->path[WorkerX][WorkerY];<BR>
style1=head->path[WorkerX-1][WorkerY];<BR>
style2=head->path[WorkerX-2][WorkerY];<BR>
break;<BR>
}<BR> case
VK_RIGHT:<BR>
{<BR>
style=head->path[WorkerX][WorkerY];<BR>
style1=head->path[WorkerX+1][WorkerY];<BR>
style2=head->path[WorkerX+2][WorkerY];<BR>
break;<BR>
}<BR>
default:return(0);break;<BR>
}<BR> if(style1==0 ||
style1==4)/*旁边没有箱子*/<BR>
return(1);<BR> else
if((style1==3)&&(style2==0 ||
style2==4))/*旁边有一只箱子且箱子后面是空地或目的地*/<BR>
return(1);<BR> else
if((style1==6)&&(style2==0 ||
style2==4))/*旁边是一只已推好的箱子且后面是空白或目的地*/<BR>
return(1);<BR>
else<BR>
return(0);<BR>}</P>
<P>void LineWall(int x,int y)<BR>{<BR>
setfillstyle(SOLID_FILL,RED);<BR>
bar(x,y,x+spread-1,y+spread-1);<BR>}</P>
<P>void LineBox(int x,int y)<BR>{<BR>
setfillstyle(INTERLEAVE_FILL,YELLOW);<BR>
bar(x,y,x+spread-1,y+spread-1);<BR>}</P>
<P>void LineWorker(int x,int
y)<BR>{<BR>
setfillstyle(LTSLASH_FILL,BLUE);<BR>
fillellipse(x+10,y+10,spread/4,spread/2);<BR>}</P>
<P>void LineEnd(int x,int y)<BR>{<BR>
circle(x+10,y+10,(spread-1)/2);<BR>}</P>
<P>void LineHatchway(int x,int
y)/*本来是用来画地板的后来*/<BR>{<BR>}</P>
<P>void LineEndBox(int x,int
y)<BR>{<BR>
setfillstyle(INTERLEAVE_FILL,YELLOW);<BR>
bar(x,y,x+spread-1,y+spread-1);<BR>
circle(x+10,y+10,(spread-1)/2);<BR>}</P><BR></FONT></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD width="100%" height=25>
<DIV align=center></DIV></TD></TR>
<TR>
<TD width=255 height=20><A class=bottom
href="http://www.cstudyhome.com/wenzhang06/review.asp?NewsID=5500"
target=_blank> <IMG
height=18 src="C语言编写的推箱子程序_files/icon1.gif" width=18
border=0> <FONT color=blue>发表评论</FONT></A> </TD></TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -