diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Board.java b/Arctic_Nigthmare/src/arctic_nightmare/Board.java index e29715999193b072e82271ee36b53c5504d67fac..31e182b564f02a43f51745d31e875875d42d18fb 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Board.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Board.java @@ -5,8 +5,8 @@ import java.util.List; public class Board { private List<Field> fields; - //A hóvihar tesztesethez, létrehoz egy egy mezőból álló játéktáblát - //és ráállítja a paraméterként kapott Persont + //A hovihar tesztesethez, letrehoz egy mezobol allo jatektablat + //a jatektablara raallitja a parameterul kapott persont public Board(Person p) { Field f = new StableField(); fields = new ArrayList<Field>(); @@ -17,17 +17,8 @@ public class Board { { switch(tesztesetSzama) { - case 5:{ //5. tesztesetben csak 1 field és egy explorer szükséges - StableField f1 = new StableField(0,Item.food); // a hómennyiség 0, csak az élelem felvételét szemlélteti a teszteset - fields= new ArrayList<Field>(); - fields.add(f1); - for (Person p: persons) - { - f1.addPerson(p); - } - } - case 6:{ //5. tesztesetben csak 1 field és egy eskimo szükséges - StableField f1 = new StableField(1,Item.rope); // a hómennyiség 1, hogy látszódjon a shove + case 5:{ //5. tesztesetben csak 1 field es egy eszkimo szukseges + StableField f1 = new StableField(1,Item.rope); fields= new ArrayList<Field>(); fields.add(f1); for (Person p: persons) @@ -42,7 +33,7 @@ public class Board { public void makeBlizzard(){ Logger.LogAndIncreaseTabs("Board makeBlizzard"); - /*Csak a teszteléshez, minden mezőn vihart idéz elő*/ + /* Csak a teszteleshez minden fielden vihart hoz létre*/ for(Field f : fields) f.blizzard(1); Logger.decreaseTabs(); diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Eskimo.java b/Arctic_Nigthmare/src/arctic_nightmare/Eskimo.java index 6b25f222d0c5766e58839133f1e9f00a8af4f8da..6f5d4f3c08b446c6de3ca9f3c1f06817028f30cd 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Eskimo.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Eskimo.java @@ -1,17 +1,17 @@ -package arctic_nightmare; - -public class Eskimo extends Person { - - - public Eskimo(String name) { - super(name);} - - public Eskimo(String name, Field field) { - super(name, field); - } - public void buildIgloo(){ - Logger.LogAndIncreaseTabs("Eskimo: buildIgloo"); - this.field.setIgloo(); - Logger.decreaseTabs(); - } -} +package arctic_nightmare; + +public class Eskimo extends Person { + + + public Eskimo(String name) { + super(name);} + + public Eskimo(String name, Field field) { + super(name, field); + } + public void buildIgloo(){ + Logger.LogAndIncreaseTabs("Eskimo: buildIgloo"); + this.field.setIgloo(); + Logger.decreaseTabs(); + } +} diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Field.java b/Arctic_Nigthmare/src/arctic_nightmare/Field.java index 6fbb0517af35701ec4b48e21694e57ea45b48751..5102b5c956808567dc78da68d9309e7a2f36fe4c 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Field.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Field.java @@ -1,162 +1,162 @@ -package arctic_nightmare; - -import java.util.ArrayList; -import java.util.List; - -public abstract class Field { - private int snow; - private Item item; - protected int capacity; - private boolean hasIgloo; - private boolean itemPickable; - protected ArrayList<Person> persons; - private ArrayList<Field> neighbors; // left right up down - private boolean visibleCapacity; - - - public Field() { - neighbors = new ArrayList<Field>(); - persons = new ArrayList<Person>(); - - } - Field(int capacity, int snow, Item item) - { - persons = new ArrayList<Person>(); - this.capacity = capacity; - this. snow = snow; - this.item = item; - visibleCapacity = false; - neighbors = new ArrayList<Field>(); - } - - //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(); - for(Direction dir: dirs) { - neighbors.add(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(); - neighbors.set(idx, 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); - 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.decreaseTabs(); - } - - public boolean clearSnow(int layers) - { - Logger.LogAndIncreaseTabs("Field clearSnow"); - if (snow > 0) - { - snow -= layers; - if (0 > snow) snow = 0; - Logger.Log(">>Letakarítva " + layers + " réteg hó. Még " + snow + " réteg van."); - Logger.decreaseTabs(); - return true; - } - Logger.decreaseTabs(); - return false; - } - - public boolean emitItem(){ - Logger.LogAndIncreaseTabs("Field emitItem"); - if(snow ==0) - { - 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; - } - Logger.decreaseTabs(); - return false; - } - - public int getCapacity(){return 0;} - - public Item getItem() - { - Logger.LogAndIncreaseTabs("Field getItem"); - if (snow > 0 || item == null) - { - Logger.Log(">>Túl sok hó, vagy nincs tárgy"); - return null; - } - Logger.Log(">>Item removed"); - Item item = this.item; - this.item = null; - Logger.decreaseTabs(); - return item; - } - - public Field getNeighbor(Direction direction) - { - Logger.LogAndIncreaseTabs("Field getNeighbor : " + direction); - Field f = neighbors.get(direction.ordinal()); - Logger.decreaseTabs(); - return f; - } - - public List<Person> getPersons(){ - Logger.LogAndIncreaseTabs("Field getPersons"); - Logger.decreaseTabs(); - return persons; - } - - public void remove(Person p){ - if(persons.remove(p)) { - Logger.LogAndIncreaseTabs("Field remove : " + p.getName()); - Logger.Log(">>" + p.getName() + " elhagyta a mezőt.", false); - } - Logger.decreaseTabs(); - } - - public void revealCapacity() - { - Logger.LogAndIncreaseTabs("Field revealCapacity"); - Logger.Log("Mennyi a mező kapacitása?(0 - 100 közötti érték)", false); - capacity = Logger.getNumericInput(0, 100); - visibleCapacity = true; - Logger.Log(">>A mező kapacitása láthatóvá vált: " + capacity); - 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 - //Nem ír ki semmit, mert csak inicializál - public void addPerson(Person p) { - persons.add(p); - p.field = this; - } - -} +package arctic_nightmare; + +import java.util.ArrayList; +import java.util.List; + +public abstract class Field { + private int snow; + private Item item; + protected int capacity; + private boolean hasIgloo; + private boolean itemPickable; + protected ArrayList<Person> persons; + private ArrayList<Field> neighbors; // left right up down + private boolean visibleCapacity; + + + public Field() { + neighbors = new ArrayList<Field>(); + persons = new ArrayList<Person>(); + + } + Field(int capacity, int snow, Item item) + { + persons = new ArrayList<Person>(); + this.capacity = capacity; + this. snow = snow; + this.item = item; + visibleCapacity = false; + neighbors = new ArrayList<Field>(); + } + + //Teszthez: a Field minden szomszedjat a kapott Field-re allitja az egyszeruseg kedveert. Nem valos funkció. + public void setAllNeighbor(Field field) + { + Direction dirs[] = Direction.values(); + for(Direction dir: dirs) { + neighbors.add(field); + } + } + + //Adott irányban levo szomszédnak allitja be a kapott Fieldet + public void setNeighbor(Field field, Direction direction) + { + int idx = direction.ordinal(); + neighbors.set(idx, field); + } + + public abstract void accept(Person p); + + //A Fieldet ero hovihar hatasat kozvetiti a rajta allok fele + public void blizzard(int quant){ + Logger.LogAndIncreaseTabs("Field blizzard"); + this.snow += quant; + Logger.Log("Van iglu a mezőn?(0 = N, 1 = I)", false); + 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.decreaseTabs(); + } + + public boolean clearSnow(int layers) + { + Logger.LogAndIncreaseTabs("Field clearSnow"); + if (snow > 0) + { + snow -= layers; + if (0 > snow) snow = 0; + Logger.Log(">>Letakarítva " + layers + " réteg hó. Még " + snow + " réteg van.",false); + Logger.decreaseTabs(); + return true; + } + Logger.decreaseTabs(); + return false; + } + + public boolean emitItem(){ + Logger.LogAndIncreaseTabs("Field emitItem"); + if(snow ==0) + { + this.itemPickable= true; // ha nincs mar a mezon ho, az item lathatova valik + Logger.Log(">>Az item láthatóvá válik a pályán a kiásást követően"); + Logger.decreaseTabs(); + return true; + } + Logger.decreaseTabs(); + return false; + } + + public int getCapacity(){return 0;} + + public Item getItem() + { + Logger.LogAndIncreaseTabs("Field getItem"); + if (snow > 0 || item == null) + { + Logger.Log(">>Túl sok hó, vagy nincs tárgy", false); + return null; + } + Logger.Log(">>Item removed", false); + Item item = this.item; + this.item = null; + Logger.decreaseTabs(); + return item; + } + + public Field getNeighbor(Direction direction) + { + Logger.LogAndIncreaseTabs("Field getNeighbor : " + direction); + Field f = neighbors.get(direction.ordinal()); + Logger.decreaseTabs(); + return f; + } + + public List<Person> getPersons(){ + Logger.LogAndIncreaseTabs("Field getPersons"); + Logger.decreaseTabs(); + return persons; + } + + public void remove(Person p){ + if(persons.remove(p)) { + Logger.LogAndIncreaseTabs("Field remove : " + p.getName()); + Logger.Log(">>" + p.getName() + " elhagyta a mezőt.", false); + } + Logger.decreaseTabs(); + } + + public void revealCapacity() + { + Logger.LogAndIncreaseTabs("Field revealCapacity"); + Logger.Log("Mennyi a mező kapacitása?(0 - 100 közötti érték)", false); + capacity = Logger.getNumericInput(0, 100); + visibleCapacity = true; + Logger.Log(">>A mező kapacitása láthatóvá vált: " + capacity); + 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, engedelyezi az epitest es igazzal ter vissza, ellenkezo esetben hamissal. + } + + //Teszteleshez szükseges függveny + //Nem ir ki semmit, mert csak inicializal + public void addPerson(Person p) { + persons.add(p); + p.field = this; + } + +} diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Game.java b/Arctic_Nigthmare/src/arctic_nightmare/Game.java index 0eb4127b035e049f97813201a718fb9bf56d4141..dbc4da69072cfe351fbc1db7bdf35d2b6cba82fb 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Game.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Game.java @@ -1,228 +1,228 @@ -package arctic_nightmare; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import static java.lang.System.in; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; -import javax.swing.JFrame; -import javax.swing.JTextArea; - -public class Game{ - private Person actualPlayer; - private List<Person> players; - private Board board; - - - Game(){} - - void gameOver(){} - - void nextPlayer(){} - - void newGame() - { - } - - void setActualPerson(Person P){ - actualPlayer = P; - } - - void win(){ - Logger.LogAndIncreaseTabs("Game win"); - Logger.Log("A játék véget ért a játékosok nyertek.", false); - Logger.decreaseTabs(); - } - - /************************************************* - * Test functions * - *************************************************/ - - void test() throws IOException - { - boolean exit = false; - String in; - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - while (!exit){ - Logger.setTabs(0); - Logger.Log("Kérlek válassz tesztesetet!\n" - + "1: A sarkkutató megvizsgálja a mezőt\n" - + "2: A sarkkutató instabil jégmezőre lép (automatikusan futtatja a 3-ast is)\n" - + "3: A sarkkutató vízbe esik\n" - + "4: A sarkkutató kiássa és elfogyasztja az élelmet\n" - + "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 jelzőfényt\n" - + "exit"); - in = reader.readLine(); - switch (in) - { - case "1": - explorerChecksCapacity(); - break; - case "2": - personStepsToUnstable(); - break; - case "3": - personFalls(); - break; - case "4": - personEatsFood(); - break; - case "5": - personDigsRope(); - break; - case "6": - eskimoBuildsIgloo(); - break; - case "7": - explorerGetsHitByBlizzard(); - break; - case "8": - eskimoAssemblesandShootsFlare(); - break; - case "exit": - exit = true; - break; - } - } - } - - private void explorerChecksCapacity() - { - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az explorer checkCapacity függvényét."); - Field field1 = new StableField(0, null); - Field field2 = new StableField(0, null); - field1.setAllNeighbor(field2); - field2.setAllNeighbor(field1); - Explorer explorer = new Explorer("Explorer", field2); - Logger.Log("Melyik mezőt vizsgálja a sarkkutató?(0 = Alsó, 1 = Felső, 2 = Jobb, 3 = Bal)", false); - Direction d; - switch(Logger.getNumericInput(0, 3)) { - case 0: d = Direction.DOWN; break; - case 1: d = Direction.UP; break; - case 2: d = Direction.RIGHT; break; - default:d = Direction.LEFT; break; - } - explorer.checkCapacity(d); - Logger.decreaseTabs(); - } - - private void personStepsToUnstable() - { - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter step(Direction.RIGHT) függvényét."); - Field unstablefield = new UnstableField(); - Field stablefield = new StableField(0, Item.nothing); - unstablefield.setAllNeighbor(stablefield); - stablefield.setAllNeighbor(unstablefield); - 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(); - } - - private void personFalls() { - Logger.increaseTabs(); - Field unstablefield = new UnstableField(0, 0, Item.nothing); - Field stablefield = new StableField(0,Item.nothing); - unstablefield.setAllNeighbor(stablefield); - stablefield.setAllNeighbor(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); - Logger.Log("Van kötél a szomszédos mezőn álló eszkimónál? (0 = nem, 1 = igen)", false); - if(Logger.getNumericInput(0,1)==1) ex2.addItem(Item.rope); - ex1.fall(); - Logger.decreaseTabs(); - } - - private void personEatsFood() throws IOException //5. - { - Logger.Log("Mennyi a sarkkutató testhője?( 1-4ig)\n", false); - int bodytemp = Logger.getNumericInput(1,4); - Person ex1 = new Explorer("ExplorerAboutToEatFood"); - ex1.setBodyTemp(bodytemp); - StableField f1 = new StableField(0,Item.food); - f1.addPerson(ex1); // listába kerül az explorer, hogy át lehessen adni a board konstruktorának - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter pickUpItem függvényét."); - ex1.pickUpItem(); // hozzáadjuk a mezőn felszedett itemet az Explroerhez - } - - private void personDigsRope() //6. - - { - Person es1 = new Eskimo("EskimoAboutToPickupRope"); - List<Person> persons= new ArrayList<Person>(); - persons.add(es1); - - this.board = new Board(6,persons); // listába kerül az explorer, hogy át lehessen adni a board konstruktorának - - Logger.Log("Explorernek van ásója?( 0 = nem vagy 1 = igen)\n", false); - int aso = Logger.getNumericInput(0,1); - Logger.Log("Hány réteg hó borítja a fieldet? 1 vagy 2?)\n", false); - Logger.getNumericInput(1,2); - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter shovel függvényét."); - if(aso == 1) - { - es1.addItem(Item.shovel); // Ásó hozzáadása az eszkimóhoz - } - es1.shovel(); - Logger.decreaseTabs(); - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter dig függvényét."); - es1.dig();// kiássa a kötelet - Logger.decreaseTabs(); - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter pickUpItemfüggvényét."); - es1.pickUpItem(); // felveszi a tárgyat, ami jelen esetben egy kötél - Logger.decreaseTabs(); - } - - - //a testeset az Iglu építést szimulálja - //felhasználó dönti el, hogy van-e már a mezõn Iglu - void eskimoBuildsIgloo() - { - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az eskimo buildIgloo() függvényét."); - StableField f = new StableField(2,Item.nothing); - Eskimo es = new Eskimo("IglooBuilder",f); - es.buildIgloo(); - Logger.decreaseTabs(); - } - - //a testeset a Vihart szimulálja - //a felhasználó dönti el, hogy van-e Iglu a mezõn, amin a sarkkutató tartózkodik - //ha van Iglu, nem történik sebzés - //a felhasználó állítja be a sarkkutató testhõjét is - //ha 1 a testhõ, a sarkkutató meghal - void explorerGetsHitByBlizzard() { - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az explorer hitByBlizzard függvényét."); - Explorer ex = new Explorer("ex"); - Board b = new Board(ex); - b.makeBlizzard(); - Logger.decreaseTabs(); - } - - //a testeset a pisztoly összeszerelését és elsütését szimulálja - //a felhasználó dönti el, hogy a játékosok összegyûjtötték-e az összes alkatrészt - //ha igen, megnyerik a játékot - void eskimoAssemblesandShootsFlare() { - Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az eskimo AssembleFlare függvényét."); - StableField f1 = new StableField(2,Item.nothing); - Eskimo es1 = new Eskimo("es1",f1); - Eskimo es2 = new Eskimo("es2",f1); - f1.addPerson(es1); - f1.addPerson(es2); - es1.assembleFlare(); - Logger.decreaseTabs(); - } - -} +package arctic_nightmare; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import static java.lang.System.in; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import javax.swing.JFrame; +import javax.swing.JTextArea; + +public class Game{ + private Person actualPlayer; + private List<Person> players; + private Board board; + + + Game(){} + + void gameOver(){} + + void nextPlayer(){} + + void newGame() + { + } + + void setActualPerson(Person P){ + actualPlayer = P; + } + + void win(){ + Logger.LogAndIncreaseTabs("Game win"); + Logger.Log(">> A játék véget ért a játékosok nyertek.", false); + Logger.decreaseTabs(); + } + + /************************************************* + * Test functions * + *************************************************/ + + void test() throws IOException + { + boolean exit = false; + String in; + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + while (!exit){ + Logger.setTabs(0); + Logger.Log("Kérlek válassz tesztesetet!\n" + + "1: A sarkkutató megvizsgálja a mezőt\n" + + "2: A sarkkutató instabil jégmezőre lép (automatikusan futtatja a 3-ast is)\n" + + "3: A sarkkutató vízbe esik\n" + + "4: A sarkkutató kiássa és elfogyasztja az élelmet\n" + + "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 jelzőfényt\n" + + "exit"); + in = reader.readLine(); + switch (in) + { + case "1": + explorerChecksCapacity(); + break; + case "2": + personStepsToUnstable(); + break; + case "3": + personFalls(); + break; + case "4": + personEatsFood(); + break; + case "5": + personDigsRope(); + break; + case "6": + eskimoBuildsIgloo(); + break; + case "7": + explorerGetsHitByBlizzard(); + break; + case "8": + eskimoAssemblesandShootsFlare(); + break; + case "exit": + exit = true; + break; + } + } + } + + private void explorerChecksCapacity() + { + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az explorer checkCapacity függvényét."); + Field field1 = new StableField(0, null); + Field field2 = new StableField(0, null); + field1.setAllNeighbor(field2); + field2.setAllNeighbor(field1); + Explorer explorer = new Explorer("Explorer", field2); + Logger.Log("Melyik mezőt vizsgálja a sarkkutató?(0 = Alsó, 1 = Felső, 2 = Jobb, 3 = Bal)", false); + Direction d; + switch(Logger.getNumericInput(0, 3)) { + case 0: d = Direction.DOWN; break; + case 1: d = Direction.UP; break; + case 2: d = Direction.RIGHT; break; + default:d = Direction.LEFT; break; + } + explorer.checkCapacity(d); + Logger.decreaseTabs(); + } + + private void personStepsToUnstable() + { + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter step(Direction.RIGHT) függvényét."); + Field unstablefield = new UnstableField(); + Field stablefield = new StableField(0, Item.nothing); + unstablefield.setAllNeighbor(stablefield); + stablefield.setAllNeighbor(unstablefield); + 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(); + } + + private void personFalls() { + Logger.increaseTabs(); + Field unstablefield = new UnstableField(0, 0, Item.nothing); + Field stablefield = new StableField(0,Item.nothing); + unstablefield.setAllNeighbor(stablefield); + stablefield.setAllNeighbor(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); + Logger.Log("Van kötél a szomszédos mezőn álló eszkimónál? (0 = nem, 1 = igen)", false); + if(Logger.getNumericInput(0,1)==1) ex2.addItem(Item.rope); + ex1.fall(); + Logger.decreaseTabs(); + } + + private void personEatsFood() throws IOException + { + Logger.Log("Mennyi a sarkkutató testhője?( 1-4ig)\n", false); + int bodytemp = Logger.getNumericInput(1,4); + Person ex1 = new Explorer("ExplorerAboutToEatFood"); + ex1.setBodyTemp(bodytemp); + StableField f1 = new StableField(0,Item.food); + f1.addPerson(ex1); + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter pickUpItem függvényét."); + ex1.pickUpItem(); // hozzaadjuk a mezon felszedett itemet az Explroerhez + } + + private void personDigsRope() + + { + Person es1 = new Eskimo("EskimoAboutToPickupRope"); + List<Person> persons= new ArrayList<Person>(); + persons.add(es1); + + this.board = new Board(5,persons); // listaba kerül az explorer, hogy at lehessen adni a board konstruktoranak + + Logger.Log("Explorernek van ásója?( 0 = nem vagy 1 = igen)\n", false); + int aso = Logger.getNumericInput(0,1); + Logger.Log("Hány réteg hó borítja a fieldet? 1 vagy 2?)\n", false); + Logger.getNumericInput(1,2); + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter shovel függvényét."); + if(aso == 1) + { + es1.addItem(Item.shovel); // Aso hozzaadasa az eszkimohoz + } + es1.shovel(); + Logger.decreaseTabs(); + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter dig függvényét."); + es1.dig();// kiassa a kotelet + Logger.decreaseTabs(); + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az adott karakter pickUpItemfüggvényét."); + es1.pickUpItem(); // felveszi a targyat, ami jelen esetben egy kotel + Logger.decreaseTabs(); + } + + + //a testeset az Iglu epitest szimulalja + //felhasznalo donti el, hogy van-e mar a mezon Iglu + void eskimoBuildsIgloo() + { + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az eskimo buildIgloo() függvényét."); + StableField f = new StableField(2,Item.nothing); + Eskimo es = new Eskimo("IglooBuilder",f); + es.buildIgloo(); + Logger.decreaseTabs(); + } + + //a testeset a Vihart szimulalja + //a felhasznalo donti el, hogy van-e Iglu a mezon, amin a sarkkutato tartozkodik + //ha van Iglu, nem tortenik sebzes + //a felhasznalo allitja be a sarkkutato testhojet is + //ha 1 a testho, a sarkkutato meghal + void explorerGetsHitByBlizzard() { + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az explorer hitByBlizzard függvényét."); + Explorer ex = new Explorer("ex"); + Board b = new Board(ex); + b.makeBlizzard(); + Logger.decreaseTabs(); + } + + //a testeset a pisztoly összeszerelését és elsuteset szimulalja + //a felhasznalo donti el, hogy a jatekosok osszegyujtottek-e az osszes alkatreszt + //ha igen, megnyerik a jatekot + void eskimoAssemblesandShootsFlare() { + Logger.LogAndIncreaseTabs("Game: a játéklogika meghívja az eskimo AssembleFlare függvényét."); + StableField f1 = new StableField(2,Item.nothing); + Eskimo es1 = new Eskimo("es1",f1); + Eskimo es2 = new Eskimo("es2",f1); + f1.addPerson(es1); + f1.addPerson(es2); + es1.assembleFlare(); + Logger.decreaseTabs(); + } + +} diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Logger.java b/Arctic_Nigthmare/src/arctic_nightmare/Logger.java index cc3216676f964858c392c6e15be41f52098e8b31..9c0fcf4fee18ea6d8a97a8c0aa78a8130d923c8e 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Logger.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Logger.java @@ -1,65 +1,73 @@ -package arctic_nightmare; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.Scanner; - -final public class Logger { - private static int tabs; - private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); - private static Scanner scanner = new Scanner(System.in); - - static - { - tabs = 0; - } - - - static int getNumericInput(int lowerConstraint, int upperConstraint) { - int c = scanner.nextInt(); - while(c < lowerConstraint || c > upperConstraint) { - Log("A megadott érték érvénytelen."); - c = scanner.nextInt(); - } - return c; - } - - static void setTabs(int newtabs) - { - tabs = newtabs; - } - - static void increaseTabs() - { - tabs ++; - } - - static void decreaseTabs() - { - tabs --; - if (1 > tabs) tabs =0; - } - - static void Log(String message) - { - if (tabs != 0) System.out.println(String.format("%0" + tabs + "d", 0).replace("0", "\t") + message); - else System.out.println(message); - } - - static void Log(String message, boolean tabulated) { - if(!tabulated)System.out.println(message); - else Log(message); - } - - static void LogAndIncreaseTabs(String message) - { - Log(message); - increaseTabs(); - } - - static void LogAndDecreaseTabs(String message) - { - Log(message); - decreaseTabs(); - } -} +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package arctic_nightmare; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Scanner; + +/** + * + * @author csellar + */ +final public class Logger { + private static int tabs; + + private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + private static Scanner scanner = new Scanner(System.in); + + static + { + tabs = 0; + } + + static int getNumericInput(int lowerConstraint, int upperConstraint) { + int c = scanner.nextInt(); + while(c < lowerConstraint || c > upperConstraint) { + Log("A megadott érték érvénytelen."); + c = scanner.nextInt(); + } + return c; + } + + static void setTabs(int newtabs) + { + tabs = newtabs; + } + + static void increaseTabs() + { + tabs ++; + } + + static void decreaseTabs() + { + tabs --; + if (1 > tabs) tabs =0; + } + + static void Log(String message) + { + if (tabs != 0) System.out.println(String.format("%0" + tabs + "d", 0).replace("0", "\t") + message); + else System.out.println(message); + } + + static void Log(String message, boolean tabulated) { + if(!tabulated)System.out.println(message); + else Log(message); + } + + static void LogAndIncreaseTabs(String message) + { + Log(message); + increaseTabs(); + } + + static void LogAndDecreaseTabs(String message) + { + LogAndDecreaseTabs(message); + } +} diff --git a/Arctic_Nigthmare/src/arctic_nightmare/Person.java b/Arctic_Nigthmare/src/arctic_nightmare/Person.java index 0418b70add9ea1be920c81844760975072312368..31c09526dbd9374ff9153f4e6dfca65042ff3386 100644 --- a/Arctic_Nigthmare/src/arctic_nightmare/Person.java +++ b/Arctic_Nigthmare/src/arctic_nightmare/Person.java @@ -1,217 +1,217 @@ -package arctic_nightmare; - -import java.util.List; -import java.util.ArrayList; -import java.util.Vector; - -public class Person { - private int bodyTemp; - private int maxTemp; - private int work; - private String name; //Teszt kiíratáshoz - protected Field field; - private Vector<Item> items; - private Game game; - - - Person(String name, Field field) - { - items = new Vector<>(); - this.field = field; - field.addPerson(this); - this.name = name; - work = 4; - } - - Person(String name) - { - items = new Vector<>(); - this.name = name; - work = 4; - } - - /*public void addItem(Item item) - { - items.add(item); - }*/ - - public void assembleFlare(){ - Logger.LogAndIncreaseTabs("Person assembleFlare"); - List<Person> persons = field.getPersons(); - Item parts[] = {Item.pistol, Item.cartridge, Item.flare}; - boolean b[] = {false, false, false}; - for(int i = 0; i <3; ++i) { - for(Person p : persons) { - if(p.hasItem(parts[i])){ - b[i] = true; - break; - } - } - } - if(b[0] && b[1] && b[2]) { - game.win(); - } - else - Logger.Log(">> Nincs meg minden darab", false); - Logger.decreaseTabs(); - } - - public void die() - { - Logger.LogAndIncreaseTabs("Person(" + name + ") die"); - Logger.decreaseTabs(); - } - - public void dig(){ - Logger.LogAndIncreaseTabs("Person(" + name + ") dig"); - if(this.field.emitItem()) work--; - Logger.decreaseTabs(); - } - - //Kiegészítve a teszthez szükséges sorokkal - public void fall() - { - Logger.LogAndIncreaseTabs("Person(" + name + ") fall"); //teszthez - 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() + "-nek nincs búvárruhája, segítők keresése", false); - ArrayList<Person> potentialhelpers = findHelpers(); - 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(); - } - Logger.decreaseTabs(); - } - - //Teszt kiíratáshoz - public String getName() - { - return name; - } - - public int getWork(){return 0;} - - public boolean hasItem(Item item){ - Logger.LogAndIncreaseTabs("Person hasItem : " + item ); - Logger.Log("Van " + item + " a karakternél(" + name + - ")?(0 = I, 1 = N)", false); - boolean b = Logger.getNumericInput(0, 1) == 0; - Logger.decreaseTabs(); - return b; - } - - public void hitByBlizzard(){ - Logger.LogAndIncreaseTabs("Person: hitByBlizzard"); - this.bodyTemp--; - if(this.bodyTemp==0) die(); - Logger.decreaseTabs(); - } - - public ArrayList<Person> findHelpers(){ - Logger.LogAndIncreaseTabs("Person(" + name + ") findHelpers"); - ArrayList<Person> potentialhelpers = new ArrayList<Person>(); - 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; - } - - public void pickUpItem() - { - Logger.LogAndIncreaseTabs("Person(" + name + ") pickUpItem"); - Item item = field.getItem(); - if (item != null) - { - if(item.equals(Item.food)) - { - 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 bodyTemp növelése", false); - } - else Logger.Log(">> A testhő maximális: 4 ", false); - } - else - { - 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", false); - } - Logger.decreaseTabs(); - } - - public boolean pullOut(Person p){ - Logger.LogAndIncreaseTabs("Person(" + name + ") pullOut("+p.name+ ")"); - if(items.contains(Item.rope)) { - p.step(field); - } - Logger.decreaseTabs(); - return items.contains(Item.rope); - } - - public void setWork(int i) - { - - } - - public void shovel() - { - Logger.LogAndIncreaseTabs("Person(" + name + ") shovel"); - if (field.clearSnow(items.contains(Item.shovel) ? 2 : 1)) work --; // ellenõrizzük hogy van e ásója - Logger.decreaseTabs(); // ha van ásója, akkor 2 réteg havat tud letakarítani ha nincs akkor 1-t - } - - public void step(Direction direction) - { - Logger.LogAndIncreaseTabs("Person(" + name + ") step(" + direction+")"); - Field neighbor = field.getNeighbor(direction); - if (neighbor != null) - { - field.remove(this); - field = neighbor; - neighbor.accept(this); - work --; - } - Logger.decreaseTabs(); - - } - - public void step(Field field) - { - Logger.LogAndIncreaseTabs("Person(" + name + ") step(Field)"); - field.accept(this); - 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); - } -} +package arctic_nightmare; + +import java.util.List; +import java.util.ArrayList; +import java.util.Vector; + +public class Person { + private int bodyTemp; + private int maxTemp; + private int work; + private String name; //Teszt kiiratashoz + protected Field field; + private Vector<Item> items; + private Game game; + + + Person(String name, Field field) + { + items = new Vector<>(); + this.field = field; + field.addPerson(this); + this.name = name; + work = 4; + } + + Person(String name) + { + items = new Vector<>(); + this.name = name; + work = 4; + } + + /*public void addItem(Item item) + { + items.add(item); + }*/ + + public void assembleFlare(){ + Logger.LogAndIncreaseTabs("Person assembleFlare"); + List<Person> persons = field.getPersons(); + Item parts[] = {Item.pistol, Item.cartridge, Item.flare}; + boolean b[] = {false, false, false}; + for(int i = 0; i <3; ++i) { + for(Person p : persons) { + if(p.hasItem(parts[i])){ + b[i] = true; + break; + } + } + } + if(b[0] && b[1] && b[2]) { + game.win(); + } + else + Logger.Log(">> Nincs meg minden darab", false); + Logger.decreaseTabs(); + } + + public void die() + { + Logger.LogAndIncreaseTabs("Person(" + name + ") die"); + Logger.decreaseTabs(); + } + + public void dig(){ + Logger.LogAndIncreaseTabs("Person(" + name + ") dig"); + if(this.field.emitItem()) work--; + Logger.decreaseTabs(); + } + + //Kiegeszitve a teszthez szükseges sorokkal + public void fall() + { + Logger.LogAndIncreaseTabs("Person(" + name + ") fall"); //teszthez + 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() + "-nek nincs búvárruhája, segítők keresése", false); + ArrayList<Person> potentialhelpers = findHelpers(); + 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(); + } + Logger.decreaseTabs(); + } + + //Teszt kiiratashoz + public String getName() + { + return name; + } + + public int getWork(){return 0;} + + public boolean hasItem(Item item){ + Logger.LogAndIncreaseTabs("Person hasItem : " + item ); + Logger.Log("Van " + item + " a karakternél(" + name + + ")?(0 = I, 1 = N)", false); + boolean b = Logger.getNumericInput(0, 1) == 0; + Logger.decreaseTabs(); + return b; + } + + public void hitByBlizzard(){ + Logger.LogAndIncreaseTabs("Person: hitByBlizzard"); + this.bodyTemp--; + if(this.bodyTemp==0) die(); + Logger.decreaseTabs(); + } + + public ArrayList<Person> findHelpers(){ + Logger.LogAndIncreaseTabs("Person(" + name + ") findHelpers"); + ArrayList<Person> potentialhelpers = new ArrayList<Person>(); + Direction dirs[] = Direction.values(); + for(Direction dir: dirs) { //iteralas az osszes iranyt tartalmazo tombon + Field neighbor = field.getNeighbor(dir); //elkerjuk a sajat fieldtol az adott iranyban levo szomszedot + potentialhelpers.addAll(neighbor.getPersons()); + } + Logger.decreaseTabs(); + if(potentialhelpers.isEmpty()) Logger.Log(">>" + name + " nem talált segítőket.", false); + return potentialhelpers; + } + + public void pickUpItem() + { + Logger.LogAndIncreaseTabs("Person(" + name + ") pickUpItem"); + Item item = field.getItem(); + if (item != null) + { + if(item.equals(Item.food)) + { + if(this.bodyTemp < 4) { + this.bodyTemp++; // ha elelmet talalt a person azt nem tarolja el, hanem megeszi es noveli vele a bodyTempjét + Logger.Log(">> Élelem efogyasztása és bodyTemp növelése", false); + } + else Logger.Log(">> A testhő maximális: 4 ", false); + } + else + { + 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", false); + } + Logger.decreaseTabs(); + } + + public boolean pullOut(Person p){ + Logger.LogAndIncreaseTabs("Person(" + name + ") pullOut("+p.name+ ")"); + if(items.contains(Item.rope)) { + p.step(field); + } + Logger.decreaseTabs(); + return items.contains(Item.rope); + } + + public void setWork(int i) + { + + } + + public void shovel() + { + Logger.LogAndIncreaseTabs("Person(" + name + ") shovel"); + if (field.clearSnow(items.contains(Item.shovel) ? 2 : 1)) work --; // ellenorizzuk hogy van e asoja + Logger.decreaseTabs(); // ha van asoja, akkor 2 reteg havat tud letakaritani ha nincs akkor 1-t + } + + public void step(Direction direction) + { + Logger.LogAndIncreaseTabs("Person(" + name + ") step(" + direction+")"); + Field neighbor = field.getNeighbor(direction); + if (neighbor != null) + { + field.remove(this); + field = neighbor; + neighbor.accept(this); + work --; + } + Logger.decreaseTabs(); + + } + + public void step(Field field) + { + Logger.LogAndIncreaseTabs("Person(" + name + ") step(Field)"); + field.accept(this); + Logger.decreaseTabs(); + } + + public void setBodyTemp(int bodyTemp) { + this.bodyTemp=bodyTemp; + } + + //Segedfuggveny a teszthez. Nem a teszteset soran, hanem mar korabban megszerzett targy hozzaadása szereplohoz + public void addItem(Item item) { + if(!items.contains(item)) + items.add(item); + } +}