推箱子c语言程序代码(如何用C语言编写控制台小游戏)

:暂无数据 2026-04-24 12:00:02 0
今天这份关于推箱子c语言程序代码的指南,将用80%的篇幅讲透如何用C语言编写控制台小游戏这个决定成败的细节,绝对让你不虚此行。

本文目录

如何用C语言编写控制台小游戏

//C语言实例:推箱子小游戏
#include 《*****》  
#include 《*****》  
#include《*****》  
#include 《*****》  
//行和列   
#define ROW 10  
#define COL 11  
/* run this program using the c***ole pauser or add your own getch, system("pause") or input loop */  
/** 
*

*/  
//地图  
char map = {  
"##########",//0  
"###     ##",//1  
"###     ##",//2  
"##AX  # ##",//3  
"###  ##   ",//4  
"#####    #",//5  
"##       #",//6  
"#     ####",//7  
"###       ",//8  
"##########" //9  
//A:人  , X:箱子   
} ;  
//打印地图   
void showMap();  
//接收小人的方向  
char enterDirection();  
//小人向上移动的方法  
void moveToUp();   
//小人向下移动的方法  
void moveToDown();   
//小人向右移动的方法  
void moveToRight();   
//小人向左移动的方法  
void moveToLeft();   
//当前小人的坐标  
int currentPersonRow = 3;  
int currentPersonCol = 2;  
//当前箱子的坐标   
int currentBoxRow = 3;  
int currentBoxCol = 3;  
int main(int argc, char *argv) {  
//system("clear");  
printf("点击回车键开始游戏 ^_^\n\n");  
//1代表运行   0停止   
int flag = 1;  
while(flag==1){  
//显示地图   
showMap();  
//接收小人的方向  
char dir = enterDirection();  
switch(dir){  
//小人向上移动   
case ’w’:  
case ’W’:  
moveToUp();  
break;  
//小人向下移动   
case ’s’:  
case ’S’:  
moveToDown();  
break;  
//小人向右移动   
case ’d’:  
case ’D’:  
moveToRight();  
break;  
//小人向左移动   
case ’a’:  
case ’A’:  
moveToLeft();  
break;  
//停止运行   
case ’q’:  
case ’Q’:  
printf("你的智商真低!T_T\n");  
flag = 0;  
break;  
}  
showMap();  
if(currentBoxRow==8&¤tBoxCol==9){  
printf("你的智商真高^_^!!!");  
flag = 0;   
}  
}  
}  
/* 
方法的实现   
*/  
//打印地图   
void showMap(){  
int i;  
for(i = 0;i 《 ROW; i++){  
printf("%s\n",map);  
}  
printf("\n\n\n\n\n");   
printf("W:上,S:下, A:左, D:右。Q:退出");  
printf("\n\n\n\n\n");  
}  
//接收小人的方向  
char enterDirection(){  
//清除SCANF中的缓冲区   
rewind(stdin);  
char dir;  
dir = getch();  
//scanf("%c",&dir);  
return dir;  
}  
//小人向上移动的方法  
void moveToUp(){  
//小人的下一个坐标   
int nextPersonCol = currentPersonCol;  
int nextPersonRow = currentPersonRow - 1;  
//箱子的下一个坐标  
int nextBoxRow = currentBoxRow - 1;  
int nextBoxCol = currentBoxCol;    
//如果小人的下一个坐标是路   
if(map==’ ’){  
map = ’A’;  
map = ’ ’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
}  
//如果小人的下一个坐标是墙   
if(map==’#’){  
//什么也不做   
}  
//如果小人的下一个坐标是箱子   
if(map==’X’){  
if(map == ’ ’){  
map = ’A’;  
map = ’ ’;  
map = ’X’;  
map = ’A’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
currentBoxRow = nextBoxRow;  
currentBoxCol = nextBoxCol;  
}  
}  
}  
//小人向下移动的方法  
void moveToDown(){  
//小人的下一个坐标   
int nextPersonCol = currentPersonCol;  
int nextPersonRow = currentPersonRow + 1;  
//箱子的下一个坐标  
int nextBoxRow = currentBoxRow + 1;  
int nextBoxCol = currentBoxCol;    
//如果小人的下一个坐标是路   
if(map==’ ’){  
map = ’A’;  
map = ’ ’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
}  
//如果小人的下一个坐标是墙   
if(map==’#’){  
//什么也不做   
}  
//如果小人的下一个坐标是箱子   
if(map==’X’){  
if(map == ’ ’){  
map = ’A’;  
map = ’ ’;  
map = ’X’;  
map = ’A’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
currentBoxRow = nextBoxRow;  
currentBoxCol = nextBoxCol;  
}  
}  
}   
//小人向右移动的方法  
void moveToRight(){  
//小人的下一个坐标   
int nextPersonCol = currentPersonCol + 1;  
int nextPersonRow = currentPersonRow;  
//箱子的下一个坐标  
int nextBoxRow = currentBoxRow;  
int nextBoxCol = currentBoxCol + 1;   
//如果小人的下一个坐标是路   
if(map==’ ’){  
map = ’A’;  
map = ’ ’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
}  
//如果小人的下一个坐标是墙   
if(map==’#’){  
//什么也不做   
}  
//如果小人的下一个坐标是箱子   
if(map==’X’){  
if(map==’ ’){  
map = ’A’;  
map = ’ ’;  
map = ’X’;  
map = ’A’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
currentBoxRow = nextBoxRow;  
currentBoxCol = nextBoxCol;  
}  
}  
}  
//小人向左移动的方法  
void moveToLeft(){  
//小人的下一个坐标   
int nextPersonCol = currentPersonCol - 1;  
int nextPersonRow = currentPersonRow;  
//箱子的下一个坐标  
int nextBoxRow = currentBoxRow;  
int nextBoxCol = currentBoxCol - 1;    
//如果小人的下一个坐标是路   
if(map==’ ’){  
map = ’A’;  
map = ’ ’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
}  
//如果小人的下一个坐标是墙   
if(map==’#’){  
//什么也不做   
}  
//如果小人的下一个坐标是箱子   
if(map==’X’){  
if(map==’ ’){  
map = ’A’;  
map = ’ ’;  
map = ’X’;  
map = ’A’;  
currentPersonRow = nextPersonRow;  
currentPersonCol = nextPersonCol;  
currentBoxRow = nextBoxRow;  
currentBoxCol = nextBoxCol;  
}  
}  
}

c语言推箱子

