C语言 推箱子
1 /* 2 作者:正义V领 3 内容:游戏【推箱子】 4 人物:▲ 5 墙:■ 6 目的地:☆ 7 箱子:□ 8 控制键盘: 9 w:前进 10 a:向左 11 d:向右 12 s:后退 13 */ 14 #include<stdio.h> 15 #include<conio.h>//getch() 16 /* 17 getchar()是显示回文,enter键盘接受 18 getch()不显示回文,按下马上接受 19 20 */ 21 22 int map[7][10]={ 23 24 {0,0,0,1,1,1,1,1,1,0}, 25 {0,1,1,1,0,0,0,0,1,0}, 26 {1,1,3,0,4,1,1,0,1,1}, 27 {1,3,3,4,0,4,0,5,0,1}, 28 {1,3,3,0,4,0,4,0,1,1}, 29 {1,1,1,1,1,1,0,0,1,0}, 30 {0,0,0,0,0,1,1,1,1,0} 31 }; 32 33 34 35 void DrawMap(){ 36 int i,j; 37 for(i=0; i<7;i++) 38 { 39 for(j=0; j<10;j++) 40 { 41 switch(map[i][j]) 42 { 43 case 0: 44 printf(" "); 45 break; 46 case 1: 47 printf("■"); 48 break; 49 case 3: 50 printf("☆"); 51 break; 52 case 4: 53 printf("□"); 54 break; 55 case 5: 56 printf("▲"); 57 break; 58 case 7: //4+3 59 printf("★"); 60 break; 61 case 8: //5+3 62 printf("▲"); 63 break; 64 65 } 66 67 }; 68 69 printf("\n"); 70 } 71 } 72 73 void PlayGame(){ 74 //获取当前人的位置 75 int row,col,i,j; 76 char input; 77 for(i=0;i<7;i++) 78 { 79 for(j=0;j<10;j++) 80 { 81 if(map[i][j]==5) 82 { 83 row=i; 84 col=j; 85 86 87 } 88 89 } 90 91 92 } 93 printf("(%d %d)\n",row,col); 94 95 /* 96 人能走的情况: 97 人的前面是空地 98 人的前面是目的地 99 人的前面是箱子,箱子的前面是空地 100 人的前面是箱子,箱子的前面是目的地 101 102 103 104 */ 105 input = getch(); 106 107 switch(input) 108 { 109 case 'a'://向左 110 if(map[row][col-1]==0 || map[row][col-1]==3) 111 { 112 113 map[row][col]-=5; 114 map[row][col-1]+=5; 115 116 117 } 118 else if(map[row][col-1]==4 ||map[row][col-1]==7)//如果前面的是箱子 119 { 120 121 if(map[row][col-2]==0 ||map[row][col-2]==3) 122 { 123 map[row][col-2]+=4; 124 map[row][col-1]+=1; 125 map[row][col]-=5; 126 127 } 128 129 130 } 131 break; 132 case 'w'://向前 133 if(map[row - 1][col]==0 || map[row-1][col]==3) 134 { 135 /*if(map[row][col]==5) 136 { 137 map[row][col]=0; 138 } 139 else{ 140 map[row][col]=3; 141 142 }*/ 143 map[row][col]-=5; 144 map[row-1][col]+=5; 145 146 147 } 148 else if(map[row-1][col]==4 ||map[row-1][col]==7)//如果前面的是箱子 149 { 150 151 if(map[row-2][col]==0 ||map[row-2][col]==3) 152 { 153 map[row-2][col]+=4; 154 map[row-1][col]+=1; 155 map[row][col]-=5; 156 157 } 158 159 160 } 161 break; 162 case 'd'://向右 163 if(map[row][col+1]==0 || map[row][col+1]==3) 164 { 165 166 map[row][col]-=5; 167 map[row][col+1]+=5; 168 169 170 } 171 else if(map[row][col+1]==4 ||map[row][col+1]==7)//如果前面的是箱子 172 { 173 174 if(map[row][col+2]==0 ||map[row][col+2]==3) 175 { 176 map[row][col+2]+=4; 177 map[row][col+1]+=1; 178 map[row][col]-=5; 179 180 } 181 182 183 } 184 break; 185 case 's'://向后 186 if(map[row +1][col]==0 || map[row+1][col]==3) 187 { 188 189 map[row][col]-=5; 190 map[row+1][col]+=5; 191 192 193 } 194 else if(map[row+1][col]==4 ||map[row+1][col]==7)//如果前面的是箱子 195 { 196 197 if(map[row+2][col]==0 ||map[row+2][col]==3) 198 { 199 map[row+2][col]+=4; 200 map[row+1][col]+=1; 201 map[row][col]-=5; 202 203 } 204 205 206 } 207 break; 208 209 } 210 211 212 213 } 214 215 216 int main() 217 { 218 219 while(1){ 220 system("cls"); 221 DrawMap(); 222 PlayGame(); 223 } 224 return 0; 225 226 227 228 }
一个二次元的生物

浙公网安备 33010602011771号