zoukankan      html  css  js  c++  java
  • moveUp()

    这个函数内容有点多,想讲一下大概思路:

    向上移有两种情况
    1、前面为空白
    这种情况有两个步骤
    (1)将人当前的位置设置为空白(0),
    (2)再讲人前面的位置设置为人(2)
    2、前面为箱子
    当前面为箱子时有三种情况
    1、箱子前面为空白
    移动人和箱子,这个操作有三个步骤
    (1)将人当前位置设置为空(0)
    (2)将箱子位置设置为人(2)
    (3)将箱子前面设置为箱子(3)
    2、箱子前面为墙
    这种情况不需要做任何操作
    3、箱子前面为终点
    这种情况有四个个步骤
    (1)将人的位置设置为空(0)
    (2)将箱子的位置设置为人(2)
    (3)将终点位置设置为★(5)
    (4)箱子boxs的数量减一
    3、前面为墙
    这种情况最简单,不需要做任何操作
    4、前面为终点
    我这里没有考虑太多,这种情况不做操作。(如果更换地图的话可能需要修改代码)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    具体代码如下,解析我全写在注释里面:

    void moveUp(){
    //定义变量存放人物上方的坐标
    int ux, uy;

    //当上方没有元素时,直接return (其实人不可能在边缘)
    if(y == 0){
    return;
    }

    //记录上方坐标,x为横,y为纵,所有ux = x, uy = y - 1;
    ux = x;
    uy = y - 1;

    //上方为已完成的箱子
    if(map[uy][ux] == 5){
    return;
    }
    //假设上方为墙,直接return,这个和上面的判断可以合在一起,这里为了看清楚分开写
    if(map[uy][ux] == 1){
    return;
    }

    //假设上方为箱子
    if(map[uy][ux] == 3){
    //判断箱子上方是否为墙
    if(map[uy - 1][ux] == 1){(http://www.my516.com)
    return;
    }

    //判断箱子上方是否为终点
    if(map[uy - 1][ux] == 4){
    //将箱子上面内容赋值为5★
    map[uy - 1][ux] = 5;
    map[uy][ux] = 0;

    //箱子的数目减1
    boxs--;
    }else{
    //移动箱子
    map[uy - 1][ux] = 3;
    }
    }
    //当上面几种return的情况都没遇到,人肯定会移动,移动操作如下
    map[y][x] = 0;
    map[uy][ux] = 2;
    //更新人的坐标
    y = uy;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    这是一个方向的,其它方向要考虑的问题也和前面一样,我也就不赘述了。

  • 相关阅读:
    POJ 2135 Farm Tour(最小费用最大流,变形)
    HDU 1503 Advanced Fruits (LCS,变形)
    HDU Senior's Gun (水题)
    POJ 3648 Wedding (2-SAT,经典)
    HDU 3549 Flow Problem 流问题(最大流,入门)
    解决在eclipse中导入项目名称已存在的有关问题
    如何将js导入时的小红叉去掉
    servlet传值到servlet传值问题
    转发重定向的用法
    parameter与attribute的使用场合(转载自草原和大树)
  • 原文地址:https://www.cnblogs.com/ly570/p/11661055.html
Copyright © 2011-2022 走看看