📄 pushing3.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 + -