Update to v19

parent abbd12fb
......@@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/inf101.v18.lab6.iml" filepath="$PROJECT_DIR$/inf101.v18.lab6.iml" />
<module fileurl="file://$PROJECT_DIR$/inf101.v19.lab6.iml" filepath="$PROJECT_DIR$/inf101.v19.lab6.iml" />
</modules>
</component>
</project>
......@@ -22,21 +22,21 @@ Laboppgavene bør gjøres i rekkefølge, som om du ikke er helt ferdig med den f
Som før skal du ha et repository for oppgaven på retting.ii.uib.no. Oppgaven skal dere kunne finne i
repositoriet med den følgende urien:
https://retting.ii.uib.no/<brukernavn>/inf101.v18.lab6.git
https://retting.ii.uib.no/<brukernavn>/inf101.v19.lab6.git
## Oversikt over koden
* [inf101.v18.pond](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/) – kode for andedam
* [inf101.v18.pond.tests](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/tests) – tester for andedam
* [**inf101.v18.pond.Duck**](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/Duck.java) – kode for ender
* [**inf101.v18.pond.Frog**](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/Frog.java) – kode for frosker
* [**inf101.v18.pond.PondDweller**](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/PondDweller.java) – abstrakt superklasse
* [**inf101.v18.pond.PondDemo**](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/PondDemo.java) – kjørbart program
* [**inf101.v18.pond.AppInfo**](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/AppInfo.java) – fyll inn info om programmet ditt her
* [inf101.v18.pond.Pond](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/Pond.java) – kode for andedam
* [inf101.v18.pond.IPondObject](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/IPondObject.java) – grensesnitt for ting som kan være i andedammen
* [inf101.v18.gfx.gfxmode.Point](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/gfx/gfxmode/Point.java) – klasse for (x,y)-posisjoner
* [inf101.v18.gfx.gfxmode.Direction](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/gfx/gfxmode/Direction.java) – klasse for retninger
* [inf101.v19.pond](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/) – kode for andedam
* [inf101.v19.pond.tests](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/tests) – tester for andedam
* [**inf101.v19.pond.Duck**](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/Duck.java) – kode for ender
* [**inf101.v19.pond.Frog**](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/Frog.java) – kode for frosker
* [**inf101.v19.pond.PondDweller**](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/PondDweller.java) – abstrakt superklasse
* [**inf101.v19.pond.PondDemo**](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/PondDemo.java) – kjørbart program
* [**inf101.v19.pond.AppInfo**](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/AppInfo.java) – fyll inn info om programmet ditt her
* [inf101.v19.pond.Pond](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/Pond.java) – kode for andedam
* [inf101.v19.pond.IPondObject](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/IPondObject.java) – grensesnitt for ting som kan være i andedammen
* [inf101.v19.gfx.gfxmode.Point](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/gfx/gfxmode/Point.java) – klasse for (x,y)-posisjoner
* [inf101.v19.gfx.gfxmode.Direction](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/gfx/gfxmode/Direction.java) – klasse for retninger
## Steg 2: Helseproblemer
......@@ -46,7 +46,7 @@ repositoriet med den følgende urien:
2. Finn ut hvor feltvariablen for `health` befinner seg.
3. Prøv å legge til en `getHealth()` metode i `Duck` og/eller `Frog`, og la den returnere `health`. Fungerer det, eller får du en feil? Hvorfor?
4. Fjern `getHealth()`-metoden igjen, og legg den til i `PondDweller` i stedet. Ser du noen forskjell? Hva tror du skjer?
5. Kjør programmet i `inf101.v18.pond.PondDemo`. Du skal se frosker som hopper og en and. (Avslutt med Ctrl-Q / Cmd-Q)
5. Kjør programmet i `inf101.v19.pond.PondDemo`. Du skal se frosker som hopper og en and. (Avslutt med Ctrl-Q / Cmd-Q)
6. Prøv å legge til en `getHealth()`-metode i `Frog` eller `Duck` og la den returnere `1`. Hvordan tror du det vil påvirke programmet (spesielt helseindikatoren, den grønne/røde stripen)? Kjør programmet og se hva som skjer.
7. Hvordan finner `drawHealth()`-metoden ut hva helsenivået er? Kan du endre den til å bruke `getHealth()`-metoden? Hva skjer i såfall om `Frog` har en `getHealth()` som alltid returnerer `1`?
......@@ -56,8 +56,8 @@ Effektene du opplever kommer av arvemekanismen til Java:
* Funksjonaliteten (hvilken kode som blir kjørt) velges mens programmet kjører. Hvis en subklasse mangler en metodeimplementasjon, vil Java finne den i superklassen i stedet.
#### Mer om arv
* Kikk på notatene om objekter: [objekter](https://retting.ii.uib.no/inf101/inf101.v18/wikis/objekter) og [FAQ: Objekter og referanser](https://retting.ii.uib.no/inf101/inf101.v18/wikis/objekter-og-referanser).
* Her er en oppsummering om arv (inkl et par avanserte temaer vi ikke har gått gjennom ennå): [arv, forkravt, datainvariant og substitusjonsprinsipper](https://retting.ii.uib.no/inf101/inf101.v18/wikis/arv-forkrav-invariant-substitusjonsprinsippet)
* Kikk på notatene om objekter: [objekter](https://retting.ii.uib.no/inf101/inf101.v19/wikis/objekter) og [FAQ: Objekter og referanser](https://retting.ii.uib.no/inf101/inf101.v19/wikis/objekter-og-referanser).
* Her er en oppsummering om arv (inkl et par avanserte temaer vi ikke har gått gjennom ennå): [arv, forkravt, datainvariant og substitusjonsprinsipper](https://retting.ii.uib.no/inf101/inf101.v19/wikis/arv-forkrav-invariant-substitusjonsprinsippet)
## Steg 3: Forskjellige ender
......@@ -91,9 +91,9 @@ Vi skal begynne med å lage en egen klasse `Duckling`, med utseende og oppførse
Oppførselen til `Duck` og `Duckling` er veldig kjedelig – de bare sitter der.
* Finn ut hvor implementasjonen av `step()` er for `Duck` (hint: den er ikke i `Duck`-klassen) og legg til f.eks. `pos = pos.move(dir, 5);`. Hva tror du vil skje nå? **(OBS: merk at det her er viktig å si `pos = pos...` fordi posisjonsobjektene (fra [`Point`-klassen](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/gfx/gfxmode/Point.java)) er laget slik at de ikke kan endre seg (de er *immutable*) – en ny posisjon gir et nytt objekt, som må lagres i `pos`-feltvariabelen.)**
* Finn ut hvor implementasjonen av `step()` er for `Duck` (hint: den er ikke i `Duck`-klassen) og legg til f.eks. `pos = pos.move(dir, 5);`. Hva tror du vil skje nå? **(OBS: merk at det her er viktig å si `pos = pos...` fordi posisjonsobjektene (fra [`Point`-klassen](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/gfx/gfxmode/Point.java)) er laget slik at de ikke kan endre seg (de er *immutable*) – en ny posisjon gir et nytt objekt, som må lagres i `pos`-feltvariabelen.)**
* Hvis du endret `step()` i `PondDweller` vil du se at både endene og froskene beveger seg mer enn før. Så du bør kanskje heller *overstyre* `step()` metoden, slik at `Duck` får sin egen metode, med `move`.
* For å unngå at endene forsvinner ut av skjermen, kan du flytte dem tilbake når de når kanten; se [`if`-setningene i `Frog.step()`](https://retting.ii.uib.no/inf101.v18.oppgaver/inf101.v18.lab6/blob/master/src/inf101/v18/pond/Frog.java#L98) (sjekker bare om du når bunnen eller høyre side, så du bør kanskje også teste om X og Y er mindre enn 0).
* For å unngå at endene forsvinner ut av skjermen, kan du flytte dem tilbake når de når kanten; se [`if`-setningene i `Frog.step()`](https://retting.ii.uib.no/inf101.v19.oppgaver/inf101.v19.lab6/blob/master/src/inf101/v19/pond/Frog.java#L98) (sjekker bare om du når bunnen eller høyre side, så du bør kanskje også teste om X og Y er mindre enn 0).
* Hvordan oppfører andungene seg nå?
Merk at `Duckling`-klassen ikke har egne feltvariabler: alle feltvariablene er arvet fra superklassen `Duck` som har arvet dem fra sin superklasse `PondDweller`. Du har heller ikke en egen `step()`-metode (ennå), så de arver `step()`-implementasjonen fra superklassen.
......
package inf101.v18.gfx;
package inf101.v19.gfx;
public interface IPaintLayer {
/**
......
package inf101.v18.gfx;
package inf101.v19.gfx;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -7,9 +7,9 @@ import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import inf101.v18.gfx.gfxmode.TurtlePainter;
import inf101.v18.gfx.textmode.Printer;
import inf101.v18.pond.AppInfo;
import inf101.v19.gfx.gfxmode.TurtlePainter;
import inf101.v19.gfx.textmode.Printer;
import inf101.v19.pond.AppInfo;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Bounds;
import javafx.scene.Cursor;
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
/**
* @author anya
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
public enum Gravity {
NORTH, NORTHWEST, WEST, SOUTHWEST, SOUTH, SOUTHEAST, EAST, NORTHEAST, CENTER
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
import inf101.v18.gfx.IPaintLayer;
import inf101.v19.gfx.IPaintLayer;
import javafx.scene.paint.Paint;
public interface IPainter extends IPaintLayer {
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Paint;
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
public interface ITurtle extends IPainter {
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
public class Point {
private final double x;
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
import java.util.List;
......
package inf101.v18.gfx.gfxmode;
package inf101.v19.gfx.gfxmode;
import java.util.ArrayList;
import java.util.List;
import inf101.v18.gfx.IPaintLayer;
import inf101.v18.gfx.Screen;
import inf101.v19.gfx.IPaintLayer;
import inf101.v19.gfx.Screen;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import java.util.Arrays;
import java.util.Iterator;
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import java.util.ArrayList;
import java.util.HashMap;
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import java.io.BufferedReader;
import java.io.IOException;
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.BiFunction;
import inf101.v18.gfx.IPaintLayer;
import inf101.v18.gfx.Screen;
import inf101.v19.gfx.IPaintLayer;
import inf101.v19.gfx.Screen;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.effect.BlendMode;
......@@ -41,7 +41,7 @@ public class Printer implements IPaintLayer {
* TTF file can be found here: http://users.teilar.gr/~g1951d/ in this ZIP file:
* http://users.teilar.gr/~g1951d/Symbola.zip
* <p>
* (Put the extracted Symbola.ttf in src/inf101/v18/gfx/fonts/)
* (Put the extracted Symbola.ttf in src/inf101/v19/gfx/fonts/)
*/
public static final TextFont FONT_SYMBOLA = new TextFont("Symbola.ttf", 26.70, TextMode.CHAR_BOX_SIZE, -0.4000,
-7.6000, 1.35000, 1.0000, true);
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import java.io.FileNotFoundException;
import java.io.IOException;
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import inf101.v18.gfx.Screen;
import inf101.v18.gfx.textmode.Printer;
import inf101.v19.gfx.Screen;
import inf101.v19.gfx.textmode.Printer;
import javafx.application.Application;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
......
package inf101.v18.gfx.textmode;
package inf101.v19.gfx.textmode;
import inf101.v18.gfx.Screen;
import inf101.v19.gfx.Screen;
public enum TextMode {
/** Low resolution, wide screen (20:11, fits 16:9) text mode 40x22 */
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.Arrays;
import java.util.List;
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.List;
import java.util.stream.Stream;
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.function.Function;
import java.util.stream.Stream;
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.Collection;
import java.util.List;
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.List;
import java.util.function.Predicate;
......
package inf101.v18.grid;
package inf101.v19.grid;
public interface IPosition {
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.ArrayList;
import java.util.List;
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.ArrayList;
import java.util.Iterator;
......
package inf101.v18.grid;
package inf101.v19.grid;
import java.util.ArrayList;
import java.util.Collection;
......
package inf101.v18.grid.tests;
import inf101.v18.grid.GridDirection;
import inf101.v18.grid.IArea;
import inf101.v18.grid.ILocation;
import inf101.v18.util.IGenerator;
import inf101.v18.util.generators.AreaGenerator;
import inf101.v18.util.generators.LocationGenerator;
package inf101.v19.grid.tests;
import inf101.v19.grid.GridDirection;
import inf101.v19.grid.IArea;
import inf101.v19.grid.ILocation;
import inf101.v19.util.IGenerator;
import inf101.v19.util.generators.AreaGenerator;
import inf101.v19.util.generators.LocationGenerator;
import static org.junit.Assert.*;
......
package inf101.v18.grid.tests;
import inf101.v18.grid.IGrid;
import inf101.v18.grid.ILocation;
import inf101.v18.util.IGenerator;
import inf101.v18.util.generators.GridGenerator;
import inf101.v18.util.generators.LocationGenerator;
import inf101.v18.util.generators.StringGenerator;
package inf101.v19.grid.tests;
import inf101.v19.grid.IGrid;
import inf101.v19.grid.ILocation;
import inf101.v19.util.IGenerator;
import inf101.v19.util.generators.GridGenerator;
import inf101.v19.util.generators.LocationGenerator;
import inf101.v19.util.generators.StringGenerator;
import static org.junit.Assert.assertEquals;
......
package inf101.v18.pond;
package inf101.v19.pond;
import java.util.Arrays;
import java.util.List;
......
package inf101.v18.pond;
package inf101.v19.pond;
import inf101.v18.gfx.gfxmode.Direction;
import inf101.v18.gfx.gfxmode.ITurtle;
import inf101.v18.gfx.gfxmode.Point;
import inf101.v19.gfx.gfxmode.Direction;
import inf101.v19.gfx.gfxmode.ITurtle;
import inf101.v19.gfx.gfxmode.Point;
import javafx.scene.paint.Color;
/**
......
package inf101.v18.pond;
package inf101.v19.pond;
import inf101.v18.gfx.gfxmode.Direction;
import inf101.v18.gfx.gfxmode.ITurtle;
import inf101.v18.gfx.gfxmode.Point;
import inf101.v19.gfx.gfxmode.Direction;
import inf101.v19.gfx.gfxmode.ITurtle;
import inf101.v19.gfx.gfxmode.Point;
import javafx.scene.paint.Color;
/**
......
package inf101.v18.pond;
package inf101.v19.pond;
import inf101.v18.gfx.gfxmode.Direction;
import inf101.v18.gfx.gfxmode.ITurtle;
import inf101.v18.gfx.gfxmode.Point;
import inf101.v19.gfx.gfxmode.Direction;
import inf101.v19.gfx.gfxmode.ITurtle;
import inf101.v19.gfx.gfxmode.Point;
public interface IPondObject {
/**
......
package inf101.v18.pond;
package inf101.v19.pond;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import inf101.v18.gfx.Screen;
import inf101.v18.gfx.gfxmode.TurtlePainter;
import inf101.v19.gfx.Screen;
import inf101.v19.gfx.gfxmode.TurtlePainter;
public class Pond {
private double x, y;
......
package inf101.v18.pond;
package inf101.v19.pond;
import inf101.v18.gfx.Screen;
import inf101.v18.gfx.gfxmode.TurtlePainter;
import inf101.v18.gfx.textmode.Printer;
import inf101.v19.gfx.Screen;
import inf101.v19.gfx.gfxmode.TurtlePainter;
import inf101.v19.gfx.textmode.Printer;
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.input.KeyCode;
......
package inf101.v18.pond;
package inf101.v19.pond;
import inf101.v18.gfx.gfxmode.Direction;
import inf101.v18.gfx.gfxmode.ITurtle;
import inf101.v18.gfx.gfxmode.Point;
import inf101.v19.gfx.gfxmode.Direction;
import inf101.v19.gfx.gfxmode.ITurtle;
import inf101.v19.gfx.gfxmode.Point;
import javafx.scene.paint.Color;
// abstract class – noen metoder kan mangle, men du kan ha implementasjon til
......
package inf101.v18.pond.tests;
package inf101.v19.pond.tests;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import inf101.v18.gfx.gfxmode.ITurtle;
import inf101.v18.gfx.gfxmode.Point;
import inf101.v18.gfx.gfxmode.TurtlePainter;
import inf101.v18.pond.Duck;
import inf101.v18.pond.IPondObject;
import inf101.v18.pond.Pond;
import inf101.v18.util.IGenerator;
import inf101.v18.util.generators.DoubleGenerator;
import inf101.v19.gfx.gfxmode.ITurtle;
import inf101.v19.gfx.gfxmode.Point;
import inf101.v19.gfx.gfxmode.TurtlePainter;
import inf101.v19.pond.Duck;
import inf101.v19.pond.IPondObject;
import inf101.v19.pond.Pond;
import inf101.v19.util.IGenerator;
import inf101.v19.util.generators.DoubleGenerator;
class DuckTest extends PondObjectProperties {
......
package inf101.v18.pond.tests;
package inf101.v19.pond.tests;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import inf101.v18.pond.Frog;
import inf101.v19.pond.Frog;
class FrogTest {
......
package inf101.v18.pond.tests;
package inf101.v19.pond.tests;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import inf101.v18.pond.IPondObject;
import inf101.v18.pond.Pond;
import inf101.v19.pond.IPondObject;
import inf101.v19.pond.Pond;
public abstract class PondObjectProperties {
public static int N = 10000;
......
package inf101.v18.util;
package inf101.v19.util;
import static org.junit.Assert.assertEquals;
import java.util.List;
import inf101.v18.util.IGenerator;
import inf101.v19.util.IGenerator;
/**
* A bunch of standard properties for Java objects, mostly related to equality.
......
package inf101.v18.util;
package inf101.v19.util;
import java.util.List;
import java.util.Random;
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import inf101.v18.util.IGenerator;
import inf101.v19.util.IGenerator;
public abstract class AbstractGenerator<T> implements IGenerator<T> {
protected static final Random commonRandom = new Random();
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import inf101.v18.grid.IArea;
import inf101.v18.grid.RectArea;
import inf101.v18.util.IGenerator;
import inf101.v19.grid.IArea;
import inf101.v19.grid.RectArea;
import inf101.v19.util.IGenerator;
import java.util.Random;
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.Random;
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.ArrayList;
import java.util.Collection;
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.List;
import inf101.v18.grid.GridDirection;
import inf101.v19.grid.GridDirection;
public class GridDirectionGenerator extends ElementGenerator<GridDirection> {
/**
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import inf101.v18.grid.IGrid;
import inf101.v18.grid.MyGrid;
import inf101.v18.util.IGenerator;
import inf101.v19.grid.IGrid;
import inf101.v19.grid.MyGrid;
import inf101.v19.util.IGenerator;
import java.util.Random;
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.Random;
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import inf101.v18.util.IGenerator;
import inf101.v19.util.IGenerator;
public class LinkedListGenerator<T> extends AbstractGenerator<List<T>>
implements IGenerator<List<T>> {
......
package inf101.v18.util.generators;
package inf101.v19.util.generators;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import inf101.v18.util.IGenerator;
import inf101.v19.util.IGenerator;
public class ListGenerator<T> extends AbstractGenerator<List<T>>
implements IGenerator<List<T>> {
......