//空:0  墙:1  箱子:3   巢:4   箱子与巢重合:5
map_count=8
w=8
h=8
nest_count=4
l1=0 0 0 1 1 1 0 0
l2=0 0 0 1 3 1 0 0
l3=1 1 1 1 0 1 0 0
l4=1 3 2 0 2 1 1 1
l5=1 1 1 4 2 0 3 1
l6=0 0 1 2 1 1 1 1
l7=0 0 1 3 1 0 0 0
l8=0 0 1 1 1 0 0 0
w=9
h=9
nest_count=3
l1=1 1 1 1 1 0 0 0 0
l2=1 4 0 0 1 0 0 0 0
l3=1 0 2 2 1 0 1 1 1
l4=1 0 2 0 1 0 1 3 1
l5=1 1 1 0 1 1 1 3 1
l6=0 1 1 0 0 0 0 3 1
l7=0 1 0 0 0 1 0 0 1
l8=0 1 0 0 0 1 1 1 1
l9=0 1 1 1 1 1 0 0 0
w=10
h=7
nest_count=4
l1=0 1 1 1 1 1 1 1 0 0
l2=0 1 0 0 0 0 0 1 1 1
l3=1 1 2 1 1 1 0 0 0 1
l4=1 0 4 0 2 0 0 2 0 1
l5=1 0 3 3 1 0 2 0 1 1
l6=1 1 3 3 1 0 0 0 1 0
l7=0 1 1 1 1 1 1 1 1 0
w=6
h=8
nest_count=5
l1=0 1 1 1 1 0
l2=1 1 0 0 1 0
l3=1 4 2 0 1 0
l4=1 1 2 0 1 1
l5=1 1 0 2 0 1
l6=1 3 2 0 0 1
l7=1 3 3 5 3 1
l8=1 1 1 1 1 1
//以上为地图数据文件,保存为*****文件
//空:0  墙:1  箱子:3   巢:4   箱子与巢重合:5
#include 《*****》
#include 《*****》
#include 《*****》
#include 《*****》
#include 《*****》
typedef struct
{
int x;
int y;
} PT;
int** s;
PT man;
PT* nest=NULL;
PT prev;
int nest_count=0;
int map_count=0;
int gate=1;
int w,h;
char work_dir={’\0’};
char data_file={’\0’};
void GetDataFromFile();
void GetIntFromLineString(char* ch, int len, int i);
void Draw();
bool is_Success();
int main()
{
printf("Loading...");
CONSOLE_CURSOR_INFO cci;
***** = FALSE;
***** = sizeof(cci);
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetC***oleCursorInfo(handle, &cci);
_getcwd(work_dir,100);
strcpy(data_file,work_dir);
strcat(data_file,"\\*****");
if(access(data_file,0))
{
printf("Don’t find map data file !");
getch();
exit(0);
}
while(1)
{
GetDataFromFile();
int sel=0;
Draw();
while(1)
{
fflush(stdin);
sel=getch();
if(sel==224)
{
sel=getch();
prev=man;
if(sel==77)  //right
{
if(s==2)
{
if(s==3)
{
s=2;
s=4;
s=0;
}
else
{
continue;
}
}
else if(s==3)
{
s=4;
s=0;
}
else
{
continue;
}
}
else if(sel==80)  //down
{
if(s==2)
{
if(s==3)
{
s=2;
s=4;
s=0;
}
else
{
continue;
}
}
else if(s==3)
{
s=4;
s=0;
}
else
{
continue;
}
}
else if(sel==72)  //up
{
if(s==2)
{
if(s==3)
{
s=2;
s=4;
s=0;
}
else
{
continue;
}
}
else if(s==3)
{
s=4;
s=0;
}
else
{
continue;
}
}
else if(sel==75)  //left
{
if(s==2)
{
if(s==3)
{
s=2;
s=4;
s=0;
}
else
{
continue;
}
}
else if(s==3)
{
s=4;
s=0;
}
else
{
continue;
}
}
int i;
for(i=0;i《nest_count;i++)
{
if(*****==*****)
{
s=3;
break;
}
}
Draw();
if(is_Success()==true)
{
gate++;
if(gate》map_count)
{
printf("\n\nmap is end!");
fflush(stdin);
getch();
exit(0);
}
break;
}
}
else if(sel==’q’ || sel==’Q’)
{
exit(0);
}
else if(sel==’r’ || sel==’R’)
{
break;
}
}
}
return 0;
}
void GetDataFromFile()
{
int i;
if(s!=NULL)
{
if(h!=0)
{
for(i=0;i《h;i++)
{
****(s+i);
}
****(s);
}
else
{
printf("fail");
getch();
exit(0);
}
}
if(nest!=NULL)
{
****(nest);
}
map_count=GetPrivateProfileInt("MAPCOUNT","map_count",0,data_file);
if(map_count《gate)
{
printf("gate finish!");
getch();
exit(0);
}
char section={’\0’};
sprintf(section,"MAP%d",gate);
nest_count=GetPrivateProfileInt(section,"nest_count",0,data_file);
nest=(PT*)malloc(sizeof(PT)*nest_count);
w=GetPrivateProfileInt(section,"w",0,data_file);
h=GetPrivateProfileInt(section,"h",0,data_file);
if(w《5 || h《5 || nest_count《1)
{
printf("w or h or box_nest data error!");
getch();
exit(0);
}
s=(int**)malloc(sizeof(int*)*h);
for(i=0;i《h;i++)
{
*(s+i)=(int*)malloc(sizeof(int)*w);
}
char key={’\0’};
char line={’\0’};
int len;
int j;
for(i=0;i《h;i++)
{
memset(line,’\0’,50);
sprintf(key,"l%d",i+1);
GetPrivateProfileString(section,key,"\0",line,50,data_file);
len=strlen(line);
if(len》0)
{
line=’ ’;
line=’\0’;
}
GetIntFromLineString(line,strlen(line),i);
}
len=0;
for(i=0;i《h;i++)
{
for(j=0;j《w;j++)
{
if(s==3)
{
*****=i;
*****=j;
len++;
}
else if(s==5)
{
*****=i;
*****=j;
len++;
s=2;
}
}
}
}
void strmyncpy(char* source, char* target, int begin, int end)
{
int i=0;
while(1)
{
if(source!=’ ’)
{
target;
}
i++;
begin++;
if(begin》end)
{
target=’\0’;
break;
}
}
}
void GetIntFromLineString(char* ch, int len, int i)
{
int j=0;
char c={’\0’};
int b=0,e=0;
while(e《len)
{
if(ch==’ ’)
{
memset(c,’\0’,5);
strmyncpy(ch,c,b,e);
b=e+1;
e++;
s=atoi(c);
}
e++;
}
}
void Draw()
{
int i,j,k;
bool flag=false;
system("cls");
printf("\n\n");
for(i=0;i《h;i++)
{
printf("\n\n");
for(j=0;j《w;j++)
{
if(s==0)
{
printf("    ");
}
else if(s==1)
{
printf(" ■ ");
}
else if(s==2)
{
printf(" ★ ");
}
else if(s==3)
{
printf(" ☆ ");
}
else if(s==4)
{
printf(" ◎ ");
*****=j;
*****=i;
}
}
}
}
bool is_Success()
{
int i,j;
for(i=0;i《h;i++)
{
for(j=0;j《w;j++)
{
if(s==3)
{
return false;
}
}
}
for(i=0;i《nest_count;i++)
{
if(*****==*****)
{
return false;
}
}
return true;
}

用动态规划求推箱子的最优路径 C语言的

