Add proper console rendering
This commit is contained in:
@@ -1,6 +1,15 @@
|
|||||||
|
|
||||||
public class ConsoleRenderer extends GomokuRenderer {
|
public class ConsoleRenderer extends GomokuRenderer {
|
||||||
|
|
||||||
|
// Color constants
|
||||||
|
public static final String RESET = "\u001B[0m";
|
||||||
|
public static final String BOLD = "\u001B[1m";
|
||||||
|
public static final String COLOR_RED = "\u001B[31m";
|
||||||
|
public static final String COLOR_GREEN = "\u001B[32m";
|
||||||
|
public static final String COLOR_GRAY = "\u001B[38;5;240m";
|
||||||
|
|
||||||
|
public static final String CLEAR_TERM = "\033[H\033[2J";
|
||||||
|
|
||||||
public ConsoleRenderer() {
|
public ConsoleRenderer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -15,11 +24,12 @@ public class ConsoleRenderer extends GomokuRenderer {
|
|||||||
// Print the board to the console
|
// Print the board to the console
|
||||||
|
|
||||||
// Clear the console
|
// Clear the console
|
||||||
System.out.print("\033[H\033[2J");
|
System.out.print(CLEAR_TERM);
|
||||||
System.out.flush();
|
System.out.flush();
|
||||||
|
|
||||||
String[] board = game.getBoard().toString().split("\n");
|
String[] board = game.getBoard().toString().split("\n");
|
||||||
String horizontalLine = getHorizontalLine();
|
String horizontalLine = getHorizontalLine(RESET);
|
||||||
|
String horizontalLineGray = getHorizontalLine(COLOR_GRAY);
|
||||||
int width = game.getBoard().getWidth();
|
int width = game.getBoard().getWidth();
|
||||||
int height = game.getBoard().getHeight();
|
int height = game.getBoard().getHeight();
|
||||||
|
|
||||||
@@ -31,23 +41,25 @@ public class ConsoleRenderer extends GomokuRenderer {
|
|||||||
System.out.println(horizontalLine);
|
System.out.println(horizontalLine);
|
||||||
for (int i = 0; i < height; i++) {
|
for (int i = 0; i < height; i++) {
|
||||||
System.out.print("|");
|
System.out.print("|");
|
||||||
|
|
||||||
for (int j=0; j<width; j++) {
|
for (int j=0; j<width; j++) {
|
||||||
char c = board[i].charAt(j);
|
char c = board[i].charAt(j);
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'X':
|
case 'X':
|
||||||
System.out.print(" \u001B[31m" + c + "\u001B[0m |");
|
System.out.print(" " + COLOR_RED + BOLD + c + RESET + " ");
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
System.out.print(" \u001B[32m" + c + "\u001B[0m |");
|
System.out.print(" " + COLOR_GREEN + BOLD + c + RESET + " ");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
System.out.print(" " + c + " |");
|
System.out.print(COLOR_GRAY + " " + c + " " + RESET);
|
||||||
}
|
}
|
||||||
|
if (j < width - 1) System.out.print(COLOR_GRAY + "|" + RESET);
|
||||||
}
|
}
|
||||||
System.out.println(" " + (i + 1));
|
System.out.println(RESET + "| " + (i + 1));
|
||||||
System.out.println(horizontalLine);
|
if (i < height - 1) System.out.println(horizontalLineGray);
|
||||||
}
|
}
|
||||||
|
System.out.println(horizontalLine);
|
||||||
System.out.print("X");
|
System.out.print("X");
|
||||||
for (int i = 1; i <= width; i++) {
|
for (int i = 1; i <= width; i++) {
|
||||||
System.out.print(String.format(" %-2d ", i));
|
System.out.print(String.format(" %-2d ", i));
|
||||||
@@ -56,13 +68,13 @@ public class ConsoleRenderer extends GomokuRenderer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getHorizontalLine() {
|
private String getHorizontalLine(String color) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("+");
|
sb.append("+" + color);
|
||||||
for (int i = 0; i < game.getBoard().getWidth()*4-1; i++) {
|
for (int i = 0; i < game.getBoard().getWidth()*4-1; i++) {
|
||||||
sb.append("-");
|
sb.append("-");
|
||||||
}
|
}
|
||||||
sb.append("+");
|
sb.append(RESET + "+");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user