代码稍微多一些的一个小游戏,也可以说是《迷宫》游戏的升级版。注意数组名当函数参数是地址传递。
- #include <stdio.h>
- #define kRows 10
- #define kCols 11
- /**
- * 打印地图
- *
- * @param map 地图数组
- */
- void map1(char map[kRows][kCols]){
- for (int i =0; i<10; i++) {
- printf("%s\n",map[i]);
- }
- }
- /**
- * 移动小人,或者箱子
- *
- * @param map 地图数组
- * @param oldX 当前的位置x
- * @param oldY 当前位置y
- * @param newX 移动后位置x
- * @param newY 移动后位置y
- */
- void move1(char map[kRows][kCols],int oldX,int oldY,int newX,int newY){
- char temp;
- temp=map[oldX][oldY];
- map[oldX][oldY]=map[newX][newY];
- map[newX][newY]=temp;
- }
- int main(int argc, const char * argv[]) {
- char map[kRows][kCols]={
- "##########",
- "#o #### #",
- "# X#### #",
- "# #",
- "###### #",
- "# #### #",
- "# #",
- "# ######",
- "# ",
- "##########",};
- int personX=1;
- int personY=1;
- int personNextX =1;
- int personNextY =1;
- char direction,ch1;
- char street = ' ';
- char box = 'X';
- int boxX=2;
- int boxY=2;
- int boxNextX,boxNextY;
- printf("请控制小人移动:w上,s下,a左,d右!\n");
-
- while (1) {
- map1(map);
- scanf("%c,%c",&direction,&ch1);//ch1接受回车符。
- //防止小人碰到墙之后,无法正常移动小人。
- personNextX=personX;
- personNextY=personY;
- switch (direction) {
- case 'w':
- case 'W':
- personNextX=personX-1;
- break;
- case 's':
- case 'S':
- personNextX=personX+1;
- break;
- case 'a':
- case 'A':
- personNextY=personY-1;
- break;
- case 'd':
- case 'D':
- personNextY=personY+1;
- break;
- case 'q':
- case 'Q':
- printf("你退出了游戏!\n");
- return 0;
- default:
- break;
- }
- if (map[personNextX][personNextY]==street) {
- move1(map, personX, personY, personNextX, personNextY);
- personX=personNextX;
- personY=personNextY;
-
- }else if (map[personNextX][personNextY]==box){
-
-
- boxNextX=boxX+(boxX-personX);
- boxNextY=boxY+(boxY-personY);
- if (map[boxNextX][boxNextY]==street) {
- move1(map, boxX, boxY, boxNextX, boxNextY);
- move1(map, personX, personY, personNextX, personNextY);
- personX=personNextX;
- personY=personNextY;
- boxX=boxNextX;
- boxY=boxNextY;
- }
- }
- if (boxY==kCols-2) {
-
- printf("你出来了!\n");
- break;
- }
- }
- return 0;
- }
复制代码
|
|