给,编译运行通过。
/* 推箱子游戏 */
#include 《*****》
#include 《*****》
#include 《*****》
#include 《*****》
#include 《*****》
#include 《*****》
#include 《*****》
/* 定义二维数组ghouse来记录屏幕上各点的状态,
其中:0表示什么都没有,’b’表示箱子,’w’表示墙壁,’m’表示目的地,’i’表示箱子在目的地。 */
char ghouse;
/* 以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。 */
char far *screen=(char far* )0xb8000000;
void putchxy(int y,int x,char ch,char fc,char bc)
{
screen=ch;
screen=(bc*16)+fc;
}
/* 定义判断是否胜利的数据结构 */
typedef struct winer {
int x,y;
struct winer *p;
}winer;
/* 箱子位置的数据结构 */
typedef struct boxs {
int x,y;
struct boxs *next;
}boxs;
/* 在特定的坐标上画墙壁并用数组记录状态的函数 */
void printwall(int x,int y)
{
putchxy(y-1,x-1,219,MAGENTA,BLACK);
ghouse=’w’;
}
/* 在特定的坐标上画箱子并用数组记录状态的函数 */
void printbox(int x,int y)
{
putchxy(y-1,x-1,10,WHITE,BLACK);
ghouse=’b’;
}
/* 在特定的坐标上画目的地并用数组记录状态的函数 */
void printwhither1(int x,int y,winer **win,winer **pw)
{
winer *qw;
putchxy(y-1,x-1,’*’,YELLOW,BLACK);
ghouse=’m’;
if(*win==NULL)
{
*win=*pw=qw=(winer* )malloc(sizeof(winer));
(*pw)-》x=x;(*pw)-》y=y;(*pw)-》p=NULL;
}
else
{
qw=(winer* )malloc(sizeof(winer));
qw-》x=x;qw-》y=y;(*pw)-》p=qw;(*pw)=qw;qw-》p=NULL;
}
}
/* 在特定的坐标上画目的地并用数组记录状态的函数 */
void printwhither(int x,int y)
{
putchxy(y-1,x-1,’*’,YELLOW,BLACK);
ghouse=’m’;
}
/* 在特定的坐标上画人的函数 */
void printman(int x,int y)
{
gotoxy(y,x);
_AL=02;_CX=01;_AH=0xa;
geninterrupt(0x10);
}
/* 在特定的坐标上画箱子在目的地上并用数组记录状态的函数 */
void printboxin(int x,int y)
{
putchxy(y-1,x-1,10,YELLOW,BLACK);
ghouse=’i’;
}
/* 初始化函数,初始化数组和屏幕 */
void init()
{
int i,j;
system("cls");
for(i=0;i《20;i++)
for(j=0;j《20;j++)
ghouse=0;
_AL=3;
_AH=0;
geninterrupt(0x10);
gotoxy(40,4);
printf("Welcome to push box world!");
gotoxy(40,6);
printf("Press up,down,left,right to play.");
gotoxy(40,8);
printf("Press Esc to quit it.");
gotoxy(40,10);
printf("Press space to reset the game.");
gotoxy(40,12);
printf("April 30th 2004.");
}
/* 第一关的图象初始化 */
winer *inithouse1()
{
int x,y;
winer *win=NULL,*pw;
gotoxy(8,2);
printf("Level ****");
for(x=1,y=5;y《=9;y++)
printwall(x+4,y+10);
for(y=5,x=2;x《=5;x++)
printwall(x+4,y+10);
for(y=9,x=2;x《=5;x++)
printwall(x+4,y+10);
for(y=1,x=3;x《=8;x++)
printwall(x+4,y+10);
for(x=3,y=3;x《=5;x++)
printwall(x+4,y+10);
for(x=5,y=8;x《=9;x++)
printwall(x+4,y+10);
for(x=7,y=4;x《=9;x++)
printwall(x+4,y+10);
for(x=9,y=5;y《=7;y++)
printwall(x+4,y+10);
for(x=8,y=2;y《=3;y++)
printwall(x+4,y+10);
printwall(5+4,4+10);
printwall(5+4,7+10);
printwall(3+4,2+10);
printbox(3+4,6+10);
printbox(3+4,7+10);
printbox(4+4,7+10);
printwhither1(4+4,2+10,&win,&pw);
printwhither1(5+4,2+10,&win,&pw);
printwhither1(6+4,2+10,&win,&pw);
printman(2+4,8+10);
return win;
}
/* 第三关的图象初始化 */
winer *inithouse3()
{int x,y;
winer *win=NULL,*pw;
gotoxy(8,3);
printf("Level ****");
for(x=1,y=2;y《=8;y++)
printwall(x+4,y+10);
for(x=2,y=2;x《=4;x++)
printwall(x+4,y+10);
for(x=4,y=1;y《=3;y++)
printwall(x+4,y+10);
for(x=5,y=1;x《=8;x++)
printwall(x+4,y+10);
for(x=8,y=2;y《=5;y++)
printwall(x+4,y+10);
for(x=5,y=5;x《=7;x++)
printwall(x+4,y+10);
for(x=7,y=6;y《=9;y++)
printwall(x+4,y+10);
for(x=3,y=9;x《=6;x++)
printwall(x+4,y+10);
for(x=3,y=6;y《=8;y++)
printwall(x+4,y+10);
printwall(2+4,8+10);
printwall(5+4,7+10);
printbox(6+4,3+10);
printbox(4+4,4+10);
printbox(5+4,6+10);
printwhither1(2+4,5+10,&win,&pw);
printwhither1(2+4,6+10,&win,&pw);
printwhither1(2+4,7+10,&win,&pw);
printman(2+4,4+10);
return win;
}
/* 第二关的图象初始化 */
winer *inithouse2()
{int x,y;
winer *win=NULL,*pw;
gotoxy(8,2);
printf("Level ****");
for(x=1,y=4;y《=7;y++)
printwall(x+4,y+10);
for(x=2,y=2;y《=4;y++)
printwall(x+4,y+10);
for(x=2,y=7;x《=4;x++)
printwall(x+4,y+10);
for(x=4,y=1;x《=8;x++)
printwall(x+4,y+10);
for(x=8,y=2;y《=8;y++)
printwall(x+4,y+10);
for(x=4,y=8;x《=8;x++)
printwall(x+4,y+10);
for(x=4,y=6;x《=5;x++)
printwall(x+4,y+10);
for(x=3,y=2;x《=4;x++)
printwall(x+4,y+10);
for(x=4,y=4;x《=5;x++)
printwall(x+4,y+10);
printwall(6+4,3+10);
printbox(3+4,5+10);
printbox(6+4,6+10);
printbox(7+4,3+10);
printwhither1(5+4,7+10,&win,&pw);
printwhither1(6+4,7+10,&win,&pw);
printwhither1(7+4,7+10,&win,&pw);
printman(2+4,6+10);
return win;
}
/* 第四关的图象初始化 */
winer *inithouse4()
{int x,y;
winer *win=NULL,*pw;
gotoxy(8,2);
printf("Level ****");
for(x=1,y=1;y《=6;y++)
printwall(x+4,y+10);
for(x=2,y=7;y《=8;y++)
printwall(x+4,y+10);
for(x=2,y=1;x《=7;x++)
printwall(x+4,y+10);
for(x=7,y=2;y《=4;y++)
printwall(x+4,y+10);
for(x=6,y=4;y《=9;y++)
printwall(x+4,y+10);
for(x=3,y=9;x《=5;x++)
printwall(x+4,y+10);
for(x=3,y=3;y《=4;y++)
printwall(x+4,y+10);
printwall(3+4,8+10);
printbox(3+4,5+10);
printbox(4+4,4+10);
printbox(4+4,6+10);
printbox(5+4,5+10);
printbox(5+4,3+10);
printwhither1(3+4,7+10,&win,&pw);
printwhither1(4+4,7+10,&win,&pw);
printwhither1(5+4,7+10,&win,&pw);
printwhither1(4+4,8+10,&win,&pw);
printwhither1(5+4,8+10,&win,&pw);
printman(2+4,2+10);
return win;
}
/* 移动在空地上的箱子到空地上 */
movebox(int x,int y,char a)
{switch(a)
{
case ’u’:ghouse=0;printf(" ");
printbox(x-2,y);printman(x-1,y);
ghouse=’b’;break;
case ’d’:ghouse=0;printf(" ");
printbox(x+2,y);printman(x+1,y);
ghouse=’b’;break;
case ’l’:ghouse=0;printf(" ");
printbox(x,y-2);printman(x,y-1);
ghouse=’b’;break;
case ’r’:ghouse=0;printf(" ");
printbox(x,y+2);printman(x,y+1);
ghouse=’b’;break;
default: break;
}
}
/* 移动在目的地上的箱子到空地上 */
moveinbox(int x,int y,char a)
{switch(a)
{
case ’u’:ghouse=’m’;printf(" ");
printbox(x-2,y);printman(x-1,y);
ghouse=’b’;break;
case ’d’:ghouse=’m’;printf(" ");
printbox(x+2,y);printman(x+1,y);
ghouse=’b’;break;
case ’l’:ghouse=’m’;printf(" ");
printbox(x,y-2);printman(x,y-1);
ghouse=’b’;break;
case ’r’:ghouse=’m’;printf(" ");
printbox(x,y+2);printman(x,y+1);
ghouse=’b’;break;
default: break;
}
}
/* 移动在空地上的箱子到目的地上 */
moveboxin(int x,int y,char a)
{switch(a)
{
case ’u’:ghouse=0;printf(" ");
printboxin(x-2,y);printman(x-1,y);
ghouse=’i’;break;
case ’d’:ghouse=0;printf(" ");
printboxin(x+2,y);printman(x+1,y);
ghouse=’i’;break;
case ’l’:ghouse=0;printf(" ");
printboxin(x,y-2);printman(x,y-1);
ghouse=’i’;break;
case ’r’:ghouse=0;printf(" ");
printboxin(x,y+2);printman(x,y+1);
ghouse=’i’;break;
default: break;
}
}
/* 移动在目的地上的箱子到目的地 */
moveinboxin(int x,int y,char a)
{switch(a)
{
case ’u’:ghouse=’m’;printf(" ");
printboxin(x-2,y);printman(x-1,y);
ghouse=’i’;break;
case ’d’:ghouse=’m’;printf(" ");
printboxin(x+2,y);printman(x+1,y);
ghouse=’i’;break;
case ’l’:ghouse=’m’;printf(" ");
printboxin(x,y-2);printman(x,y-1);
ghouse=’i’;break;
case ’r’:ghouse=’m’;printf(" ");
printboxin(x,y+2);printman(x,y+1);
ghouse=’i’;break;
default: break;
}
}
/* 判断特定的坐标上的状态 */
int judge(int x,int y)
{int i;
switch(ghouse)
{
case 0: i=1;break;
case ’w’: i=0;break;
case ’b’: i=2;break;
case ’i’: i=4;break;
case ’m’: i=3;break;
default: break;
}
return i;
}
/* 处理按下键盘后,人物移动的主函数 */
move(int x,int y,char a)
{switch(a)
{
case ’u’:if(!judge(x-1,y)) {gotoxy(y,x);break;}
else if(judge(x-1,y)==1||judge(x-1,y)==3)
{if(judge(x,y)==3)
{ printwhither(x,y);printman(x-1,y);break;}
else
{printf(" ");printman(x-1,y);break;}
}
else if(judge(x-1,y)==2)
{ if(judge(x-2,y)==1)
{movebox(x,y,’u’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1);
}
else if(judge(x-2,y)==3)
{ moveboxin(x,y,’u’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1);
}
else gotoxy(y,x);
break;
}
else if(judge(x-1,y)==4)
{ if(judge(x-2,y)==1)
{moveinbox(x,y,’u’);
if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x-1);
}
else if(judge(x-2,y)==3)
{ moveinboxin(x,y,’u’);
if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x-1);
}
else gotoxy(y,x);
break;
}
case ’d’:if(!judge(x+1,y)) {gotoxy(y,x);break;}
else if(judge(x+1,y)==1||judge(x+1,y)==3)
{if(judge(x,y)==3)
{ printwhither(x,y);printman(x+1,y);break;}
else
{printf(" ");printman(x+1,y);break;}
}
else if(judge(x+1,y)==2)
{ if(judge(x+2,y)==1)
{movebox(x,y,’d’);
if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
}
else if(judge(x+2,y)==3)
{moveboxin(x,y,’d’);
if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
}
else gotoxy(y,x);
break;
}
else if(judge(x+1,y)==4)
{ if(judge(x+2,y)==1)
{moveinbox(x,y,’d’);
if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
}
else if(judge(x+2,y)==3)
{moveinboxin(x,y,’d’);
if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
}
else gotoxy(y,x);
break;
}
case ’l’:if(!judge(x,y-1)) {gotoxy(y,x);break;}
else if(judge(x,y-1)==1||judge(x,y-1)==3)
{if(judge(x,y)==3)
{ printwhither(x,y);printman(x,y-1);break;}
else
{printf(" ");printman(x,y-1);break;}
}
else if(judge(x,y-1)==2)
{ if(judge(x,y-2)==1)
{movebox(x,y,’l’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x);
}
else if(judge(x,y-2)==3)
{moveboxin(x,y,’l’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x);
}
else gotoxy(y,x);
break;
}
else if(judge(x,y-1)==4)
{ if(judge(x,y-2)==1)
{moveinbox(x,y,’l’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x);
}
else if(judge(x,y-2)==3)
{moveinboxin(x,y,’l’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x);
}
else gotoxy(y,x);
break;
}
case ’r’:if(!judge(x,y+1)) {gotoxy(y,x);break;}
else if(judge(x,y+1)==1||judge(x,y+1)==3)
{if(judge(x,y)==3)
{printwhither(x,y);printman(x,y+1);break;}
else
{printf(" ");printman(x,y+1);break;}
}
else if(judge(x,y+1)==2)
{ if(judge(x,y+2)==1)
{movebox(x,y,’r’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x);
}
else if(judge(x,y+2)==3)
{moveboxin(x,y,’r’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x);
}
else gotoxy(y,x);
break;
}
else if(judge(x,y+1)==4)
{ if(judge(x,y+2)==1)
{moveinbox(x,y,’r’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x);
}
else if(judge(x,y+2)==3)
{moveinboxin(x,y,’r’);
if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x);
}
else gotoxy(y,x);
break;
}
default: break;
}
}
/* 按下空格键后,回到本关开头的函数 */
void reset(int i)
{switch(i)
{
case 0: init();
inithouse1();break;
case 1: init();
inithouse2();break;
case 2: init();
inithouse3();break;
case 3: init();
inithouse4();break;
default:break;
}
}
/* 主函数main */
main()
{int key,x,y,s,i=0;
winer *win,*pw;
_AL=3;_AH=0;
geninterrupt(0x10);
init();
win=inithouse1();
do{
_AH=3;
geninterrupt(0x10);
x=_DH+1;y=_DL+1;
while(bioskey(1)==0);
key=bioskey(0);
switch(key)
{
case 0x4800:move(x,y,’u’);break; /* 按下向上键后 */
case 0x5000:move(x,y,’d’);break; /* 按下向下键后 */
case 0x4b00:move(x,y,’l’);break; /* 按下向左键后 */
case 0x4d00:move(x,y,’r’);break; /* 按下向右键后 */
case 0x3920:reset(i);break; /* 按下空格键后 */
default:break;
}
s=0;
pw=win;
while(pw)
{
if(ghouse==’m’) s++;
pw=pw-》p;
}
if(s==0)
{
****(win);
gotoxy(25,2);
printf("Congratulate! You have passed Level %d!",i+1);
getch();
i++;
switch(i)
{
case 1: init();
win=inithouse2();break;
case 2: init();
win=inithouse3();break;
case 3: init();
win=inithouse4();break;
case 4: gotoxy(8,14);
printf("Great! You have passed all the levels! Press any key to quit!");
key=0x011b;getch();break;
default: break;
}
}
}while(key!=0x011b);
_AL=3;
_AH=0;
geninterrupt(0x10);
}

