21xrx.com
2024-12-29 00:35:38 Sunday
登录
文章检索 我的文章 写文章
关键词:Java、程序、推箱子
2023-06-16 12:43:27 深夜i     --     --

Java程序中常用的一个小游戏就是“推箱子”,它其实也可以很轻松地实现。下面我们就来看一下一些简单的Java推箱子代码。

首先,我们需要设定一些常量,例如地图、箱子、目标点等。


public class Constants {

  public static final int WIDTH = 5;

  public static final int HEIGHT = 5;

  public static final char MAP_WALL = '#';

  public static final char MAP_ROAD = ' ';

  public static final char BOX_ON_ROAD = '$';

  public static final char BOX_ON_TARGET = '*';

  public static final char MAN_ON_ROAD = '@';

  public static final char MAN_ON_TARGET = '+';

  public static final char TARGET = '.';

}

接下来,我们需要一个地图,用二维数组来表示。


public class Map {

  private char[][] map = new char[Constants.WIDTH][Constants.HEIGHT];

  public Map(String[] map) {

    for (int i = 0; i < Constants.WIDTH; i++) {

      this.map[i] = map[i].toCharArray();

    }

  }

  public char[][] getMap()

    return map;

  

  public void setMap(char[][] map)

    this.map = map;

  

}

对于箱子、人物等,我们需要对它们进行移动。


public class Move {

  private Map map;

  public Move(Map map)

    this.map = map;

  

  public boolean move(int x, int y, int mx, int my) {

    boolean result = false;

    char[][] m = this.map.getMap();

    if (m[x + mx][y + my] == Constants.MAP_ROAD) {

      m[x + mx][y + my] = Constants.MAN_ON_ROAD;

      m[x][y] = (m[x][y] == Constants.MAN_ON_TARGET) ? Constants.TARGET : Constants.MAP_ROAD;

      result = true;

    } else if (m[x + mx][y + my] == Constants.TARGET) {

      m[x + mx][y + my] = Constants.MAN_ON_TARGET;

      m[x][y] = (m[x][y] == Constants.MAN_ON_TARGET) ? Constants.TARGET : Constants.MAP_ROAD;

      result = true;

    } else if (m[x + mx][y + my] == Constants.BOX_ON_ROAD || m[x + mx][y + my] == Constants.BOX_ON_TARGET) {

      if (m[x + mx * 2][y + my * 2] == Constants.MAP_ROAD) {

        m[x + mx * 2][y + my * 2] = (m[x + mx][y + my] == Constants.BOX_ON_TARGET) ? Constants.BOX_ON_TARGET : Constants.BOX_ON_ROAD;

        m[x + mx][y + my] = (m[x + mx][y + my] == Constants.BOX_ON_TARGET) ? Constants.TARGET : Constants.MAP_ROAD;

        m[x][y] = (m[x][y] == Constants.MAN_ON_TARGET) ? Constants.TARGET : Constants.MAP_ROAD;

        result = true;

      }

    }

    this.map.setMap(m);

    return result;

  }

}

最后,我们需要在控制台上输出地图。


public class Print {

  private Map map;

  public Print(Map map)

    this.map = map;

  

  public void println() {

    char[][] m = map.getMap();

    for (int i = 0; i < Constants.WIDTH; i++) {

      for (int j = 0; j < Constants.HEIGHT; j++) {

        System.out.print(m[i][j]);

      }

      System.out.println();

    }

  }

}

以上就是一个简单的Java推箱子代码,它非常适合初学者练手。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复