黑马程序员--迷宫小游戏

来源:互联网 发布:纳粹党卫军军服淘宝 编辑:程序博客网 时间:2024/05/16 10:53

------- android培训java培训、期待与您交流! ----------

在黑马ios的基础课视频上,有个迷宫小游戏,感觉挺有趣,然后我就在此基础上,稍稍改了点,记下,留着可以和别人共同探讨。

首先,在老师讲说要做迷宫的时候,我觉得很难啊,自己空想,也不知道解决办法,感觉会很复杂,于是我迅速的点开视频。再听完老师讲过以后,就不得不感慨,原来游戏可以这么简单啊。

首先老师是以#做墙的,以o为小人的,地图如此

    char map[kRow][kCol]={    '#','#','#','#','#','#',    '#','o','#','#',' ',' ',    '#',' ','#','#',' ','#',    '#',' ','#','#',' ','#',    '#',' ',' ',' ',' ','#',    '#','#','#','#','#','#',        };
通过不断打印地图,实现小人动的感觉。在老师的视频里,一开始我一直不理解,为什么要重复打印地图,(主要是我思维定势了,因为平时玩的游戏,都是地图不动,小人动。),直到,在看推箱子游戏,老师说了刷屏,我恍然大悟,就是应该不断的打印地图,在我们玩游戏的时候,即便我们只感觉地图没动,是里面的小人动了,但是,地图和人都被快速的刷新了一遍。

呃,废话有点多,上段代码,感觉实在些。


////  main.c//  maze////  Created by cqycomputer on 15/6/21.//  Copyright (c) 2015年 cqycomputer. All rights reserved.//#include <stdio.h>#define kRow 6#define kCol 6#define STREET ' '#define PERSON '@'void printMap(char map[kRow][kCol]){        for(int i=0;i<kRow;i++){        for(int j=0;j<kCol;j++){            printf("%c",map[i][j]);        }        printf("\n");    }}int moveByCharAndXY(char dir,int *curX,int *curY,char map[kRow][kCol]){    //    int newX = *curX;    int newY = *curY;    switch(dir){        case 'A':        case 'a':            newY--;            break;        case 'D':        case 'd':            newY++;            break;        case 'W':        case 'w':            newX--;            break;        case 'S':        case 's':            newX++;            break;        case 'Q':        case 'q':            printf("强制退出吗?y/n\n");            char ch = getchar();            if (ch == 'y') {                return -1;            } else {                break;                            }        default:            printf("输入有误,请输入A a,D d,W w,S s,Q q\n");            break;    }    //printf("%c",map[newX][newY]);    if(map[newX][newY] == ' '){        map[newX][newY] = '@';        map[*curX][*curY] = ' ';        *curX = newX;        *curY = newY;                    }        printMap(map);    return 0;    }int main(int argc, const char * argv[]) {    // insert code here...    char map[kRow][kCol]={    '#','#','#','#','#','#',    '#','@','#','#',' ',' ',    '#',' ','#','#',' ','#',    '#',' ','#','#',' ','#',    '#',' ',' ',' ',' ','#',    '#','#','#','#','#','#',        };   // printf("Hello, World!\n");    int curX=1;    int curY=1;    printMap(map);    int flag = 0;       while(curY!=5 && flag == 0){        printf("请输入方向,A左,D右,W上,S下\n");        char dir = getchar();        getchar();       flag = moveByCharAndXY(dir,&curX,&curY,map);        //printf("curX=%d,curY=%d",curX,curY);    }            return 0;}

感觉虽然程序看起来简单,但是自己编写的时候,还是错误一大堆。然后花了好一会儿调代码,能运行,但是还是有点差强人意。希望飞过的大侠们能给点意见。

------- android培训java培训、期待与您交流! ----------

详情请查看:http://edu.csdn.net/heima


0 0
原创粉丝点击