class VeivalgTerreng extends Terreng { VeivalgTerreng(String stedFilnavn, String gjenstandFilnavn) { super(stedFilnavn, gjenstandFilnavn); for (Sted s : steder) lagTilfeldigeUtganger((VeivalgSted) s); } @Override protected Sted lagSted() { return new VeivalgSted(stedFil.nextLine()); } private void lagTilfeldigeUtganger(VeivalgSted vs) { int stedNr = steder.indexOf(vs); int tilfeldigStedNr; while (vs.ledigUtgang()) { tilfeldigStedNr = r.nextInt(steder.size()); // Onsker ikke utgang til seg selv eller (ekstra) til neste i listen if ((tilfeldigStedNr == stedNr) || (tilfeldigStedNr == stedNr + 1)) { tilfeldigStedNr += steder.size() / 2; // lengst mulig avstand // start forfra hvis forbi slutten: tilfeldigStedNr = tilfeldigStedNr % steder.size(); } VeivalgSted tilVSted = (VeivalgSted) steder.get(tilfeldigStedNr); vs.setNyUtgang(tilVSted); } } }