在上面的程序截图中,可以看到我把小人的上下左右移动分别写到了四个函数中,分别是 MoveToUp()、MoveToDown()、MoveToLeft()、MoveToRight()。以 MoveToUp() 函数为例,我们来分析小人移动的逻辑。理论上,小人是可以上下左右的移动的,但是,由于有地图的限制,小人不能穿墙的,只能在允许的道路上移动,比如...
小人向上移动,“下一位置”的横坐标就是小人当前位置的横坐标减一,纵坐标就是小人当前位置的纵坐标。 然后我们就可以根据“下一位置”的横纵坐标找到具体的字符值,如果是空的,就可以移动,如果是箱子要移动的目标位置,小人也可以移动,还有一种情况是“下一位置”是箱子,我们还要考虑箱子的“下一位置”,箱子的下一...
小人向上移动,“下一位置”的横坐标就是小人当前位置的横坐标减一,纵坐标就是小人当前位置的纵坐标。 然后我们就可以根据“下一位置”的横纵坐标找到具体的字符值,如果是空的,就可以移动,如果是箱子要移动的目标位置,小人也可以移动,还有一种情况是“下一位置”是箱子,我们还要考虑箱子的“下一位置”,箱子的下一...
其实就是输出4行数据。前面有若干个空格。所以要想让它移动的话,执行两步 清屏 重新输出4行数据,每行前面空格减少一位。这样就向左移动了一位了。循环执行 就是不停向左,类似的 还可以上下右移动。
//控制小人移动 void move(int x1, int y1, int x2, int y2); //根据二维数组,渲染地图 int render(); //查找小人所在的当前位置 void find(); //根据用户输入,确定用户选择哪张地图 void setmap(int n); //设置文本显示时的颜色 void color(int m); ...
分析可知,小人的移动可以分为以下几种情况: 1、前面是空地,小人前移到空地; 2、前面是目标点,小人前移到目标点; 3、前面是箱子,又分为两种情况: 3.1 箱子前面是空地,则箱子被推动到空地,小人前移到箱子原位置(空地或目标点); 3.2 箱子前面是目标点,则箱子被推动到目标点,小人前移到箱子原位置(空地或目标点)...
在每次循环中,首先要把当前的地图显示出来,便于用户下一次的移动输入。 我们将游戏地图设置为一个全局变量,这样在小人移动后,地图上的字符改变就是永久的,然后打印局部改变的新地图。 这样程序不断循环,一遍遍的打印地图,游戏地图上的字符是可以不断改变了,但是地图的位置并不能固定下来。
要有可以控制小人行走的功能! 要有碰到边界就回到本行起点功能(如果碰到本列起点一样!) 要显示当前人物共行走的步数! 要显示当前人物坐标! 如果时间充裕可以写个当前日期系统并安装在里面! 本项目初步探索 本项目基本共分为三大方法 start()方法 按键监听move()方法 ...
//移动小人 voidmoveRen(intnextRows,intnextCols,intnextXiangRows,intnextXiangCols){ if(map[nextRows][nextCols]==' '){ //如果人下一个位置是路 map[nextRows][nextCols]='O';//下一个位置设置为人 map[renRows][renCols]=' ';//人原来的位置设置为路 //刷新人的位置 renRows=nextRows; ren...
a.如果是路,则移动小人:小人与路交换位置 b.不是路,判断是否是箱子 c.如果是箱子,计算下一步要移动的位置 d.在判断下一个位置是否是路 e.如果是路,则小人推箱子移动 核心代码:箱子和下一个位置交换 小人与箱子位置交换 重新调整小人与箱子的位置 ...