用C语言写推箱子游戏,怎样把每次的步数写进文件并比较的出最小步数

我可以给你一些C操作文件的建议
写入文件使用fwrite()函数,
比较文件中各个数据的最小值,你可以逐个读出,在比较
下面是一个例子
#include《*****》
int main()
{
FILE *fp;
int num={10,20,50,40,60};
int i;
int number;
fp=fopen("Data","w"); //打开Data文件,文件操作为写入
if(NULL==fp) //若打开失败,返回NULL
{
printf("Can’t open the file\n");
return;
}
for(i=0;i《5;i++) //将num中的数据逐个写入
{
fwrite(#,sizeof(int),1,fp);
}
fclose(fp); //关闭文件
fp=fopen("Data","r"); //重新打开,文件操作为读
while(fread(&number,sizeof(int),1,fp)!=0) //逐个读取文件中的数据,并赋予number
printf("\n%d",number); //输出每个数据
fclose(fp);
}

如何用C语言编写一如图模型的推箱子游戏的程序!

  /*TC环境下编的*/
  #include 《*****》
  #include 《*****》
  #include 《*****》
  #include 《*****》
  #include 《*****》
  #include 《*****》
  typedef struct winer
  {
  int x,y;
  struct winer *p;
  }winer;
  char status ;
  char far *printScreen=(char far* )0xB8000000;
  void putoutChar(int y,int x,char ch,char fc,char bc);
  void printWall(int x, int y);
  void printBox(int x, int y);
  void printBoxDes(int x, int y);
  void printDestination(int x, int y);
  void printDestination1(int x,int y,winer **win,winer **pw);
  void printMan(int x, int y);
  void init();
  winer *initStep1();
  winer *initStep2();
  winer *initStep3();
  winer *initStep4();
  void moveBoxSpacetoSpace(int x ,int y, char a);
  void moveBoxDestoSpace(int x ,int y, char a) ;
  void moveBoxSpacetoDes(int x, int y, char a);
  void moveBoxDestoDes(int x, int y, char a);
  int judge(int x, int y);
  void move(int x, int y, char a);
  void reset(int i);
  void putoutChar(int y,int x,char ch,char fc,char bc)
  {
  printScreen=ch;
  printScreen=(bc*16)+fc;
  }
  void printWall(int x,int y)
  {
  putoutChar(y-1,x-1,219,GREEN,BLACK);
  status=’w’;
  }
  void printBox(int x,int y)
  {
  putoutChar(y-1,x-1,10,WHITE,BLACK);
  status=’b’;
  }
  void printDestination1(int x,int y,winer **win,winer **pw)
  {
  winer *qw;
  putoutChar(y-1,x-1,003,YELLOW,BLACK);
  status=’m’;
  if(*win==NULL)
  {
  *win=*pw=qw=(winer* )malloc(sizeof(winer));
  (*pw)-》x=x;
  (*pw)-》y=y;
  (*pw)-》p=NULL;
  }
  else
  {
  qw=(winer* )malloc(sizeof(winer));
  qw-》x=x;
  qw-》y=y;
  (*pw)-》p=qw;
  (*pw)=qw;qw-》p=NULL;
  }
  }
  void printDestination(int x,int y)
  {
  putoutChar(y-1,x-1,003,YELLOW,BLACK);
  status=’m’;
  }
  void printMan(int x,int y)
  {
  gotoxy(y,x);
  _AL=02;
  _CX=01;
  _AH=0xa;
  geninterrupt(0x10);
  }
  void printBoxDes(int x,int y)
  {
  putoutChar(y-1,x-1,10,YELLOW,BLACK);
  status=’i’;
  }
  void init()
  {
  int i,j;
  for(i=0;i《20;i++)
  for(j=0;j《20;j++)
  status=0;
  _AL=3;
  _AH=0;
  geninterrupt(0x10);
  gotoxy(40,4);
  printf("Welcome to the box world!");
  gotoxy(40,6);
  printf("You can use up, down, left,");
  gotoxy(40,8);
  printf("right key to control it, or");
  gotoxy(40,10);
  printf("you can press Esc to quit it.");
  gotoxy(40,12);
  printf("Press space to reset the game.");
  gotoxy(40,14);
  printf("Wish you have a good time !");
  gotoxy(40,16);
  printf("April , 2007");
  }
  winer *initStep1()
  {
  int x;
  int y;
  winer *win=NULL;
  winer *pw;
  for(x=1,y=5;y《=9;y++)
  printWall(x+4,y+10);
  for(y=5,x=2;x《=5;x++)
  printWall(x+4,y+10);
  for(y=9,x=2;x《=5;x++)
  printWall(x+4,y+10);
  for(y=1,x=3;x《=8;x++)
  printWall(x+4,y+10);
  for(x=3,y=3;x《=5;x++)
  printWall(x+4,y+10);
  for(x=5,y=8;x《=9;x++)
  printWall(x+4,y+10);
  for(x=7,y=4;x《=9;x++)
  printWall(x+4,y+10);
  for(x=9,y=5;y《=7;y++)
  printWall(x+4,y+10);
  for(x=8,y=2;y《=3;y++)
  printWall(x+4,y+10);
  printWall(5+4,4+10);
  printWall(5+4,7+10);
  printWall(3+4,2+10);
  printBox(3+4,6+10);
  printBox(3+4,7+10);
  printBox(4+4,7+10);
  printDestination1(4+4,2+10,&win,&pw);
  printDestination1(5+4,2+10,&win,&pw);
  printDestination1(6+4,2+10,&win,&pw);
  printMan(2+4,8+10);
  return win;
  }
  winer *initStep2()
  {
  int x;
  int y;
  winer *win=NULL;
  winer *pw;
  for(x=1,y=4;y《=7;y++)
  printWall(x+4,y+10);
  for(x=2,y=2;y《=4;y++)
  printWall(x+4,y+10);
  for(x=2,y=7;x《=4;x++)
  printWall(x+4,y+10);
  for(x=4,y=1;x《=8;x++)
  printWall(x+4,y+10);
  for(x=8,y=2;y《=8;y++)
  printWall(x+4,y+10);
  for(x=4,y=8;x《=8;x++)
  printWall(x+4,y+10);
  for(x=4,y=6;x《=5;x++)
  printWall(x+4,y+10);
  for(x=3,y=2;x《=4;x++)
  printWall(x+4,y+10);
  for(x=4,y=4;x《=5;x++)
  printWall(x+4,y+10);
  printWall(6+4,3+10);
  printBox(3+4,5+10);
  printBox(6+4,6+10);
  printBox(7+4,3+10);
  printDestination1(5+4,7+10,&win,&pw);
  printDestination1(6+4,7+10,&win,&pw);
  printDestination1(7+4,7+10,&win,&pw);
  printMan(2+4,6+10);
  return win;
  }
  winer *initStep3()
  {
  int x;
  int y;
  winer *win=NULL;
  winer *pw;
  for(x=1,y=2;y《=8;y++)
  printWall(x+4,y+10);
  for(x=2,y=2;x《=4;x++)
  printWall(x+4,y+10);
  for(x=4,y=1;y《=3;y++)
  printWall(x+4,y+10);
  for(x=5,y=1;x《=8;x++)
  printWall(x+4,y+10);
  for(x=8,y=2;y《=5;y++)
  printWall(x+4,y+10);
  for(x=5,y=5;x《=7;x++)
  printWall(x+4,y+10);
  for(x=7,y=6;y《=9;y++)
  printWall(x+4,y+10);
  for(x=3,y=9;x《=6;x++)
  printWall(x+4,y+10);
  for(x=3,y=6;y《=8;y++)
  printWall(x+4,y+10);
  printWall(2+4,8+10);
  printWall(5+4,7+10);
  printBox(6+4,3+10);
  printBox(4+4,4+10);
  printBox(5+4,6+10);
  printDestination1(2+4,5+10,&win,&pw);
  printDestination1(2+4,6+10,&win,&pw);
  printDestination1(2+4,7+10,&win,&pw);
  printMan(2+4,4+10);
  return win;
  }
  winer *initStep4()
  {
  int x;
  int y;
  winer *win=NULL;
  winer *pw;
  for(x=1,y=1;y《=6;y++)
  printWall(x+4,y+10);
  for(x=2,y=7;y《=8;y++)
  printWall(x+4,y+10);
  for(x=2,y=1;x《=7;x++)
  printWall(x+4,y+10);
  for(x=7,y=2;y《=4;y++)
  printWall(x+4,y+10);
  for(x=6,y=4;y《=9;y++)
  printWall(x+4,y+10);
  for(x=3,y=9;x《=5;x++)
  printWall(x+4,y+10);
  for(x=3,y=3;y《=4;y++)
  printWall(x+4,y+10);
  printWall(3+4,8+10);
  printBox(3+4,5+10);
  printBox(4+4,4+10);
  printBox(4+4,6+10);
  printBox(5+4,5+10);
  printBox(5+4,3+10);
  printDestination1(3+4,7+10,&win,&pw);
  printDestination1(4+4,7+10,&win,&pw);
  printDestination1(5+4,7+10,&win,&pw);
  printDestination1(4+4,8+10,&win,&pw);
  printDestination1(5+4,8+10,&win,&pw);
  printMan(2+4,2+10);
  return win;
  }
  void moveBoxSpacetoSpace(int x,int y,char a)
  {
  switch(a)
  {
  case ’u’:
  status=0;
  printf(" ");
  printBox(x-2,y);
  printMan(x-1,y);
  status=’b’;
  break;
  case ’d’:
  status=0;
  printf(" ");
  printBox(x+2,y);
  printMan(x+1,y);
  status=’b’;
  break;
  case ’l’:
  status=0;
  printf(" ");
  printBox(x,y-2);
  printMan(x,y-1);
  status=’b’;
  break;
  case ’r’:
  status=0;
  printf(" ");
  printBox(x,y+2);
  printMan(x,y+1);
  status=’b’;
  break;
  default:
  break;
  }
  }
  void moveBoxDestoSpace(int x,int y,char a)
  {
  switch(a)
  {
  case ’u’:
  status=’m’;
  printf(" ");
  printBox(x-2,y);
  printMan(x-1,y);
  status=’b’;
  break;
  case ’d’:
  status=’m’;
  printf(" ");
  printBox(x+2,y);
  printMan(x+1,y);
  status=’b’;
  break;
  case ’l’:
  status=’m’;
  printf(" ");
  printBox(x,y-2);
  printMan(x,y-1);
  status=’b’;
  break;
  case ’r’:
  status=’m’;
  printf(" ");
  printBox(x,y+2);
  printMan(x,y+1);
  status=’b’;
  break;
  default:
  break;
  }
  }
  void moveBoxSpacetoDes(int x,int y,char a)
  {
  switch(a)
  {
  case ’u’:
  status=0;
  printf(" ");
  printBoxDes(x-2,y);
  printMan(x-1,y);
  status=’i’;
  break;
  case ’d’:
  status=0;
  printf(" ");
  printBoxDes(x+2,y);
  printMan(x+1,y);
  status=’i’;
  break;
  case ’l’:
  status=0;
  printf(" ");
  printBoxDes(x,y-2);
  printMan(x,y-1);
  status=’i’;
  break;
  case ’r’:
  status=0;
  printf(" ");
  printBoxDes(x,y+2);
  printMan(x,y+1);
  status=’i’;
  break;
  default:
  break;
  }
  }
  void moveBoxDestoDes(int x,int y,char a)
  {
  switch(a)
  {
  case ’u’:
  status=’m’;
  printf(" ");
  printBoxDes(x-2,y);
  printMan(x-1,y);
  status=’i’;
  break;
  case ’d’:
  status=’m’;
  printf(" ");
  printBoxDes(x+2,y);
  printMan(x+1,y);
  status=’i’;
  break;
  case ’l’:
  status=’m’;
  printf(" ");
  printBoxDes(x,y-2);
  printMan(x,y-1);
  status=’i’;
  break;
  case ’r’:
  status=’m’;
  printf(" ");
  printBoxDes(x,y+2);
  printMan(x,y+1);
  status=’i’;
  break;
  default:
  break;
  }
  }
  int judge(int x,int y)
  {
  int i;
  switch(status)
  {
  case 0:
  i=1;
  break;
  case ’w’:
  i=0;
  break;
  case ’b’:
  i=2;
  break;
  case ’i’:
  i=4;
  break;
  case ’m’:
  i=3;
  break;
  default:
  break;
  }
  return i;
  }
  void move(int x,int y,char a)
  {
  switch(a)
  {
  case ’u’:
  if(!judge(x-1,y))
  {
  gotoxy(y,x);
  break;
  }
  else if(judge(x-1,y)==1||judge(x-1,y)==3)
  {
  if(judge(x,y)==3)
  {
  printDestination(x,y);
  printMan(x-1,y);
  break;
  }
  else
  {
  printf(" ");
  printMan(x-1,y);
  break;
  }
  }
  else if(judge(x-1,y)==2)
  {
  if(judge(x-2,y)==1)
  {
  moveBoxSpacetoSpace(x,y,’u’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x-1);
  }
  else if(judge(x-2,y)==3)
  {
  moveBoxSpacetoDes(x,y,’u’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x-1);
  }
  else
  gotoxy(y,x);
  break;
  }
  else if(judge(x-1,y)==4)
  {
  if(judge(x-2,y)==1)
  {
  moveBoxDestoSpace(x,y,’u’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x-1);
  }
  else if(judge(x-2,y)==3)
  {
  moveBoxDestoDes(x,y,’u’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x-1);
  }
  else
  gotoxy(y,x);
  break;
  }
  case ’d’:
  if(!judge(x+1,y))
  {
  gotoxy(y,x);
  break;
  }
  else if(judge(x+1,y)==1||judge(x+1,y)==3)
  {
  if(judge(x,y)==3)
  {
  printDestination(x,y);
  printMan(x+1,y);
  break;
  }
  else
  {
  printf(" ");
  printMan(x+1,y);
  break;
  }
  }
  else if(judge(x+1,y)==2)
  {
  if(judge(x+2,y)==1)
  {
  moveBoxSpacetoSpace(x,y,’d’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x+1);
  }
  else if(judge(x+2,y)==3)
  {
  moveBoxSpacetoDes(x,y,’d’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x+1);
  }
  else
  gotoxy(y,x);
  break;
  }
  else if(judge(x+1,y)==4)
  {
  if(judge(x+2,y)==1)
  {
  moveBoxDestoSpace(x,y,’d’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x+1);
  }
  else if(judge(x+2,y)==3)
  {
  moveBoxDestoDes(x,y,’d’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y,x+1);
  }
  else
  gotoxy(y,x);
  break;
  }
  case ’l’:
  if(!judge(x,y-1))
  {
  gotoxy(y,x);
  break;
  }
  else if(judge(x,y-1)==1||judge(x,y-1)==3)
  {
  if(judge(x,y)==3)
  {
  printDestination(x,y);
  printMan(x,y-1);
  break;
  }
  else
  {
  printf(" ");
  printMan(x,y-1);
  break;
  }
  }
  else if(judge(x,y-1)==2)
  {
  if(judge(x,y-2)==1)
  {
  moveBoxSpacetoSpace(x,y,’l’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y-1,x);
  }
  else if(judge(x,y-2)==3)
  {
  moveBoxSpacetoDes(x,y,’l’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y-1,x);
  }
  else
  gotoxy(y,x);
  break;
  }
  else if(judge(x,y-1)==4)
  {
  if(judge(x,y-2)==1)
  {
  moveBoxDestoSpace(x,y,’l’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y-1,x);
  }
  else if(judge(x,y-2)==3)
  {
  moveBoxDestoDes(x,y,’l’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y-1,x);
  }
  else
  gotoxy(y,x);
  break;
  }
  case ’r’:
  if(!judge(x,y+1))
  {
  gotoxy(y,x);
  break;
  }
  else if(judge(x,y+1)==1||judge(x,y+1)==3)
  {
  if(judge(x,y)==3)
  {
  printDestination(x,y);
  printMan(x,y+1);
  break;
  }
  else
  {
  printf(" ");
  printMan(x,y+1);
  break;
  }
  }
  else if(judge(x,y+1)==2)
  {
  if(judge(x,y+2)==1)
  {
  moveBoxSpacetoSpace(x,y,’r’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y+1,x);
  }
  else if(judge(x,y+2)==3)
  {
  moveBoxSpacetoDes(x,y,’r’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y+1,x);
  }
  else
  gotoxy(y,x);
  break;
  }
  else if(judge(x,y+1)==4)
  {
  if(judge(x,y+2)==1)
  {
  moveBoxDestoSpace(x,y,’r’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y+1,x);
  }
  else if(judge(x,y+2)==3)
  {
  moveBoxDestoDes(x,y,’r’);
  if(judge(x,y)==3)
  printDestination(x,y);
  gotoxy(y+1,x);
  }
  else
  gotoxy(y,x);
  break;
  }
  default:
  break;
  }
  }
  void reset(int i)
  {
  switch(i)
  {
  case 0:
  init();
  initStep1();
  break;
  case 1:
  init();
  initStep2();
  break;
  case 2:
  init();
  initStep3();
  break;
  case 3:
  init();
  initStep4();
  break;
  default:
  break;
  }
  }
  void main()
  {
  int key;
  int x;
  int y;
  int s;
  int i=0;
  winer *win;
  winer *pw;
  _AL=3;
  _AH=0;
  geninterrupt(0x10);
  init();
  win=initStep1();
  do{
  _AH=3;
  geninterrupt(0x10);
  x=_DH+1;
  y=_DL+1;
  while(bioskey(1)==0);
  key=bioskey(0);
  switch(key)
  {
  case 0x4800:
  move(x,y,’u’);
  break;
  case 0x5000:
  move(x,y,’d’);
  break;
  case 0x4b00:
  move(x,y,’l’);
  break;
  case 0x4d00:
  move(x,y,’r’);
  break;
  case 0x3920:
  reset(i);
  break;
  default:
  break;
  }
  s=0;
  pw=win;
  while(pw)
  {
  if(status==’m’)
  s++;
  pw=pw-》p;
  }
  if(s==0)
  {
  ****(win);
  gotoxy(25,2);
  printf("congratulate! You have done this step!");
  getch();
  i++;
  switch(i)
  {
  case 1:
  init();
  win=initStep2();
  break;
  case 2:
  init();
  win=initStep3();
  break;
  case 3:
  init();
  win=initStep4();
  break;
  case 4:
  gotoxy(15,21);
  printf("Congratulation! \n");
  gotoxy(15,23);
  printf("You have done all the steps, Welcome to play again!");
  key=0x011b;
  getch();
  break;
  default:
  break;
  }
  }
  }while(key!=0x011b);
  _AL=3;
  _AH=0;
  geninterrupt(0x10);
  }

求助啊,谁有有趣的c语言小程序,并且要有源代码!!

学习“推箱子”C语言编码:

#include 《*****》

#include 《*****》

#include《*****》

#include《*****》

int m =0;  //m代表第几关

struct maps{short a; };

struct maps map={ 0,0,0,0,0,0,0,0,0,0,0,  //共5关,每关9行

                  0,1,1,1,1,1,1,1,0,0,0,

                  0,1,0,0,0,0,0,1,1,1,0,

                  1,1,4,1,1,1,0,0,0,1,0,  //0空地,1墙

                  1,5,0,0,4,0,0,4,0,1,0,  //4是箱子,5是人

                  1,0,3,3,1,0,4,0,1,1,0,  //3是目的地

                  1,1,3,3,1,0,0,0,1,0,0,  //7是箱子在目的地(4+3)

                  0,1,1,1,1,1,1,1,1,0,0,  //8是人在目的地(5+3)

                  0,0,0,0,0,0,0,0,0,0,0,

                  0,0,0,0,0,0,0,0,0,0,0,

                  0,0,1,1,1,1,0,0,0,0,0,

                  0,0,1,5,0,1,1,1,0,0,0,

                  0,0,1,0,4,0,0,1,0,0,0,

                  0,1,1,1,0,1,0,1,1,0,0,

                  0,1,3,1,0,1,0,0,1,0,0,

                  0,1,3,4,0,0,1,0,1,0,0,

                  0,1,3,0,0,0,4,0,1,0,0,

                  0,1,1,1,1,1,1,1,1,0,0,

                  0,0,0,0,0,0,0,0,0,0,0,

                  0,0,0,1,1,1,1,1,1,1,0,

                  0,0,1,1,0,0,1,0,5,1,0,

                  0,0,1,0,0,0,1,0,0,1,0,

                  0,0,1,4,0,4,0,4,0,1,0,

                  0,0,1,0,4,1,1,0,0,1,0,

                  1,1,1,0,4,0,1,0,1,1,0,

                  1,3,3,3,3,3,0,0,1,0,0,

                  1,1,1,1,1,1,1,1,1,0,0,

                  0,1,1,1,1,1,1,1,1,1,0,

                  0,1,0,0,1,1,0,0,0,1,0,

                  0,1,0,0,0,4,0,0,0,1,0,

                  0,1,4,0,1,1,1,0,4,1,0,

                  0,1,0,1,3,3,3,1,0,1,0,

                  1,1,0,1,3,3,3,1,0,1,1,

                  1,0,4,0,0,4,0,0,4,0,1,

                  1,0,0,0,0,0,1,0,5,0,1,

                  1,1,1,1,1,1,1,1,1,1,1,

                  0,0,0,0,0,0,0,0,0,0,0,

                  0,0,0,1,1,1,1,1,1,0,0,

                  0,1,1,1,0,0,0,0,1,0,0,

                  1,1,3,0,4,1,1,0,1,1,0,

                  1,3,3,4,0,4,0,0,5,1,0,

                  1,3,3,0,4,0,4,0,1,1,0,

                  1,1,1,1,1,1,0,0,1,0,0,

                  0,0,0,0,0,1,1,1,1,0,0,

                  0,0,0,0,0,0,0,0,0,0,0 };

void DrMap( )  //绘制地图

{ CONSOLE_CURSOR_INFO cursor_info={1,0};   //隐藏光标的设置

 SetC***oleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

 printf("\n\n \t\t\b推箱子");

 printf("\n \t");

for (int i = 0; i 《 9; i++)

    {for (int j = 0; j 《 11; j++)

       {switch (map)

          {case 0:  printf("  "); break;

           case 1:  printf("■"); break;

           case 3:  printf("◎");break;

           case 4:  printf("□"); break;

           case 5:  printf(""); break;   //5是人

           case 7:  printf("□"); break;  //4 + 3箱子在目的地中

           case 8:  printf("");break;   // 5 + 3人在目的地中

          }

       }

      printf("\n\t");

   }

}

void gtxy(int x, int y)  //控制光标位置的函数

{ COORD coord;

 ***** = x;

 ***** = y;

 SetC***oleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

void start( )  //开始游戏

{ int r, c;    //r,c用于记录人的下标

 for (int i = 0; i 《 9; i++)

   { for (int j = 0; j 《 11; j++)

       {if (map==8) { r = i;  c = j; } } //i j 人的下标

   }

char key; 

 key = getch( );

 switch (key)

   {case ’W’:

    case ’w’:

    case 72:

      if (map == 3)

        { gtxy(2*c+8,r-1+3); printf("");   // gtxy(2*c+8,r-1+3)是到指定位置输出字符

          if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

         if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

         map -= 5; }

      else  if (map == 7)

         { if (map == 3)

           { gtxy(2*c+8,r-2+3); printf("□"); gtxy(2*c+8,r-1+3); printf("");

             if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

             if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

             map += 1;

             map -= 5; }

        } break;

    case ’S’:

    case ’s’:

    case 80:

        if (map == 3)

         { gtxy(2*c+8,r+1+3); printf("");

           if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

          if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

          map -= 5; }

       else if (map == 7)

           { if (map == 3)

             { gtxy(2*c+8,r+2+3); printf("□"); gtxy(2*c+8,r+1+3); printf("");

               if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

              if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

              map += 1;

             map -= 5; }

          }break;

    case ’A’:

    case ’a’:

    case 75:

        if (map == 3)

          { gtxy(2*(c-1)+8,r+3); printf("");

           if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

          if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

           map -= 5; }

       else if (map == 7)

          {if (map == 3)

            { gtxy(2*(c-2)+8,r+3); printf("□"); gtxy(2*(c-1)+8,r+3); printf("");

              if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

              if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

              map += 1;

              map -= 5; }

         }break;

    case ’D’:

    case ’d’:

    case 77:

        if (map == 3)

         { gtxy(2*(c+1)+8,r+3); printf("");

           if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

           if(map == 8) {gtxy(2*c+8,r+3); printf("◎");}

          map -= 5; }

      else if (map == 7)

          { if (map == 3)

            { gtxy(2*(c+2)+8,r+3); printf("□"); gtxy(2*(c+1)+8,r+3); printf("");

              if(map == 5){gtxy(2*c+8,r+3); printf("  "); }

             if(map == 8){gtxy(2*c+8,r+3); printf("◎");}

             map += 1;

             map -= 5; }

         }break;

    }

}

int ifwan( )  //是否完成(1是0否)

{ if(m==0){if(map==7&&

                  map==7) return 1;}

 if(m==1){if(map==7&&

                  map==7) return 1;}

 if(m==2){if(map==7&&

                 map==7) return 1;}

if(m==3){if(map==7&&

        map==7) return 1;}

if(m==4){if(map==7&&

                map==7) return 1;}

 return 0;

}

int main( )  //主函数

{ while (1)

     { system("cls");

       DrMap( );

       while (1)

           { start( );

             if(ifwan()){printf("\007");break;} //完成后响铃

          }

       m+=1;

    }

  return 0;

}

简单的搬运工C语言代码

程序在*****下编译通过. 回车键选关,我只做了两关, r键重新开始 p键悔步,只能悔五步啊.不过你可以改#define STEPMAX的值 #define MAX 2 /*游戏中总关数*/#define STARTX 180#define STARTY 80#define ...
程序在*****下编译通过. 回车键
选关,我只做了两关, r键重新开始
p键悔步,只能悔五步啊.不过你可以
改#define STEPMAX的值
#define MAX 2 /*游戏中总关数*/
#define STARTX 180
#define STARTY 80
#define BKCOLOR BLACK
#define MANCOLOR RED
#define OBJECTCOLOR YELLOW
#define TIMEINT 2
#define STARNUM 300
#define STEPMAX 5
#include《*****》
#include《*****》
#include《*****》
#include《*****》
#include《*****》
#include《*****》
#include《*****》
#include《*****》
#include《*****》
#define Key_R 0x1372
#define Key_Up 0x4800
#define Key_Enter 0x1c0d
#define Key_Down 0x5000
#define Key_P 0x1970
#define Key_Esc 0x11b
#define Key_Right 0x4d00
#define Key_Left 0x4b00
typedef suct star
{
int x;
int y;
int c;
}Star;
Star s;
typedef suct record
{
char name;
int second;
suct time t;
suct date d;
}Record;
Record r;
typedef suct c
{
int x;
int y;
}Add;
typedef suct a
{
int x;
int y;
}Player;
Player p;
char name; /*进入游戏时记录玩家的姓名*/
time_t t1,t2; /*游戏结束时的时间*/
int Ide; /*开始进入游戏时,选择菜单时返的功能号(1,2,3)*/
int MissionNum; /*玩家正在玩的关数*/
int BoxNum; /*目的地的个数*/
int Key; /*玩家按键*/
int map; /*地图.(空=0),(人=1),(箱子=2),(墙=3),(目的地=4),(人 目的地=5),(箱子 目的地=6)*/
int StepNum;
int DirectionKey; /*用来表示方向键最后一次按键*/
int BoxMove;
int Step;
/*函数定义*/
void InputName();
void Init();
void MainMenu();
void JudgeRecord();
void WriteRecord();
void JudgeIde();
void DrawMenu(int );
void Game();
void InitMission(int );
void NextMission();
void InitPic(int ,int ,int );
int Move(Add );
void DrawWall(int ,int );
void DrawBack(int ,int );
void DrawBox(int ,int );
void DrawObject(int ,int );
void DrawMan(int ,int );
void DrawStar();
int JudgeWin();
void InitMission1();
void InitMission2();
int TimeCome();
void ChangeStar();
void InputName();
void ViewRecords();
void DeleteRecords();
void RegisterStep();
void ReverselyMove();
void MoveBack(Add );
void main()
{
InputName();
Init(); /*驱动显卡*/
srand(time(&t1));
MainMenu(); /*画开始菜单(***** game ***** records ***** records ***** game)*/
}
void InputName()
{
char c;
clrscr();
do
{
printf("\n\nPlease input your name:");
scanf("%s",name);
printf("Are you sure the name right(Y/N):");
do
{
c=getch();
}while(c!=’Y’&&c!=’y’&&c!=’N’&&c!=’n’);
}while(c!=’Y’&&c!=’y’);
}
void Init()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
}
void MainMenu()
{
setbkcolor(BKCOLOR);
cleardevice();
/*DrawStar(); /*画开始菜单的背景画面*/
DrawStar();
Ide=0,Key=0;
DrawMenu(Ide);
do
{
if(bioskey(1)) /*有键按下则处理按键*/
{
Key=bioskey(0);
switch(Key)
{
case Key_Down: {Ide ;Ide=Ide%4;DrawMenu(Ide);break;}
case Key_Up: {Ide--;Ide=(Ide 4)%4;DrawMenu(Ide);break;}
}
}
else {if(TimeCome()) ChangeStar();} /*改变背景*/
}while(Key!=Key_Enter);
JudgeIde(); /*根据Ide运行不同的程序*/
}
void JudgeIde()
{
switch(Ide)
{
case 0:Game();break;
case 1:{ViewRecords();bioskey(0);MainMenu();break;}
case 2:{DeleteRecords();ViewRecords();bioskey(0);MainMenu();break;}
case 3:exit(0);
}
}
void Game()
{
int i,j,flag;
Add ad;
MissionNum=0;
NextMission();
do
{
flag=0;
Key=bioskey(0);
switch(Key)
{
case Key_Enter:{NextMission();time(&t1);break;}
case Key_Up:{****=-1;****=0;flag=1;DirectionKey=Key;break;}
case Key_Down:{****=1;****=0;flag=1;DirectionKey=Key;break;}
case Key_Left:{****=0;****=-1;flag=1;DirectionKey=Key;break;}
case Key_Right:{****=0;****=1;flag=1;DirectionKey=Key;break;}
case Key_R:{MissionNum--;NextMission();break;}
case Key_Esc:{MainMenu();break;}
case Key_P:{ReverselyMove();break;}
}
if(flag==1)
{if(Move(ad)) {RegisterStep(); if(JudgeWin()) {JudgeRecord();NextMission();}}}
}while(1);
}
void InitMission(int n)
{
int i,j;
for(i=0;i《10;i )
for(j=0;j《10;j )
map=0;
switch(n)
{
case 1:InitMission1();break; /*第一关*/
case 2:InitMission2();break; /*第二关*/
}
}
void InitPic(int n,int i,int j)
{
switch(n)
{
case 0:DrawBack(i,j);break;
case 1:DrawMan(i,j);break;
case 2:DrawBo
x(i,j);break;
case 3:DrawWall(i,j);break;
case 4:DrawObject(i,j);break;
case 5:DrawMan(i,j);break;
case 6:DrawBox(i,j);break;
}
}
void NextMission()
{
int i,j;
if(MissionNum 1》MAX) MissionNum=1;
else MissionNum ;
InitMission(MissionNum);
setbkcolor(BKCOLOR);
cleardevice();
for(i=0;i《10;i )
for(j=0;j《10;j )
InitPic(map,i,j);
switch(MissionNum)
{
case 1:outtextxy(200,230,"Mission 1");break;
case 2:outtextxy(200,230,"Mission 2");break;
}
time(&t1);
for(i=0;i《STEPMAX;i )
{Step=BoxMove=0;}
StepNum=0;
}
int Move(Add a)
{
int flag;
int i=StepNum%STEPMAX;
switch(map) /*看下一位置为什么*/
{
case 0:{map-=1;InitPic(map,***,***);
***=*** ***;***=*** ***;
map =1;InitPic(map,***,***);flag=1;break;}
case 2:{if(map==0||map==4)
{map-=1;map=1;map =2;
InitPic(map,***,***);
InitPic(map,*** ***,*** ***);
InitPic(map,*** 2****,*** 2****);
***=*** ***;***=*** ***;flag=1;BoxMove=1;}
else flag=0;
break;}
case 3:flag=0;break;
case 4:{map-=1;InitPic(map,***,***);
***=*** ***;***=*** ***;
map =1;InitPic(map,***,***);flag=1;break;}
case 6:{if(map==0||map==4)
{map-=1;map=5;map =2;
InitPic(map,***,***);
InitPic(map,*** ***,*** ***);
InitPic(map,*** 2****,*** 2****);
***=*** ***;***=*** ***;flag=1;BoxMove=1;}
else flag=0;
break;}
}
return flag;
}
void DrawWall(int i,int j)
{
DrawBack(i,j);
setfillstyle(9,1);
bar(STARTX 20*j-9,STARTY 20*i-9,STARTX 20*j 9,STARTY 20*i 9);
}
void DrawMan(int i,int j)
{
DrawBack(i,j);
setcolor(MANCOLOR);
circle(STARTX 20*j,STARTY 20*i,9);
arc(STARTX 20*j-3,STARTY 20*i-2,20,160,3);
arc(STARTX 20*j 4,STARTY 20*i-2,20,160,3);
arc(STARTX 20*j,STARTY 20*i-2,220,320,7);
}
void DrawBack(int i,int j)
{
setfillstyle(1,BKCOLOR);
bar(STARTX 20*j-9,STARTY 20*i-9,STARTX 20*j 9,STARTY 20*i 9);
}
void DrawObject(int i,int j)
{
DrawBack(i,j);
setcolor(OBJECTCOLOR);
line(STARTX 20*j-9,STARTY 20*i,STARTX 20*j 9,STARTY 20*i);
line(STARTX 20*j-9,STARTY 20*i-9,STARTX 20*j 9,STARTY 20*i 9);
line(STARTX 20*j-9,STARTY 20*i 9,STARTX 20*j 9,STARTY 20*i-9);
}
void DrawBox(int i,int j)
{
DrawBack(i,j);
setfillstyle(9,3);
bar(STARTX 20*j-9,STARTY 20*i-9,STARTX 20*j 9,STARTY 20*i 9);
}
void DrawMenu(int j)
{
int n;
char *s={"***** Game","***** Records","***** Records","***** Game"};
settextstyle(0,0,1);
setcolor(GREEN);
for(n=0;n《4;n )
outtextxy(250,170 n*20,s);
setcolor(RED);
outtextxy(250,170 j*20,s);
}
void DrawStar()
{
int w,h,i,dotx,doty,color,maxcolor;
w=getmaxx();
h=getmaxy();
maxcolor=getmaxcolor();
for(i=0;i《STARNUM;i )
{
***=1 random(w-1);
***=1 random(h-1);
***=random(maxcolor);
putpixel(***,***,***);
}
}
void ChangeStar()
{
int i,maxcolor;
maxcolor=getmaxcolor();
for(i=0;i《STARNUM;i )
{
***=random(maxcolor);
putpixel(***,***,***);
}
}
int TimeCome()
{
static long tm, old;
tm=biostime(0,tm);
if(tm-old《TIMEINT) return 0;
else
{
old=tm; return 1;
}
}
int JudgeWin()
{
int n=0,i,j;
for(i=0;i《10;i )
for(j=0;j《10;j )
if(map==6) n ;
if(n==BoxNum) return 1;
else return 0;
}
void InitMission1() /*第九关*/
{
int i,j;
for(i=0;i《10;i )
for(j=0;j《10;j )
map=0;
for(i=0;i《=5;i )
map=3;
for(i=5;i《=7;i )
{map=map=3;}
for(i=1;i《=4;i )
{map=map=map=3;}
map=map=map=3;
for(i=2;i《=4;i )
map=2;
map=map=2;
for(i=2;i《=3;i )
{map=map=4;}
map=4;
***=3;***=5;
map=1;
BoxNum=5;
}
void InitMission2()
{
int i,j;
for(i=0;i《10;i )
for(j=0;j《10;j )
map=0;
for(i=1;i《=5;i )
{map=map=3;}
for(i=2;i《=4;i )
{map=map=map=map=3;}
map=map=map=map=map=map=3;
map=map=map=map=2;
map=map=map=map=4;
***=1;***=3;
map=1;
BoxNum=4;
}
void ViewRecords()
{
FILE *fp;
int i;
setbkcolor(BKCOLOR);
cleardevice();
if((fp=fopen("record","r"))==NULL)
{
printf("\nerror on open file!");
getch();
exit(1);
}
gotoxy(1,1);
printf("\n\t\t\tRecord Information\n");
printf("Record-holder Achievement(s)\t Time(h:m:s)\t\tDate(y/m/d)");
for(i=0;i《MAX;i )
{fseek(fp,i*sizeof(Record),0);
fread(&r,sizeof(Record),1,fp);
printf("\n%-10s\t%d\t\t d:d:d\t\td/d/d",*****,*****,*****_hour,*****_min,*****_sec,*****_year,*****_mon,*****_day);}
fclose(fp);
gotoxy(10,25);
printf("Press any key to return mainmenu...");
}
void DeleteRecords()
{
int i;
FILE *fp;
fp=fopen("record","w");
for(i=0;i《MAX;i )
{
scpy(*****,"nameless");
*****=0;
gettime(&***);
geate(&***);
}
for(i=0;i《MAX;i )
fwrite(&r,sizeof(Record),1,fp);
fclose(fp);
}
void JudgeRecord()
{
int i=MissionNum-1;
time(&t2);
if(*****==0||difftime(t2,t1)《*****)
{
gotoxy(10,3);printf("\t\tYou have broken the record");
*****=difftime(t2,t1);
scpy(*****,name);
gettime(&***);
geate(&***);
WriteRecord();
}
else
{gotoxy(10,3);printf("\t\tYou have pass this mission");}
gotoxy(10,4);
printf("\t\tpress any key continue...");
getch();
getch();
}
void WriteRecord()
{
FILE *fp;
int i=MissionNum-1;
fp=fopen("record","rt ");
fseek(fp,i*sizeof(Record),0);
fwrite(&r,sizeof(Record),1,fp);
fclose(fp);
}
void RegisterStep()
{
int i;
StepNum ;
i=(StepNum-1)%STEPMAX;
Step=DirectionKey;
}
void ReverselyMove()
{
int i;
Add ad;
i=(StepNum-1)%STEPMAX;
if(Step==0) return;
else
{
switch(Step)
{
case Key_Up:{****=1;****=0;MoveBack(ad);break;}
case Key_Down:{****=-1;****=0;MoveBack(ad);break;}
case Key_Left:{****=0;****=1;MoveBack(ad);break;}
case Key_Right:{****=0;****=-1;MoveBack(ad);break;}
}
StepNum--;Step=0;BoxMove=0;
}
}
void MoveBack(Add a) /*一定可以移动*/
{
int i=(StepNum-1)%STEPMAX;
if(BoxMove==0)
{
map-=1;InitPic(map,***,***);
***=*** ***;***=*** ***;
map =1;InitPic(map,***,***);
}
else if(BoxMove==1)
{
map-=2;InitPic(map,p.x-a.x,p.y-a.y);
map =1;InitPic(map,***,***);
***=*** ***;***=*** ***;
map =1;InitPic(map,***,***);
}
}
点这里下载
p=map=map=4;
***=1;***=3;
map=1;
BoxNum=4;
}
void ViewRecords()
{
FILE *fp;
int i;
setbkcolor(BKCOLOR);
cleardevice();
if((fp=fopen("record","r"))==NULL)
{
printf("\nerror on open file!");
getch();
exit(1);
}
gotoxy(1,1);
printf("\n\t\t\tRecord Information\n");
printf("Record-holder Achievement(s)\t Time(h:m:s)\t\tDate(y/m/d)");
for(i=0;i《MAX;i )
{fseek(fp,i*sizeof(Record),0);
fread(&r,sizeof(Record),1,fp);
printf("\n%-10s\t%d\t\t d:d:d\t\td/d/d",*****,*****,*****_hour,*****_min,*****_sec,*****_year,*****_mon,*****_day);}
fclose(fp);
gotoxy(10,25);
printf("Press any key to return mainmenu...");
}
void DeleteRecords()
{
int i;
FILE *fp;
fp=fopen("record","w");
for(i=0;i《MAX;i )
{
scpy(*****,"nameless");
*****=0;
gettime(&***);
geate(&***);
}
for(i=0;i《MAX;i )
fwrite(&r,sizeof(Record),1,fp);
fclose(fp);
}
void JudgeRecord()
{
int i=MissionNum-1;
time(&t2);
if(*****==0||difftime(t2,t1)《*****)
{
gotoxy(10,3);printf("\t\tYou have broken the record");
*****=difftime(t2,t1);
scpy(*****,name);
gettime(&***);
geate(&***);
WriteRecord();
}
else
{gotoxy(10,3);printf("\t\tYou have pass this mission");}
gotoxy(10,4);
printf("\t\tpress any key continue...");
getch();
getch();
}
void WriteRecord()
{
FILE *fp;
int i=MissionNum-1;
fp=fopen("record","rt ");
fseek(fp,i*sizeof(Record),0);
fwrite(&r,sizeof(Record),1,fp);
fclose(fp);
}
void RegisterStep()
{
int i;
StepNum ;
i=(StepNum-1)%STEPMAX;
Step=DirectionKey;
}
void ReverselyMove()
{
int i;
Add ad;
i=(StepNum-1)%STEPMAX;
if(Step==0) return;
else
{
switch(Step)
{
case Key_Up:{****=1;****=0;MoveBack(ad);break;}
case Key_Down:{****=-1;****=0;MoveBack(ad);break;}
case Key_Left:{****=0;****=1;MoveBack(ad);break;}
case Key_Right:{****=0;****=-1;MoveBack(ad);break;}
}
StepNum--;Step=0;BoxMove=0;
}
}
void MoveBack(Add a) /*一定可以移动*/
{
int i=(StepNum-1)%STEPMAX;
if(BoxMove==0)
{
map-=1;InitPic(map,***,***);
***=*** ***;***=*** ***;
map =1;InitPic(map,***,***);
}
else if(BoxMove==1)
{
map-=2;InitPic(map,p.x-a.x,p.y-a.y);
map =1;InitPic(map,***,***);
***=*** ***;***=*** ***;
map =1;InitPic(map,***,***);
}
}

关于推箱子c语言程序代码到此分享完毕,希望能帮助到您。
本文编辑:admin

更多文章:


item是什么意思翻译(items是什么意思)

item是什么意思翻译(items是什么意思)

本文是您理解item是什么意思翻译的最后一站。我们将通过剖析items是什么意思,帮你打通任督二脉,彻底领悟。

2026年4月24日 13:40

setattribute事件(onclick事件,点击两次才运行调用的函数,具体代码如下;)

setattribute事件(onclick事件,点击两次才运行调用的函数,具体代码如下;)

常言道:“万丈高楼平地起”。理解setattribute事件这座大厦,也必须从onclick事件,点击两次才运行调用的函数,具体代码如下;这块基石开始。

2026年4月24日 13:20

抖音剪映使用方法教程(用剪映怎么剪视频)

抖音剪映使用方法教程(用剪映怎么剪视频)

关注本号的朋友都知道,我们一直在持续输出关于抖音剪映使用方法教程的干货。今天,我们就聚焦到大家反复问到的用剪映怎么剪视频上。

2026年4月24日 13:00

pipeline repair(把这段中文翻译成英文~急用啊~各位高手帮忙~高分!)

pipeline repair(把这段中文翻译成英文~急用啊~各位高手帮忙~高分!)

花费5分钟阅读本文,您将获得对pipeline repair和把这段中文翻译成英文~急用啊~各位高手帮忙~高分!的清晰认知,远超自己搜索数小时的效果。

