A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© guozihui876 中级黑马   /  2015-10-7 22:11  /  1289 人查看  /  13 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.c
//  推箱子
//
//  Created by niaoren on 15/10/4.
//  Copyright (c) 2015年 niaoren. All rights reserved.
//

#include <stdio.h>
#define  ROWS 10
#define  COLS 11
void printMap(char arr[ROWS][COLS]){
    for (int i=0; i<10; i++) {
        printf("\n");
        for (int j=0; j<10; j++) {
            printf("%c ",arr[i][j]);
        }
    }
    printf("\n");
}
//void temp(char map[][],int ){
//    char temp;
//    temp=map[personY][personX];
//    map[personY][personX] = map[newPersonY][newPersonx];
//    map[newPersonY][newPersonx] = temp;
//
//}


int main(int argc, const char * argv[]) {
    // insert code here...
//    printf("Hello, World!\n");
//    char map[ROWS][11]={
//    '#','#','#','#','#','#','#','#','#','#',
//    '#',' ','O','#','#','#','#',' ',' ','#',
//    '#',' ','X','#','#','#','#',' ',' ','#',
//    '#',' ',' ',' ',' ',' ',' ',' ',' ','#',
//    '#','#','#','#','#','#',' ',' ',' ','#',
//    '#',' ',' ','#','#','#','#',' ',' ','#',
//    '#',' ',' ',' ',' ',' ',' ',' ',' ','#',
//    '#',' ',' ',' ','#','#','#','#','#','#',
//    '#',' ',' ',' ',' ',' ',' ',' ',' ','#',
//    '#','#','#','#','#','#','#','#','#','#'
//    };

    char map[ROWS][COLS]= {
    "##########",
    "# O####  #",
    "# X####  #",
    "#        #",
    "######   #",
    "#  ####  #",
    "#        #",
    "#   ######",
    "#         ",
    "##########",
    };
    printMap(map);
    printf("请输入wsad 分别表示上下左右\n");
    char key;
    int personX=2;
    int personY=1;
    int boxX=2;
    int boxY=2;
    int newPersonX,newPersonY,newBoxY,newBoxX;
    char temp;
        while (1) {
        scanf("%c",&key);
//            getchar();
        switch (key) {
            case 'W':
            case 'w':
                if (map[personY-1][personX]== ' ') {
                    newPersonY = personY-1;
                    newPersonX = personX;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personY--;
                    printMap(map);
                  
                }
                else if(map[personY-1][personX]=='X'&&map[boxY-1][boxX]==' '){
                    newBoxY = boxY-1;
                    newBoxX = boxX;
                    temp = map[newBoxY][newBoxX];
                    map[newBoxY][newBoxX] = map[boxY][boxX];
                    map[boxY][boxX] = temp;
                    boxY--;
                    
                    newPersonY = personY-1;
                    newPersonX = personX;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personY--;
                    printMap(map);
                    
                }
               
               
               
                break;
               
            case 'S':
            case 's':
                if (map[personY+1][personX]== ' ') {
                    newPersonY = personY+1;
                    newPersonX = personX;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personY++;
                    printMap(map);
                    
                }
                else if(map[personY+1][personX]=='X'&&map[boxY+1][boxX]==' '){
                    newBoxY = boxY+1;
                    newBoxX = boxX;
                    temp = map[newBoxY][newBoxX];
                    map[newBoxY][newBoxX] = map[boxY][boxX];
                    map[boxY][boxX] = temp;
                    boxY++;
                    
                    newPersonY = personY+1;
                    newPersonX = personX;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personY++;
                    printMap(map);
                    
                }

                break;
               
            case 'A':
            case 'a':
                if (map[personY][personX-1]== ' ') {
                    newPersonY = personY;
                    newPersonX = personX-1;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personX--;
                    printMap(map);
                    
                }
                else if(map[personY][personX-1]=='X'&&map[boxY][boxX-1]==' '){
                    newBoxX = boxX-1;
                    newBoxY = boxY;
                    temp = map[newBoxY][newBoxX];
                    map[newBoxY][newBoxX] = map[boxY][boxX];
                    map[boxY][boxX] = temp;
                    boxX--;
                    
                    newPersonY = personY;
                    newPersonX = personX-1;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personX--;
                    printMap(map);
                    
                }

               
                break;
            case 'D':
            case 'd':
                if (map[personY][personX+1]== ' ') {
                    newPersonY = personY;
                    newPersonX = personX+1;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personX++;
                    printMap(map);
                    
                }
                else if(map[personY][personX+1]=='X'&&map[boxY][boxX+1]==' '){
                    newBoxY = boxY;
                    newBoxX = boxX+1;
                    temp = map[newBoxY][newBoxX];
                    map[newBoxY][newBoxX] = map[boxY][boxX];
                    map[boxY][boxX] = temp;
                    boxX++;
                    
                    newPersonX = personX+1;
                    newPersonY = personY;
                    temp=map[personY][personX];
                    map[personY][personX] = map[newPersonY][newPersonX];
                    map[newPersonY][newPersonX] = temp;
                    personX++;
                    printMap(map);
                    
                }
               
                break;
            
        }
            if(boxX==COLS-2){
                printf("你赢了");
                return 0;
            }
    }
   
   
    return 0;
}

13 个回复

倒序浏览
多谢楼主分享!
回复 使用道具 举报
lxhmcxy 发表于 2015-10-7 22:36
多谢楼主分享!

{:2_32:}   多多指教 ,现在在学习基础视频呢
回复 使用道具 举报
加油啊!!!!!
回复 使用道具 举报
赞一个!
回复 使用道具 举报
加油  努力学习
回复 使用道具 举报
wxd123 中级黑马 2015-10-9 21:45:16
7#
这么多也不写注释,我看的晕晕的
回复 使用道具 举报
学习了,收藏之!
回复 使用道具 举报
好长啊  现在还看不懂
回复 使用道具 举报
wxd123 发表于 2015-10-9 21:45
这么多也不写注释,我看的晕晕的

以后写注释 我错了{:2_30:}    哪里晕哈哈
回复 使用道具 举报

多谢捧场
回复 使用道具 举报
白龙马 发表于 2015-10-8 01:24
加油啊!!!!!

一起加油
回复 使用道具 举报

{:2_32:}   一起加油
一起加油
回复 使用道具 举报
好,不错,多谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马