diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Field.java b/Arctic_Nigthmare/src/arctic_nightmare/Field.java index a4cc068f28d71ea9200c2e957bf5c761871e9786..2475533f35a1f31d450b9683d46f3fb86ed7dcd9 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Field.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Field.java @@ -29,7 +29,7 @@ public abstract class Field { neighbors = new ArrayList<Field>(); } - //Teszthez + //Teszthez: a Field minden szomszédját a kapott Field-re állítja az egyszerűség kedvéért. Nem valós funkció. public void setAllNeighbor(Field field) { Direction dirs[] = Direction.values(); @@ -38,6 +38,7 @@ public abstract class Field { } } + //Adott irányban lévő szomszédnak állítja be a kapott Fieldet public void setNeighbor(Field field, Direction direction) { int idx = direction.ordinal(); @@ -46,16 +47,18 @@ public abstract class Field { public abstract void accept(Person p); + //A Fieldet érő hóvihar hatását közvetíti a rajta állók felé public void blizzard(int quant){ Logger.LogAndIncreaseTabs("Field blizzard"); this.snow += quant; Logger.Log("Van iglu a mezőn?(0 = N, 1 = I)", false); - if(Logger.getNumericInput(0, 1) == 0) { + hasIgloo = Logger.getNumericInput(0, 1) == 1 ? true : false; + if(!hasIgloo) { for(Person p : persons) p.hitByBlizzard(); } else - Logger.Log("Az iglu megvédte a karaktereket a vihartól", false); + Logger.Log(">>Az iglu megvédte a karaktereket a vihartól.", false); Logger.decreaseTabs(); } @@ -66,7 +69,7 @@ public abstract class Field { { snow -= layers; if (0 > snow) snow = 0; - Logger.Log("Letakarítva " + layers + " réteg hó. Még " + snow + " réteg van.", Logger.colors.GREEN); + Logger.Log(">>Letakarítva " + layers + " réteg hó. Még " + snow + " réteg van.", Logger.colors.GREEN); Logger.decreaseTabs(); return true; } @@ -78,8 +81,8 @@ public abstract class Field { Logger.LogAndIncreaseTabs("Field emitItem"); if(snow ==0) { - this.itemPickable= true; // ha nincs a mezÅ‘n már hó akkor "kiszabadÃtható" az item a jégbÅ‘l és láthatóvá válik - Logger.Log(" item láthatóvá válik a pályán a kiásást követően"); + this.itemPickable= true; // ha nincs már a mezőn hó, az item láthatóvá válik + Logger.Log(">>Az item láthatóvá válik a pályán a kiásást követően"); Logger.decreaseTabs(); return true; } @@ -94,10 +97,10 @@ public abstract class Field { Logger.LogAndIncreaseTabs("Field getItem"); if (snow > 0 || item == null) { - Logger.Log("Túl sok hó, vagy nincs tárgy", Logger.colors.RED); + Logger.Log(">>Túl sok hó, vagy nincs tárgy", Logger.colors.RED); return null; } - Logger.Log("Item removed", Logger.colors.GREEN); + Logger.Log(">>Item removed", Logger.colors.GREEN); Item item = this.item; this.item = null; Logger.decreaseTabs(); @@ -119,8 +122,10 @@ public abstract class Field { } public void remove(Person p){ - Logger.LogAndIncreaseTabs("Field remove : " + p.getName()); - Logger.Log("p el lett távolítva a mezőről", false); + if(persons.remove(p)) { + Logger.LogAndIncreaseTabs("Field remove : " + p.getName()); + Logger.Log(">>" + p.getName() + " elhagyta a mezőt.", false); + } Logger.decreaseTabs(); } @@ -128,19 +133,23 @@ public abstract class Field { { Logger.LogAndIncreaseTabs("Field revealCapacity"); Logger.Log("Mennyi a mező kapacitása?(0 - 100 közötti érték)", false); - int cap = Logger.getNumericInput(-1, 100); - Logger.Log("A mező kapacitása " + cap); + capacity = Logger.getNumericInput(0, 100); visibleCapacity = true; + Logger.Log(">>A mező kapacitása láthatóvá vált: " + capacity); Logger.decreaseTabs(); } - public void setIgloo(){ - Logger.Log("Van iglu a mezõn? (0 = I, 1 = N)", false); - if(Logger.getNumericInput(0, 1) == 0) - Logger.Log("Már eddig is volt iglu a mezőn: -> return false"); - else - Logger.Log("Sikeres igluépítés! -> return true"); - Logger.decreaseTabs(); + public boolean setIgloo(){ + Logger.Log("Van iglu a mezõn? (0 = N, 1 = 1)", false); + if(Logger.getNumericInput(0, 1) == 1) { + Logger.Log(">>Már eddig is volt iglu a mezőn, nem tud építkezni."); + } + else { + hasIgloo = true; + Logger.Log(">>Sikeres igluépítés!"); + } + Logger.decreaseTabs(); + return (!hasIgloo); //ha nincs iglu, engedélyezi az építést és igazzal tér vissza, ellenkező esetben hamissal. } //Teszteléshez szükséges függvény @@ -149,7 +158,5 @@ public abstract class Field { persons.add(p); p.field = this; } - - public boolean hasIgloo() {return this.hasIgloo;} } diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Game.java b/Arctic_Nigthmare/src/arctic_nightmare/Game.java index 9a396b7acdcf897c03323aabfb1898b718f620a0..cdf37b65a49eecf51fe735255778602f8ebab228 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Game.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Game.java @@ -59,7 +59,7 @@ public class Game{ + "5: Az eszkimó letakarítja, kiássa és felveszi a kötelet\n" + "6: Az eszkimó iglut épít\n" + "7: A sarkkutató hóviharba kerül\n" - + "8: Az eszkimó összeszereli és elsüti a jelőfényt\n" + + "8: Az eszkimó összeszereli és elsüti a jelzőfényt\n" + "exit"); in = reader.readLine(); switch (in) @@ -122,10 +122,11 @@ public class Game{ Field stablefield = new StableField(0, Item.nothing); unstablefield.setAllNeighbor(stablefield); stablefield.setAllNeighbor(unstablefield); - Explorer explorer1 = new Explorer("ex1", stablefield); - Explorer explorer2 = new Explorer("ex2", unstablefield); - unstablefield.addPerson(explorer2); //Az instabil mezőre inicializáljuk ex2-t - explorer1.step(Direction.RIGHT); + Explorer ex1 = new Explorer("ex1", stablefield); + Explorer ex2 = new Explorer("ex2", unstablefield); + stablefield.addPerson(ex1); //A stabil mezore inicializaljuk ex1-t + unstablefield.addPerson(ex2); //Az instabil mezore inicializaljuk ex2-t + ex1.step(Direction.RIGHT); Logger.decreaseTabs(); } @@ -135,7 +136,7 @@ public class Game{ Field stablefield = new StableField(0,Item.nothing); unstablefield.setAllNeighbor(stablefield); stablefield.setAllNeighbor(unstablefield); - Explorer ex1 = new Explorer("ex1",unstablefield); + Explorer ex1 = new Explorer("ex1", unstablefield); Explorer ex2 = new Explorer("ex2", stablefield); Logger.Log("Van búvárruha a sarkkutatónál? (0 = nem, 1 = igen)", false); if(Logger.getNumericInput(0,1)==1) ex1.addItem(Item.divingSuit); diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Person.java b/Arctic_Nigthmare/src/arctic_nightmare/Person.java index 84b429850545fdf46b04aa84f1b51b6bb13e85a3..79a0a0a6deab068ffef0365a0aafd01da6118427 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Person.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Person.java @@ -18,6 +18,7 @@ public class Person { { items = new Vector<>(); this.field = field; + field.addPerson(this); this.name = name; work = 4; } @@ -51,18 +52,17 @@ public class Person { game.win(); } else - Logger.Log("Nincs meg minden darab", false); + Logger.Log(">> Nincs meg minden darab", false); Logger.decreaseTabs(); } public void die() { Logger.LogAndIncreaseTabs("Person(" + name + ") die", Logger.colors.RED); - Logger.Log("Person (" + name +") died.", false); Logger.decreaseTabs(); } -public void dig(){ + public void dig(){ Logger.LogAndIncreaseTabs("Person(" + name + ") dig"); if(this.field.emitItem()) work--; Logger.decreaseTabs(); @@ -72,17 +72,23 @@ public void dig(){ public void fall() { Logger.LogAndIncreaseTabs("Person(" + name + ") fall"); //teszthez - if(this.hasItem(Item.divingSuit)) { - Logger.Log(this.getName() + "-nak van búvárruhája, túléli", false); + if(items.contains(Item.divingSuit)) { + Logger.Log(">>" + this.getName() + "-nek van búvárruhája, túléli", false); step(Direction.RIGHT); } else { - Logger.Log(this.getName() + "-nak nincs búvárruhája, segítők keresése", false); + Logger.Log(">>" + this.getName() + "-nek nincs búvárruhája, segítők keresése", false); ArrayList<Person> potentialhelpers = findHelpers(); - if(!potentialhelpers.isEmpty()) { - for (Person person : potentialhelpers) - if(!person.pullOut(this)) - die(); + boolean saved = false; + if(!potentialhelpers.isEmpty()) { + for (Person person : potentialhelpers) { + saved = person.pullOut(this); + if(saved) break; + } + if(!saved) { + Logger.Log(">> " + name +"-t egyik szomszédja sem tudta kimenteni.", false); + die(); + } } else die(); } @@ -119,10 +125,10 @@ public void dig(){ Direction dirs[] = Direction.values(); for(Direction dir: dirs) { //iterálás az összes irányt tartalmazó tömbön Field neighbor = field.getNeighbor(dir); //elkérjük a saját fieldtől az adott irányban lévő szomszédot - potentialhelpers.addAll(neighbor.getPersons()); } Logger.decreaseTabs(); + if(potentialhelpers.isEmpty()) Logger.Log(">>" + name + " nem talált segítőket.", false); return potentialhelpers; } @@ -136,20 +142,22 @@ public void dig(){ { if(this.bodyTemp < 4) { this.bodyTemp++; // ha élelmet talált a person azt nem tárolja el, hanem megeszi és növeli vele a bodyTempjét - Logger.Log(" élelem efogyasztása és bodTemp növelése"); + Logger.Log(">> Élelem efogyasztása és bodyTemp növelése", false); } - else Logger.Log(" A testhő maximális: 4 "); + else Logger.Log(">> A testhő maximális: 4 ", false); } else { - items.add(item); - Logger.Log("Person(" + name + ") felvett " + item + "-t", Logger.colors.GREEN); + if(!items.contains(item)) { + items.add(item); + Logger.Log(">> Person(" + name + ") felvette: " + item, false); work --; + } } } else { - Logger.Log("Person(" + name + ") nem tudta felvenni a tárgyat", Logger.colors.RED); + Logger.Log(">> Person(" + name + ") nem tudta felvenni a tárgyat", false); } Logger.decreaseTabs(); } @@ -182,6 +190,7 @@ public void dig(){ if (neighbor != null) { field.remove(this); + field = neighbor; neighbor.accept(this); work --; } @@ -196,14 +205,13 @@ public void dig(){ Logger.decreaseTabs(); } -public void setBodyTemp(int bodyTemp) { - this.bodyTemp=bodyTemp; - } - -public void addItem(Item item) { - Logger.LogAndIncreaseTabs("Person additem " + item); - if(!items.contains(item)) - items.add(item); - Logger.decreaseTabs(); -} + public void setBodyTemp(int bodyTemp) { + this.bodyTemp=bodyTemp; + } + + //Segédfüggvény a teszthez. Nem a teszteset során, hanem már korábban megszerzett tárgy hozzáadása szereplőhöz + public void addItem(Item item) { + if(!items.contains(item)) + items.add(item); + } } diff --git a/Arctic_Nigthmare/src/arctic_nightmare/StableField.java b/Arctic_Nigthmare/src/arctic_nightmare/StableField.java index 5ec6d8719a0167f377b2150fe22884eb9dcc9561..b9b428edd186d8450c2c13ca76c03dde9385c042 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/StableField.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/StableField.java @@ -17,6 +17,7 @@ public class StableField extends Field { Logger.LogAndIncreaseTabs("StableField accept : " + person.getName()); person.field = this; persons.add(person); + Logger.Log(">>"+ person.getName() +" sikeresen �tl�pett stablefield-re.", false); Logger.decreaseTabs(); } } diff --git a/Arctic_Nigthmare/src/arctic_nightmare/UnstableField.java b/Arctic_Nigthmare/src/arctic_nightmare/UnstableField.java index cafa1249279625c455f1f7957e90c613f785aeb7..042a15bc633bd1c73d32aac6c68598ee10db515d 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/UnstableField.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/UnstableField.java @@ -14,23 +14,25 @@ public class UnstableField extends Field{ { Logger.LogAndIncreaseTabs("UnstableField accept : " + person.getName()); persons.add(person); - Logger.Log("Mennyi a jégtábla kapacitása? (1-2)", false); - if (persons.size() > Logger.getNumericInput(0, 3)) + Logger.Log("Mennyi a j�gt�bla kapacit�sa? (1-2)", false); + capacity = Logger.getNumericInput(0, 3); + if (persons.size() > capacity) { overturn(); } else - Logger.Log("A jégtábla nem fordult át", false); + Logger.Log(">>"+ person.getName() +" sikeresen �tl�pett unstablefield-re.", false); Logger.decreaseTabs(); } public void overturn() { - Logger.LogAndIncreaseTabs("UnstableField overturn."); - //2-es teszteset vége. Ha a kapacitást túllépik és a vízbe esnek, akkor - //automatikusan a következő teszteset is lefut mindkét Explorer-re segítők nélkül - Logger.Log("Itt ér véget a >>2.- A felfedező instabil jégmezőre lép teszteset<<\n " - + "és vízbe esés esetén kezdődik a >>3.- A felfedező vízbe esik.<<\n",false); + Logger.LogAndIncreaseTabs("UnstableField overturn"); + //2-es teszteset v�ge. Ha a kapacit�st t�ll�pik �s a v�zbe esnek, akkor + //automatikusan a k�vetkez� teszteset is lefut mindk�t Explorer-re seg�t�k �s b�v�rruh�k n�lk�l + Logger.Log(">>Ez ut�n �r v�get a >>2.- A felfedez� instabil j�gmez�re l�p teszteset<<\n" + + "�s v�zbe es�s eset�n kezd�dik a >>3.- A felfedez� v�zbe esik.<<\n" + + "A szomsz�dos mez�k�n nincs seg�t�, a kutat�knak nincs b�v�rruh�juk.",false); for (Person person : persons) { person.fall();