当前位置:首页 > 代码 > 正文

推箱子html代码(推箱子小游戏的代码)[20240428更新]

admin 发布:2024-04-28 18:44 125


今天给各位分享推箱子html代码的知识,其中也会对推箱子小游戏的代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

c语言推箱子代码

Here you are!

编译通过。

/* 推箱子游戏 */

#include dos.h

#include stdio.h

#include stdlib.h

#include ctype.h

#include conio.h

#include bios.h

#include alloc.h

/* 定义二维数组ghouse来记录屏幕上各点的状态,

其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。 */

char ghouse[20][20];

/* 以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。 */

char far *screen=(char far* )0xb8000000;

void putchxy(int y,int x,char ch,char fc,char bc)

{

screen[(x*160)+(y1)+0]=ch;

screen[(x*160)+(y1)+1]=(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[x][y]='w';

}

/* 在特定的坐标上画箱子并用数组记录状态的函数 */

void printbox(int x,int y)

{

putchxy(y-1,x-1,10,WHITE,BLACK);

ghouse[x][y]='b';

}

/* 在特定的坐标上画目的地并用数组记录状态的函数 */

void printwhither1(int x,int y,winer **win,winer **pw)

{

winer *qw;

putchxy(y-1,x-1,'*',YELLOW,BLACK);

ghouse[x][y]='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[x][y]='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[x][y]='i';

}

/* 初始化函数,初始化数组和屏幕 */

void init()

{

int i,j;

system("cls");

for(i=0;i20;i++)

for(j=0;j20;j++)

ghouse[i][j]=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 No.1");

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 No.3");

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 No.2");

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 No.4");

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[x-1][y]=0;printf(" ");

printbox(x-2,y);printman(x-1,y);

ghouse[x-2][y]='b';break;

case 'd':ghouse[x+1][y]=0;printf(" ");

printbox(x+2,y);printman(x+1,y);

ghouse[x+2][y]='b';break;

case 'l':ghouse[x][y-1]=0;printf(" ");

printbox(x,y-2);printman(x,y-1);

ghouse[x][y-2]='b';break;

case 'r':ghouse[x][y+1]=0;printf(" ");

printbox(x,y+2);printman(x,y+1);

ghouse[x][y+2]='b';break;

default: break;

}

}

/* 移动在目的地上的箱子到空地上 */

moveinbox(int x,int y,char a)

{switch(a)

{

case 'u':ghouse[x-1][y]='m';printf(" ");

printbox(x-2,y);printman(x-1,y);

ghouse[x-2][y]='b';break;

case 'd':ghouse[x+1][y]='m';printf(" ");

printbox(x+2,y);printman(x+1,y);

ghouse[x+2][y]='b';break;

case 'l':ghouse[x][y-1]='m';printf(" ");

printbox(x,y-2);printman(x,y-1);

ghouse[x][y-2]='b';break;

case 'r':ghouse[x][y+1]='m';printf(" ");

printbox(x,y+2);printman(x,y+1);

ghouse[x][y+2]='b';break;

default: break;

}

}

/* 移动在空地上的箱子到目的地上 */

moveboxin(int x,int y,char a)

{switch(a)

{

case 'u':ghouse[x-1][y]=0;printf(" ");

printboxin(x-2,y);printman(x-1,y);

ghouse[x-2][y]='i';break;

case 'd':ghouse[x+1][y]=0;printf(" ");

printboxin(x+2,y);printman(x+1,y);

ghouse[x+2][y]='i';break;

case 'l':ghouse[x][y-1]=0;printf(" ");

printboxin(x,y-2);printman(x,y-1);

ghouse[x][y-2]='i';break;

case 'r':ghouse[x][y+1]=0;printf(" ");

printboxin(x,y+2);printman(x,y+1);

ghouse[x][y+2]='i';break;

default: break;

}

}

/* 移动在目的地上的箱子到目的地 */

