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

原创 2015年11月17日 16:55:37

------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>


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

自己动手写推箱子游戏——菜单(源码)

第二:制作菜单,完善功能   一:选关功能   自己要为游戏设置一些关数,而且难度应该递增,这个选关的对话框需要新建,主要是返回一个表示关数的数值 void CPushBoxDlg::OnChos...

C语言实现推箱子游戏

纯C写的小游戏-----推箱子 通过w,s,a,d实现上下左右的移动 声明画图函数 然后分别对移动位置进行情况判断: 1.如果人前面是空地。 2.如果人前面是目的地。 3.如果人前面是箱子...

黑马程序员-IOS学习笔记 c实现 推箱子游戏

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!------- #define kRows 10 #define kCols 11 /* ...

【黑马程序员】C语言—通讯录系统的实现

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- c语言通讯录系统实现: 需求分析: 利用文件读,写的方法   实现增加通讯录联系人信息 实现...

第八天 番外篇 《c语言小游戏 推箱子的实现》

QQ20150709-1 一、创建游戏地图1 2 3 4 5 6 7 8 9 10 11 12 13 14 15define ROWS 11define COLS 12c...

黑马程序员——C语言---数字九宫格游戏实战练习

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——— 学完C语言基础视频,根据基础视频中迷宫游戏有感而发,自编一个数字九宫格游戏练练手。游戏及规则均是自创。...

黑马程序员 — C语言基础(一)

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

黑马程序员—C语言指针的了解和使用

一、什么是指针 用来存放变量地址的变量,就称为"指针变量"。按我的理解:一般变量在内存中声明后都有一个变量名来对应,使用该变量名即可查看修改该变量,但同时,也可以通过变量的地址来查看修改该变量,而指针...

黑马程序员—-C语言入门十重奏之六相濡以沫

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-都这么熟悉了,那么就把C语言细节跟大家摊牌吧!不论用什么编译器都随着默认格式出现的这#include是什么? #i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)