⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c语言编写的推箱子程序.htm

📁 经典小游戏,希望能给大家带来点好处
💻 HTM
📖 第 1 页 / 共 4 页
字号:
      <TABLE borderColor=#e2ca9f cellSpacing=0 cellPadding=0 width="100%" 
      border=0>
        <TBODY>
        <TR>
          <TD vAlign=top align=middle width="95%">
            <TABLE borderColor=#e2ca9f cellSpacing=0 cellPadding=0 width="100%" 
            border=1>
              <TBODY>
              <TR>
                <TD vAlign=top borderColor=#e2ca9f align=middle width="69%" 
                background=C语言编写的推箱子程序_files/002.jpg>
                  <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD width="100%" height=40></TD></TR>
                    <TR>
                      <TD>
                        <FORM name=form1 
                        action=Readnews.asp?newsid=5500&amp;id2=5500 
method=post>
                        <CENTER><!-- <input type=submit name=aa value="点击关闭浮动图标" width=20 title="点击广告支持本站">--></CENTER></FORM></TD></TR>
                    <TR>
                      <TD style="FONT-SIZE: 18px" vAlign=bottom align=middle 
                      width="85%" bgColor=#dddddd height=20><STRONG><FONT 
                        color=#003399 size=4><B>C语言编写的推箱子程序[请高手指点不足之处 
                        </B></FONT></STRONG></TD><BR></TR>
                    <TR>
                      <TD align=middle width="100%"><BR></TD></TR>
                    <TR>
                      <TD style="FONT-SIZE: 9pt" align=middle 
                        width="100%">发表日期:2005年5月16日&nbsp;&nbsp;出处:原创&nbsp;&nbsp;作者:快乐的飞&nbsp;&nbsp;已经有1651位读者读过此文</TD></TR>
                    <TR>
                      <TD align=middle width="100%"><!--下面的这一句是设置阅读文本区的宽度-->
                        <TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 
                        cellPadding=0 width="90%" align=center border=0>
                          <TBODY>
                          <TR>
                            <TD align=middle width="100%"></TD></TR>
                          <TR>
                            <TD style="WORD-WRAP: break-word"><FONT 
                              class=news><BR>
                              <P>#include "stdio.h"<BR>#include 
                              "graphics.h"<BR>#include "alloc.h"</P>
                              <P>#define VK_LEFT 0x4b00<BR>#define VK_RIGHT 
                              0x4d00<BR>#define VK_DOWN 0x5000<BR>#define VK_UP 
                              0x4800<BR>#define VK_HOME 0x4700<BR>#define VK_END 
                              0x4f00<BR>#define VK_SPACE 0x3920<BR>#define 
                              VK_ESC 0x011b<BR>#define VK_ENTER 
                              0x1c0d<BR>#define spread 20<BR>#define VK_R 
                              0x1372</P>
                              <P>/*定义主数据结构*/<BR>struct Map<BR>{<BR>&nbsp;&nbsp; 
                              int 
                              path[19][19];/*包含每张地图的路径,(0空白(2墙(3箱子(4目的地(5工人(6已完成的箱子<BR>&nbsp;&nbsp; 
                              X轴在前Y在后*/<BR>&nbsp;&nbsp; int 
                              NUM;/*关卡编号*/<BR>&nbsp;&nbsp; int Condition; 
                              /*胜利条件*/<BR>&nbsp;&nbsp; struct Map 
                              *next;/*指向下一个节点*/<BR>};</P>
                              <P>/*函数说明*/<BR>/*画图函数各有三个参数(宽度(X(Y*/<BR>void 
                              LineWall(int x,int y); /*画墙壁*/<BR>void LineBox(int 
                              x,int y); /*画木箱*/<BR>void LineWorker(int x,int y); 
                              /*画工人*/<BR>void LineEnd(int x,int y); 
                              /*画木箱的目的地*/<BR>void LineHatchway(int x,int y); 
                              /*画地板*/<BR>void LineEndBox(int x,int 
                              y);/*画推好的箱子*/</P>
                              <P>/*逻辑判断函数*/<BR>int MayMove(int key,struct Map 
                              *head);/*判断是否可以移动,参数是用户按下的键值<BR>返回值(1代表可以,0代表不可以)*/<BR>int 
                              Victoryed(struct Map 
                              *P);/*判断是否获胜返回值(0代表没有,1代表获胜)*/<BR>void 
                              FormatPath(int key,struct Map 
                              *point);/*更改当前布局的值,2个参数分别是用户按下的键值和当前关卡的指针*/<BR>void 
                              Format(struct Map 
*point);/*画当前布局一个参数,当前关卡的指针*/</P>
                              <P>/*初始化函数*/<BR>void CreateRole();/*创建任务*/</P>
                              <P><BR>/*全局变量*/<BR>int 
                              IsVictory=0;/*判断是否胜利*/<BR>int 
                              WorkerX;/*当前工人位置横向的值*/<BR>int 
                              WorkerY;/*当前工人位置竖向的值*/<BR>struct Map 
