From 22ee578fa0865c8a95304905ec51dd458b35085b Mon Sep 17 00:00:00 2001 From: jorgenhioa Date: Wed, 5 Apr 2017 12:51:55 +0200 Subject: [PATCH 1/2] Create README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae42948 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# GameOfLife2017 + +Game Of Life via IntelliJ From 0b62144b4314e03042c34a9bee6f504fb3135066 Mon Sep 17 00:00:00 2001 From: jorgenhioa Date: Wed, 5 Apr 2017 16:33:30 +0200 Subject: [PATCH 2/2] Add files via upload --- .../GameOfLifeTest/sample/GameOfLifeTest.java | 35 ++ .../Game Of Life/sample/Controller.class | Bin 0 -> 5931 bytes .../Game Of Life/sample/ConwaysRules.class | Bin 0 -> 534 bytes .../Game Of Life/sample/FileHandler.class | Bin 0 -> 1013 bytes .../Game Of Life/sample/GameOfLife$1.class | Bin 0 -> 1060 bytes .../Game Of Life/sample/GameOfLife.class | Bin 0 -> 2515 bytes .../production/Game Of Life/sample/Main.class | Bin 0 -> 1200 bytes .../Game Of Life/sample/Rules.class | Bin 0 -> 126 bytes .../production/Game Of Life/sample/golfx.fxml | 153 ++++++ Game Of Life/src/sample/Controller.java | 456 +++++++++--------- Game Of Life/src/sample/ConwaysRules.java | 74 +-- Game Of Life/src/sample/FileHandler.java | 257 +++++----- Game Of Life/src/sample/GameOfLife.java | 206 ++++---- Game Of Life/src/sample/Main.java | 46 +- Game Of Life/src/sample/Rules.java | 18 +- .../Game Of Life/sample/Controller.class | Bin 0 -> 6928 bytes .../Game Of Life/sample/ConwaysRules.class | Bin 0 -> 534 bytes .../Game Of Life/sample/FileHandler.class | Bin 0 -> 2805 bytes .../Game Of Life/sample/GameOfLife$1.class | Bin 0 -> 1024 bytes .../Game Of Life/sample/GameOfLife.class | Bin 0 -> 3135 bytes out/production/Game Of Life/sample/Main.class | Bin 0 -> 1200 bytes .../Game Of Life/sample/Rules.class | Bin 0 -> 126 bytes out/production/Game Of Life/sample/golfx.fxml | 153 ++++++ 23 files changed, 870 insertions(+), 528 deletions(-) create mode 100644 Game Of Life/GameOfLifeTest/sample/GameOfLifeTest.java create mode 100644 Game Of Life/out/production/Game Of Life/sample/Controller.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/ConwaysRules.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/FileHandler.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/GameOfLife$1.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/GameOfLife.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/Main.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/Rules.class create mode 100644 Game Of Life/out/production/Game Of Life/sample/golfx.fxml create mode 100644 out/production/Game Of Life/sample/Controller.class create mode 100644 out/production/Game Of Life/sample/ConwaysRules.class create mode 100644 out/production/Game Of Life/sample/FileHandler.class create mode 100644 out/production/Game Of Life/sample/GameOfLife$1.class create mode 100644 out/production/Game Of Life/sample/GameOfLife.class create mode 100644 out/production/Game Of Life/sample/Main.class create mode 100644 out/production/Game Of Life/sample/Rules.class create mode 100644 out/production/Game Of Life/sample/golfx.fxml diff --git a/Game Of Life/GameOfLifeTest/sample/GameOfLifeTest.java b/Game Of Life/GameOfLifeTest/sample/GameOfLifeTest.java new file mode 100644 index 0000000..d14c5fe --- /dev/null +++ b/Game Of Life/GameOfLifeTest/sample/GameOfLifeTest.java @@ -0,0 +1,35 @@ +package sample; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by jorge on 04.04.2017. + */ +/* +public class GameOfLifeTest { + GameOfLife gol = new GameOfLife(); + + @Test + public void testNextGeneration() throws Exception { + byte[][] board = { + { 1, 1, 1, 0}, + { 1, 1, 0, 0}, + { 0, 0, 1, 0}, + { 0, 0, 0, 0}, + }; + + + + GameOfLife gol = new GameOfLife(); + Controller.setBoard(board); + gol.nextGeneration(); + org.junit.Assert.assertEquals(gol.toString(), "1110110000100000"); + System.out.println("Test OK"); + + } + + } + +*/ \ No newline at end of file diff --git a/Game Of Life/out/production/Game Of Life/sample/Controller.class b/Game Of Life/out/production/Game Of Life/sample/Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..6491d7fcba16b0c6f98565f2a810aa97dfe25b63 GIT binary patch literal 5931 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 literal 0 HcmV?d00001 diff --git a/Game Of Life/out/production/Game Of Life/sample/ConwaysRules.class b/Game Of Life/out/production/Game Of Life/sample/ConwaysRules.class new file mode 100644 index 0000000000000000000000000000000000000000..c7a0fabffa08c9061e79c32006fbe0f9bbf137c8 GIT binary patch literal 534 zcmZuuOG^S#7(G|#<@=q67P$#+(LjWoqKyy;W{~0jYL^-_`3F)DFHQ8ZC9v1OvnV4OOxhM2b$Gbsod z^hT%C>`)AIMm)(~pG(=}Lr;yQ`aU1sU+`(D9`AdL*+`r_%0Ks8`*6&cJP92JL*XB9 zhOC;fC3kP_%i&mzd~yp1gX>U7gkFL^n4TpCdqKG>w;_xgmupl-qvblP1iN zM*$@iQAUO8+h|}1N7$vmSr4Z6XonobYZObf|Yppzsae CKwp~x literal 0 HcmV?d00001 diff --git a/Game Of Life/out/production/Game Of Life/sample/FileHandler.class b/Game Of Life/out/production/Game Of Life/sample/FileHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..ad1c394bc342faecd53e00f2291671b4f541badf GIT binary patch literal 1013 zcmZ`%YflqF6g|@iyKEPV+seanFLm4vclHCFN5BxoT zp;3ZAz#nD2v)dpFw8_0YXYRRk?wR@Z`^QfJOQ>16gc$?ZEo3lbVpiv}4mWhTX<*L8 zZ3B*piUku@6L(D9EnoqQ23!O87zSR5K&Y1tS*NnjkXsJhoT2E6fPdWEY4T{zZ%RT+ zUfA;Gx*rL>?t?kCC1Qp#FZOqKC3oKl$=~`xTk@#JV1~Oq&=5mmlhX257{)wenD(~) zeSfp-#>(%cto|Octa`W?wRp-KIn{AdlWdeQ$}o9R1BRhhI(0VS2eTc2hugT12R0sJ z$;Kl*W^gWI&aHG64`LB&$x6#CoBljrxve$cRSSAFT8!w%uJnVBTUU_? zIt=;hqUtIw`3d>^$y-UFNOA*DZ9Kzsvh}QU|Fl|dZu6ERFJrFOgwkG)JBfX#kE-db z8;-Za13mm};meSYpHB-mtWTJ6!!YD$O(Rq=iIpg;J6VvL<#{ zn{XGBk@Mwzh2_5Y7x$z0=(pRiq-2|3%uPH`XsO-#_YofhCSCTTT@sT1;76q3CUN60jK$iA!PO*Q!!61di82YB$J8GHJoG>S literal 0 HcmV?d00001 diff --git a/Game Of Life/out/production/Game Of Life/sample/GameOfLife$1.class b/Game Of Life/out/production/Game Of Life/sample/GameOfLife$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0f15b95d4fbae5c1635c5af2d616d32843aee17e GIT binary patch literal 1060 zcmZ`&-EY!R6#rdd6uJs*bM8Z@bD~0->u~zSvScH3TSWITvzI+x-~wIBt!WGH-!gHS z_+WhYk20QHAuTgB={@J3kKg&czyJLB3E&OhW|6@&brf}E@m$AKywLFyB@Jbr#HNOd zhHVY680LrEDYjf0h?{_6sp0efXGd6dl6bD;2(QMF4tlm<+>NPEcwd}%8g@r0^}a3b z;DDiAnz+aG6HyGYe94fiyKTXcZ`e|N9Q2#Q`^1|LNfsM!i#wOxv(wA zt>aV2KKRmywo|0mspCW2>GZvSLH`Sv@C$?V;G&%NiI?|kQ+-TnRVAD;vG z0BccnVM52{C<2&>pc5$_SEA4=i>p$Smcyiusn7-Y1+{=EGPtH=I*KM-*D({NWL7GD z)POnMkh70<9E?(Lz5zF}pyQJWKEGi)Mbs7D*{84l2+V3#OY>5L{Ro;YrWR3)^ydvLk)ZTs4>0lBQ$jP0uPg$=T{A z)%0w^@x+>^U{B5BC?#&ewuQ_6(2(U=-Z1UPd*&3VqlFx8Hm7NNs+3<8?yR|JQ__+y zWKDa{bS=5A3RUl}Mc7-GC(OLaETyd_LCfKy@J1?_+u{VhgL~;wTXLzjV;EOOd0cMN zSd+sTCIrdyBUGTQ@k;S3D~LE{&l_=t$0!?TJTrTL(p;%RY|a)+jyEN&<-3c8l1sE& zJeBH^nsl1*xl7unvz)x>x@I}$ce@1eWTa>NpOck|37fqCRKZ zB_R*oHDKYMj{62|^rAdQ@R7(nxcGoK@EBiPr3$&Qb zEEa{kD%&${6+NOpP>uNQhuHRJjt`Ys1#=}06~YF4ZnB%$!=vS_Ek1i8o0)OIl+TPyOA?Ysev zTI@V>!usvxlN(T>$cpDIAZyycv%vj3%bRzdC)h3=d$^iJkTakou?Z#d41xJg1UH~^ zs&N|Hfc~wooZ#5R!*W!y3(aW3QLc=NI*#EuR|-xbSvCCyU8$4}C5~<&oH(|D$TLLe zThZ_X8lRzQK5=Xl&B33rYZJSt65m6Af|lb?u_u5Vaus-j*1GR@glMacuab7YUAow- z-RNULgA7LENK|}PanP$Dz6@%eEdu_mqP$I);a_o6-k!@L*!%n! z!~*HyxlUj92m`_4uIkPs968$AD_5$NaN3vX?ApZMr`Q+7=d zkWX{I7uqYd>xe0TA*#H@@t4qEl9+&e##GXxG}4mJv(v%hK))JO)vquS=+|NzCud^X zLo~$HhX_4Jw~VYKrrzo8jA?iJ)GrZ|VWIJC=sUEvv_C<|y2b#1TUR+g?fRMy4iMG= z;Z;KIM3p_tI%;z!Tkgt zsF=a5f`{>??+FSA;!EG=0z*X-kL2gaa+y<+#uEik70ffl7fjpq7a1aj@jZs!kJsv!&`aF3DQC>{x$83w7K|hQ ziB}prIjTb6k?Xvq(dw>QNc*Lus<-U(3Q4`djV_+b0@ztx*!vI=DGQmF+BIa5Rq#y1 zBA!!J)v+p#=}Mz!DOl35j28-4G^}Ec5}y^@A(Kko;5Cuos^kr`A{4A^*uYEb=Y`-M z36Wf{G`z+e4F<9rN*H74?&vMUa0|xkb;~SsS-ig7wp${?($Cw&kdm;_yS0BL%GA|F zRro6w_hd&3;~gCfoYdaFHl`KVO^|Kj1&v}D4R7~io5MV|@b!1w1|`Y0^vaIu>+eg3 z;qU|D(q&m>w3D16I)#KvDam=S+EYaOJ>l<~zPzsNWlCtuhT8MjaV7Jst8xS-K4|-e zISt|hcQ`WMq4Sv@iN%lY@*zg(&DyEet62)IgewfTa%|JUrZxemR zCQ@yZ9AX6SK?=Q;t`7yWCea^|=EKA-Qlh{O3=?^Z_M6C)fDyt*$umm7h+7yVOG=ud eJ*?*x{cS3h0HC6y6x3PMZQLP0!(CdtQ1}mWR1MSs literal 0 HcmV?d00001 diff --git a/Game Of Life/out/production/Game Of Life/sample/Rules.class b/Game Of Life/out/production/Game Of Life/sample/Rules.class new file mode 100644 index 0000000000000000000000000000000000000000..2de72f7003a14cfab16efbf269ff72473d625d68 GIT binary patch literal 126 zcmX^0Z`VEs1_l!bPId-%b_Nbc2G0Dl)S{eJAi>DMs^RIW>B-2z6`WsMl$`38nUf0S z1eNBb7VBjtmL)PW@DwNJ7UZPrgT)vb1VEztIf;4c`u<5-smUd5j0}tnOh6kL7#LX? R8JHPZKr9AUAj!nQ1^^5{8;bw{ literal 0 HcmV?d00001 diff --git a/Game Of Life/out/production/Game Of Life/sample/golfx.fxml b/Game Of Life/out/production/Game Of Life/sample/golfx.fxml new file mode 100644 index 0000000..f0f28d0 --- /dev/null +++ b/Game Of Life/out/production/Game Of Life/sample/golfx.fxml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Game Of Life/src/sample/Controller.java b/Game Of Life/src/sample/Controller.java index 44776ea..21eb3de 100644 --- a/Game Of Life/src/sample/Controller.java +++ b/Game Of Life/src/sample/Controller.java @@ -1,228 +1,228 @@ -package sample; - -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.fxml.Initializable; -import javafx.scene.canvas.Canvas; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.control.Alert; -import javafx.scene.control.ColorPicker; -import javafx.scene.control.Slider; -import javafx.scene.control.TextField; -import javafx.scene.input.MouseEvent; -import javafx.scene.paint.Color; -import java.net.URL; -import java.util.Random; -import java.util.ResourceBundle; - -public class Controller extends GameOfLife implements Initializable{ - - @FXML private Canvas canvas; - @FXML private ColorPicker colorPicker; - @FXML private Slider speedModifier; - @FXML private Slider gameZoom; - @FXML private TextField inputY; - @FXML private TextField inputX; - private double cellSize = 10; - private Color dynamicColor; - - @Override - public void initialize(URL location, ResourceBundle resources) { - //gameZoom.setMin(1); - //gameZoom.setMax(10); - - byte[][] testBrett = new byte [65][80]; - - /*byte[][] testBrett = { - { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0}, - { 1, 1, 0, 0, 1, 0, 0, 1, 1, 0}, - { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0}, - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 1, 1, 0, 0, 0, 0, 1, 1, 0}, - { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, - }; - - */ - - setCanvas(canvas); - setBoard(testBrett, this); - animation(); - draw(); - grid(); - - } - - public void setCanvas(Canvas canvas) { - this.canvas = canvas; - } - - public void draw() { - - if(getBoard() != null) { - canvas.setHeight(getBoard().length * cellSize); - canvas.setWidth(getBoard()[0].length * cellSize); - - if (canvas != null) { - GraphicsContext gc = canvas.getGraphicsContext2D(); - gc.setFill(dynamicColor); - gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); - - for (int i = 0; i < getBoard().length; i++) { - for (int j = 0; j < getBoard()[0].length; j++) { - if (getBoard()[i][j] == 1) { - gc.fillRect(j * cellSize, i * cellSize, cellSize, cellSize); - } - } - } - } - } - grid(); - } - - public void grid() { - GraphicsContext gc = canvas.getGraphicsContext2D(); - - for(double row=0;row { - byte x = (byte) (e.getY() / cellSize); - byte y = (byte) (e.getX() / cellSize); - - if(getBoard()[x][y] == 1) { - getBoard()[x][y] = 1; // Beholder 1 da vi ikke ønsker å "fjerne" celler ved drafunksjon. - draw(); - } else { - getBoard()[x][y] = 1; - draw(); - } - } - ); - } - - // tillater bruker å opprette/fjerne celler ved museklikk. - @FXML - public void mouseClick() { - canvas.setOnMouseClicked(e -> { - byte x = (byte) (e.getY() / cellSize); - byte y = (byte) (e.getX() / cellSize); - - if(getBoard()[x][y] == 1) { - getBoard()[x][y] = 0; - draw(); - } else { - getBoard()[x][y] = 1; - draw(); - } - } - ); - } -} - +package sample; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.canvas.Canvas; +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.control.Alert; +import javafx.scene.control.ColorPicker; +import javafx.scene.control.Slider; +import javafx.scene.control.TextField; +import javafx.scene.input.MouseEvent; +import javafx.scene.paint.Color; +import java.net.URL; +import java.util.Random; +import java.util.ResourceBundle; + +public class Controller extends GameOfLife implements Initializable{ + + @FXML private Canvas canvas; + @FXML private ColorPicker colorPicker; + @FXML private Slider speedModifier; + @FXML private Slider gameZoom; + @FXML private TextField inputY; + @FXML private TextField inputX; + private double cellSize = 10; + private Color dynamicColor; + + @Override + public void initialize(URL location, ResourceBundle resources) { + //gameZoom.setMin(1); + //gameZoom.setMax(10); + + byte[][] testBrett = new byte [65][80]; + + /*byte[][] testBrett = { + { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0}, + { 1, 1, 0, 0, 1, 0, 0, 1, 1, 0}, + { 0, 0, 0, 0, 1, 0, 0, 1, 0, 0}, + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + { 1, 1, 1, 0, 0, 0, 0, 1, 1, 0}, + { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, + }; + + */ + + setCanvas(canvas); + setBoard(testBrett, this); + animation(); + draw(); + grid(); + + } + + public void setCanvas(Canvas canvas) { + this.canvas = canvas; + } + + public void draw() { + + if(getBoard() != null) { + canvas.setHeight(getBoard().length * cellSize); + canvas.setWidth(getBoard()[0].length * cellSize); + + if (canvas != null) { + GraphicsContext gc = canvas.getGraphicsContext2D(); + gc.setFill(dynamicColor); + gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); + + for (int i = 0; i < getBoard().length; i++) { + for (int j = 0; j < getBoard()[0].length; j++) { + if (getBoard()[i][j] == 1) { + gc.fillRect(j * cellSize, i * cellSize, cellSize, cellSize); + } + } + } + } + } + grid(); + } + + public void grid() { + GraphicsContext gc = canvas.getGraphicsContext2D(); + + for(double row=0;row { + byte x = (byte) (e.getY() / cellSize); + byte y = (byte) (e.getX() / cellSize); + + if(getBoard()[x][y] == 1) { + getBoard()[x][y] = 1; // Beholder 1 da vi ikke ønsker å "fjerne" celler ved drafunksjon. + draw(); + } else { + getBoard()[x][y] = 1; + draw(); + } + } + ); + } + + // tillater bruker å opprette/fjerne celler ved museklikk. + @FXML + public void mouseClick() { + canvas.setOnMouseClicked(e -> { + byte x = (byte) (e.getY() / cellSize); + byte y = (byte) (e.getX() / cellSize); + + if(getBoard()[x][y] == 1) { + getBoard()[x][y] = 0; + draw(); + } else { + getBoard()[x][y] = 1; + draw(); + } + } + ); + } +} + diff --git a/Game Of Life/src/sample/ConwaysRules.java b/Game Of Life/src/sample/ConwaysRules.java index a2b2ccf..128821b 100644 --- a/Game Of Life/src/sample/ConwaysRules.java +++ b/Game Of Life/src/sample/ConwaysRules.java @@ -1,37 +1,37 @@ -package sample; - -/** - * Created by Fikre on 07.03.2017. - */ -public class ConwaysRules implements Rules { - - @Override - public int overlever(int lever, int antallNaboer) { - // FØLGE REGLER OG SE OM DEN SKAL LEVE - - //HVIS DET ER NØYAKTIG 3 LEVENDE CELLER RUNDT EN DØD CELLE, BLIR DET TIL EN LEVENDE CELLE - //OVERPRODUKSJON - if (lever == 0 && antallNaboer == 3) { - return 1; - } - - // HVIS CELLER RUNDT ER UNDER 2 LEVENDE, SÅ DØR DEN AV UNDERPOPULASJON - if (lever == 1 && antallNaboer < 2) { - return 0; - } - - //HVIS CELLER RUNDT ER 2 ELLER 3, SÅ LEVER DEN VIDERE - if (lever == 1 && antallNaboer == 2 || antallNaboer == 3) { - return 1; - } - - //HVIS CELLER RUNDT ER FLER ENN 3, DØR DEN AV OVERPOPULASJON - if (lever == 1 && antallNaboer > 3) { - return 0; - } - - return lever; // RETUNER 0 ELLER 1. 1 ER LEVENDE OG 0 ER DØD. - } -} - - +package sample; + +/** + * Created by Fikre on 07.03.2017. + */ +public class ConwaysRules implements Rules { + + @Override + public int overlever(int lever, int antallNaboer) { + // FØLGE REGLER OG SE OM DEN SKAL LEVE + + //HVIS DET ER NØYAKTIG 3 LEVENDE CELLER RUNDT EN DØD CELLE, BLIR DET TIL EN LEVENDE CELLE + //OVERPRODUKSJON + if (lever == 0 && antallNaboer == 3) { + return 1; + } + + // HVIS CELLER RUNDT ER UNDER 2 LEVENDE, SÅ DØR DEN AV UNDERPOPULASJON + if (lever == 1 && antallNaboer < 2) { + return 0; + } + + //HVIS CELLER RUNDT ER 2 ELLER 3, SÅ LEVER DEN VIDERE + if (lever == 1 && antallNaboer == 2 || antallNaboer == 3) { + return 1; + } + + //HVIS CELLER RUNDT ER FLER ENN 3, DØR DEN AV OVERPOPULASJON + if (lever == 1 && antallNaboer > 3) { + return 0; + } + + return lever; // RETUNER 0 ELLER 1. 1 ER LEVENDE OG 0 ER DØD. + } +} + + diff --git a/Game Of Life/src/sample/FileHandler.java b/Game Of Life/src/sample/FileHandler.java index cbe1349..e2aed31 100644 --- a/Game Of Life/src/sample/FileHandler.java +++ b/Game Of Life/src/sample/FileHandler.java @@ -1,128 +1,129 @@ -package sample; - -import javafx.stage.FileChooser; -import javafx.stage.Stage; -import javafx.util.converter.CharacterStringConverter; -import jdk.nashorn.internal.runtime.regexp.joni.encoding.CharacterType; - -import java.io.*; - -public class FileHandler { - - private byte[][] newBoard = null; - - public void openFile() { - - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Open new game"); - - - //Fil-filter: - fileChooser.getExtensionFilters().addAll( - new FileChooser.ExtensionFilter("RLE", "*.rle"), - new FileChooser.ExtensionFilter("Text-files", "*.txt") - ); - File file = fileChooser.showOpenDialog(new Stage()); - - try { - readGameDisk(file); - } catch (IOException e) { - e.printStackTrace(); - } - - } - - public void readGameDisk(File file) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(file)); // lager objekt som leser. - String line; // oppretter objektet line; - int width = 0; - int height = 0; - - while ((line = reader.readLine()) != null) { //leser linje for linje - - if (line.charAt(0) == 'x') { // Når den leser X. - - String[] splitx = line.split(","); //splitter etter komma - - for (String s : splitx) { // Går gjennom hver splitverdi. - int number = 0; //Begynner på index 0. - int plass = 1; // Siste tallet ganges med 1. Se kode lengre nede hvor plass ganges med 10. Dette for å få heltall til slutt. - for (int i = s.length() - 1; i >= 0; i--) { - if (Character.isDigit(s.charAt(i))) { - number += (s.charAt(i) - 48) * plass; // -48 pga ASCII (char). - plass *= 10; //looper bakover, derfor ganges med 10 (10-tallsystemet), for å få heltall. - } - } - - if (width == 0) { - width = number; - } else if (height == 0) { - height = number; - } else { - newBoard = new byte[height][width]; - - } - } -/* HENTE UT KOORDINATORER */ - - } else if (newBoard != null) { - - String[] splity = line.split("\\$"); - - int roundCount = 0; - - for (String y : splity) { - System.out.println(y); - - //Denne linjen setter telleren. - //int roundCount = 0; - - /* for (int i = y.length(); i >= 0; i++) { - - if (y.charAt(i) == 'o') { // Hvis den treffer på "o" eller "b" eller tall. - System.out.println("1"); - } else if (y.charAt(i) == 'b') { - System.out.println("0"); - } else { - System.out.println("multipliseres med"); - } - - - } -*/ - //roundCount++; - - - } - - - } - } - } - - - // Metode for å returnere det nye brettet som er lastet inn. - public byte[][] getNewBoard () { - return newBoard; - } - - - } - - -//runcount -// tall som kommer etter -// x * tegn som kommer etter - - - - - - - - - - - - - +package sample; + +import javafx.stage.FileChooser; +import javafx.stage.Stage; +import javafx.util.converter.CharacterStringConverter; +import jdk.nashorn.internal.runtime.regexp.joni.encoding.CharacterType; + +import java.io.*; + +public class FileHandler { + + private byte[][] newBoard = null; + + public void openFile() { + + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Open new game"); + + + //Fil-filter: + fileChooser.getExtensionFilters().addAll( + new FileChooser.ExtensionFilter("RLE", "*.rle"), + new FileChooser.ExtensionFilter("Text-files", "*.txt") + ); + File file = fileChooser.showOpenDialog(new Stage()); + + try { + readGameDisk(file); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + public void readGameDisk(File file) throws IOException { + BufferedReader reader = new BufferedReader(new FileReader(file)); // lager objekt som leser. + String line; // oppretter objektet line; + int width = 0; + int height = 0; + + while ((line = reader.readLine()) != null) { //leser linje for linje + + if (line.charAt(0) == 'x') { // Når den leser X. + + String[] splitx = line.split(","); //splitter etter komma + + for (String s : splitx) { // Går gjennom hver splitverdi. + int number = 0; //Begynner på index 0. + int plass = 1; // Siste tallet ganges med 1. Se kode lengre nede hvor plass ganges med 10. Dette for å få heltall til slutt. + for (int i = s.length() - 1; i >= 0; i--) { + if (Character.isDigit(s.charAt(i))) { + number += (s.charAt(i) - 48) * plass; // -48 pga ASCII (char). + plass *= 10; //looper bakover, derfor ganges med 10 (10-tallsystemet), for å få heltall. + } + } + + if (width == 0) { + width = number; + } else if (height == 0) { + height = number; + } else { + newBoard = new byte[height][width]; + + } + } +/* HENTE UT KOORDINATORER */ + + } else if (newBoard != null) { + + String[] splity = line.split("\\$"); + + int roundCount = 0; + + for (String y : splity) { + System.out.println(y); + + //Denne linjen setter telleren. + //int roundCount = 0; + + /* for (int i = y.length(); i >= 0; i++) { + + if (y.charAt(i) == 'o') { // Hvis den treffer på "o" eller "b" eller tall. + System.out.println("1"); + } else if (y.charAt(i) == 'b') { + System.out.println("0"); + } else { + System.out.println("multipliseres med"); + } + + + } +*/ + //roundCount++; + + + } + + + } + } + } + + + // Metode for å returnere det nye brettet som er lastet inn. + public byte[][] getNewBoard () { + return newBoard; + } + + + } + +// Test av branch. + +//runcount +// tall som kommer etter +// x * tegn som kommer etter + + + + + + + + + + + + + diff --git a/Game Of Life/src/sample/GameOfLife.java b/Game Of Life/src/sample/GameOfLife.java index 57f04ec..9da2e06 100644 --- a/Game Of Life/src/sample/GameOfLife.java +++ b/Game Of Life/src/sample/GameOfLife.java @@ -1,103 +1,103 @@ -package sample; - - -import javafx.animation.KeyFrame; -import javafx.animation.Timeline; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; -import javafx.fxml.FXML; -import javafx.util.Duration; -import javafx.animation.Animation; -import javafx.scene.control.Button; - - -public class GameOfLife { - - public Rules RuleType = new ConwaysRules(); - private byte[][] board; - private Timeline timeline = new Timeline(); - private Controller context; - @FXML private Button playButton; - - - // GraphicsContext gc = canvas.getGraphicsContext2D(); Hvis den ligger ute kan den nas av alle metoder men ligger på minne hele tiden, best utenfor eller inni metodene? - - public void setBoard(byte[][] board, Controller context) { - this.board = board; - this.context = context; - } - - public void animation() { - //JAVA ANIMASJON - KeyFrame frame = new KeyFrame(Duration.millis(500), new EventHandler() { - @Override - public void handle(ActionEvent event) { - nextGeneration(); - context.draw(); - } - }); - - timeline.getKeyFrames().add(frame); - timeline.setCycleCount(Timeline.INDEFINITE); - } - - public void startGame() { - //Checks if the animation is running - if (timeline.getStatus() == Animation.Status.RUNNING) { - timeline.stop(); - playButton.setText("Play"); - } else { - timeline.play(); - playButton.setText("Pause"); - } - } - - public void nextGeneration(){ - if(board != null){ - byte[][] nyttBrett = new byte[board.length][board[0].length]; - - for(int y=0; y < board.length; y++){ - for (int x=0; x < board[0].length; x++){ - nyttBrett[y][x] = (byte) RuleType.overlever(board[y][x], countNeighbours(y, x)); - } - } - this.board = nyttBrett; - } - } - - private int countNeighbours(int y, int x) { - - int livingNeighbours = 0; - for (int i = -1; i <= 1; i++) { - for (int k = -1; k <= 1; k++) { - if (k == 0 && i == 0) { // Remove self testing - continue; - } - try { // Catch outside borders - if (board[y + i][x + k] == 1) { // If cell state alive - livingNeighbours++; - } - } catch (ArrayIndexOutOfBoundsException e) {//Outside borders} - } - } - } - return livingNeighbours; - } - - public byte[][] getBoard(){ - return board; - } - - public Timeline getTimeline(){ - return timeline; - } - - public void deleteBoard(){ - if (timeline.getStatus() == Animation.Status.RUNNING) { - timeline.stop(); - playButton.setText("Play"); - } - board = null; - - } -} +package sample; + + +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.util.Duration; +import javafx.animation.Animation; +import javafx.scene.control.Button; + + +public class GameOfLife { + + public Rules RuleType = new ConwaysRules(); + private byte[][] board; + private Timeline timeline = new Timeline(); + private Controller context; + @FXML private Button playButton; + + + // GraphicsContext gc = canvas.getGraphicsContext2D(); Hvis den ligger ute kan den nas av alle metoder men ligger på minne hele tiden, best utenfor eller inni metodene? + + public void setBoard(byte[][] board, Controller context) { + this.board = board; + this.context = context; + } + + public void animation() { + //JAVA ANIMASJON + KeyFrame frame = new KeyFrame(Duration.millis(500), new EventHandler() { + @Override + public void handle(ActionEvent event) { + nextGeneration(); + context.draw(); + } + }); + + timeline.getKeyFrames().add(frame); + timeline.setCycleCount(Timeline.INDEFINITE); + } + + public void startGame() { + //Checks if the animation is running + if (timeline.getStatus() == Animation.Status.RUNNING) { + timeline.stop(); + playButton.setText("Play"); + } else { + timeline.play(); + playButton.setText("Pause"); + } + } + + public void nextGeneration(){ + if(board != null){ + byte[][] nyttBrett = new byte[board.length][board[0].length]; + + for(int y=0; y < board.length; y++){ + for (int x=0; x < board[0].length; x++){ + nyttBrett[y][x] = (byte) RuleType.overlever(board[y][x], countNeighbours(y, x)); + } + } + this.board = nyttBrett; + } + } + + private int countNeighbours(int y, int x) { + + int livingNeighbours = 0; + for (int i = -1; i <= 1; i++) { + for (int k = -1; k <= 1; k++) { + if (k == 0 && i == 0) { // Remove self testing + continue; + } + try { // Catch outside borders + if (board[y + i][x + k] == 1) { // If cell state alive + livingNeighbours++; + } + } catch (ArrayIndexOutOfBoundsException e) {//Outside borders} + } + } + } + return livingNeighbours; + } + + public byte[][] getBoard(){ + return board; + } + + public Timeline getTimeline(){ + return timeline; + } + + public void deleteBoard(){ + if (timeline.getStatus() == Animation.Status.RUNNING) { + timeline.stop(); + playButton.setText("Play"); + } + board = null; + + } +} diff --git a/Game Of Life/src/sample/Main.java b/Game Of Life/src/sample/Main.java index e8980d2..409e54a 100644 --- a/Game Of Life/src/sample/Main.java +++ b/Game Of Life/src/sample/Main.java @@ -1,23 +1,23 @@ -package sample; - -import javafx.application.Application; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; - -public class Main extends Application { - - @Override - public void start(Stage primaryStage) throws Exception{ - Parent root = FXMLLoader.load(getClass().getResource("golfx.fxml")); - primaryStage.setTitle("Game Of Life"); - primaryStage.setScene(new Scene(root, 993, 679)); - primaryStage.show(); - } - - - public static void main(String[] args) { - launch(args); - } -} +package sample; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class Main extends Application { + + @Override + public void start(Stage primaryStage) throws Exception{ + Parent root = FXMLLoader.load(getClass().getResource("golfx.fxml")); + primaryStage.setTitle("Game Of Life"); + primaryStage.setScene(new Scene(root, 993, 679)); + primaryStage.show(); + } + + + public static void main(String[] args) { + launch(args); + } +} diff --git a/Game Of Life/src/sample/Rules.java b/Game Of Life/src/sample/Rules.java index bf18fe3..b6ad978 100644 --- a/Game Of Life/src/sample/Rules.java +++ b/Game Of Life/src/sample/Rules.java @@ -1,9 +1,9 @@ -package sample; - -/** - * Created by Fikre on 07.03.2017. - */ -public interface Rules { - - public int overlever(int lever, int antallNaboer); -} +package sample; + +/** + * Created by Fikre on 07.03.2017. + */ +public interface Rules { + + public int overlever(int lever, int antallNaboer); +} diff --git a/out/production/Game Of Life/sample/Controller.class b/out/production/Game Of Life/sample/Controller.class new file mode 100644 index 0000000000000000000000000000000000000000..a61928546663b1db17d4a6ba94f676f4c05cf30c GIT binary patch literal 6928 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 CKwp~x literal 0 HcmV?d00001 diff --git a/out/production/Game Of Life/sample/FileHandler.class b/out/production/Game Of Life/sample/FileHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..dfe596964df4cbe7ccbfedc6ff64a044ad9dfdec GIT binary patch literal 2805 zcmZ`)TTmNS82*-Q*v;;8DY)2Jw5_%_38k@Bqe86~sESh1LW_XfF3FN?yKFF73iVbm z^;+-u+k>MI_~vCasA%;?o#~@*`s9p`zWC&fj^l&zJDWhk;!JYR+5i0KzkL7qpL6=3 z&rSij46ke0jQt9>M6d}56bx&Sv0uflVjdC0sDd#ScPKch;*f?2EEVG_(mFD*6-;PY zgZ)A=tIK;{Pp(>$%$&#>6dEKCIrH|~j zrh>SFT!$6hOVlJ71>4G8Z%x`gPVtC@HL;b4MbZ-0q+Vj-1sO{SPq|i+iAnr7RrFoU z%O(f?g5zcBu(mkmI{vJL=CRebrDKaKTxf;-w3q4T;8QB15qYj%3ZrX!V!|%inSH^I z$kHYF3}VK~_&FZQ*-kd+2c&Kx{LC(7wJs5*h;{Yh@LxCIwjqc9qhINOp?haRX1_q=6^# z6gjfhz|(lfz_WNx!Se=Qz>5-UZrh~bB?B+x6$P&vcn!yC^XxWRk@&#)VLMHd7>hv( z-|VBJ?GHJ=SejM#F2ku)Fu0i{_z%v6X>%+du#DAB=Utb!S(jpRV4R(HRJ3uQQ}ju= z*eX_6;k9tIv5NHn+aqDEOlG(165QBwE0ydzdXx^LHTEaPV zQ2X0UX!(F%_hA^LeD6X*j2H8H1RA08O{}N%Iz*|_N}cu8Iv-=W00#+#h(Ey?$N0Yl z+j*MNRx{z-iygQ$uwBm=`f}!-;(iNi$}|#EaD{>^6|1!gz3KcCF6gL@)^;dS+l>J5@y(xzebIy@`;EvS3Wscwh|v9^i6rR zy=h|*RVbw}Fg2>4N<~5`&D6}u+gKY_O>IYq{vj@m>LpxsLgV3I=gOM|S1NTV5Oa`j zjU-w#sn$YntY?Md#CSWIauZSS=js+BeUMnY#Q8oV{V=~z64__bfmev@n?&{{K6=DS@l-@z!wiHn)6E&%!8VClCfW6~EC?4B`|DOYgPWPF;Iqm9E$o}hwUFd2u7$AR#`|1Uu7lb@ bczD@W5U#>hgTX*+2)A?As28Ex+YtR1e)V)9 literal 0 HcmV?d00001 diff --git a/out/production/Game Of Life/sample/GameOfLife$1.class b/out/production/Game Of Life/sample/GameOfLife$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8d5ab3683e3633d444c26289b5ddde955f60abd0 GIT binary patch literal 1024 zcmZ{j-)|B@5XZj@l=IFjP-^K9tyW8wf^uN{Mnlq&TAN_|P}BG2Sm2st&)glg|CWiO z@xl1)A7z|9sT|Tm*xi|({mkrlhhM+H{{XO$eI57k)PRm>2A*JB4MhVxc&_1vL3iW_1aEPG-&(4kxtlTD3os5-@RZ+wY;ui$hI9R zPDjIz@Za-}OP+k&v$=c0eMi|7XG*1GFi)fue#_-SAjn*qXBX=#`+&=?Vr`b%m;8$N zt}SsTWN01Qq2tLTwQi^)79uyp#@%5ItN%f!$MtikFL^lfDb-1Yuv{+t)>-FL*kNN9 z8XbEZ73LqzZpF)LQvJrcH}Y-q#!+|3PKB+i%aG?t+O8Kkvj0wm1Fx&$rHNOlnz#?s z#G+bRYN(;E;kAi9R2kOpQo_Uv3iOb3?^vuec{21p*A+eqb(3!Dq{iy{{3EugUv-d_ zV7Z*qg<3pGzeQxoo269~3Hky?x$*_9{1u5$WF?TJF-1qPK=%Z$IfFFYgF+evDYW;Jt8Z%UatH^ pdJJufjF)LrI0a2mDQu9Hz(YKW=1n}NIYs~IEiBWDWFdi~&mZ~^<6{5- literal 0 HcmV?d00001 diff --git a/out/production/Game Of Life/sample/GameOfLife.class b/out/production/Game Of Life/sample/GameOfLife.class new file mode 100644 index 0000000000000000000000000000000000000000..f49470db5df52bf8f5322f189e5b2e95edae7f39 GIT binary patch literal 3135 zcmZ`)+jA4w9sYKu)ync>6JtC0q68W+vPdFhS{h<7#s-WU*(TU=FrW!jmx4}I!O|APJzone}`-`QPV0AY{zoIU4v`@Y|0 z|Nh@^?gIEOe%*n+SWMwNSkm!Q3Nb9nlVu$*r;rF=F36J=9TyW*?@Un(NZ}G*(ec9+ zy6~!w%PF2*k@99IR#B9@l6;5`l(8mvSEUUriEAlbhb>RmlW=q#Nb$VVi4DA_!`0#G z@D&(&#}V#~ZF-*Y6eQ1AZLw6_5DK~qp1HnZi<~_2CKPC^71J##h+VogO-bKc7q;b4 za;R|4+%(HuIn%M$P2Z|GxuximYI?Ea_+pE`cGWG;@Widyws3i$+OW;qbk+AOj)HXE zlvfmv$VpWS=E7?V51g+$(($t8S*x}<={OZX@W|ME>bm8vbvt+F!d!t0iDQ;y`IC$~ zGrFuGK2s?%;_dEyPHQ%3hg-@=#ixo08FRZnztCgxt6j~;qAC;2V`Lh)4w5?6cS!;^0 zDu`;WflAAa2AS^UQ9Yl`P-e8wa|2mxx;sn47QTp>Ntwl>@VtFvV`B<3nL0-;M2^*c!u?Pj?JLsV*@|M&kX!rqSMZqRgacta7xE74Ez$O$fd-UvrT6$ zchYsuTHYy%t%a(;P@ZPuOWx_NqS%nFsNk`Poo3)nep7v6^_nQMVtON{s=j6CPF3p# zmRPrJTXw-f=2Ro|_sOti``c!g)qgHiFP8gN>Zf8;IDYQ5e4aI(lAH*a>UYiZsa-5;(Uz(rK z&(A7&>S1;sGRx3Bzp}wO6Jc&QOlg#OmV&{2AL2#d;UgS=d-4?8DyzacbDVE;{9Gzr zhqAY!X73=javSlR(6~)-tKUTOb6%@B%x4#cMis(gXkd=U=Id4u_SS0bR#kK zhlZm-2Jtwa#{``#IM#4q3&NrM&`IAH=>I+X!+)H_3o z0|WwGZh_Yi?OP1$NGtzAO1Xz;?m@dJLCX7CYbmOPLI+3R`65R#DNDs2SW`;42g zKV^#p7g~x(iySL>0fjco$p@8RX{$Wfs5gtQq>~ZW4SOpr`>4j7WuI04gfyGJSvE{9 zwXU$%P4c;lG)gRua*MZ-mO|i6O7BdP>V-BjD-Xup)nY|sUgRKBnIri;&jJNUmCDS7 Me`Rdr-Kl~913~txIsgCw literal 0 HcmV?d00001 diff --git a/out/production/Game Of Life/sample/Main.class b/out/production/Game Of Life/sample/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..bc98fed9844e5fb47c5929415dd4ffbe8fe024ed GIT binary patch literal 1200 zcmZuxT~pIQ6g^8n(uM$~v_(;|AZnpNR8Ub6LB9M*!2x7+d|Jx3gh`W5610xbKKomI zDU8lIKKr8_?3p_tI%;z!Tkgt zsF=a5f`{>??+FSA;!EG=0z*X-kL2gaa+y<+#uEik70ffl7fjpq7a1aj@jZs!kJsv!&`aF3DQC>{x$83w7K|hQ ziB}prIjTb6k?Xvq(dw>QNc*Lus<-U(3Q4`djV_+b0@ztx*!vI=DGQmF+BIa5Rq#y1 zBA!!J)v+p#=}Mz!DOl35j28-4G^}Ec5}y^@A(Kko;5Cuos^kr`A{4A^*uYEb=Y`-M z36Wf{G`z+e4F<9rN*H74?&vMUa0|xkb;~SsS-ig7wp${?($Cw&kdm;_yS0BL%GA|F zRro6w_hd&3;~gCfoYdaFHl`KVO^|Kj1&v}D4R7~io5MV|@b!1w1|`Y0^vaIu>+eg3 z;qU|D(q&m>w3D16I)#KvDam=S+EYaOJ>l<~zPzsNWlCtuhT8MjaV7Jst8xS-K4|-e zISt|hcQ`WMq4Sv@iN%lY@*zg(&DyEet62)IgewfTa%|JUrZxemR zCQ@yZ9AX6SK?=Q;t`7yWCea^|=EKA-Qlh{O3=?^Z_M6C)fDyt*$umm7h+7yVOG=ud eJ*?*x{cS3h0HC6y6x3PMZQLP0!(CdtQ1}mWR1MSs literal 0 HcmV?d00001 diff --git a/out/production/Game Of Life/sample/Rules.class b/out/production/Game Of Life/sample/Rules.class new file mode 100644 index 0000000000000000000000000000000000000000..2de72f7003a14cfab16efbf269ff72473d625d68 GIT binary patch literal 126 zcmX^0Z`VEs1_l!bPId-%b_Nbc2G0Dl)S{eJAi>DMs^RIW>B-2z6`WsMl$`38nUf0S z1eNBb7VBjtmL)PW@DwNJ7UZPrgT)vb1VEztIf;4c`u<5-smUd5j0}tnOh6kL7#LX? R8JHPZKr9AUAj!nQ1^^5{8;bw{ literal 0 HcmV?d00001 diff --git a/out/production/Game Of Life/sample/golfx.fxml b/out/production/Game Of Life/sample/golfx.fxml new file mode 100644 index 0000000..563594d --- /dev/null +++ b/out/production/Game Of Life/sample/golfx.fxml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +