You will need to fork your JSFiddle for your List into a new
Solution
Paste this in Js section
--------------------
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import com.sai.game.BoardGame;
import com.sai.game.BoardGame.GameState;
import com.sai.model.BoardTwoPlayers;
public class Gametictactoe extends JPanel implements Observer{
private static final long serialVersionUID = 6474899766649949747L;
private int dvsonwidth = 0;
private int dvsnsHgt = 0;
BoardGame crntBrdGm;
boolean dltCliks = true;
public Gametictactoe(BoardGame brdGame){
resetWithNewGame(brdGame);
}
public void resetWithNewGame(BoardGame brdGame){
if (crntBrdGm != null) {
crntBrdGm.deleteObservers();
}
crntBrdGm = brdGame;
crntBrdGm.addObserver(this);
init();
}
private void init(){
dvsnsHgt = crntBrdGm.getBoard().getHeight();
dvsonwidth = crntBrdGm.getBoard().getWidth();
dltCliks = true;
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (dltCliks) {
mouseClickHandler(e);
}
}
});
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, getBounds().width, getBounds().height);
drawLines(g);
fillWithMoves(g);
}
private void drawLines(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g.setColor(Color.YELLOW);
int fullWidth = getBounds().width;
int fullheight = getBounds().height;
g2.setStroke(new BasicStroke(3));
for (int i = 1; i < dvsonwidth; i++) {
float currentX = i * (fullWidth / dvsonwidth);
Line2D newLine = new Line2D.Float(new Point2D.Float(currentX, 0.0f), new Point2D.Float(currentX, fullheight));
g2.draw(newLine);
}
for (int i = 1; i < dvsnsHgt; i++) {
float currentY = i * (fullheight / dvsnsHgt);
Line2D newLine = new Line2D.Float(new Point2D.Float(0, currentY), new Point2D.Float(fullWidth, currentY));
g2.draw(newLine);
}
}
private void fillWithMoves(Graphics g){
int divisionWidth = getWidth() / dvsonwidth;
int divisionHeight = getHeight() / dvsnsHgt;
int fontSize = Math.min(divisionWidth, divisionHeight) /2;
g.setFont(new Font(\"Arial\", Font.PLAIN, fontSize));
for (int i = 0; i < dvsonwidth; i++) {
for (int j = 0; j < dvsnsHgt; j++) {
String str = \"-\";
int currentPosition = this.crntBrdGm.getBoard().getPiece(new Point(i,j));
if (currentPosition == BoardTwoPlayers.PLAYER_EMPTY) {
str = \"-\";
}else if (currentPosition == BoardTwoPlayers.PLAYER_O) {
str = \"O\";
}else {
str = \"X\";
}
int currentOffsetX = (i * divisionWidth) + (divisionWidth / 2) - fontSize/2;
int currentOffsetY = (j * divisionHeight) + (divisionHeight /2);
g.drawString(str, currentOffsetX, currentOffsetY);
}
}
}
private void mouseClickHandler(MouseEvent event){
if (!dltCliks) {
return;
}
int width = getWidth();
int height = getHeight();
int cellWidth = width / dvsonwidth;
int cellHeight = height / dvsnsHgt;
int column = event.getX() / cellWidth;
int row = event.getY() / cellHeight;
Point selectedCell = new Point(column, row);
System.out.println(\"point touched: \" + selectedCell);
if (crntBrdGm.getBoard().isValidMove(selectedCell)){
try {
crntBrdGm.makeMoveForNextCurrentPlayer(selectedCell);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println(\"not a valid move. Valid moves are:\");
System.out.println(crntBrdGm.getBoard().getEmptyValidSpaces().toString());
System.out.println(\"\ \");
}
}
public enum GameType{
connect4, tictactoe
}
@Override
public void update(Observable o, Object arg) {
this.repaint();
GameState currentState = crntBrdGm.getCurrentGameState();
if (currentState == GameState.oWins || currentState == GameState.xWins) {
JOptionPane.showMessageDialog(null, (currentState == GameState.oWins? \"O\" : \"X\") + \" wins the game!\");
dltCliks = false;
}else {
if (crntBrdGm.getCurrentGameState() == GameState.draw) {
JOptionPane.showMessageDialog(null, \"Game is a draw!\");
}
}
System.out.println(crntBrdGm.getBoard());
}
public boolean gameHasStopped(){
return !dltCliks;
}
}
=============
Paste this in HTML section
<button onclick=\"fillrandomStrings()\">Repopulate the list with randome String algorithm</button>
<button onclick=\"quicksort()\">Sort list with QuickSort algorithm</button>
<span id=\"quicklist\"></span>
<button onclick=\"mergesort()\">Sort list with QuickSort algorithm</button>
<span id=\"mergelist\"></span>
<button onclick=\"insertnewlistbyuser()\">Insert new list byuser</button>
<span id=\"userlist\"></span>