*head,*Dp;</P>
                              <P>void format1(s,x,y)<BR>{<BR>&nbsp;&nbsp; 
                              setfillstyle(SOLID_FILL,YELLOW);<BR>&nbsp;&nbsp; 
                              bar(x,y,x+(s-1),y+s-1);<BR>}<BR>void 
                              main()<BR>{<BR>&nbsp;&nbsp; int 
                              InputKey=0;/*获取用户的按键*/<BR>&nbsp;&nbsp; int 
                              IsMove;/*判断是否可以移动*/<BR>&nbsp;&nbsp; int 
                              IsVoc;/*判断是否获胜*/<BR>&nbsp;&nbsp; int 
                              gdriver=DETECT,gmode;<BR>&nbsp;&nbsp; 
                              /*初始化任务*/<BR>&nbsp;&nbsp; ReStart:<BR>&nbsp;&nbsp; 
                              CreateRole();<BR>&nbsp;&nbsp; 
                              initgraph(&amp;gdriver,&amp;gmode,"C:\Win-TC");/*进入图形模式*/<BR>&nbsp;&nbsp; 
                              Format(Dp);</P>
                              <P>&nbsp;&nbsp; 
                              while(InputKey!=VK_ESC)<BR>&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              outtextxy(20,20,"Enter \"R\" to 
                              restart!");&nbsp;&nbsp; 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              InputKey=bioskey(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(InputKey==VK_R)/*重新开始*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              goto ReStart;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /*判断是否可以移动*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              IsMove=MayMove(InputKey,Dp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(IsMove)/*可以移动*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              FormatPath(InputKey,Dp);/*更改当前地图发生变动的值*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              cleardevice();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Format(Dp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              IsVoc=Victoryed(Dp);/*判断是否获胜*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(IsVoc)/*获胜*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              outtextxy(290,170,"Victory!");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              IsVictory=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              continue;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; 
                              closegraph();</P>
                              <P><BR>}</P>
                              <P>void CreateRole()<BR>{<BR>&nbsp;&nbsp; int 
                              x,y;<BR>&nbsp;&nbsp; Dp=(struct Map 
                              *)malloc(sizeof(struct Map));<BR>&nbsp;&nbsp; 
                              head=Dp;<BR>&nbsp;&nbsp; 
                              for(x=0;x&lt;19;x++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(y=0;y&lt;19;y++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if((x&gt;=3&amp;&amp;x&lt;=14)&amp;&amp;(y==6))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if(x==3&amp;&amp;(y&gt;=7&amp;&amp;y&lt;=11))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if((x&gt;=4&amp;&amp;x&lt;=14)&amp;&amp;y==11)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if(x==14&amp;&amp;(y&gt;=7&amp;&amp;y&lt;=10))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if((x&gt;=7&amp;&amp;x&lt;=10)&amp;&amp;(y&gt;=7&amp;&amp;y&lt;=8))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if((x&gt;=6&amp;&amp;x&lt;=10)&amp;&amp;y==9)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              Dp-&gt;path[x][y]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[4][7]=2;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[5][8]=3;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[6][9]=3;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[4][10]=2;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[9][10]=2;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[13][10]=2;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[11][8]=3;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[12][9]=3;<BR>&nbsp;&nbsp; 
                              Dp-&gt;path[11][10]=5;<BR>&nbsp;&nbsp; 
                              Dp-&gt;NUM=1;<BR>&nbsp;&nbsp; 
                              Dp-&gt;Condition=4;<BR>&nbsp;&nbsp; 
                              WorkerX=11;<BR>&nbsp;&nbsp; WorkerY=10;<BR>}</P>
                              <P>void Format(struct Map 
                              *Point)<BR>{<BR>&nbsp;&nbsp; int 
                              x,y;<BR>&nbsp;&nbsp; int 
                              LineX,LineY;<BR>&nbsp;&nbsp; int 
                              style;<BR>&nbsp;&nbsp; LineX=139;<BR>&nbsp;&nbsp; 
                              LineY=59;<BR>&nbsp;&nbsp; 
                              for(y=0;y&lt;19;y++)<BR>&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(x=0;x&lt;19;x++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              style=Point-&gt;path[x][y];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(style==6)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              IsVictory+=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              switch(style)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              case 
                              2:LineWall(LineX,LineY);break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              case 
                              3:LineBox(LineX,LineY);break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              case 

⌨️ 快捷键说明

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