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

📄 pushdraw.cpp

📁 推箱子游戏,好多关.不错的程序!
💻 CPP
字号:
#include<graphics.h>
#include "pushing.h"
#include <string.h>

void drawbackgroundblock(int x, int y)
{
   char checkerboard[8]={
   0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55};
   setfillpattern(checkerboard,LIGHTGRAY);
   bar(x,y,x+23,y+23);

} //draw background

void drawbox_2( int x, int y)
{

   setfillstyle(SOLID_FILL,LIGHTGRAY);
   bar(x,y,x+23,y+23);
   setcolor(WHITE);
   line(x,y+23,x,y);
   line(x,y,x+23,y);
   setcolor(DARKGRAY);
   line(x+23,y,x+23,y+23);
   line(x,y+23,x+23,y+23);
   setfillstyle(SOLID_FILL,DARKGRAY);
   bar(x+8,y,x+16,y+23);
   bar(x,y+8,x+23,y+16);
}  //draw begin box

void drawbox_1(int x, int y)
{
   setfillstyle(SOLID_FILL,LIGHTGRAY);
   bar(x,y,x+23,y+23);
   setcolor(WHITE);
   line(x,y+23,x,y);
   line(x,y,x+23,y);
   setcolor(DARKGRAY);
   line(x+23,y,x+23,y+23);
   line(x,y+23,x+23,y+23);
   setfillstyle(SOLID_FILL,BLUE);
   bar(x+8,y,x+16,y+23);
   bar(x,y+8,x+23,y+16);
}   //draw end box

void drawboy( int x, int y, int ready)
{
    drawbackgroundblock(x,y);
    setfillstyle(SOLID_FILL,YELLOW);
    setcolor(RED);
    fillellipse(x+12,y+12,11,11);
    if (ready)
    {
	line(x+4,y+4,x+10,y+8);
	line(x+24-4,y+4,x+24-10,y+8);
	line(x+6,y+24-4,x+12,y+24-10);
	line(x+12,y+24-10,x+24-6,y+24-4);
    }
    else
    {
	 line(x+4,y+5,x+10,y+5);
	 line(x+24-4,y+5,x+24-10,y+5);
	 arc(x+12,y+14,200,340,6);
    }
}   //draw workboy

void drawwallblock(int x, int y)
{
    setfillstyle(SOLID_FILL,RED);
    bar(x,y,x+23,y+23);
    setcolor(WHITE);
    line(x,y,x+23,y);
    line(x,y+23,x+23,y+23);
    line(x,y+8,x+23,y+8);
    line(x,y+16,x+23,y+16);
    line(x,y,x,y+8);
    line(x+6,y+8,x+6,y+16);
    line(x+12,y+16,x+12,y+23);
}  //draw wallblock

void drawboxpos(int x, int y)
{
    setfillstyle(SOLID_FILL,GREEN);
    setcolor(GREEN);
    fillellipse(x+12,y+12,12,12);
} //draw the target

void drawpathunit(int x,int y,int h,int l)
{
  switch(path[h][l])
   {
    case ' ':
	drawbackgroundblock(x+l*24,y+h*24);
	break;
    case 'X':
	drawbox_1(x+l*24,y+h*24);
	break;
    case 'x':
	drawbox_2(x+l*24,y+h*24);
	break;
    case 'O':
	drawboxpos(x+l*24,y+h*24);
	break;
    case '#':
	drawwallblock(x+l*24,y+h*24);
	break;
    case 'o':
    case '8':
	if(path[h][l-1]=='X'||path[h][l+1]=='X'||
	   path[h-1][l]=='X'||path[h+1][l]=='X'||
	   path[h][l-1]=='x'||path[h][l+1]=='x'||
	   path[h-1][l]=='x'||path[h+1][l]=='x'
	   )
		drawboy(x+l*24,y+h*24,1);
	else
		drawboy(x+l*24,y+h*24,0);
	break;
     }

 }
void drawpath(int x,int y)
{
 int h,l;
 int i,j;
 boxnum=0;
 cleardevice();
 for(i=0;i<20;i++)
 {
  if(strlen(path[i])==0)
   {
    h=i;
    break;
     }
   }
  l=strlen(path[0]);
  path_h=h;
  path_l=l;
  setcolor(WHITE);
  rectangle(x-1,y-1,x+l*24+1,y+h*24+1);
  for(i=0;i<h;i++)
    for(j=0;j<l;j++)
     switch(path[i][j])
      {
       case ' ':
	   drawbackgroundblock(x+j*24,y+i*24);
	   break;
       case 'X':
	   drawbox_1(x+j*24,y+i*24);
	   boxnum++;
	   break;
       case 'O':
	   drawboxpos(x+j*24,y+i*24);
	   break;
       case '#':
	   drawwallblock(x+j*24,y+i*24);
	   break;
       case '8':
	   if(path[i][j-1]=='X'||path[i][j+1]=='X'||
	      path[i-1][j]=='X'||path[i+1][j]=='X')
		   drawboy(x+j*24,y+i*24,1);
	   else
		   drawboy(x+j*24,y+i*24,0);
	   boy_h=i;
	   boy_l=j;
	   break;
	}
 }
void savepath(char dest_p[20][20],char source_p[20][20])
{
   int i,j;
   for(i=0; i<20; i++)   //save the original path
     for(j=0;j<20;j++)
	dest_p[i][j]=source_p[i][j];
}
int isgamewin(char p1[20][20],char p2[20][20])
{
    int i,j;
    for(i=0; i<20;i++)
       for(j=0;j<20;j++)
       {
	 if (p1[i][j]=='O')
	   if(p2[i][j]!='x') return 0;
       }
    if(20==i) return 1;
    return 0;
}

⌨️ 快捷键说明

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