#pragma once
#define A 2
#define B 6
#define C 5
typedef struct
{
int x, y;
}Point;
Point point[] =
{
{
8,8},{
9,9},{
7,10},{
8,6},{
8,8},{
11,13},{
8,10},{
7,10},{
9,11},{
8,7},{
6,12},{
7,8},{
13,10},{
7,8},{
7,8},{
9,10},{
7,9},{
9,10},
{
8,10},{
8,7},{
8,11},{
9,9},{
8,10},{
9,14},{
10,11},{
12,13},{
12,15},{
13,16},{
7,9},{
7,12},{
8,9},{
8,8},{
12,14},{
13,15},{
10,10},
{
12,15},{
8,9},{
12,12},{
10,11},{
7,7}
};
int Maps[][16][16] =
{
{
{
0,0,1,1,1,0,0,0},{
0,0,1,3,1,0,0,0},{
0,0,1,0,1,1,1,1},{
1,1,1,4,0,4,3,1},
{
1,3,0,4,5,1,1,1},{
1,1,1,1,4,1,0,0},{
0,0,0,1,3,1,0,0},{
0,0,0,1,1,1,0,0}
},
{
{
1,1,1,1,1,0,0,0,0},{
1,0,0,0,1,0,0,0,0},{
1,0,4,4,1,0,1,1,1},{
1,5,4,0,1,0,1,3,1},
{
1,1,1,0,1,1,1,3,1},{
0,1,1,0,0,0,0,3,1},{
0,1,0,0,0,1,0,0,1},{
0,1,0,0,0,1,1,1,1},{
0,1,1,1,1,1,0,0,0}
},
{
{
0,1,1,1,1,1,1,1,0,0},{
0,1,0,0,0,0,0,1,1,1},{
1,1,4,1,1,1,0,0,0,1},{
1,5,0,0,4,0,0,4,0,1},
{
1,0,3,3,1,0,4,0,1,1},{
1,1,3,3,1,0,0,0,1,0},{
0,1,1,1,1,1,1,1,1,0}
},
{
{
0,1,1,1,1,0},{
1,1,0,0,1,0},{
1,5,0,4,1,0},{
1,1,0,0,1,1},{
1,1,4,4,0,1},{
1,3,4,0,0,1},
{
1,3,3,7,3,1},{
1,1,1,1,1,1}
},
{
{
0,1,1,1,1,1,0,0},{
0,1,0,5,1,1,1,0},{
0,1,0,4,0,0,1,0},{
1,1,1,0,1,0,1,1},{
1,3,1,0,1,0,0,1},
{
1,3,4,0,0,1,0,1},{
1,3,0,0,0,4,0,1},{
1,1,1,1,1,1,1,1}
},
{
{
0,0,0,1,1,1,1,1,1,1,0,0,0},{
1,1,1,1,0,0,0,0,0,1,0,0,0},{
1,0,0,0,3,1,1,1,0,1,0,0,0},
{
1,0,1,0,1,0,0,0,0,1,1,0,0},{
1,0,1,0,4,0,4,1,3,0,1,0,0},{
1,0,1,0,0,7,0,0,1,0,1,0,0},{
1,0,3,1,4,0,4,0,1,0,1,0,0},
{
1,1,0,0,0,0,1,0,1,0,1,1,1},{
0,1,0,1,1,1,3,0,0,0,0,5,1},{
0,1,0,0,0,0,0,1,1,0,0,0,1},{
0,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{
0,0,0,1,1,1,1,1,1,1},{
0,0,1,1,0,0,1,0,5,1},{
0,0,1,0,0,0,1,4,0,1},{
0,0,1,4,0,0,4,0,0,1},
{
0,0,1,0,4,1,1,0,0,1},{
1,1,1,0,4,0,1,0,1,1},{
1,3,3,3,3,3,0,0,1,0},{
1,1,1,1,1,1,1,1,1,0}
},
{
{
0,0,0,1,1,1,1,1,1,0},{
0,1,1,1,0,0,0,0,1,0},{
1,1,3,0,4,1,1,0,1,1},{
1,3,3,4,0,4,0,0,5,1},
{
1,3,3,0,4,0,4,0,1,1},{
1,1,1,1,1,1,0,0,1,0},{
0,0,0,0,0,1,1,1,1,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,0,5,1},{
1,1,1,1,1,1,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,1},{
1,3,3,4,3,3,1},{
1,3,3,1,3,3,1},{
1,0,4,4,4,0,1},{
1,0,0,4,0,0,1},{
1,0,4,4,4,0,1},
{
1,0,0,1,0,5,1},{
1,1,1,1,1,1,1}
},
{
{
0,1,1,1,1,0,0,1,1,1,1,1},{
1,1,0,0,1,0,0,1,0,0,0,1},{
1,0,4,0,1,1,1,1,4,0,0,1},{
1,0,0,4,3,3,3,3,0,4,0,1},
{
1,1,0,0,0,0,1,0,5,0,1,1},{
0,1,1,1,1,1,1,1,1,1,1,0}
},
{
{
0,0,1,1,1,1,1,0},{
1,1,1,0,0,5,1,0},{
1,0,0,4,3,0,1,1},{
1,0,0,3,4,3,0,1},{
1,1,1,0,7,4,0,1},{
0,0,1,0,0,0,1,1},
{
0,0,1,1,1,1,1,0}
},
{
{
0,0,1,1,1,1,1,1,1,0},{
0,1,1,0,0,0,0,0,1,1},{
0,1,0,4,0,0,4,3,0,1},{
1,1,0,0,1,1,3,4,0,1},{
1,0,0,4,5,1,4,3,0,1},
{
1,0,0,0,1,1,3,4,1,1},{
1,1,1,4,1,0,4,3,0,1},{
0,1,0,0,3,0,1,1,0,1},{
0,1,0,0,0,0,1,0,0,1},{
0,1,1,3,0,1,1,0,1,1},{
0,0,1,1,3,1,0,0,1,0},
{
0,0,0,1,0,0,0,1,1,0},{
0,0,0,1,1,1,1,1,0,0}
},
{
{
1,1,1,1,1,1,1,1},{
1,0,0,1,0,0,0,1},{
1,0,4,3,3,4,0,1},{
1,5,4,3,7,0,1,1},{
1,0,4,3,3,4,0,1},
{
1,0,0,1,0,0,0,1},{
1,1,1,1,1,1,1,1}
},
{
{
0,1,1,1,1,1,1,0},{
1,1,0,0,0,0,1,1},{
1,0,4,0,4,4,0,1},{
1,3,3,3,3,3,3,1},{
1,0,4,4,0,4,0,1},
{
1,1,1,0,5,1,1,1},{
0,0,1,1,1,1,0,0}
},
{
{
0,0,1,1,1,1,1,1,1,1},{
0,0,1,0,0,0,0,1,1,1},{
0,0,1,0,4,0,0,0,0,1},{
1,1,1,0,4,0,1,1,0,1},{
1,3,3,3,0,4,0,0,0,1},
{
1,3,3,3,4,1,4,0,1,1},{
1,1,1,1,0,1,0,4,0,1},{
0,0,0,1,0,0,0,5,0,1},{
0,0,0,1,1,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,0,0,0},{
1,0,0,0,0,1,0,0,0},{
1,0,4,4,4,1,1,0,0},{
1,0,0,1,3,3,1,1,1},{
1,1,0,0,3,3,4,0,1},
{
0,1,0,0,5,0,0,0,1},{
0,1,1,1,1,1,1,1,1}
},
{
{
0,0,1,1,1,1,1,1,1,1},{
0,0,1,0,0,0,1,3,0,1},{
0,1,1,0,0,4,3,3,3,1},{
0,1,0,0,4,0,1,7,3,1},
{
1,1,0,1,1,4,1,0,1,1},{
1,0,0,0,4,0,0,4,0,1},{
1,0,0,0,1,0,0,0,0,1},{
1,1,1,1,1,1,1,5,0,1},{
0,0,0,0,0,0,1,1,1,1}
},
{
{
0,1,1,1,1,1,1,1,0,0},{
0,1,3,3,3,3,0,1,0,0},{
1,1,1,3,3,3,4,1,1,1},{
1,0,0,4,1,4,0,4,0,1},
{
1,0,4,4,0,0,1,4,0,1},{
1,0,0,0,0,1,0,0,0,1},{
1,1,1,1,0,5,0,1,1,1},{
0,0,0,1,1,1,1,1,0,0}
},
{
{
1,1,1,1,1,1,1},{
1,3,3,4,3,3,1},{
1,3,3,1,3,3,1},{
1,0,4,4,4,0,1},{
1,0,0,4,0,0,1},{
1,0,4,4,4,0,1},
{
1,0,0,1,5,0,1},{
1,1,1,1,1,1,1}
},
{
{
0,0,0,1,1,1,1,1,1,0,0},{
0,0,0,1,0,3,3,3,1,0,0},{
1,1,1,1,3,3,3,3,1,0,0},{
1,0,0,1,1,1,4,0,1,1,1},
{
1,0,4,0,4,0,0,4,4,0,1},{
1,5,0,4,0,4,0,0,0,0,1},{
1,0,0,0,1,1,1,0,0,0,1},{
1,1,1,1,1,0,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,1,1,0},{
1,0,0,0,0,0,0,1,0},{
1,0,1,4,4,0,0,1,0},{
1,0,3,3,3,1,0,1,0},{
1,1,3,3,3,4,0,1,1},
{
0,1,0,1,1,0,4,0,1},{
0,1,4,0,0,4,0,0,1},{
0,1,0,0,1,0,0,5,1},{
0,1,1,1,1,1,1,1,1}
},
{
{
0,0,1,1,1,1,1,0,0,0},{
1,1,1,0,0,0,1,1,1,1},{
1,0,0,0,4,0,0,4,0,1},{
1,0,4,0,5,4,0,0,0,1},{
1,1,1,4,4,1,1,1,1,1},
{
0,0,1,0,0,3,3,1,0,0},{
0,0,1,3,3,3,3,1,0,0},{
0,0,1,1,1,1,1,1,0,0}
},
{
{
1,1,1,1,1,1,0,0,0,1,1,1,1,1},{
1,0,0,0,0,1,1,1,0,1,0,0,0,1},{
1,0,0,4,0,4,0,1,0,1,3,3,3,1},
{
1,0,1,0,0,4,0,1,1,1,0,0,3,1},{
1,0,0,4,4,4,0,0,0,4,0,5,3,1},{
1,1,1,0,0,4,0,0,4,1,0,0,3,1},{
0,0,1,0,0,4,1,4,0,1,3,3,3,1},
{
0,0,1,1,0,0,0,0,0,1,0,0,3,1},{
0,0,0,1,1,1,1,1,1,1,1,1,1,1}
},
{
{
0,0,0,0,0,1,1,1,1,1,1},{
0,1,1,1,1,1,3,0,0,0,1},{
0,1,0,0,1,3,3,1,1,0,1},{
0,1,0,0,4,3,3,0,0,0,1},
{
0,1,0,0,1,0,3,1,0,1,1},{
1,1,1,0,1,1,4,1,0,0,1},{
1,0,4,0,0,0,0,4,4,0,1},{
1,0,1,4,1,0,0,1,0,0,1},{
1,5,0,0,1,1,1,1,1,1,1},
{
1,1,1,1,1,0,0,0,0,0,0}
},
{
{
0,1,1,1,1,1,1,1,1,1,0,0,0},{
0,1,0,0,0,1,1,0,0,1,1,1,1},{
0,1,0,4,0,0,0,0,0,0,0,0,1},{
0,1,1,4,1,1,1,0,1,1,0,0,1},
{
0,1,0,0,1,1,0,7,0,1,0,1,1},{
0,1,0,4,3,3,3,3,3,3,0,1,0},{
1,1,0,1,1,1,0,3,0,1,0,1,0},{
1,0,0,0,0,0,4,1,1,1,4,1,0},
{
1,0,0,0,1,0,0,0,0,4,5,1,0},{
1,1,1,1,1,4,1,0,1,1,1,1,0},{
0,0,0,0,1,0,0,0,1,0,0,0,0},{
0,0,0,0,1,1,1,1,1,0,0,0,0}
},
{
{
0,0,0,0,0,0,1,1,1,1,1,1,1,1,1},{
0,0,0,0,0,0,1,0,0,0,0,0,0,0,1},{
0,0,0,0,0,0,1,0,1,0,1,0,1,0,1},
{
0,0,0,0,0,0,1,0,0,4,0,4,1,0,1},{
1,1,1,1,1,1,1,0,0,0,4,0,0,0,1},{
1,3,3,1,0,0,1,1,0,4,0,4,1,0,1},{
1,3,3,0,0,0,1,1,0,4,0,4,0,0,1},
{
1,3,3,1,0,0,1,1,0,1,1,1,1,1,1},{
1,3,3,1,0,1,0,4,0,4,0,1,0,0,0},{
1,3,3,0,0,0,0,0,4,0,0,1,0,0,0},{
1,0,0,1,1,1,5,0,0,1,1,1,0,0,0},
{
1,1,1,1,0,1,1,1,1,1,0,0,0,0,0}
},
{
{
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0},{
1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0},{
1,0,0,4,0,4,0,1,0,1,1,1,1,1,1,1},
{
1,0,0,0,4,0,0,1,0,1,7,3,7,3,7,1},{
1,1,0,4,0,4,0,1,1,1,3,7,3,7,3,1},{
0,1,4,0,4,0,0,1,0,0,7,3,7,3,7,1},{
0,1,5,4,0,4,0,0,0,0,3,7,3,7,1,1},
{
0,1,4,0,4,0,0,1,0,0,7,3,7,3,7,1},{
1,1,0,4,0,4,0,1,1,1,3,7,3,7,3,1},{
1,0,0,0,4,0,0,1,0,1,7,3,7,3,7,1},
{
1,0,0,4,0,4,0,1,0,1,1,1,1,1,1,1},{
1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0},{
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0}
},
{
{
1,1,1,1,1,1,1,1,0},{
1,3,3,3,3,3,3,1,0},{
1,0,0,4,0,1,0,1,1},{
1,0,4,0,1,0,4,0,1},{
1,1,4,0,4,0,4,0,1},
{
0,1,0,0,5,0,0,0,1},{
0,1,1,1,1,1,1,1,1}
},
{
{
0,0,1,1,1,1,1,1,1,1,1,1},{
1,1,1,0,0,0,3,4,5,0,0,1},{
1,0,0,0,1,1,4,1,1,0,0,1},{
1,0,0,0,7,0,3,0,3,0,1,1},
{
1,1,0,4,1,1,4,1,1,0,1,0},{
0,1,0,0,0,0,3,0,0,0,1,0},{
0,1,1,1,1,1,1,1,1,1,1,0}
},
{
{
0,0,0,1,1,1,1,1,1},{
1,1,1,1,3,0,0,5,1},{
1,0,0,4,4,4,0,0,1},{
1,3,1,1,3,1,1,3,1},{
1,0,0,0,4,0,0,0,1},
{
1,0,0,4,3,1,0,1,1},{
1,1,1,1,0,0,0,1,0},{
0,0,0,1,1,1,1,1,0}
},
{
{
0,1,1,1,1,1,1,0},{
0,1,3,0,3,3,1,0},{
0,1,3,0,4,3,1,0},{
1,1,1,0,0,4,1,1},{
1,0,4,0,0,4,0,1},
{
1,0,1,4,1,1,0,1},{
1,0,0,0,5,0,0,1},{
1,1,1,1,1,1,1,1}
},
{
{
0,0,0,0,1,1,1,1,1,1,0,0,0,0},{
0,0,1,1,1,0,0,0,0,1,1,1,0,0},{
0,0,1,0,0,0,1,4,0,0,0,1,1,1},{
0,0,1,0,0,0,4,0,0,0,4,4,0,1},
{
0,0,1,0,4,4,0,1,4,0,0,0,0,1},{
0,0,1,1,0,0,0,4,0,0,0,4,0,1},{
1,1,1,1,1,1,0,1,4,1,1,1,1,1},{
1,3,3,5,0,1,4,0,0,1,0,0,0,0},
{
1,3,1,3,3,0,0,4,1,1,0,0,0,0},{
1,3,3,3,3,4,1,0,1,0,0,0,0,0},{
1,3,3,3,3,0,0,0,1,0,0,0,0,0},{
1,1,1,1,1,1,1,1,1,0,0,0,0,0}
},
{
{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{
1,0,0,0,0,0,0,1,0,0,0,0,0,0,1},{
1,0,4,0,1,4,0,1,0,4,1,1,4,0,1},
{
1,0,1,0,0,4,0,1,0,0,0,0,0,0,1},{
1,0,0,0,1,1,4,1,4,1,1,4,4,0,1},{
1,0,1,0,1,0,3,3,3,0,1,0,0,0,1},{
1,0,4,0,0,3,0,1,0,3,4,0,0,0,1},
{
1,0,4,1,5,4,3,3,3,1,0,1,0,0,1},{
1,0,0,0,0,3,0,1,0,3,0,0,4,0,1},{
1,0,1,1,3,4,1,1,1,4,3,0,1,0,1},{
1,0,1,0,4,3,3,3,3,3,0,1,1,0,1},
{
1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},{
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,1,1,1,0},{
1,0,0,0,1,1,0,0,1,0},{
1,0,1,0,4,0,4,0,1,0},{
1,0,0,7,3,1,0,0,1,0},{
1,1,0,1,3,5,3,1,1,0},
{
1,1,4,1,1,1,7,1,1,1},{
1,0,0,0,0,0,0,0,0,1},{
1,0,0,0,1,1,0,1,0,1},{
1,1,1,1,1,1,0,0,0,1},{
0,0,0,0,0,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,1,1,0,0,0,0,0,0,0},{
1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},{
1,0,4,4,0,0,0,1,1,1,0,0,0,0,0},
{
1,0,0,4,0,4,4,4,0,1,1,1,1,1,0},{
1,1,0,1,1,0,3,3,3,0,0,0,0,1,1},{
0,1,0,1,5,1,3,3,3,1,1,1,4,0,1},
{
0,1,0,1,0,4,3,3,3,0,0,0,0,0,1},{
1,1,0,1,0,4,3,3,3,4,0,1,0,1,1},{
1,0,0,1,1,1,1,1,0,1,1,1,0,1,0},
{
1,0,0,0,0,0,0,4,0,0,0,4,0,1,0},{
1,1,1,1,1,1,1,1,1,1,1,0,0,1,0},{
0,0,0,0,0,0,0,0,0,0,1,1,1,1,0}
},
{
{
0,0,0,1,1,1,1,1,0},{
0,0,0,1,0,5,0,1,0},{
0,0,0,1,4,4,4,1,0},{
1,1,1,1,0,0,0,1,0},{
1,0,0,0,3,4,4,1,1},
{
1,0,4,3,4,3,0,3,1},{
1,0,0,1,3,1,3,1,1},{
1,1,1,1,1,1,1,1,0}
},
{
{
1,1,1,1,1,1,1,1,1,1,1,1},{
1,3,3,3,0,1,0,0,0,0,0,1},{
1,3,3,0,0,1,0,1,1,0,0,1},{
1,3,3,0,0,0,0,0,1,0,0,1},
{
1,3,3,0,0,1,0,4,1,1,0,1},{
1,3,3,3,0,1,4,0,4,0,0,1},{
1,1,1,1,1,1,0,0,4,4,0,1},{
0,1,1,0,0,4,0,4,4,0,0,1},{
0,1,5,0,4,4,4,0,0,1,0,1},
{
0,1,1,0,4,0,1,1,0,0,0,1},{
0,0,1,0,0,0,0,0,0,0,0,1},{
0,0,1,1,1,1,1,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,1,1,1,0,0},{
1,0,0,0,0,0,0,0,1,0,0},{
1,0,0,4,0,4,0,4,1,0,0},{
1,1,0,1,4,1,1,0,1,0,0},{
0,1,0,3,3,0,3,3,1,1,0},
{
0,1,1,3,3,0,3,3,0,1,0},{
0,0,1,0,1,1,4,1,0,1,1},{
0,0,1,4,0,4,0,4,0,0,1},{
0,0,1,0,0,0,0,0,0,5,1},{
0,0,1,1,1,1,1,1,1,1,1}
},
{
{
1,1,1,1,1,1,1},{
1,3,0,3,0,3,1},{
1,0,4,4,4,0,1},{
1,3,4,5,4,3,1},{
1,0,4,4,4,0,1},{
1,3,0,3,0,3,1},{
1,1,1,1,1,1,1}
}
};
void GameOperate(int Map[][20], int* n, int* m, int* js, int* sum, int* data, int* sl, int* guanshu, char* ch);
void EasyGameOperate(int Map[][20], int* n, int* m, int* js, int* sum, int* data, int* sl, int* guanshu, char* ch);
void EasyMap(int Map[20][20], int* n, int* m, char* ch);
void MiddleMap(int Map[20][20], int* n, int* m, char* ch);
void DifficultyMap(int Map[][20], int* n, int* m, char* ch);
void SelectMap(int Map[][20], int* n, int* m, char* ch, int guan);
void MenuTwo(char* ch);
void MenuOne(char* ch);
void Menu(char* ch);
void PlayGame(int Map[20][20], int* n, int* m, char* ch);
void EasyGame(char* ch);
void MiddleGame(char* ch);
void DifficultyGame(char* ch);
void Operation(char* ch);
void Introduction(char* ch);
void Gameintor(char* ch);
void Autor(char* ch);
void Select(char* ch);
void SelectGame(char* ch, int guan);
void Gotoxy(int x, int y);
void Password(char* ch);
void Hide();
void MyTime();
int BoxData(int Map[][20], int* n, int* m);
int GroundData(int Map[][20], int* n, int* m);
int DrawMap(int Map[20][20], int* n, int* m, int* guanshu);
int GameReady();
int SelectGameReady(char* ch, int guan);
int data = 0;
int* bushu = &data;
int kongge = 0;
int* KonGe = &kongge;
int xianshi = 0;
int* XianShi = &xianshi;
int yanchi = 0;
int* YanChi = &yanchi;
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include "Sokoban.h"
void Gotoxy(int x, int y)
{
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void Hide()
{
HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursor_info = {
1,0 };
SetConsoleCursorInfo(hout, &cursor_info);
}
void EasyMap(int Map[20][20], int* n, int* m, char* ch)
{
static int cs = 0;
int guan;
if (*ch == '*')
{
guan = cs;
if (guan > 0)
guan--;
*ch = '!';
}
else
{
guan = cs;
cs++;
}
*n = point[guan].x;
*m = point[guan].y;
for (unsigned int i = 0; i < *n; i++)
{
for (unsigned int j = 0; j < *m; j++)
{
Map[i][j] = Maps[guan][i][j];
}
}
}
void MiddleMap(int Map[20][20], int* n, int* m, char* ch)
{
static int cs = 0;
int guan;
if (*ch == '*')
{
guan = cs;
if (guan > 0)
guan--;
*ch = '!';
}
else
{
guan = cs;
cs++;
}
*n = point[guan + 10].x;
*m = point[guan + 10].y;
for (unsigned int i = 0; i < *n; i++)
{
for (unsigned int j = 0; j < *m; j++)
{
Map[i][j] = Maps[guan + 10][i][j];
}
}
}
void DifficultyMap(int Map[][20], int* n, int* m, char* ch)
{
static int css = 0;
int guan;
if (*ch == '*')
{
guan = css;
if (guan > 0)
guan--;
*ch = '!';
}
else
{
guan = css;
css++;
}
*n = point[guan + 20].x;
*m = point[guan + 20].y;
for (unsigned int i = 0; i < *n; i++)
{
for (unsigned int j = 0; j < *m; j++)
{
Map[i][j] = Maps[guan + 20][i][j];
}
}
}
void SelectMap(int Map[][20], int* n, int* m, char* ch, int guan)
{
if (guan > 0)guan--;
*n = point[guan].x;
*m = point[guan].y;
for (unsigned int i = 0; i < *n; i++)
{
for (unsigned int j = 0; j < *m; j++)
{
Map[i][j] = Maps[guan][i][j];
}
}
}
void MenuTwo(char* ch)
{
while (1)
{
system("cls");
Hide();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
int s;
printf("\n\n\n\n\n\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):简单关卡\n\n");
printf("\t\t (2):中等关卡\n\n");
printf("\t\t (3):困难关卡\n\n");
printf("\t\t (4):退出页面\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t 请输入序号。\n");
s = _getch();
while (s < '1' || s>'4')
{
printf("输入有误,请重新输入:");
s = _getch();
}
if (s == '1')
EasyGame(ch);
else if (s == '2')
MiddleGame(ch);
else if (s == '3')
DifficultyGame(ch);
else if (s == '4')
MenuOne(ch);
}
}
void Autor(char* ch)
{
char hh = '!';
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\n\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("\t\t 退出请按 键。\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
Gotoxy(28, 27);
printf("ESC");
hh = _getch();
if (hh == 27)
Introduction(ch);
}
void Menu(char* ch) {
while (1)
{
system("cls");
Hide();
int s;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n\t 主 菜 单\n\n");
printf("\n\n\t\t 推箱子\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):开始游戏\n\n");
printf("\t\t (2):操作介绍\n\n");
printf("\t\t (3):游戏介绍\n\n");
printf("\t\t (4):退出游戏\n\n");
printf(" ------------------------------------\n\n");
printf("****************第一次请先观看操作介绍****************\n\n");
printf("\t\t 请输入序号。\n");
s = _getch();
while (s < '1' || s>'4')
{
printf("\t\t输入有误,请重新输入。\n");
s = _getch();
}
if (s == '1')
MenuOne(ch);
else if (s == '2')
Operation(ch);
else if (s == '3')
Introduction(ch);
else
{
int i = MessageBox(NULL, L"\n确定要退出游戏吗?", L"退出提示", MB_YESNO);
if (i == IDYES)
exit(0);
}
}
}
void MenuOne(char* ch) {
while (1)
{
system("cls");
Hide();
int s;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):闯关模式\n\n");
printf("\t\t (2):选关模式\n\n");
printf("\t\t (3):退出页面\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t 请输入序号。\n");
s = _getch();
while (s < '1' || s>'3')
{
printf("\t\t输入有误,请重新输入。\n");
s = _getch();
}
if (s == '1')
MenuTwo(ch);
else if (s == '2')
Select(ch);
else
Menu(ch);
}
}
void Select(char* ch)
{
system("cls");
int guan;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n\n\n\n\n");
printf("\t\t\t 请\n\n\t\t\t 输入\n\n\t\t\t 所要选择\n\n\t\t 的关卡(1-40关),\n\n\t\t 输入0回退到前一\n\n\t\t 页面。之后按回车键:");
scanf_s("%d", &guan);
while (guan < 0 || guan>40)
{
printf("\t\t输入有误,请重新输入。\n");
scanf_s("%d", &guan);
}
if (guan == 0)
MenuOne(ch);
SelectGameReady(ch, guan);
}
void SelectGame(char* ch, int guan)
{
int Map[20][20], n, m;
memset(Map, -1, sizeof(Map));
int sum = 0, data = 0, sl = 0;
while (1)
{
SelectMap(Map, &n, &m, ch, guan);
data = BoxData(Map, &n, &m);
sl = GroundData(Map, &n, &m);
while (1)
{
system("cls");
sum = DrawMap(Map, &n, &m, &guan);
sum -= sl;
if (sum == data) {
Hide();
printf("\n\t\t 恭 喜 通 关!\n\n");
printf("\t 请稍等,正在重置关卡。\n");
MyTime();
break;
}
PlayGame(Map, &n, &m, ch);
if (*ch == '*') {
*bushu = 0;
break;
}
}
if (*ch == '*')
{
*ch = '!';
break;
}
}
}
int SelectGameReady(char* ch, int guan) {
while (1)
{
system("cls");
Hide();
int s;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):游戏开始\n\n");
printf("\t\t (2):游戏退出\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t 请输入序号。\n");
s = _getch();
while (s != '1' && s != '2')
{
printf("\t\t输入有误,请重新输入。\n");
s = _getch();
}
if (s == '1')
SelectGame(ch, guan);
else
Select(ch);
}
return 0;
}
void Password(char* ch)
{
char passwords[10], Passwords[10] = {
"123456789" };
while (1)
{
system("cls");
printf("\n\n\n\n\n\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf(" 说明:\n\t 输入密码后按回车键。\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):输入密码\n\n");
printf("\t\t (2):退出页面\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t 输入序号\n\n");
int t = _getch();
if (t == '1')
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("\t\t密码:");
int i;
for (i = 0; i < 100; i++)
{
passwords[i] = _getch();
if (passwords[i] == 8)
{
i -= 2;
printf("\b \b");
}
else if (passwords[i] == '\r')
break;
else
printf("*");
}
passwords[i] = '\0';
if (strcmp(passwords, Passwords) == 0)
break;
else
MessageBox(NULL, L"\t 密码错误!!!\t\n\t请重新输入密码。\t", L"输入提示", MB_OK);
}
else
Introduction(ch);
}
}
void Introduction(char* ch)
{
system("cls");
Hide();
int s;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):游戏名称:推箱子\n\n");
printf("\t\t (2):游戏简介:->(next)\n\n");
printf("\t\t (7):退出页面\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t 请输入序号。\n");
s = _getch();
while (s != '2' && s != '7' && s != '4')
{
printf("\t\tSorry,此序号没有下一页了。\n");
s = _getch();
}
if (s == '2')
Gameintor(ch);
else if (s == '7')
Menu(ch);
else if (s == '4')
{
MessageBox(NULL, L"\t 请输入密码。\t\n\t(少于十个数字或字母)\t", L"输入提示", MB_OK);
Password(ch);
Autor(ch);
}
}
void Gameintor(char* ch) {
while (1)
{
system("cls");
Hide();
char hh = '!';
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n");
printf(" 《推箱子》是一款经典电子游戏,1982年由日本Thinking Rabbit公司首次发行");
printf("之后其他游戏开发者争相制作仿制或衍生作品。致使推箱子成为此类游戏的代名词。");
printf("游戏要求玩家在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现");
printf("t箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理");
printf("t安排移动的次序和位置,才能顺利的完成任务。 \n");
printf(" 推箱子是一个来自日本的古老游戏,目的是在训练玩家的逻辑思考能力。在一个狭");
printf("小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵");
printf("住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺");
printf("利的完成任务。\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf(" 注:游戏关卡来源于经典推箱子关卡。\n\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("\t\t 退出请按 键。\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
Gotoxy(26, 21);
printf("ESC");
hh = _getch();
if (hh == 27)
Introduction(ch);
}
}
void Operation(char* ch) {
char hh = '!';
while (1)
{
system("cls");
Hide();
printf("\n\n\n\n\n\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
printf("\t\t\t操作说明:\n\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
printf(" (W):向上移动 (S):向下移动 (A):向左移动 (D):向右移动\n\n");
printf(" (□):代表箱子 (♀):代表人 (☆):代表目的地\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("\t *按键盘前请调整好输入法。\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN);
printf("\t\t 退出请按 键。\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
Gotoxy(29, 16);
printf("ESC");
hh = _getch();
if (hh == 27)
Menu(ch);
}
}
int BoxData(int Map[][20], int* n, int* m)
{
int sum = 0;
for (int i = 0; i < *n; i++) {
for (int j = 0; j < *m; j++) {
if (Map[i][j] == 3)
sum++;
}
}
return sum;
}
int GroundData(int Map[][20], int* n, int* m)
{
int sum = 0;
for (int i = 0; i < *n; i++)
{
for (int j = 0; j < *m; j++)
{
if (Map[i][j] == 7)
sum++;
}
}
return sum;
}
int DrawMap(int Map[20][20], int* n, int* m, int* guanshu)
{
int sum = 0;
Hide();
printf("\n\n\n\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
printf("\t\t 第 %d 关\n\n\n\n", *guanshu);
for (int i = 0; i < *n; i++)
{
printf("\t\t ");
for (int j = 0; j < *m; j++)
{
switch (Map[i][j]) {
case 1://墻
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
printf("■");
break;
case 0://空地
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
printf(" ");
break;
case 3://目的地
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("☆");
break;
case 4://箱子
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_RED);
printf("□");
break;
case 5://人
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
printf("♀");
break;
case 7://箱子在目的地 4+3
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("★");
sum++;
break;
case 8://人在目的地 5+3
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("♀");
break;
}
}
printf("\n");
}
if (kongge == 1)
{
printf("\n\t\t 当前步数为%d步。", *bushu);
if (yanchi == 10)
{
*KonGe = 0;
*YanChi = 0;
}
yanchi++;
xianshi = 1;
}
if (xianshi == 0)
{
printf("\n\t\t 按空格键查看当前步数。");
}
*XianShi = 0;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("\n 按ESC键退出此游戏,之后重新进入从该关重新开始。\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("\n\t 开始游戏前输入法请锁定成英文大写。\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
Gotoxy(12, 23);
printf("W/↑:上移");
Gotoxy(32, 23);
printf("S/↓:下移");
Gotoxy(12, 25);
printf("A/←:左移");
Gotoxy(32, 25);
printf("D/→:右移");
return sum;
}
void PlayGame(int Map[20][20], int* n, int* m, char* ch)
{
char input;
int i, j;
for (i = 0; i < *n; i++)
{
for (j = 0; j < *m; j++)
{
if (Map[i][j] == 5 || Map[i][j] == 8)
break;
}
if (Map[i][j] == 5 || Map[i][j] == 8)
break;
}
input = _getch();
switch (input)
{
case 72:
case 'W'://上
case 'w':
if (Map[i - 1][j] == 0 || Map[i - 1][j] == 3)
{
Map[i - 1][j] += 5;
Map[i][j] -= 5;
data++;
}
else if (Map[i - 1][j] == 4 || Map[i - 1][j] == 7)
{
if (Map[i - 2][j] == 0 || Map[i - 2][j] == 3)
{
Map[i - 2][j] += 4;
Map[i - 1][j] += 1;
Map[i][j] -= 5;
data++;
}
}
break;
case 80:
case 'S'://下
case 's':
if (Map[i + 1][j] == 0 || Map[i + 1][j] == 3)
{
Map[i + 1][j] += 5;
Map[i][j] -= 5;
data++;
}
else if (Map[i + 1][j] == 4 || Map[i + 1][j] == 7)
{
if (Map[i + 2][j] == 0 || Map[i + 2][j] == 3)
{
Map[i + 2][j] += 4;
Map[i + 1][j] += 1;
Map[i][j] -= 5;
data++;
}
}
break;
case 75:
case 'A'://左
case 'a':
if (Map[i][j - 1] == 0 || Map[i][j - 1] == 3)
{
Map[i][j - 1] += 5;
Map[i][j] -= 5;
data++;
}
else if (Map[i][j - 1] == 4 || Map[i][j - 1] == 7)
{
if (Map[i][j - 2] == 0 || Map[i][j - 2] == 3)
{
Map[i][j - 2] += 4;
Map[i][j - 1] += 1;
Map[i][j] -= 5;
data++;
}
}
break;
case 77:
case 'D'://右
case 'd':
if (Map[i][j + 1] == 0 || Map[i][j + 1] == 3)
{
Map[i][j + 1] += 5;
Map[i][j] -= 5;
data++;
}
else if (Map[i][j + 1] == 4 || Map[i][j + 1] == 7)
{
if (Map[i][j + 2] == 0 || Map[i][j + 2] == 3)
{
Map[i][j + 2] += 4;
Map[i][j + 1] += 1;
Map[i][j] -= 5;
data++;
}
}
break;
case 27:
*ch = '*';
break;
case 32:
*KonGe = 1;
break;
}
}
void MyTime()
{
int t = 0;
for (int i = 9; i >= 0; i--)
{
Sleep(500);
Gotoxy(25, 23);
if (t == 3)
t = 0;
if (t == 0)
printf("%d. ", i);
else if (t == 1)
printf("%d.. ", i);
else
printf("%d...", i);
t++;
}
}
int GameReady()
{
system("cls");
Hide();
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
int s;
printf("\n\n\n\n\n\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t (1):游戏开始\n\n");
printf("\t\t (2):游戏退出\n\n");
printf(" ------------------------------------\n\n");
printf("\t\t 请输入序号。\n");
s = _getch();
while (s != '1' && s != '2') {
printf("\t\t输入有误,请重新输入。\n");
s = _getch();
}
return s;
}
void GameOperate(int Map[][20], int* n, int* m, int* js, int* sum, int* data, int* sl, int* guanshu, char* ch)
{
while (1)
{
clock_t start, end;
start = clock();
*js = 0;
system("cls");
Hide();
*sum = DrawMap(Map, n, m, guanshu);
*sum -= *sl;
if (*sum == *data)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("\n\n\n\n\n\n\n\n\n\n\n\t\t 恭 喜 通 关!\n\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("\n\t\t 通关所用步数为%d步。\n\n", *bushu);
end = clock();
printf("\n\t 通关所用时间为%.3lf秒\n\n", (double)(end - start) / 9.56);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\n\t 请稍等,正在创建下一关。\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
MyTime();
*bushu = 0;
break;
}
PlayGame(Map, n, m, ch);
if (*ch == '*')
{
int i = MessageBox(NULL, L"\t\n确定要退出游戏吗?\n\n(提示:退出后重新进入从退出的关卡开始)。", L"退出提示", MB_YESNO);
if (i == IDYES)
{
*bushu = 0;
*XianShi = 1;
*js = 1;
break;
}
else
{
*ch = '!';
continue;
}
}
}
}
void EasyGameOperate(int Map[][20], int* n, int* m, int* js, int* sum, int* data, int* sl, int* guanshu, char* ch)
{
while (1)
{
*js = 0;
system("cls");
Hide();
*sum = DrawMap(Map, n, m, guanshu);
*sum -= *sl;
if (*sum == *data)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("\t\t\t\t 恭 喜 通 关!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
int t = MessageBox(NULL, L"\t 你真棒!!!\n\n\t是否进入下一关?", L"提示", MB_YESNO);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("\t\t 通关所用步数为%d步。\n", *bushu);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
printf("\t 请稍等,正在创建下一关。");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
MyTime();
if (t == IDYES)
{
*bushu = 0;
break;
}
else
{
*bushu = 0;
*XianShi = 1;
*js = 2;
break;
}
}
PlayGame(Map, n, m, ch);
if (*ch == '*')
{
int i = MessageBox(NULL, L"\t\n确定要退出游戏吗?\n\n(提示:退出后重新进入从退出的关卡开始)。", L"退出提示", MB_YESNO);
if (i == IDYES)
{
*bushu = 0;
*XianShi = 1;
*js = 1;
break;
}
else
{
*ch = '!';
continue;
}
}
}
}
void EasyGame(char* ch)
{
int Map[20][20], n, m, js;
static int guanshu = 1;
memset(Map, -1, sizeof(Map));
int sum = 0, data = 0, sl = 0;
while (1)
{
int t = GameReady();
if (t == '2')
break;
while (1)
{
EasyMap(Map, &n, &m, ch);
data = BoxData(Map, &n, &m);
sl = GroundData(Map, &n, &m);
EasyGameOperate(Map, &n, &m, &js, &sum, &data, &sl, &guanshu, ch);
int s;
if (js == 0)
{
guanshu++;
if (guanshu < 11)
s = 1;
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("恭喜你已经通过全部简单关卡,接下来有中等关卡等待你去挑战\n");
Gotoxy(19, 26);
printf("!!!!!!");
}
}
else if (js == 1)
break;
else if (js == 2) {
*ch = '*';
continue;
}
if (s == '2')
break;
}
}
}
void MiddleGame(char* ch)
{
int Map[20][20], n, m, js;
static int guanshu = 1;
memset(Map, -1, sizeof(Map));
int sum = 0, data = 0, sl = 0;
while (1)
{
int t = GameReady();
if (t == '2')
break;
while (1)
{
MiddleMap(Map, &n, &m, ch);
data = BoxData(Map, &n, &m);
sl = GroundData(Map, &n, &m);
GameOperate(Map, &n, &m, &js, &sum, &data, &sl, &guanshu, ch);
int s;
if (js == 0)
{
guanshu++;
if (guanshu < 11)
s = 1;
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("恭喜你已经通过全部中等关卡,接下来有困难关卡等待你去挑战\n");
Gotoxy(19, 26);
printf("!!!!!!");
}
}
else if (js == 1)
break;
if (s == '2')
break;
}
}
}
void DifficultyGame(char* ch) {
int Map[20][20], n, m, js;
static int guanshu = 1;
memset(Map, -1, sizeof(Map));
int sum = 0, data = 0, sl = 0;
while (1)
{
int t = GameReady();
if (t == '2')
break;
while (1)
{
DifficultyMap(Map, &n, &m, ch);
data = BoxData(Map, &n, &m);
sl = GroundData(Map, &n, &m);
EasyGameOperate(Map, &n, &m, &js, &sum, &data, &sl, &guanshu, ch);
int s;
if (js == 0)
{
guanshu++;
if (guanshu < 21)
s = 1;
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("恭喜你已经通过全部关卡!\n");
Gotoxy(19, 26);
printf("!!!!!!");
}
}
else if (js == 1)
break;
else if (js == 2)
{
*ch = '*';
continue;
}
if (s == '2')
break;
}
}
}
int main() {
char ch = '!';
system("title 推箱子C语言");
system("mode con cols=55 lines=30");
while (1)
{
system("cls");
Hide();
Menu(&ch);
}
return 0;
}