二维数组应用:迷宫游戏

//

//  main.m

//  应用:迷宫游戏

//

//  Created by lanou3g on 15/6/23.

//  Copyright (c) 2015 ZhangJia. All rights reserved.

//


#import <Foundation/Foundation.h>

#define COL 12

#define ROW 12


int main(int argc,constchar * argv[])

{

    //*******定义迷宫地图******

    //1.定义地图

   char map[COL][ROW]={

        '#','#','#','#','#','#','#','#','#','#','#','#',

        '#','O','#',' ',' ',' ','#',' ',' ','#','#','#',

        '#',' ','#',' ','#',' ',' ',' ','#','#',' ',' ',

        '#',' ','#',' ','#',' ','#','#','#','#',' ','#',

        '#',' ',' ',' ','#',' ',' ','#','#',' ',' ','#',

        '#',' ','#','#','#',' ',' ',' ','#',' ','#','#',

        '#',' ','#','#','#','#','#',' ','#',' ','#','#',

        '#',' ','#',' ',' ',' ','#',' ','#',' ','#','#',

        '#',' ','#',' ','#','#',' ',' ','#',' ','#','#',

        '#',' ','#',' ','#','#',' ','#','#',' ','#','#',

        '#',' ',' ',' ','#','#',' ',' ',' ',' ',' ','#',

        '#','#','#','#','#','#','#','#','#','#','#','#',


    };

    //2.打印地图

   for (int i =0; i <COL; i++) {

       for (int j =0; j <ROW; j++) {

           printf("%c",map[i][j]);

        }

       printf("\n");

    }

    //3.定义变量,用来存储用户输入控制 w- s- a- d-,提示用户玩法

   char derection ;

   char ch;

    printf("游戏开始!\n请按 w- s- a- d-  其他任意键-退出游戏\n");


    //*******判断小人是否能够移动******

    //1.定义变量存储小人目前所在位置

   int currentX =1;

   int currentY =1;

    //2.判断是否移动以及移动方向

   while (1) {


       scanf("%c",&derection);

       scanf("%c",&ch); //用于吸收输入一个字符后的\n


       switch (derection) {

           case'W':

           case'w':

                //如果小人移动的下一个方向是路,则交换小人与路的位置

               if (map[currentX-1][currentY] ==' ') {

                   int temp = map[currentX][currentY];

                    map[currentX][currentY] = map[currentX-1][currentY];

                    map[currentX-1][currentY] = temp;

                    currentX --;

                }

               break;


           case'S':

           case's':

               if (map[currentX+1][currentY] ==' ') {

                   int temp = map[currentX][currentY];

                    map[currentX][currentY] = map[currentX+1][currentY];

                    map[currentX+1][currentY] = temp;

                    currentX ++;

                }

               break;


           case'A':

           case'a':

               if (map[currentX][currentY-1] ==' ') {

                   int temp = map[currentX][currentY];

                    map[currentX][currentY] = map[currentX][currentY-1];

                    map[currentX][currentY-1] = temp;

                    currentY --;

                }

               break;

           case'D':

           case'd':

               if (map[currentX][currentY+1] ==' ') {

                   int temp = map[currentX][currentY];

                    map[currentX][currentY] = map[currentX][currentY+1];

                    map[currentX][currentY+1] = temp;

                    currentY ++;

                }

               break;


           default:

               printf("您已主动退出游戏,谢谢!\n");

               return0;

               break;

        }


        //3.每次移动后打印一遍地图

       for (int i =0; i <COL; i++) {

           for (int j =0; j <ROW; j++) {

               printf("%c",map[i][j]);

            }

           printf("\n");

        }

        printf("----------------------------------------------\n");


        

        //3.*********判断小人是否走出迷宫**********

       if (currentY ==ROW-1) {

           printf("YOU WIN !!");

           break;

        }

    }


   return0;

}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值