Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于在游戏中表示道路交通状况的数据结构_Java_Oop_Data Structures_Racing - Fatal编程技术网

Java 用于在游戏中表示道路交通状况的数据结构

Java 用于在游戏中表示道路交通状况的数据结构,java,oop,data-structures,racing,Java,Oop,Data Structures,Racing,我想设计一个面向对象的数据结构来模拟赛车游戏中的交通状况。 要求如下: 每辆车都可以知道它行驶在车道的哪个位置、哪个车道和哪个路段上 对于每条道路,它可以知道道路上有多少辆车,以及道路上每条车道上有多少辆车 (另外)每辆车都有自己的驾驶策略。例如,有些车辆喜欢开快车,而另一些车辆喜欢开慢车 我使用java来实现这个主题。目前我的对象如下。我只知道这可能需要车辆和道路/路段之间的双向关系,但我不知道如何实现它 class Lane { List<Vehicle> vehicle

我想设计一个面向对象的数据结构来模拟赛车游戏中的交通状况。 要求如下:

  • 每辆车都可以知道它行驶在车道的哪个位置、哪个车道和哪个路段上
  • 对于每条道路,它可以知道道路上有多少辆车,以及道路上每条车道上有多少辆车
  • (另外)每辆车都有自己的驾驶策略。例如,有些车辆喜欢开快车,而另一些车辆喜欢开慢车
  • 我使用java来实现这个主题。目前我的对象如下。我只知道这可能需要
    车辆
    道路
    /
    路段
    之间的双向关系,但我不知道如何实现它

    class Lane {
        List<Vehicle> vehicleDrivingOnMe = new ArrayList<Vehicle>()
    
    }
    
    class RoadSection {
    
        int roadSectionLengthByKM
        /**
         * Integer: LaneID, example: 0 for overspeed
         */
        Map<Integer, Lane> lanes = new HashMap<Integer, Lane>()
    }
    
    class Road {
        List<RoadSection> roadSectionList = new ArrayList<RoadSection>()
    }
    
    class Vehicle {
        int drivingSpeedByKM
    
    }
    
    class车道{
    列表vehicleDrivingOnMe=new ArrayList()
    }
    等级路段{
    国际路段长度(公里)
    /**
    *整数:LaneID,例如:0表示超速
    */
    Map lanes=newhashmap()
    }
    等级公路{
    List roadSectionList=新建ArrayList()
    }
    等级车辆{
    国际驾驶速度公里
    }
    

    那么,我的问题是,为了满足需求1和需求2,我应该在什么对象中添加什么元素?任何建议都将不胜感激。

    为了满足要求1,您可以维护父指针

    class Lane {
        RoadSection roadSection;
        List<Vehicle> vehicleDrivingOnMe = new ArrayList<Vehicle>();
    
        public void addVehicle(Vehicle vehicle) {
            //Update parent
            vehicle.lane = this;
            //Update the position
            vehicle.position = vehicleDrivingOnMe.size();
            vehicleDrivingOnMe.add(vehicle);
        }
    }
    
    class Vehicle {
        Lane lane;
        int drivingSpeedByKM;
        int position;
    }
    

    为了满足需求1,您可以维护父指针

    class Lane {
        RoadSection roadSection;
        List<Vehicle> vehicleDrivingOnMe = new ArrayList<Vehicle>();
    
        public void addVehicle(Vehicle vehicle) {
            //Update parent
            vehicle.lane = this;
            //Update the position
            vehicle.position = vehicleDrivingOnMe.size();
            vehicleDrivingOnMe.add(vehicle);
        }
    }
    
    class Vehicle {
        Lane lane;
        int drivingSpeedByKM;
        int position;
    }