From 72d8e1c3206003bdec38ace19c03d9b81e25bfff Mon Sep 17 00:00:00 2001 From: Susanne Date: Sat, 15 Feb 2025 21:07:10 +0100 Subject: [PATCH] =?UTF-8?q?Refactoring:=20=C3=BCberpr=C3=BCfe=20alle=20ach?= =?UTF-8?q?t=20Nachbarn=20einer=20Zelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameOfLifeAssignment/Life.class | Bin 1581 -> 1919 bytes src/Life.java | 38 +++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/out/production/GameOfLifeAssignment/Life.class b/out/production/GameOfLifeAssignment/Life.class index ea148995f99a8a5da2cdc7bef0c59033501d6698..ba2818f2fa3ee2485fda9a0c78f3fdf1e235daca 100644 GIT binary patch literal 1919 zcmZuxTT@$A6#n+PCTUt|AP6K#j3D7epwb$&6fC8JsR249!;~^(dkBYcAWb?Ubm}{Q zqV0oDec;6hozZm0OUIYK`06k4Z#dQZ?Q>2;yd*h0Ywxwzx4w1R=hwe}cn)9@H%%x4 zTEX3QOlSh#`}PBSs%qCNQ^jV(tyMxW1oV{rgbOOFodnTXv^LaOl2}}y~mg`3~ zU%l$MmA&oyQR6T$B)-6fDBi;~8M%iWcGcYpbhoAMQWWn8Ixm2U8LGW%kjFjSWqq{8 z`VJ#^72KM$dUS8wX_V~kDo-&l#DC9^Dr>TWs3pgBAO}2Wn!D?5Vo$*krHC2D0}xKikHgTb-LtmaD$IOY1uw zB29F!PBbmDKxJpil_`WJmq|G>Yz{NxljEbvrgAtV2;&1pdGaB5`!J{hCVzz34E+ps zQ;q4xO-(L(%q(siQZl(bBXG8bv%f$TzNLqP%UsW~*&xO!$7_P9v)uLhh`53|?nW7J z9v?BDkRuqx&C^d%+haY$c`Fopfj;GX^jj??PQhc)Xwt=1WuR`Ra^4Fd$HaXqG@KYox47Kofcj^m-t)XNKW5=pEdG-6T!u2;9 zTJ`cuBSg8EU~y*Ehkn*>gsVmQ0?%?7@Tgd{IEOSAaE+b@b&Hf_MP~wfQo7Dc2z<=b z1oT%lQ%wjHOHAV>Op*8lI)60bHRCE9ljS3`6sP4dyn|Fn2}HXDyiZH$jCv?3-?Gg#;^iU3MuI#9mfOg(*b@0al(HRQuPI6PvM62-Z7^QU zfaWr(NU(4~^WxXs_%r3_In@CgZZizGLBnlOz5)Z#JwhtP8I;q^2`E^a)vz~6u1oB5j)OJB-d^@1`qMiYL<~{)i8sBndm)II=x6U3g)b^Us?dojr=_IM zD>*H$XBG2A4VbylN@C7u`fUB@jimv!}1ZF`7Y<2Imv#^c)xys`vKq@_Kv&_Ri9BfbN}G5 z+iyMTJPU3Hokx%F9UMOGc~Dr)U;A$mkG6S4tdJB{H-9v%xd__YBtuG%R+N?P(m8>JgYOx5dkdVG8+6Z5w(sD zq7?6(HR!UQtqFPxHrENRnoN_7PZ;WtAm!f7*1!iye5zp9pv(e~JS$9LzQONeBNEua1%Z6&IgUtZ_@|K&n+T zS8+s^UB<%Z`d?5eE}yS`U@%_N;uxzNTXbVqH?}yzaYUpKNhwV&e22RA6&G&!LsXsj zaH|8`9->_R%tLMZ7R_@7DMpi&%5n1lUPNIenBv*Cc@Z*|6x1*`f$J@e1w8xB8Mn){=ubX~GM)WbV NDxIc<9Wq$h{R0PMSVsT= diff --git a/src/Life.java b/src/Life.java index 0107396..59b931b 100644 --- a/src/Life.java +++ b/src/Life.java @@ -51,18 +51,46 @@ public class Life implements ILife { public ILife nextGeneration() { Life next = new Life(); - if (countAliveNeighbours() == 3) { + if (countAliveNeighbours(1, 1) == 3) { next.setAlive(1,1); } return next; } - private int countAliveNeighbours() { + private int countAliveNeighbours(int x, int y) { int count = 0; - if (isAlive(0, 0)) count++; - if (isAlive(0, 1)) count++; - if (isAlive(0, 2)) count++; + +// Eine Zelle hat ja 8 Nachbarn, +// das wäre die Überprüfung für jede einzelne Zelle herum: +// if (isValid(x-1, y-1) && isAlive(x-1, y-1)) count++; +// if (isValid(x, y-1) && isAlive(x, y-1)) count++; +// if (isValid(x+1, y-1) && isAlive(x+1, y-1)) count++; +// if (isValid(x-1, y) && isAlive(x-1, y)) count++; +// if (isValid(x+1, y) && isAlive(x+1, y)) count++; +// if (isValid(x-1, y+1) && isAlive(x-1, y+1)) count++; +// if (isValid(x, y+1) && isAlive(x, y+1)) count++; +// if (isValid(x+1, y+1) && isAlive(x+1, y+1)) count++; + +// aber so ist's direkt bisschen "schlanker" + for (int offset_X = -1; offset_X <= 1; offset_X++) { + for (int offset_Y = -1; offset_Y <= 1; offset_Y++) { + if (offset_X == 0 && offset_Y == 0) continue; // eigene Zelle überspringen + int neighbor_X = x + offset_X; + int neighbor_Y = y + offset_Y; + + if (isValid(neighbor_X, neighbor_Y) && isAlive(neighbor_X, neighbor_Y)) { + count++; + } + } + } + return count; } + + // soll in countAliveNeighbours() genutzt werden + private boolean isValid(int x, int y) { + // überprüft einfach nur, ob Zelle innerhalb der grid-Grenzen liegt + return x >= 0 && x < grid.length && y >= 0 && y < grid[x].length; + } } \ No newline at end of file