------- 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培训、期待与您交流! ----------
详情请查看: