我正在用Java创建游戏推箱子。

地图/运动场是10x10的数组。
数组中的一个字段可以包含5个不同对象之一


目标领域
胸部
播放器

空字段(这是玩家可以走过的空白字段)


现在我想将该地图存储在MySql数据库中,但我不确定如何处理。
我不知道桌子会是什么样子。
稍后我应该能够拉地图,以便玩家可以立即玩或修改该字段。

我考虑过使用100个字符的字符串,并且每个对象都有一个特定的字符,因此我知道它的含义和位置。

最佳答案

是的,因此一种方法是让表具有基于列/行的唯一键。然后,您可以存储相对于该列/行的键,这些键链接到目标字段,箱子,玩家,墙壁,空白字段。

编辑:
要回答有关此答案的问题,您可以创建一个Location类,该类具有x和y,分别代表网格中的一个点。然后覆盖equals / hashCode使其唯一。然后,您可以使用地图将位置和相对的GameObject存储在该位置!

    public class Location {

        private final int x;

        private final int y;

        private final int hashCode;

        public Location(int x, int y) {
            this.x = x;
            this.y = y;
            this.hashCode = Objects.hash(x, y);
        }

        @Override
        public int hashCode() {
            return hashCode;
        }

        @Override
        public boolean equals(Object other) {
            if (other == this) {
                return true;
            }
            if (other instanceof Location) {
                Location otherLocation = (Location) other;

                return otherLocation.x == x && otherLocation.y == y;
            }
            return false;
        }
    }

    interface GameObject {

    }

    class TargetField implements GameObject {

    }

    class MyGame {

        private final Map<Location, GameObject> map;

        MyGame(Map<Location, GameObject> map) {
            this.map = map;
        }

        public void set(Location location, GameObject object) {
            map.put(location, object);
        }
    }

关于java - 如何在MySQL工作台中存储10x10 map /游戏场?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60815346/

10-17 01:47