From 2b8a04fe3121d82c3de38bab1f18c812e5da142c Mon Sep 17 00:00:00 2001 From: neumeiermo84285 Date: Fri, 17 Dec 2021 11:22:08 +0100 Subject: [PATCH] LifeTest second step passed --- .../GameOfLifeAssignment/Life.class | Bin 3211 -> 3511 bytes out/test/GameOfLifeAssignment/LifeTest.class | Bin 895 -> 993 bytes src/Life.java | 36 ++++++++++++------ test/LifeTest.java | 28 +++++++++----- 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/out/production/GameOfLifeAssignment/Life.class b/out/production/GameOfLifeAssignment/Life.class index 0f85de083763b3856f8be4d8ed7b6d8428c2f384..7ed1173346015b2edcb9f128e22f7bbc1cae476c 100644 GIT binary patch literal 3511 zcma)8?{8aI8GerMO|IkJHmSQLO>L*?ns$kkE?XE~OVZFZTi1Zo7Tk5sHdt=#yW}>G z9qjASz_!Ac@k`?85U_nHQ$ElSOo$E1Lz@@~2_bK3&w0=LKJWAXIQLH&$w;i#6}BR66+M4Kp=+RtTXf5g@0E%Q zZ3BauX|YU|9oSXJKID2RbQG4x=+g@lbH zQrnIPkcqS478m?Qt!G-q57_9#L2l$0o$@3Nm;=*;Q=;vVjeZ=aixtepB?bB7?D~wE*%g$PbIQ-IWFYet&azM@4V6zAv!$TI1+c<$wFo>GY?S{#q zcA>yHbPnuPF?cD8aTHa;oLSY+m5*U1ZylQvFcim|Lz=PNotBo|26PL(45 zh=`vNlg%XJOv$r0rtv9-?qz4mohlV`j{mslFLGA#ouW@djyHk3(^?Y%ar$sJiWvs9 zPd?()c^en-8HIL7LVeEl78d7A)iTZKpfgt#vNkT_G5YOQ8WZA)I3jpl;9gcZ(FD}g zM?w|F6ErWi(YI9`Q9MNiX+de>^PK8BVU{jC9wTN>mGaEX_Ka6_&sCS_-Lg(ag?Ofv za|)N7vL~q-E}Bkxfextx(>jT-z#Pu8yTJI(JJZ7{6W6@^_{-^ne_I4k+(gO8#&>mvN2EwA_xkA_tVp(#SbI*7MqHGhB_el;izfYG+KJ&y`nQ{HaQohpO ziq#mth^rRXgvu`|^lw$aS6nSExnbi8lHrV#^GjvI{YfL^pSQO8)=2con@w`m>IQfc9_<=oLWCNTk zIF*W9vGAh8;T`Ta^TNVQ3cVjLD&f^G;~=xPgWu2b8BLeM~V%^XV9ibI*!9+LR+Q+{hcKiKo z;rrN#yKxK$aFREJIGU!^Zrp#9Abp~ zF^Iz&Xdksj2z)t&m#)K0>(~eI+7Q{~UH?9M34?cN2@46zZ|J*{epPuk2JsT#0N2z+4xQ0mG19fCVvrrh(90-LH?4b~&5Z3`y zkZq!k=(>e1HUat;ur(jD)kjQ%D>-Tq&?!Ajm~%Be{5Bp1vRf$@qb2B2K2%2m1~o`8 znF$_2(HDkP$;HN%Ij(&ad!KG%Z(OI2B#y*G#t*Z{3njGY5Ut3^1CJz`)32e$eBF4R zt3lcZQJ-Wwo+ew5G*mPL3G$4UJuT*i6KvSgmZvuu;EGW5UY-XAFQXXNo$cA|ff+JBK$3F(96>=a%? zQ76t2dz6^85#1F=VSPX`=?I&AbG(H~w6H_y7NLOQ{##US zaz%>(L9^gHNf@v1GlbFsZyFPc>qsWAW1l37nIBD<`7l{pNdq_UmyJ7?lh#IfVD8SH z@PKG))Kfno7Fb?79km7SbcH4w*TsZhH)-My`P6p%jmJ`3>3xMA7-TELc*MwYlKdS& z8HZ5eYq8H#Ud0$+5@v9f7uR!))ANkcHOAnpDBuM?y~x=&@HKoBKf<^03cii&_zr%7 z@8S*o0Po;s`~^S6-|%A{P3i1pv|c(l>!ouuES(5tR~TVK$8Z;-n>e7ldb)bLyL)+U zeWBhyPiR%Z!LXd3lyc(GB165Ln4i*~l)i)Hz5s)6&_lUsEA)^TF`uj4`LZ6L)8jRI N1$}M2fOUG;^FQ0pzpelP literal 3211 zcma)8U2ha+6n@^FZD+dN=RM~+ z&w0+7e*e!GUjrDzMH3N)Xx2UJG=U2X4QNzonDp$@l){E5v$OU&d!S$!rw4L=$t_L~ z#%UL`(1f@`unx@%%|++Df5a&|CEItsqC!(|Uv^9)(`75x zn@EV)4GOI*F;7g+I(c8g=nb5$kE0FkCN^8>z?M~}0X$+VIK^pyMxPlI^OS{7Y~_vo zj9nU`vuN*F->5)KTiAx}OsDMlBL(-I!_0ff#)44Y7H*Xs;|omNKWR@ENKp@ZP4rpF zpnrAn#j@|rGp1KzfK35wt~W3)XNkJ{_0 z|CsB~a8>s0qEABh*MYk>S{(oh=I}ra4=S{X?9wZ`lkBn|$vw_GcYCt^5BvrL+=7*261tF(#7xzuW=zUFP0Tt`Q}DJrTZ>lU5k zmHA1hq(!8V$a;CZaLO*ZBC2pRYL})7Kouy|tnLbW@Mm1vJI~J;KZ}gPf>ah1*5!OV zKX=St(8o<_TICXLu`=h36zHTu=SKM!YtoAipO!noMW%5jEaHW8Y-#baO_ue*n|M)S>wlX{O?9T&MrpP3^B6xd8Mf?$TR8S6AfkJM zSK}}c;qS&Tp(Z|o@fpl){}OKb1}gh8_ak_c-_5iFES_D54ZM1aS8c&LJYDtr3{KN4 z>r0!!`#yaQD)=+BthkHoqw5i+p}4YWMkAb|184`!@V;Z^6ow z`%`Vq4~xH z>|kZP(MO*`Uz*+`1U?Zo1w@T>Yf;_9`-=StyL~-K!~-V)us_ zg}7Ek1=)2p5na2mrI_FLkgds(tu!$SuGC(GfDY(YGJ0kSBVXVUkh@u4Qp&rlD1@az zUa}HAf+8K3RLS#)J5rth6Ypr9ctct`%k>c7{}qqZK8$CR7b!p@$VkMTc^?hYtHxFC z2C@yRevon;C0mDUvPx8=B&t~@!mNZ_14;$}|0fE={mw1vsBzKO7_}8tn|0sMzS0*oi0`jxXQ_l_TB9 zH~!Q;$LDU4wt6E>`^xovY*59_w6D$t+0(=W&E%G)}@&B(jSG zY6r*DKAh!nn_&T5{x>qqGI%V<0`ES{xlu*|K3+lvuiye+!}E9xFW?^s8A9D9& zT*8-l6+iIqk9fUWIN(}Uf!C@EycQNNLfcuE)zAZS9b(tfrP?~$I@;T}QXg~GDRht4 zB(N=}=U^h2n~2I+gM2k69?ead{Q4Azbh*-_T*j_EGz?;w=hQrk{B7pSHVz_L@PpZ|9kE|=ltI}-`Ow6U98^Tfg1)h_oL!+O09@T#ZVYV(P%um9X>=OhqKw| z^3KPq7WOeZS!tkGU$=>W+b@_W1(v!rPQxDO(qdY`1r5CnO=T^?Jh0dIajl0V&6C6B zfC5MAC{w~$bj5MvagxAWYmc1Jm&zGh>Wo?K#5w$R?o2b8XAWPfZe~h3RdH(Kcyjl} rsY@I3YVN@4q#QBBgsZJKm~{2W@XzjMJ@@}pzcnY;Nm?Ca}%0kFd=vu`yM!|eIkyO7KQ4G12C>M>f=3YASx5Jx%^BdRI`b@Befehl falsch immer false!!! + public boolean isAlive(int x, int y) { + if(board[y].charAt(x) == '*'){ return true; } else{ @@ -73,23 +72,38 @@ public class Life implements ILife { @Override public ILife nextGeneration() { - System.out.println("next Generation"); + //Problem mehrere steps auf einmal da gesetzer * bei nachfolgendem durchlauf mitberücksichtigt wird int alive; + String[] nextBoard = new String[]{ " ", + " ", + " ", + " ", + " " }; for (int y = 0; y < board.length; y++){ for (int x = 0; x < board[y].length(); x++){ - alive=aliveNeighbours(x,y); //Problem immer 0 + alive=aliveNeighbours(x,y); + //A new Cell is born if(!isAlive(x,y) && alive == 3) { - setAlive(x, y); + nextBoard[y] = nextBoard[y].substring(0, x) + '*' + nextBoard[y].substring(x+1); + } + //Cell is lonely and dies + else if(isAlive(x,y) && alive < 2){ + nextBoard[y] = nextBoard[y].substring(0, x) + ' ' + nextBoard[y].substring(x+1); + } + else{ + nextBoard[y] = nextBoard[y].substring(0, x) + board[y].charAt(x) + nextBoard[y].substring(x+1); } } } + board = nextBoard; + System.out.println("next Generation"); printTable(board); return null; } - private int aliveNeighbours(int x, int y) { //-->Problem wahrscheinlich Befehl substring siehe isAlive + private int aliveNeighbours(int x, int y) { int neighbours = 0; if(x>0 && y>0){ diff --git a/test/LifeTest.java b/test/LifeTest.java index fe8be53..ba3d9e7 100644 --- a/test/LifeTest.java +++ b/test/LifeTest.java @@ -5,8 +5,25 @@ public class LifeTest { @Test public void createNewCell() { + // Arrange: drei lebende Zellen + Life l = new Life(); + l.setAlive(0, 0); + l.setAlive(0, 1); + l.setAlive(0, 2); + + // Act: Berechnung der Folgegeneration + l.nextGeneration(); + + // Assert: Rasterpunkt mit drei Nachbarn sollte jetzt leben + assertTrue(l.isAlive(1, 1)); + } + + + @Test + public void destroyLonelyCell() { + //Lebende Zellen mit weniger als zwei lebenden Nachbarn sterben in der Folgegeneration an Einsamkeit. // Arrange: drei lebende Zellen Life l = new Life(); l.setAlive(0, 0); @@ -16,15 +33,8 @@ public class LifeTest { // Act: Berechnung der Folgegeneration l.nextGeneration(); - // Assert: Rasterpunkt mit drei Nachbarn sollte jetzt leben - assertTrue(l.isAlive(1, 1)); - - - } - - - @Test - public void destroyLonelyCell() { + // Assert: Rasterpunkt mit weniger als zwei Nachbarn sollte sterben + assertFalse(l.isAlive(0, 0)); }