moveinboxin(int x,int y,char a)

{switch(a)

{

case 'u':ghouse[x-1][y]='m';printf(" ");

printboxin(x-2,y);printman(x-1,y);

ghouse[x-2][y]='i';break;

case 'd':ghouse[x+1][y]='m';printf(" ");

printboxin(x+2,y);printman(x+1,y);

ghouse[x+2][y]='i';break;

case 'l':ghouse[x][y-1]='m';printf(" ");

printboxin(x,y-2);printman(x,y-1);

ghouse[x][y-2]='i';break;

case 'r':ghouse[x][y+1]='m';printf(" ");

printboxin(x,y+2);printman(x,y+1);

ghouse[x][y+2]='i';break;

default: break;

}

}

/* 判断特定的坐标上的状态 */

int judge(int x,int y)

{int i;

switch(ghouse[x][y])

{

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[pw-x][pw-y]=='m') s++;

pw=pw-p;

}

if(s==0)

{

free(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语言小程序推箱子问题

你好,这是推箱子的全部代码

/*图形模式下的推箱子*/

#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

#includestring.h

#includebios.h

#includestdio.h

#includedos.h

#includegraphics.h

#includeconio.h

#includetime.h

#includestdlib.h

#includestdio.h

#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 struct star

{

int x;

int y;

int c;

}Star;

Star s[STARNUM];

typedef struct record

{

char name[20];

int second;

struct time t;

struct date d;

}Record;

Record r[MAX];

typedef struct c

{

int x;

int y;

}Add;

typedef struct a

{

int x;

int y;

}Player;

Player p;

char name[20]; /*进入游戏时记录玩家的姓名*/

time_t t1,t2; /*游戏结束时的时间*/

int Ide; /*开始进入游戏时,选择菜单时返的功能号(1,2,3)*/

int MissionNum; /*玩家正在玩的关数*/

int BoxNum; /*目的地的个数*/

int Key; /*玩家按键*/

int map[10][10]; /*地图.(空=0),(人=1),(箱子=2),(墙=3),(目的地=4),(人+目的地=5),(箱子+目的地=6)*/

int StepNum;

int DirectionKey; /*用来表示方向键最后一次按键*/

int BoxMove[STEPMAX];

int Step[STEPMAX];

/*函数定义*/

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(); /*画开始菜单(1.start game 2.view records 3.delete records 4.exit game)*/

}

void InputName()

{

char b;

char c;

do

{

printf("\n\nPlease input your password:");

scanf("%s",b);

}while(b!='l');

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,"d:\\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:{ad.x=-1;ad.y=0;flag=1;DirectionKey=Key;break;}

case Key_Down:{ad.x=1;ad.y=0;flag=1;DirectionKey=Key;break;}

case Key_Left:{ad.x=0;ad.y=-1;flag=1;DirectionKey=Key;break;}

case Key_Right:{ad.x=0;ad.y=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;i10;i++)

for(j=0;j10;j++)

map[i][j]=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:DrawBox(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+1MAX) MissionNum=1;

else MissionNum++;

InitMission(MissionNum);

setbkcolor(BKCOLOR);

cleardevice();

for(i=0;i10;i++)

for(j=0;j10;j++)

InitPic(map[i][j],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;iSTEPMAX;i++)

{Step[i]=BoxMove[i]=0;}

StepNum=0;

}

int Move(Add a)

{

int flag;

int i=StepNum%STEPMAX;

switch(map[p.x+a.x][p.y+a.y]) /*看下一位置为什么*/

{

case 0:{map[p.x][p.y]-=1;InitPic(map[p.x][p.y],p.x,p.y);

p.x=p.x+a.x;p.y=p.y+a.y;

map[p.x][p.y]+=1;InitPic(map[p.x][p.y],p.x,p.y);flag=1;break;}

case 2:{if(map[p.x+2*a.x][p.y+2*a.y]==0||map[p.x+2*a.x][p.y+2*a.y]==4)

{map[p.x][p.y]-=1;map[p.x+a.x][p.y+a.y]=1;map[p.x+2*a.x][p.y+2*a.y]+=2;

InitPic(map[p.x][p.y],p.x,p.y);

InitPic(map[p.x+a.x][p.y+a.y],p.x+a.x,p.y+a.y);

InitPic(map[p.x+2*a.x][p.y+2*a.y],p.x+2*a.x,p.y+2*a.y);

p.x=p.x+a.x;p.y=p.y+a.y;flag=1;BoxMove[i]=1;}

else flag=0;

break;}

case 3:flag=0;break;

case 4:{map[p.x][p.y]-=1;InitPic(map[p.x][p.y],p.x,p.y);

p.x=p.x+a.x;p.y=p.y+a.y;

map[p.x][p.y]+=1;InitPic(map[p.x][p.y],p.x,p.y);flag=1;break;}

case 6:{if(map[p.x+2*a.x][p.y+2*a.y]==0||map[p.x+2*a.x][p.y+2*a.y]==4)

{map[p.x][p.y]-=1;map[p.x+a.x][p.y+a.y]=5;map[p.x+2*a.x][p.y+2*a.y]+=2;

InitPic(map[p.x][p.y],p.x,p.y);

InitPic(map[p.x+a.x][p.y+a.y],p.x+a.x,p.y+a.y);

InitPic(map[p.x+2*a.x][p.y+2*a.y],p.x+2*a.x,p.y+2*a.y);

p.x=p.x+a.x;p.y=p.y+a.y;flag=1;BoxMove[i]=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[4]={"1.Start Game","2.View Records","3.Delete Records","4.Exit Game"};

settextstyle(0,0,1);

setcolor(GREEN);

for(n=0;n4;n++)

outtextxy(250,170+n*20,s[n]);

setcolor(RED);

outtextxy(250,170+j*20,s[j]);

}

void DrawStar()

{

int w,h,i,dotx,doty,color,maxcolor;

w=getmaxx();

h=getmaxy();

maxcolor=getmaxcolor();

for(i=0;iSTARNUM;i++)

{

s[i].x=1+random(w-1);

s[i].y=1+random(h-1);

s[i].c=random(maxcolor);

putpixel(s[i].x,s[i].y,s[i].c);

}

}

void ChangeStar()

{

int i,maxcolor;

maxcolor=getmaxcolor();

for(i=0;iSTARNUM;i++)

{

s[i].c=random(maxcolor);

putpixel(s[i].x,s[i].y,s[i].c);

}

}

int TimeCome()

{

static long tm, old;

tm=biostime(0,tm);

if(tm-oldTIMEINT) return 0;

else

{

old=tm; return 1;

}

}

int JudgeWin()

{

int n=0,i,j;

for(i=0;i10;i++)

for(j=0;j10;j++)

if(map[i][j]==6) n++;

if(n==BoxNum) return 1;

else return 0;

}

void InitMission1() /*第九关*/

{

int i,j;

for(i=0;i10;i++)

for(j=0;j10;j++)

map[i][j]=0;

for(i=0;i=5;i++)

map[0][i]=3;

for(i=5;i=7;i++)

{map[2][i]=map[i-1][1]=3;}

for(i=1;i=4;i++)

{map[6][i]=map[5][i+3]=map[i][0]=3;}

map[3][7]=map[4][7]=map[1][5]=3;

for(i=2;i=4;i++)

map[2][i]=2;

map[3][4]=map[4][5]=2;

for(i=2;i=3;i++)

{map[3][i]=map[4][i]=4;}

map[4][4]=4;

p.x=3;p.y=5;

map[3][5]=1;

BoxNum=5;

}

void InitMission2()

{

int i,j;

for(i=0;i10;i++)

for(j=0;j10;j++)

map[i][j]=0;

for(i=1;i=5;i++)

{map[0][i]=map[6][i]=3;}

for(i=2;i=4;i++)

{map[1][i+3]=map[i][7]=map[i+2][5]=map[i][0]=3;}

map[1][1]=map[2][1]=map[5][0]=map[5][5]=map[4][6]=map[6][0]=3;

map[2][4]=map[3][3]=map[4][2]=map[4][3]=2;

map[2][3]=map[3][2]=map[3][4]=map[4][4]=4;

p.x=1;p.y=3;

map[1][3]=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;iMAX;i++)

{fseek(fp,i*sizeof(Record),0);

fread(r[i],sizeof(Record),1,fp);

printf("\n%-10s\t%d\t\t %02d:%02d:%02d\t\t%02d/%02d/%02d",r[i].name,r[i].second,r[i].t.ti_hour,r[i].t.ti_min,r[i].t.ti_sec,r[i].d.da_year,r[i].d.da_mon,r[i].d.da_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;iMAX;i++)

{

strcpy(r[i].name,"nameless");

r[i].second=0;

gettime(r[i].t);

getdate(r[i].d);

}

for(i=0;iMAX;i++)

fwrite(r[i],sizeof(Record),1,fp);

fclose(fp);

}

void JudgeRecord()

{

int i=MissionNum-1;

time(t2);

if(r[i].second==0||difftime(t2,t1)r[i].second)

{

gotoxy(10,3);printf("\t\tYou have broken the record");

r[i].second=difftime(t2,t1);

strcpy(r[i].name,name);

gettime(r[i].t);

getdate(r[i].d);

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[MissionNum-1],sizeof(Record),1,fp);

fclose(fp);

}

void RegisterStep()

{

int i;

StepNum++;

i=(StepNum-1)%STEPMAX;

Step[i]=DirectionKey;

}

void ReverselyMove()

{

int i;

Add ad;

i=(StepNum-1)%STEPMAX;

if(Step[i]==0) return;

else

{

switch(Step[i])

{

case Key_Up:{ad.x=1;ad.y=0;MoveBack(ad);break;}

case Key_Down:{ad.x=-1;ad.y=0;MoveBack(ad);break;}

case Key_Left:{ad.x=0;ad.y=1;MoveBack(ad);break;}

case Key_Right:{ad.x=0;ad.y=-1;MoveBack(ad);break;}

}

StepNum--;Step[i]=0;BoxMove[i]=0;

}

}

void MoveBack(Add a) /*一定可以移动*/

{

int i=(StepNum-1)%STEPMAX;

if(BoxMove[i]==0)

{

map[p.x][p.y]-=1;InitPic(map[p.x][p.y],p.x,p.y);

p.x=p.x+a.x;p.y=p.y+a.y;

map[p.x][p.y]+=1;InitPic(map[p.x][p.y],p.x,p.y);

}

else if(BoxMove[i]==1)

{

map[p.x-a.x][p.y-a.y]-=2;InitPic(map[p.x-a.x][p.y-a.y],p.x-a.x,p.y-a.y);

map[p.x][p.y]+=1;InitPic(map[p.x][p.y],p.x,p.y);

p.x=p.x+a.x;p.y=p.y+a.y;

map[p.x][p.y]+=1;InitPic(map[p.x][p.y],p.x,p.y);

}

}

求啊哈c 推箱子

我的可能可以帮到你

int main()

{

printf("现在玩一个新游戏,叫推箱子。");

system("pause");

system("cls");

printf("如果玩不过,或觉得太简单,请按t键跳过。。\n");

system("pause");

system("cls");

char a[50][50] = {

" ### ",

" #*# ",

" # # ",

"####0######",

"#* 0S 0 *#",

"#####0#####",

" # # ",

" #*# ",

" ### ",

};

int i, x, y, p, q;

char ch;

x = 4; y = 5; p = 1; q = 5;

while (1)

{

//打印图像

for (i = 0; i 10; i++)

{

puts(a[i]);

}

ch = _getch();//扫描键盘

//向下走。

if (ch == 's' || ch == 'S')

{

if (a[x + 1][y] == '#')//判断是否碰到墙

{

}

else if (a[x + 1][y] == '0')//判断是否碰到箱子

{

if (a[x + 2][y] == ' ')//判断箱子后面是不是空的

{

a[x][y] = ' ';

x++;

a[x][y] = 'S';

a[x + 1][y] = '0';

}

else if (a[x + 2][y] == '*')//箱子后面是否是*

{

a[x][y] = ' ';

x++;

a[x][y] = 'S';

a[x + 1][y] = '@';

}

}

else if (a[x + 1][y] == ' ')//判断前面是不是空的

{

a[x][y] = ' ';

x++;

a[x][y] = 'S';

}

}

if (ch == 'w' || ch == 'W')

{

if (a[x - 1][y] == '#')//判断是否碰到墙

{

}

else if (a[x - 1][y] == '0')//判断是否碰到箱子

{

if (a[x - 2][y] == ' ')//判断箱子后面是不是空的

{

a[x][y] = ' ';

x--;

a[x][y] = 'S';

a[x - 1][y] = '0';

}

else if (a[x - 2][y] == '*')//箱子后面是否是*

{

a[x][y] = ' ';

x--;

a[x][y] = 'S';

a[x - 1][y] = '@';

}

}

else if (a[x - 1][y] == ' ')//判断前面是不是空的

{

a[x][y] = ' ';

x--;

a[x][y] = 'S';

}

}

if (ch == 'd' || ch == 'D')

{

if (a[x][y + 1] == '#')//判断是否碰到墙

{

}

else if (a[x][y + 1] == '0')//判断是否碰到箱子

{

if (a[x][y + 2] == ' ')//判断箱子后面是不是空的

{

a[x][y] = ' ';

y++;

a[x][y] = 'S';

a[x][y + 1] = '0';

}

else if (a[x][y + 2] == '*')//箱子后面是否是*

{

a[x][y] = ' ';

y++;

a[x][y] = 'S';

a[x][y + 1] = '@';

}

}

else if (a[x][y + 1] == ' ')//判断前面是不是空的

{

a[x][y] = ' ';

y++;

a[x][y] = 'S';

}

}

if (ch == 'a' || ch == 'A')

{

if (a[x][y - 1] == '#')//判断是否碰到墙

{

}

else if (a[x][y - 1] == '0')//判断是否碰到箱子

{

if (a[x][y - 2] == ' ')//判断箱子后面是不是空的

{

a[x][y] = ' ';

y--;

a[x][y] = 'S';

a[x][y - 1] = '0';

}

else if (a[x][y - 2] == '*')//箱子后面是否是*

{

a[x][y] = ' ';

y--;

a[x][y] = 'S';

a[x][y - 1] = '@';

}

}

else if (a[x][y - 1] == ' ')//判断前面是不是空的

{

a[x][y] = ' ';

y--;

a[x][y] = 'S';

}

}

if (ch == 't' || ch == 'T')

{

break;

}

system("cls");

if (a[4][1] == '@'a[1][4] == '@'a[7][5] == '@'a[4][9] == '@')

{

printf("恭喜你过关了!!!!\n");

system("pause");

system("cls");

break;

}

}

system("cls");

}

求个推箱子的C++代码 要有注解 800到1000行

//*******************************************************

Sokoban.h:  类定义   Sokoban.c:  类成员函数实现

Use_Sokoban.c:  主函数

请用VC6(别编译器的也行)先运行Use_Sokoban.c文件,要编译该文件一下,

再点Project- Add To Project- Files 选择Sokoban.c文件,

即将Sokoban.c加载到工程里,最后运行就OK拉。

 

//*******************************************************

Sokoban.h

//*******************************************************

#ifndef SOKOBAN_H_  //防止文件重复包含

#define SOKOBAN_H_

#include queue

using std::queue;

//每一步的数据类型

struct node 

{

 int bx, by; //箱子的坐标

 int px, py; //人的坐标

};

//推箱子类

class Sokoban 

{

private:

 enum {L = 15, H = 7};

 char GameMap[H][L]; //地图

 int Pex, Pey;  //人的位置

 int Boxx, Boxy;  //箱子的位置

    int Succeed, Prove; //是否成功到目的地, 是否可玩性

    int dx[4], dy[4]; //方向数组

protected:

 char Empty;

 char People;

 char Box;

 char Block;

 char Target;

 int dir;  //记录按键方向

 node s, e;

public:

 Sokoban();  //构建函数

 ~Sokoban() {} //析构函数,即为inline

 //地图初始化函数

 void Initial();

 //箱子路劲验证函数,参数为箱子坐标(bx,by),人坐标(px,py)

 void Box_Bfs(int bx, int by, int px, int py);

 //人路劲验证函数,人所到的目的地(ex,ey)

 bool People_Bfs(int ex, int ey);

 //地图刷新函数

 void Show();

 //按键判断函数

 void Button();

 //箱子人移动函数

 void Move();

 //验证越界函数

 bool Check(int x, int y); 

};

#endif

//*******************************************************

Sokoban.cpp

//*******************************************************

#include "Sokoban.h"

#include cstring

#include cstdlib

#include ctime

#include iostream

#include conio.h

using std::cout;

using std::endl;

Sokoban::Sokoban()  //构建函数即对变量初始化

{

 dir = -1;

 Succeed = Prove = 0;

 memset(GameMap, '.', sizeof(GameMap));

 Empty = '.';

 People = 'P';

 Box = '#';

 Block = '*';

 Target = 'T';

 //方向依次为上右下左

 dx[0] = -1;  dx[1] = 0;  dx[2] = 1;  dx[3] = 0;  

 dy[0] = 0;   dy[1] = 1;  dy[2] = 0;  dy[3] = -1;

    //随机种子,使程序每次运行时所产生的随机数不同

 srand(time(0));

}

//地图初始化函数

void Sokoban::Initial()

{

 int count = 0, x, y;

 //对地图中随机产生25个阻碍物

 while(count != 25)

 {

  x = rand()%H;

  y = rand()%L;

        if(GameMap[x][y] == Empty)

  {

   GameMap[x][y] = Block;

      count++;

  }

 }

 while(true) //随机产生人开始的位置

 {

  x = rand()%H;

  y = rand()%L;

     if(GameMap[x][y] == Empty)

  {

   GameMap[x][y] = People;

   Pex = x;

   Pey = y;

   break;

  }

 }

 while(true) //随机产生箱子开始的位置

 {

  x = rand()%H;

  y = rand()%L;

  //不让箱子在地图的边界处

     if(GameMap[x][y] == Empty  x != 0  y != 0

   x != H-1  y != L-1)

  {

   GameMap[x][y] = Box;

   Boxx = x;

   Boxy = y;

   break;

  }

 }

 while(true) //随机产生目标的位置

 {

  x = rand()%H;

  y = rand()%L;

     if(GameMap[x][y] == Empty)

  {

   GameMap[x][y] = Target;

   break;

  }

 }

 //对游戏地图检查是否可将箱子推到目的地,即判断游戏可玩性

 Sokoban::Box_Bfs(Boxx, Boxy, Pex, Pey); 

 //如游戏不可玩,即再随机产生地图

 if(!Prove)

 {

        memset(GameMap, '.', sizeof(GameMap));

  Sokoban::Initial();

 }

 else

  Sokoban::Show();

}

//箱子路劲验证函数

//用BFS算法对箱子验证是否可到目的地

void Sokoban::Box_Bfs(int bx, int by, int px, int py)

{

 queuenode_Box; //创建箱子队列

 //visit对上一步走到下一步的记录,防止箱子走重复路劲

 //visit[i][j][z][k]表示箱子从点(i,j)到点(z,k)

 //visit[][][][]为0时表示为走过,1时表示已走过

 int visit[H][L][H][L];

    

 memset(visit, 0, sizeof(visit)); //visit数组初始化 

 s.bx = bx;  s.by = by;  //将起始的箱子、人位置放入队列

 s.px = px;  s.py = py;

 _Box.push(s);

 int pe_x, pe_y;

 while(!_Box.empty()) //队列为空时跳出

    {

        s = _Box.front();

        _Box.pop();

      

        if(GameMap[s.bx][s.by] == Target)  //到达目的地

        {

            Prove = 1;

            break;

        }

        for(int i = 0; i  4; i++)

        {

            e.bx = s.bx + dx[i];  e.by = s.by + dy[i];

          

            switch(i) //人推箱子的位置

            {

            case 0:  pe_x = s.bx + dx[2]; pe_y = s.by + dy[2]; break;

            case 1:  pe_x = s.bx + dx[3]; pe_y = s.by + dy[3]; break;

            case 2:  pe_x = s.bx + dx[0]; pe_y = s.by + dy[0]; break;

            case 3:  pe_x = s.bx + dx[1]; pe_y = s.by + dy[1]; break;

            }

 

   //验证箱子和人的位置的合法性

            if(!Check(e.bx, e.by) || !Check(pe_x, pe_y)

            || GameMap[e.bx][e.by] == Block || GameMap[pe_x][pe_y] == Block

            || visit[s.bx][s.by][e.bx][e.by] )

                continue;

 

   //如人可推箱子即进入队列

            if(Sokoban::People_Bfs(pe_x, pe_y)) 

            {

    //保存人推箱子后的位置

                e.px = pe_x;  e.py = pe_y;

                _Box.push(e);

                visit[s.bx][s.by][e.bx][e.by] = 1; //箱子路劲的标记

            }

        }

 }

}

 

//人路劲验证函数

//用BFS算法对人验证是否可推箱子

bool Sokoban::People_Bfs(int ex, int ey)

{

 queuenode_People;

    node t, end;

 //visit数组对人的路劲进行标记,0为未走过,1为走过

    int visit[H][L]; 

 //visit数组初始化为0

 memset(visit, 0, sizeof(visit));

    t.px = s.px;  t.py = s.py;  //人初始位置进入队列

    _People.push(t);

    visit[t.px][t.py] = 1;

   

    while(!_People.empty()) //对立为空时跳出

    {

        t = _People.front();

        _People.pop();

        if(t.px == ex  t.py == ey)  //人可到达(ex,ey)该点

   return 1;

        for(int i = 0; i  4; i++)

        {

            end.px = t.px + dx[i];  end.py = t.py + dy[i];

   //检查人的位置合法性

            if(!Check(end.px, end.py) || GameMap[end.px][end.py] == Block

   || GameMap[end.px][end.py] == Box || visit[end.px][end.py])

                 continue;

   //进入队列

            _People.push(end);

            visit[end.px][end.py] = 1; //记录

        }

    }

    return 0;

}

 

//地图刷新函数

void Sokoban::Show()

{

 int i, j;

 while(true)

 {  

     //每半秒刷新一次地图

        clock_t  s = clock();

  while(clock() - s  CLOCKS_PER_SEC/2)

   ;

  //先判断按键在移动

  Sokoban::Button();  

  Sokoban::Move();

  system("cls");

  for(i = 0; i  H; i++)

  {

   for(j = 0; j  L; j++)

      cout  GameMap[i][j];

      cout  endl;

  }

      cout  endl;

  

  cout  "\n**********************************"  endl;

  cout  "*     小小C++语言推箱子游戏      *"  endl;

  cout  "*     游戏规则:                  *"  endl;

  cout  "*     P: 人        #: 箱子       *"  endl;

        cout  "*     *: 障碍物    T: 目的地     *"  endl;

  cout  "**********************************"  endl;

  cout  "*       每次游戏地图不一样       *"  endl;

  cout  "*    人将箱子推到目的地即过关    *"  endl;

  cout  "*所给地图,一定可过关,请慎重移箱子*"  endl;

  cout  "*   箱子无路可走时,机器不会提示  *"  endl;

  cout  "**********************************"  endl;

  //箱子成功到达目的地

  if(Succeed)

  {

   cout  "\n       ^_^  _"  endl;

   cout  "恭喜过关成功! 再来一盘吧"  endl;

   getchar();

   break;

  }

 }

}

 

//按键判断函数

void Sokoban::Button()

{

 int key;

 if(kbhit() != 0) //检查当前是否有键盘输入,若有则返回一个非0值,否则返回0

 { 

  while(kbhit() != 0)  //可能存在多个按键,要全部取完,以最后一个为主

      key = getch(); //将按键从控制台中取出并保存到key中

  switch(key)

  {  

   //上

   case 72:  dir = 0;

          break;

   //右

            case 77:  dir = 1;     

          break;

            //下

   case 80:  dir = 2; 

          break;

   //左

   case 75:  dir = 3; 

          break;

  }

 }

}

 

//人推箱子移动函数

void Sokoban::Move()

{

 int x, y;

 //有按键时

 if(dir != -1) 

 {

  //人所推向的位置坐标

  x = Pex + dx[dir];  y = Pey + dy[dir];

  //人所推位置为空,即走向该位置

  if(Check(x, y)  GameMap[x][y] == '.')

  {

   GameMap[Pex][Pey] = '.';  //人的位置改变

   GameMap[x][y] = 'P';

   Pex = x;  Pey = y;

   dir = -1;  //按键记录为无即-1

  }

  else //人所推位置为箱子,即将箱子推向该方向的前面这点

   if(Check(x, y)  GameMap[x][y] == '#'

    Check(x+dx[dir], y+dy[dir])

    GameMap[ x+dx[dir] ][ y+dy[dir] ] == '.')

   {

    GameMap[Boxx][Boxy] = '.';  //箱子的位置改变

    GameMap[x+dx[dir] ][ y+dy[dir] ] = '#';

    Boxx = x + dx[dir];  Boxy = y + dy[dir];

              

    GameMap[Pex][Pey] = '.';  //人的位置改变

       GameMap[x][y] = 'P';

       Pex = x;  Pey = y;

    dir = -1;

   }

   else  //将箱子推向该方向的前面这点为目的地

    if(Check(x, y)  GameMap[x][y] == '#'

        Check(x+dx[dir], y+dy[dir])

        GameMap[ x+dx[dir] ][ y+dy[dir] ] == 'T')

    {

     GameMap[Boxx][Boxy] = '.';  //箱子的位置改变

        GameMap[x+dx[dir] ][ y+dy[dir] ] = '#';

        Boxx = x + dx[dir];  Boxy = y + dy[dir];

              

        GameMap[Pex][Pey] = '.';  //人的位置改变

           GameMap[x][y] = 'P';

           Pex = x;  Pey = y;

        dir = -1;

     Succeed = 1;  //记录成功到达目的地

    }

 }

}

 

//判断越界情况

bool Sokoban::Check(int x, int y)

{

 if(x  0 || x = H || y  0 || y = L)

        return 0;

    else

        return 1;

}

//*************************************************

Use_Sokoban.cpp

//*************************************************

#include iostream

#include "Sokoban.h"

using namespace std;

 

int main()

{

 Sokoban s;

 s.Initial();

 return 0;

}

//*************************************************

关于推箱子html代码和推箱子小游戏的代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://www.ahzz.com.cn/post/774.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载