1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <getch.h>
4
5 int main()
6 {
7 // 定义地图
8 int map[8][8] = {
9 {0,0,1,1,1,1,0,0},
10 {0,0,1,4,4,1,0,0},
11 {0,1,1,0,4,1,1,0},
12 {0,1,0,0,3,4,1,0},
13 {1,1,0,3,0,0,1,1},
14 {1,0,0,1,3,3,0,1},
15 {1,0,0,2,0,0,0,1},
16 {1,1,1,1,1,1,1,1},
17 };
18
19 // 定义初始位置
20 char x = 6,y = 3;
21
22 // 定义步数变量
23 short step = 0;
24
25 for(;;)
26 {
27 system("clear"); // 清屏
28 int cnt = 0;
29 for(int i=0;i<8;i++)
30 {
31 for(int j =0;j<8;j++)
32 {
33 switch(map[i][j]) // 打印地图
34 {
35 case 0:printf(" ");break;
36 case 1:printf("# ");break;
37 case 2:case 6:printf("@ ");break;
38 case 3:printf("$ ");break;
39 case 4:printf("o ");break;
40 case 7:printf("$ ");cnt++;break;
41 }
42 }
43 printf("\n");
44 }
45 if(cnt == 4) // 判断是否结束
46 {
47 printf("游戏结束,一共用了%d步\n",step);
48 return 0;
49 }
50 char ox = 0,oy = 0;
51 switch(getch()) // 获取方向键(以统一偏移量定义下一步)
52 {
53 case 183:ox--;break;
54 case 184:ox++;break;
55 case 186:oy--;break;
56 case 185:oy++;break;
57 }
58
59 if(0 == map[x+ox][y+oy] || 4 == map[x+ox][y+oy])
60 {
61 map[x+ox][y+oy] += 2;
62 map[x][y] -= 2;
63 x += ox;
64 y += oy;
65 step++;
66 }
67 else if(3 == map[x+ox][y+oy] || 7 == map[x+ox][y+oy])
68 {
69 if(0 == map[x+ox*2][y+oy*2] || 4 == map[x+ox*2][y+oy*2])
70 {
71 map[x+ox*2][y+oy*2] += 3;
72 map[x+ox][y+oy] -= 1;
73 map[x][y] -= 2;
74 x += ox;
75 y += oy;
76 step++;
77 }
78 }
79 }
80 }
C语言《推箱子》游戏设计
最新推荐文章于 2024-05-05 09:45:00 发布