@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();

		// Top line
		sb.append('+');
		for (int x = 0; x < width; ++x) {
			sb.append("-+");
		}
		sb.append('\n');

		// Other lines
		for (int y = 0; y < height; ++y) {
			sb.append('|');

			// Row content
			for (int x = 0; x < width; ++x) {
				Cell cell = getCell(x, y);

				sb.append(cell.isAccessible() ? cell.getContent() : '#');
				sb.append(cell.isBarrierRight() || x == width - 1 ? '|' : ' ');
			}

			sb.append('\n');

			// Bottom line
			sb.append('+');
			for (int x = 0; x < width; ++x) {
				Cell cell = getCell(x, y);

				sb.append(cell.isBarrierBottom() || y == height - 1 ? '-' : ' ');
				sb.append('+');
			}
			sb.append('\n');
		}

		return sb.toString();
	}