2026年4月24日 12:40

layered fragrance香水(百元小众平价香水 不撞香!!)

layered fragrance香水(百元小众平价香水 不撞香!!)

从一个常见的误区说起:很多人学layered fragrance香水,却忽略了百元小众平价香水 不撞香!!。结果事倍功半。希望你不会再犯这个错误。

2026年4月24日 12:20

推箱子c语言程序代码(如何用C语言编写控制台小游戏)

推箱子c语言程序代码(如何用C语言编写控制台小游戏)

今天这份关于推箱子c语言程序代码的指南,将用80%的篇幅讲透如何用C语言编写控制台小游戏这个决定成败的细节,绝对让你不虚此行。

2026年4月24日 12:00

昆明程序员工资一般多少(程序员工资一般多少)

昆明程序员工资一般多少(程序员工资一般多少)

大家好,关于昆明程序员工资一般多少很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于程序员工资一般多少的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年4月24日 11:40

windows密码是什么(请问在win10里登入微软账户要输入windows密码,这是什么密码)

windows密码是什么(请问在win10里登入微软账户要输入windows密码,这是什么密码)

本文将围绕windows密码是什么展开,重点探讨三个方面:请问在win10里登入微软账户要输入windows密码,这是什么密码的基本概念、常见误区以及实践应用。让我们开始吧。

2026年4月24日 11:20

用冒泡法对10个整数排序(VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序)

用冒泡法对10个整数排序(VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序)

用冒泡法对10个整数排序的背后,隐藏着怎样的秘密?VB 从键盘上输入10个整数,用冒泡排序法对这10个数从小到大排序又在其中扮演了何种角色?带着疑问,我们一起探秘。

2026年4月24日 11:00

oracle中instr(oracle中查找一个字符串中某个字符的位置是什么函数)

oracle中instr(oracle中查找一个字符串中某个字符的位置是什么函数)

最新数据显示,关注oracle中instr的人中,超过70%都对oracle中查找一个字符串中某个字符的位置是什么函数抱有浓厚兴趣。本文将满足这一核心需求。

2026年4月24日 10:40

最近更新

热门文章

sql server解压安装教程(安装**L Server2008时,出现“查找**L Server2008 安装媒体”怎么解决啊)
2026-03-27 01:20:02 浏览:1
mysql insert into字段顺序问题(mysql insert into的问题)
2026-04-13 16:00:02 浏览:1
split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
标签列表