【黑马程序员】C语言—推箱子游戏实现

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


C语言推箱子游戏代码实现:

<span style="font-size:14px;">//
//  main.c
//  推箱子游戏
//
//  Created by Brisinga on 15/9/28.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>
#define H 10
#define L 11

//打印地图
void printMap(char map[H][L]){
    
    for (int i=0; i<H; i++) {
        printf("%s\n",map[i]);
    }

}

//交换小人和路的位置
void swap(char map[H][L],int oldX,int oldY, int newX,int newY){
    
    char temp = map[oldX][oldY];
    map[oldX][oldY] = map[newX][newY];
    map[newX][newY] = temp;

}
//判断小人下一个是不是箱子
int flag(char map[H][L],char X,int x,int y){
    if (map[x][y]==X) {
        return 1;
    }
    
    return 0;
}
int main(int argc, const char * argv[]) {
    char map[H][L] ={"##########",
                     "#O     # #",
                     "#  X     #",
                     "#  #  #  #",
                     "#  #     #",
                     "#     #  #",
                     "#  #  #  #",
                     "#  #  #  #",
                     "#     #   ",
                     "##########"};
    //定义小人的当前位置
    int currentX = 1;
    int currentY = 1;
    //定义小人下一个位置
    int nextX = currentX;
    int nextY = currentY;
    //定义输入的方向
    char drect;
    //定义路
    char street = ' ';
    //定义箱子的当前位置
    int bX = 2;
    int bY = 3;
    //定义箱子的下一个位置
    int bnX = bX;
    int bnY = bY;
    //定义箱子
    char box = 'X';
    printf("请输入小人的位置:\n");
    
    //控制小人移动
    while (1) {
        //接收输入的方向
        printMap(map);
        scanf("%c",&drect);
        getchar();
        //判断方向
        switch (drect) {
            case 'w':
            case 'W':
                nextX--;
                if (flag(map,box,nextX,nextY)) {
                    bnX--;
                }
                break;
            case 's':
            case 'S':
                nextX++;
                if (flag(map,box,nextX,nextY)) {
                    bnX++;
                }
                break;
            case 'a':
            case 'A':
                nextY--;
                if (flag(map,box,nextX,nextY)) {
                    bnY--;
                }
                break;
            case 'd':
            case 'D':
                nextY++;
                if (flag(map,box,nextX,nextY)) {
                    bnY++;
                }
                break;
            case 'q':
            case 'Q':
                printf("程序正在退出...\n");
                return 0;
            default:
                break;
        }
        
        //控制小人的移动
        if (map[nextX][nextY]==street) {
            swap(map, currentX, currentY, nextX, nextY);
            currentX = nextX;
            currentY = nextY;
        }else if(map[nextX][nextY]==box&&map[bnX][bnY]==street){
            
            swap(map, bX, bY, bnX, bnY);
            bX = bnX;
            bY = bnY;
            swap(map, currentX, currentY, nextX, nextY);
            currentX = nextX;
            currentY = nextY;
            
        }else{
            nextX = currentX;
            nextY = currentY;
            bnY = bY;
            bnX = bX;
        }
        
        if (bnY == 9) {
            printf("出来啦!\n");
            return 0;
        }
        
    }
    
    return 0;
}
</span>


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011199045/article/details/49889891
个人分类: c语言
想对作者说点什么? 我来说一句

推箱子游戏简单实现(C语言

2015年11月15日 16KB 下载

C语言实现推箱子源代码

2012年10月20日 167KB 下载

没有更多推荐了,返回首页

不良信息举报

【黑马程序员】C语言—推箱子游戏实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