public Set<PointGame> getAdjacentPoints() {
		Set<PointGame> adjacent = new HashSet<PointGame>();
		// Search in 4 directions: We are done each branch if
		// we run out of boundary or have found a valid point.
		// ----------------------------------------
		// x+ direction:
		PointGame rightNeighbor = getRightNeighbor();
		if(rightNeighbor!=null)
			adjacent.add(rightNeighbor);
		// x- direction:
		PointGame leftNeighbor = getLeftNeighbor();
		if(leftNeighbor!=null)
			adjacent.add(leftNeighbor);
		// y+ direction: down
		PointGame downNeighbor = getDownNeighbor();
		if(downNeighbor!=null)
			adjacent.add(downNeighbor);
		// y- direction: up
		PointGame upNeighbor = getUpNeighbor();
		if(upNeighbor!=null)
			adjacent.add(upNeighbor);
		
		return adjacent;
	}