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

📄 pushing1.c

📁 《C语言程序设计教程、实验与练习》 源文件下载
💻 C
字号:
#include <stdlib.h>
#include <graphics.h>
#include <bios.h>
#include <dos.h>
#include <conio.h>
#include <string.h>
#include "funkey.h"
#include "pushing.h"

char path[20][20]=
{
 "     ###    ",
 "     #O#    ",
 "     # #    ",
 "     # #    ",
 "###### #    ",
 "#O   XX#####",
 "#####8X   O#",
 "    #X######",
 "    # #     ",
 "    # #     ",
 "    # #     ",
 "    #O#     ",
 "    ###     "
};
int boy_h,boy_l,boxnum;
int path_h,path_l;
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;
 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 main()
{
  int gdriver = DETECT, gmode, errorcode;
  int ch,i,j;
  int count;

  initgraph(&gdriver, &gmode, "d:\\borlandc\\bgi");

  drawpath(50,50);
  while(1)
  {
   ch=bioskey(0);
   if((ch&0x00ff)==27)break;
   switch(ch)
   {
    case UP:
      // add your codes down here


     //add your codes up here
      break;
    case DOWN:
      // add your codes down here


     //add your codes up here
      break;
    case LEFT:
      // add your codes down here


     //add your codes up here
      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


    }//while
  closegraph();
  return ;
 }

⌨️ 快捷键说明

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