From 9ff5f6834c8df7e6889f8c35b1001a2e775be850 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Mon, 14 Jan 2013 10:07:18 -0500 Subject: [PATCH] Patch: +get4Neighbors(), get8Neighbors(), clone() --- src/Grid.java | 20 ++++++++++++++++++++ src/Patch.java | 30 +++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/Grid.java b/src/Grid.java index 9fb1e1b..ba28694 100644 --- a/src/Grid.java +++ b/src/Grid.java @@ -18,6 +18,22 @@ public class Grid { } } + private static int normalizeX(int x) { + while (x >= getWidth()) + x -= getWidth(); + while (x < 0) + x += getWidth(); + return x; + } + + private static int normalizeY(int y) { + while (y >= getHeight()) + y -= getHeight(); + while (y < 0) + y += getHeight(); + return y; + } + public int getWidth() { return _grid.length; } @@ -27,10 +43,14 @@ public class Grid { } public Patch getPatch(int x, int y) { + x = normalizeX(x); + y = normalizeY(y); return _grid[x][y]; } public void setPatch(int x, int y, Patch p) { + x = normalizeX(x); + y = normalizeY(y); _grid[x][y] = p; } diff --git a/src/Patch.java b/src/Patch.java index ad4b31e..bcae989 100644 --- a/src/Patch.java +++ b/src/Patch.java @@ -3,10 +3,10 @@ package edu.stuy.goldfish; public class Patch { private int _xcor, _ycor, _state; private String _label; - private Grid _myGrid; + private Grid _grid; public Patch(Grid grid, int xcor, int ycor, int state, String label) { - _myGrid = grid; + _grid = grid; _xcor = xcor; _ycor = ycor; _state = state; @@ -48,4 +48,28 @@ public class Patch { public String toString() { return _plabel; } -} + + public Patch[] get4Neighbors() { + Patch[] neighbors = new Patch[4]; + neighbors[0] = _grid.getPatch(_xcor + 1, _ycor); + neighbors[1] = _grid.getPatch(_xcor - 1, _ycor); + neighbors[2] = _grid.getPatch(_xcor, _ycor + 1); + neighbors[3] = _grid.getPatch(_xcor, _ycor - 1); + } + + public Patch[] get8Neighbors() { + Patch[] neighbors = new Patch[8]; + neighbors[0] = _grid.getPatch(_xcor + 1, _ycor); + neighbors[1] = _grid.getPatch(_xcor - 1, _ycor); + neighbors[2] = _grid.getPatch(_xcor, _ycor + 1); + neighbors[3] = _grid.getPatch(_xcor, _ycor - 1); + neighbors[4] = _grid.getPatch(_xcor + 1, _ycor + 1); + neighbors[5] = _grid.getPatch(_xcor + 1, _ycor - 1); + neighbors[6] = _grid.getPatch(_xcor - 1, _ycor + 1); + neighbors[7] = _grid.getPatch(_xcor - 1, _ycor - 1); + } + + public Patch clone() { + return new Patch(_grid, _xcor, _ycor, _state, _label); + } +}