Loading jeuAssemblage/maps.tetriste +7 −1 Changes for jeuAssemblage/maps.tetriste: 7 added lines, 1 removed line. Original line number Diff line number Diff line 12;13;6;2001265384976310272 10;10;3;0;shesh10;10 15;12;7;7950305377179271168;Jean;143 10;14;6;1270873474421636096;Nul;96 13;11;7;493101277235170304;Test;77 14;12;7;5761360446297763840;zdqzd;117 15;13;7;5544433734978013184;Shesh;121 17;15;9;8065871849407982592;Test;224 jeuAssemblage/src/main/App.java +12 −2 Changes for jeuAssemblage/src/main/App.java: 12 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import model.arrangement.Arrangement; import model.arrangement.ArrangementList; import view.MainFrame; public class App { Loading @@ -15,8 +17,16 @@ public class App { public static void main(String[] args) throws Exception { //PlayBoard p = PlayBoard.constructPlayBoard(Long.parseLong("2392006401451300864"), 10, 11, 5); //new AIStrategy(p); //FUTURS TESTS QUI FAUT METTRE DANS LES JUNITS /* Arrangement a = new Arrangement(0, 0, 0, 0, "shesh", 0); Arrangement b = new Arrangement(0, 0, 0, 0, "shesh10", 10); ArrangementList.addArrangement(a); PlayBoard p = PlayBoard.constructPlayBoard(Long.parseLong("2392006401451300864"), 10, 11, 5); new AIStrategy(p); */ SwingUtilities.invokeLater(() -> { Loading jeuAssemblage/src/model/PlayBoard.java +9 −2 Changes for jeuAssemblage/src/model/PlayBoard.java: 9 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import factory.OFactory; import factory.PieceFactory; import factory.TFactory; import factory.ZFactory; import model.arrangement.Arrangement; import model.listener.IPlayBoardListenable; import model.listener.IPlayBoardListener; import observer.AbstractListenableHM; Loading Loading @@ -303,7 +304,12 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo @Override public boolean equals(Object p) { if (!(p instanceof PlayBoard) || p == null) { return false; } PlayBoard pBoard = (PlayBoard) p; if (this.seed != pBoard.seed) return false; if (this.sizeX != pBoard.sizeX) return false; if (this.sizeY != pBoard.sizeY) return false; Loading Loading @@ -452,6 +458,7 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo } public Map<Integer, Piece> getPieces() { return new HashMap<>(piecesMap); } public int getPiecesCount() { return this.piecesMap.size(); } public Point getLowerRightPieceCorner() { return new Point(getUpperPieceX(), getUpperPieceY()); } public Point getUpperLeftPieceCorner() { return new Point(getLowerPieceX(), getLowerPieceY()); } Loading @@ -466,11 +473,11 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo public int getBoardHeight() { return this.board.length; } public int[][] getBoardArray() { return this.board.clone(); } public int getWidth() { return this.sizeX; } public int getHeight() { return this.sizeY; } public long getSeed() { return this.seed; } // ----------------- // STATIC METHODS Loading jeuAssemblage/src/model/Arrangement.java→jeuAssemblage/src/model/arrangement/Arrangement.java +38 −8 Changes for jeuAssemblage/src/model/arrangement/Arrangement.java: 38 added lines, 8 removed lines. Original line number Diff line number Diff line package model; package model.arrangement; public class Arrangement { private int sizeX; private int sizeY; private int pieceCount; private long seed; private String username; private int score; protected int sizeX; protected int sizeY; protected int pieceCount; protected long seed; protected String username; protected int score; public Arrangement(int sizeX, int sizeY, int pieceCount, long seed, String username, int score) { this.sizeX = sizeX; Loading @@ -15,9 +16,38 @@ public class Arrangement { this.pieceCount = pieceCount; this.seed = seed; this.username = username; this.seed = seed; this.score = score; } public void setUsername( String username ) { this.username = username; } public void setScore( int score ) { this.score = score; } @Override public boolean equals(Object o) { if (!(o instanceof Arrangement) || o == null) { return false; } Arrangement a = (Arrangement) o; if (this.sizeX != a.sizeX || this.sizeY != a.sizeY) { return false; } if (this.pieceCount != a.pieceCount || this.seed != a.seed) { return false; } return true; } @Override public String toString() { return this.sizeX + ";" + this.sizeY + ";" + this.pieceCount + ";" + this.seed + ";" + this.username + ";" + this.score; } } No newline at end of file jeuAssemblage/src/model/arrangement/ArrangementList.java 0 → 100644 +209 −0 Changes for jeuAssemblage/src/model/arrangement/ArrangementList.java: 209 added lines, 0 removed lines. Original line number Diff line number Diff line package model.arrangement; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; import model.PlayBoard; import javax.swing.table.AbstractTableModel; import java.util.List; import java.util.ArrayList; import java.util.Scanner; import java.io.*; import java.nio.file.Path; import java.nio.file.Paths; public class ArrangementList implements TableModel { private static List<Arrangement> arrangements; private static String[] headersName; static { arrangements = ArrangementList.getArrangementList(); headersName = new String[] { "X", "Y", "NB PIECE", "SEED", "USERNAME", "SCORE" }; } private List<TableModelListener> listeners; public ArrangementList() { this.listeners = new ArrayList<TableModelListener>(); } // tableModel Methods @Override public int getRowCount() { return ArrangementList.arrangements.size(); } @Override public int getColumnCount() { return headersName.length; } @Override public String getColumnName(int columnIndex) { return headersName[columnIndex]; } @Override public Class<?> getColumnClass(int columnIndex) { if (this.getRowCount() == 0) return Object.class; return this.getValueAt(0, columnIndex).getClass(); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } @Override public Object getValueAt(int rowIndex, int columnIndex) { Object val = "No"; Arrangement selected = arrangements.get(rowIndex); switch (columnIndex) { case 0 -> val = selected.sizeX; case 1 -> val = selected.sizeY; case 2 -> val = selected.pieceCount; case 3 -> val = selected.seed; case 4 -> val = selected.username; case 5 -> val = selected.score; } return val; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { throw new IllegalStateException("Impossible"); } @Override public void addTableModelListener(TableModelListener l) { this.listeners.add(l); } @Override public void removeTableModelListener(TableModelListener l) { this.listeners.remove(l); } // Static methods public static List<Arrangement> getArrangements() { return ArrangementList.arrangements; } public static void addArrangement(Arrangement arrangement) { Arrangement copy = ArrangementList.exist(arrangement); if (copy != null) { if (copy.score < arrangement.score) { copy.score = arrangement.score; copy.username = arrangement.username; } } else { ArrangementList.arrangements.add(arrangement); } ArrangementList.registerArrangement(); } public static void addArrangement(PlayBoard playboard, String name) { addArrangement( new Arrangement( playboard.getBoardWidth(), playboard.getBoardHeight(), playboard.getPiecesCount(), playboard.getSeed(), name, playboard.getArea() ) ); } private static Arrangement exist(Arrangement arrangement) { for (Arrangement a : ArrangementList.arrangements) { if (a.equals(arrangement)) return a; } return null; } private static void registerArrangement() { File f = new File(ArrangementList.getPath() + "/maps.tetriste"); if (!f.exists()) { try { f.createNewFile(); } catch (Exception e) { e.printStackTrace(); } } String str = ""; for (Arrangement a : ArrangementList.arrangements) { str += a.toString() + "\n"; } try { BufferedWriter writer = new BufferedWriter(new FileWriter(f)); writer.append(str); writer.close(); } catch (Exception e) { e.printStackTrace(); } } private static ArrayList<Arrangement> getArrangementList() { ArrayList<Arrangement> retLst = new ArrayList<Arrangement>(); File f = new File(ArrangementList.getPath() + "/maps.tetriste"); if (!f.exists()) return retLst; try { Scanner sc = new Scanner(f); while (sc.hasNext()) { String[] vals = sc.nextLine().split(";"); int sizeX = Integer.parseInt(vals[0]);; int sizeY = Integer.parseInt(vals[1]); int pieceCount = Integer.parseInt(vals[2]); long seed = Long.parseLong(vals[3]); String username = vals[4]; int score = Integer.parseInt(vals[5]); retLst.add(new Arrangement(sizeX, sizeY, pieceCount, seed, username, score)); } sc.close(); } catch (Exception e) { e.printStackTrace(); } return retLst; } private static String getPath() { Path path = Paths.get(""); return path.toAbsolutePath().toString(); } } Loading
jeuAssemblage/maps.tetriste +7 −1 Changes for jeuAssemblage/maps.tetriste: 7 added lines, 1 removed line. Original line number Diff line number Diff line 12;13;6;2001265384976310272 10;10;3;0;shesh10;10 15;12;7;7950305377179271168;Jean;143 10;14;6;1270873474421636096;Nul;96 13;11;7;493101277235170304;Test;77 14;12;7;5761360446297763840;zdqzd;117 15;13;7;5544433734978013184;Shesh;121 17;15;9;8065871849407982592;Test;224
jeuAssemblage/src/main/App.java +12 −2 Changes for jeuAssemblage/src/main/App.java: 12 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import model.arrangement.Arrangement; import model.arrangement.ArrangementList; import view.MainFrame; public class App { Loading @@ -15,8 +17,16 @@ public class App { public static void main(String[] args) throws Exception { //PlayBoard p = PlayBoard.constructPlayBoard(Long.parseLong("2392006401451300864"), 10, 11, 5); //new AIStrategy(p); //FUTURS TESTS QUI FAUT METTRE DANS LES JUNITS /* Arrangement a = new Arrangement(0, 0, 0, 0, "shesh", 0); Arrangement b = new Arrangement(0, 0, 0, 0, "shesh10", 10); ArrangementList.addArrangement(a); PlayBoard p = PlayBoard.constructPlayBoard(Long.parseLong("2392006401451300864"), 10, 11, 5); new AIStrategy(p); */ SwingUtilities.invokeLater(() -> { Loading
jeuAssemblage/src/model/PlayBoard.java +9 −2 Changes for jeuAssemblage/src/model/PlayBoard.java: 9 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import factory.OFactory; import factory.PieceFactory; import factory.TFactory; import factory.ZFactory; import model.arrangement.Arrangement; import model.listener.IPlayBoardListenable; import model.listener.IPlayBoardListener; import observer.AbstractListenableHM; Loading Loading @@ -303,7 +304,12 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo @Override public boolean equals(Object p) { if (!(p instanceof PlayBoard) || p == null) { return false; } PlayBoard pBoard = (PlayBoard) p; if (this.seed != pBoard.seed) return false; if (this.sizeX != pBoard.sizeX) return false; if (this.sizeY != pBoard.sizeY) return false; Loading Loading @@ -452,6 +458,7 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo } public Map<Integer, Piece> getPieces() { return new HashMap<>(piecesMap); } public int getPiecesCount() { return this.piecesMap.size(); } public Point getLowerRightPieceCorner() { return new Point(getUpperPieceX(), getUpperPieceY()); } public Point getUpperLeftPieceCorner() { return new Point(getLowerPieceX(), getLowerPieceY()); } Loading @@ -466,11 +473,11 @@ public class PlayBoard extends AbstractListenableHM implements Listener, IPlayBo public int getBoardHeight() { return this.board.length; } public int[][] getBoardArray() { return this.board.clone(); } public int getWidth() { return this.sizeX; } public int getHeight() { return this.sizeY; } public long getSeed() { return this.seed; } // ----------------- // STATIC METHODS Loading
jeuAssemblage/src/model/Arrangement.java→jeuAssemblage/src/model/arrangement/Arrangement.java +38 −8 Changes for jeuAssemblage/src/model/arrangement/Arrangement.java: 38 added lines, 8 removed lines. Original line number Diff line number Diff line package model; package model.arrangement; public class Arrangement { private int sizeX; private int sizeY; private int pieceCount; private long seed; private String username; private int score; protected int sizeX; protected int sizeY; protected int pieceCount; protected long seed; protected String username; protected int score; public Arrangement(int sizeX, int sizeY, int pieceCount, long seed, String username, int score) { this.sizeX = sizeX; Loading @@ -15,9 +16,38 @@ public class Arrangement { this.pieceCount = pieceCount; this.seed = seed; this.username = username; this.seed = seed; this.score = score; } public void setUsername( String username ) { this.username = username; } public void setScore( int score ) { this.score = score; } @Override public boolean equals(Object o) { if (!(o instanceof Arrangement) || o == null) { return false; } Arrangement a = (Arrangement) o; if (this.sizeX != a.sizeX || this.sizeY != a.sizeY) { return false; } if (this.pieceCount != a.pieceCount || this.seed != a.seed) { return false; } return true; } @Override public String toString() { return this.sizeX + ";" + this.sizeY + ";" + this.pieceCount + ";" + this.seed + ";" + this.username + ";" + this.score; } } No newline at end of file
jeuAssemblage/src/model/arrangement/ArrangementList.java 0 → 100644 +209 −0 Changes for jeuAssemblage/src/model/arrangement/ArrangementList.java: 209 added lines, 0 removed lines. Original line number Diff line number Diff line package model.arrangement; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; import model.PlayBoard; import javax.swing.table.AbstractTableModel; import java.util.List; import java.util.ArrayList; import java.util.Scanner; import java.io.*; import java.nio.file.Path; import java.nio.file.Paths; public class ArrangementList implements TableModel { private static List<Arrangement> arrangements; private static String[] headersName; static { arrangements = ArrangementList.getArrangementList(); headersName = new String[] { "X", "Y", "NB PIECE", "SEED", "USERNAME", "SCORE" }; } private List<TableModelListener> listeners; public ArrangementList() { this.listeners = new ArrayList<TableModelListener>(); } // tableModel Methods @Override public int getRowCount() { return ArrangementList.arrangements.size(); } @Override public int getColumnCount() { return headersName.length; } @Override public String getColumnName(int columnIndex) { return headersName[columnIndex]; } @Override public Class<?> getColumnClass(int columnIndex) { if (this.getRowCount() == 0) return Object.class; return this.getValueAt(0, columnIndex).getClass(); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } @Override public Object getValueAt(int rowIndex, int columnIndex) { Object val = "No"; Arrangement selected = arrangements.get(rowIndex); switch (columnIndex) { case 0 -> val = selected.sizeX; case 1 -> val = selected.sizeY; case 2 -> val = selected.pieceCount; case 3 -> val = selected.seed; case 4 -> val = selected.username; case 5 -> val = selected.score; } return val; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { throw new IllegalStateException("Impossible"); } @Override public void addTableModelListener(TableModelListener l) { this.listeners.add(l); } @Override public void removeTableModelListener(TableModelListener l) { this.listeners.remove(l); } // Static methods public static List<Arrangement> getArrangements() { return ArrangementList.arrangements; } public static void addArrangement(Arrangement arrangement) { Arrangement copy = ArrangementList.exist(arrangement); if (copy != null) { if (copy.score < arrangement.score) { copy.score = arrangement.score; copy.username = arrangement.username; } } else { ArrangementList.arrangements.add(arrangement); } ArrangementList.registerArrangement(); } public static void addArrangement(PlayBoard playboard, String name) { addArrangement( new Arrangement( playboard.getBoardWidth(), playboard.getBoardHeight(), playboard.getPiecesCount(), playboard.getSeed(), name, playboard.getArea() ) ); } private static Arrangement exist(Arrangement arrangement) { for (Arrangement a : ArrangementList.arrangements) { if (a.equals(arrangement)) return a; } return null; } private static void registerArrangement() { File f = new File(ArrangementList.getPath() + "/maps.tetriste"); if (!f.exists()) { try { f.createNewFile(); } catch (Exception e) { e.printStackTrace(); } } String str = ""; for (Arrangement a : ArrangementList.arrangements) { str += a.toString() + "\n"; } try { BufferedWriter writer = new BufferedWriter(new FileWriter(f)); writer.append(str); writer.close(); } catch (Exception e) { e.printStackTrace(); } } private static ArrayList<Arrangement> getArrangementList() { ArrayList<Arrangement> retLst = new ArrayList<Arrangement>(); File f = new File(ArrangementList.getPath() + "/maps.tetriste"); if (!f.exists()) return retLst; try { Scanner sc = new Scanner(f); while (sc.hasNext()) { String[] vals = sc.nextLine().split(";"); int sizeX = Integer.parseInt(vals[0]);; int sizeY = Integer.parseInt(vals[1]); int pieceCount = Integer.parseInt(vals[2]); long seed = Long.parseLong(vals[3]); String username = vals[4]; int score = Integer.parseInt(vals[5]); retLst.add(new Arrangement(sizeX, sizeY, pieceCount, seed, username, score)); } sc.close(); } catch (Exception e) { e.printStackTrace(); } return retLst; } private static String getPath() { Path path = Paths.get(""); return path.toAbsolutePath().toString(); } }