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

📄 pushing3.cpp

📁 推箱子游戏,好多关.不错的程序!
💻 CPP
字号:
#include <stdlib.h>
#include <graphics.h>
#include <bios.h>
#include <dos.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include "funkey.h"
#include "pushing.h"
#include "pushdraw.cpp"
char pathset[4][20][20]=
{
{"     ###    ",
 "     #O#    ",
 "     # #    ",
 "     # #    ",
 "###### #    ",
 "#O   XX#####",
 "#####8X   O#",
 "    #X######",
 "    # #     ",
 "    # #     ",
 "    # #     ",
 "    #O#     ",
 "    ###     "
},
{"    #####",
 "    #   #",
 "### #   #",
 "#O# #   #",
 "#O# # X #",
 "#O###8X #",
 "#    X  #",
 "#   #   #",
 "######## "
  },
 {
 "  ####### " ,
 "###     # ",
 "# X ###X##",
 "#  X     #",
 "##  X#OO #",
 " #8  #OO# ",
 " ######## "
 },
 {
 "########   ",
 "# 8 #  ##  ",
 "#   #   #  ",
 "#  X X  #  ",
 "#   ##X #  ",
 "#   # XX###",
 " #   OOOOO#",
 " ######### "
 }
 };

void main()
{
  int gdriver = DETECT, gmode, errorcode;
  int ch,i,j,level,win=0;
  int count;
  level=0;
  initgraph(&gdriver, &gmode, "c:\\borlandc\\bgi");
  savepath(path,pathset[0]);
  savepath(path2,path);

  while(1)
  {
  win=0;
  drawpath(50,50);
  while(1)
  {
   ch=bioskey(0);
   if((ch&0x00ff)==27)break;
   switch(ch)
   {
    case UP:
	if((path[boy_h-1][boy_l]=='X'||path[boy_h-1][boy_l]=='x')
	 &&(path[boy_h-2][boy_l]==' '||path[boy_h-2][boy_l]=='O'))
	 //x--box+pos, o--boy+pos
	 {
	   if(path[boy_h-2][boy_l]=='O')
	      path[boy_h-2][boy_l]='x';
	   else
	      path[boy_h-2][boy_l]='X';
	   if(path[boy_h-1][boy_l]=='X')
	      path[boy_h-1][boy_l]='8';
	   else
	      path[boy_h-1][boy_l]='o';
	   if(path[boy_h][boy_l]=='8')
	      path[boy_h][boy_l]=' ';
	   else
	      path[boy_h][boy_l]='O';
	   for(i=0;i<3;i++)
	     drawpathunit(50,50,boy_h-i,boy_l);
	   boy_h--;
	   }
	else if(path[boy_h-1][boy_l]==' '||path[boy_h-1][boy_l]=='O')
	{
	 if(path[boy_h-1][boy_l]=='O')
	   path[boy_h-1][boy_l]='o';
	 else
	   path[boy_h-1][boy_l]='8';
	 if(path[boy_h][boy_l]=='o')
	   path[boy_h][boy_l]='O';
	 else
	   path[boy_h][boy_l]=' ';
	 for(i=0;i<2;i++)
	   drawpathunit(50,50,boy_h-i,boy_l);
	 boy_h--;
	  }
	break;

    case DOWN:
	if((path[boy_h+1][boy_l]=='X'||path[boy_h+1][boy_l]=='x')
	 &&(path[boy_h+2][boy_l]==' '||path[boy_h+2][boy_l]=='O'))
	 //x--box+pos, o--boy+pos
	 {
	   if(path[boy_h+2][boy_l]=='O')
	      path[boy_h+2][boy_l]='x';
	   else
	      path[boy_h+2][boy_l]='X';
	   if(path[boy_h+1][boy_l]=='X')
	      path[boy_h+1][boy_l]='8';
	   else
	      path[boy_h+1][boy_l]='o';
	   if(path[boy_h][boy_l]=='8')
	      path[boy_h][boy_l]=' ';
	   else
	      path[boy_h][boy_l]='O';
	   for(i=0;i<3;i++)
	     drawpathunit(50,50,boy_h+i,boy_l);
	   boy_h++;
	   }
	else if(path[boy_h+1][boy_l]==' '||path[boy_h+1][boy_l]=='O')
	{
	 if(path[boy_h+1][boy_l]=='O')
	   path[boy_h+1][boy_l]='o';
	 else
	   path[boy_h+1][boy_l]='8';
	 if(path[boy_h][boy_l]=='o')
	   path[boy_h][boy_l]='O';
	 else
	   path[boy_h][boy_l]=' ';
	 for(i=0;i<2;i++)
	   drawpathunit(50,50,boy_h+i,boy_l);
	 boy_h++;
	  }
	 break;

    case LEFT:
	   if((path[boy_h][boy_l-1]=='X'||path[boy_h][boy_l-1]=='x')
	 &&(path[boy_h][boy_l-2]==' '||path[boy_h][boy_l-2]=='O'))
	 //x--box+pos, o--boy+pos
	 {
	   if(path[boy_h][boy_l-2]=='O')
	      path[boy_h][boy_l-2]='x';
	   else
	      path[boy_h][boy_l-2]='X';
	   if(path[boy_h][boy_l-1]=='X')
	      path[boy_h][boy_l-1]='8';
	   else
	      path[boy_h][boy_l-1]='o';
	   if(path[boy_h][boy_l]=='8')
	      path[boy_h][boy_l]=' ';
	   else
	      path[boy_h][boy_l]='O';
	   for(i=0;i<3;i++)
	     drawpathunit(50,50,boy_h,boy_l-i);
	   boy_l--;
	   }
	else if(path[boy_h][boy_l-1]==' '||path[boy_h][boy_l-1]=='O')
	{
	 if(path[boy_h][boy_l-1]=='O')
	   path[boy_h][boy_l-1]='o';
	 else
	   path[boy_h][boy_l-1]='8';
	 if(path[boy_h][boy_l]=='o')
	   path[boy_h][boy_l]='O';
	 else
	   path[boy_h][boy_l]=' ';
	 for(i=0;i<2;i++)
	   drawpathunit(50,50,boy_h,boy_l-i);
	 boy_l--;
	  }
	break;
    case RIGHT:
      if((path[boy_h][boy_l+1]=='X'||path[boy_h][boy_l+1]=='x')
	 &&(path[boy_h][boy_l+2]==' '||path[boy_h][boy_l+2]=='O'))
	 //x--box+pos, o--boy+pos
	 {
	   if(path[boy_h][boy_l+2]=='O')
	      path[boy_h][boy_l+2]='x';
	   else
	      path[boy_h][boy_l+2]='X';
	   if(path[boy_h][boy_l+1]=='X')
	      path[boy_h][boy_l+1]='8';
	   else
	      path[boy_h][boy_l+1]='o';
	   if(path[boy_h][boy_l]=='8')
	      path[boy_h][boy_l]=' ';
	   else
	      path[boy_h][boy_l]='O';
	   for(i=0;i<3;i++)
	     drawpathunit(50,50,boy_h,boy_l+i);
	   boy_l++;
	   }
	else if(path[boy_h][boy_l+1]==' '||path[boy_h][boy_l+1]=='O')
	{
	 if(path[boy_h][boy_l+1]=='O')
	   path[boy_h][boy_l+1]='o';
	 else
	   path[boy_h][boy_l+1]='8';
	 if(path[boy_h][boy_l]=='o')
	   path[boy_h][boy_l]='O';
	 else
	   path[boy_h][boy_l]=' ';
	 for(i=0;i<2;i++)
	   drawpathunit(50,50,boy_h,boy_l+i);
	 boy_l++;
	  }
      break;
     }//switch
     if (isgamewin(path2,path))
     {
	win=1;
	break;
     }

    }// while(1)
    if(win)
    {
       if(level<3)
       {
       setcolor(RED);
       outtextxy(40,380,"The Level passed, GOOD!");
       outtextxy(40,400,"Next level(y/n)?");
       ch=getch();
      if (toupper(ch)=='Y')
      {
	level++;
	savepath(path,pathset[level]);
	savepath(path2,path);
	setcolor(0);
	outtextxy(40,380,"The Level passed, GOOD!");
	outtextxy(40,400,"Next level(y/n)?");
      }
      else
	 break;
      } //if (level<3)
      else
      {
	 setcolor(WHITE);
	 outtextxy(50,350,"Congratulations! ");
	 outtextxy(50,400,"You have passed all level!");
	 outtextxy(50,450,"You are very clever!");
	 getch();
	 break;
      }
    }
    else
    {
       setcolor(WHITE);
       outtextxy(20,20,"Restart(y/n)?");
       ch=getch();
      if (toupper(ch)=='Y')
      {
	savepath(path,path2);
	setcolor(0);
	outtextxy(20,20,"Restart(y/n)?");
      }else
	 break;
    }

  }// while
  closegraph();
  return ;
 }

⌨️ 快捷键说明

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