I’ve never had this problem unless I was running a very deep algorithm. My code looks godly.
package Core;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.ArrayList;
public class HexGrid {
int size;
ArrayList<Point> points = new ArrayList<Point>();
ArrayList<Troint> troints = new ArrayList<Troint>();
Point[][] pointA;
public HexGrid(int size){
this.size = size;
setupGrid(size);
}
public void update() {
}
public void draw(Graphics2D g) {
int offset = size*24;
int spacing = 20;
for(int c = 0; c < points.size(); c++){
g.setColor(Color.green);
Point pFill = points.get(c);
Troint tFill = troints.get(c);
if(tFill.n == 0 && tFill.v == 0){
g.setColor(Color.red);
}
if(tFill.n > 0){
g.fillOval(tFill.n*(spacing)+offset, tFill.v*(spacing)+offset-(size*(spacing/2))+((size-tFill.n)*(spacing/2)), (spacing), (spacing));
}else
if(tFill.n <= 0){
g.fillOval(tFill.n*(spacing)+offset, tFill.v*(spacing)+offset+((tFill.n)*(spacing/2)), (spacing), (spacing));
}
}
}
int numKeep = 0;
public void setupGrid(int size){
pointA = new Point[size*2+1][size*2+1];
int count = 1;
for(int o = 0; o < size; o++){
for(int i = 0; i < size+1+o; i++){
System.out.println((o-size)+":"+(i-o)+":"+(Math.abs(o-size)-(i-o)));
points.add(new Point(o-size,i-o));
troints.add(new Troint(o-size,Math.abs(o-size)-(i-o),i-o));
count++;
}
}
for(int o = 0; o < size*2+1; o++){
System.out.println(0+":"+(o-size)+":"+-(o-size));
points.add(new Point(0,o-size));
troints.add(new Troint(0,-(o-size),o-size));
count++;
}
for(int o = 0; o < size; o++){
for(int i = 0; i < Math.abs(o-size*2); i++){
System.out.println((o+1)+":"+(i-o-1)+":n, "+(-(o+1)+Math.abs(i-o-1)));
points.add(new Point(o+1,i+o-size+1));
troints.add(new Troint(o+1,-((o+1)+Math.abs(i-o-1)),i+o-size+1));
count++;
}
}
}
}
And you may be asking yourself, wtf is a TROINT? It’s just a Point with 3 coordinates instead of 2 like a normal point. Dealing with Hexagons that is…
package Core;
public class Troint {
//n = negative line coordinate;
//p = positive line coordinate;
//v = vertical line coordinate;
public int n;
public int p;
public int v;
public Troint(int n, int p, int v){
this.n = n;
this.p = p;
this.v = v;
}
public int getN(){
return n;
}
public int getP(){
return p;
}
public int getV(){
return v;
}
}