Loading jeuAssemblage/maps.tetriste 0 → 100644 +10 −0 Changes for jeuAssemblage/maps.tetriste: 10 added lines, 0 removed lines. Original line number Diff line number Diff line 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 jeuAssemblage/resources/maps.tetriste 0 → 100644 +1 −0 Changes for jeuAssemblage/resources/maps.tetriste: 1 added line, 0 removed lines. Original line number Diff line number Diff line shesh No newline at end of file jeuAssemblage/src/main/Controller.java +8 −4 Changes for jeuAssemblage/src/main/Controller.java: 8 added lines, 4 removed lines. Original line number Diff line number Diff line package main; import java.awt.*; import java.awt.image.BufferedImage; import main.listener.EventListener; import java.util.Random; import java.util.*; import main.event.EventManager; import model.PlayBoard; import pieces.Piece; import view.MainFrame; import view.utils.PieceRenderUtils; public class Controller { Loading Loading @@ -74,7 +72,8 @@ public class Controller { } // model methods public void setPlayBoard(int sizeX, int sizeY, int nbPieces) { public void setPlayBoard(int sizeX, int sizeY, int nbPieces, long seed) { this.model.initSeed(seed); this.model.initNumberPiece(nbPieces); this.model.initSizePB(sizeY, sizeX); } Loading @@ -84,6 +83,7 @@ public class Controller { public int getPieceCount () { return this.model.getPieces().size(); } public Piece getSelectedPiece () { return this.model.getSelectedPiece(); } public int[][] getPlayBoard () { return this.model.getPlayBoard(); } public long getSeeed () { return this.model.getSeed(); } public Image getImageById(int id) { return this.model.getImageById(id); } public Piece getPieceById(int id) { return this.model.getPieceById(id); } Loading @@ -92,6 +92,10 @@ public class Controller { public void setPieceSelected(Piece p) { this.model.setPieceSelected(p); } public void registerArrangement() { this.model.registerArrangement(); } public ArrayList<String> getArrangement() { return this.model.getArrangement(); } public boolean canBeAddedToBoard(int x, int y) { return this.model.selectedPieceCanBeAddedToBoard( x, Loading jeuAssemblage/src/model/PlayBoard.java +68 −5 Changes for jeuAssemblage/src/model/PlayBoard.java: 68 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -2,8 +2,12 @@ package model; import java.awt.*; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.HashMap; import java.io.*; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import pieces.Piece; import pieces.PieceFactory; Loading @@ -17,6 +21,8 @@ public class PlayBoard { private HashMap<Integer, Image> hmPieceImage; private int[][] playBoard; private Long seed; public PlayBoard() { this.hmPieceImage = new HashMap<Integer, Image>(); Loading @@ -24,6 +30,12 @@ public class PlayBoard { this.alPieceOnBoard = null; this.playBoard = null; this.selectedPiece = null; this.seed = null; } public void initSeed(long seed) { this.seed = seed; PieceFactory.setSeed(seed); } public void initSizePB(int height, int width) { Loading @@ -40,6 +52,7 @@ public class PlayBoard { public int[][] getPlayBoard () { return this.playBoard; } public ArrayList<Piece> getPieces () { return this.alPieceOnBoard; } public Piece getSelectedPiece () { return this.selectedPiece; } public Long getSeed () { return this.seed; } public Image getImageById (int id) { return this.hmPieceImage.get(id); } public Piece getPieceById (int id) { return this.alPieceOnBoard.get(id-1);} Loading Loading @@ -100,9 +113,53 @@ public class PlayBoard { return ret; } public void registerArrangement() { String str = this.playBoard.length + ";" + this.playBoard[0].length + ";" + this.alPieceOnBoard.size() + ";" + this.seed; File f = new File(this.getPath() + "/maps.tetriste"); if (!f.exists()) { try { f.createNewFile(); } catch (Exception e) { e.printStackTrace(); } } try { BufferedWriter writer = new BufferedWriter(new FileWriter(f, true)); writer.append(str); writer.append('\n'); writer.close(); } catch (Exception e) { e.printStackTrace(); } } public ArrayList<String> getArrangement() { ArrayList<String> alRet = new ArrayList<String>(); File f = new File(this.getPath() + "/maps.tetriste"); if ( !f.exists() ) return alRet; try { Scanner sc = new Scanner(f); while (sc.hasNext()) { alRet.add(sc.nextLine()); } sc.close(); } catch (Exception e) { e.printStackTrace(); } return alRet; } /** * bla bla * are representation of an rectangle, contains respectively x, y, width, height * */ public void destroy() { while (!this.alPieceOnBoard.isEmpty()) { Loading @@ -113,6 +170,11 @@ public class PlayBoard { } // Privates private String getPath() { Path path = Paths.get(""); return path.toAbsolutePath().toString(); } private ArrayList<Piece> createPieces(int numberPiece) { ArrayList<Piece> tempAl = new ArrayList<Piece>(); int samePieceLimit = (int) Math.ceil(numberPiece / (PieceFactory.NUMBER_PIECE * 1d)); Loading Loading @@ -151,11 +213,12 @@ public class PlayBoard { private void placePieceOnBoard() { // TODO : changer ça en vrai fonction qui vérifie les possibilités avant d'ajouter, backtracking ? Random rand = new Random(this.seed); for ( Piece p: this.alPieceOnBoard) { int x, y; do { x = (int) (Math.random() * (this.playBoard[0].length - p.getWidth ())); y = (int) (Math.random() * (this.playBoard.length - p.getHeight())); x = rand.nextInt(this.playBoard[0].length - p.getWidth ()); y = rand.nextInt(this.playBoard.length - p.getHeight()); } while( !canBeAddedToBoard(x, y, p.getWidth(), p.getHeight()) ); addPieceOnBoard(p, x, y); Loading jeuAssemblage/src/view/component/JTableArrangement.java 0 → 100644 +41 −0 Changes for jeuAssemblage/src/view/component/JTableArrangement.java: 41 added lines, 0 removed lines. Original line number Diff line number Diff line package view.component; import java.util.ArrayList; import javax.swing.JTable; import main.Controller; public class JTableArrangement { public static String[] columnNames; static { columnNames = new String[] { "Taille X", "Taille Y", "Nombre Pièces", "Seed" }; } public static Object[][] getData() { ArrayList<String> alStr = Controller.getInstance().getArrangement(); Object[][] obj = new Object[alStr.size()][columnNames.length]; for (int i = 0; i < alStr.size(); i++) { String[] arrayS = alStr.get(i).split(";"); for (int j = 0; j < arrayS.length; j++) { obj[i][j] = arrayS[j]; } } return obj; } public static JTable getJTable() { JTable jtable = new JTable(getData(), columnNames); jtable.setShowGrid(true); jtable.setFillsViewportHeight(true); return jtable; } } Loading
jeuAssemblage/maps.tetriste 0 → 100644 +10 −0 Changes for jeuAssemblage/maps.tetriste: 10 added lines, 0 removed lines. Original line number Diff line number Diff line 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744 15;15;8;2245528489552031744
jeuAssemblage/resources/maps.tetriste 0 → 100644 +1 −0 Changes for jeuAssemblage/resources/maps.tetriste: 1 added line, 0 removed lines. Original line number Diff line number Diff line shesh No newline at end of file
jeuAssemblage/src/main/Controller.java +8 −4 Changes for jeuAssemblage/src/main/Controller.java: 8 added lines, 4 removed lines. Original line number Diff line number Diff line package main; import java.awt.*; import java.awt.image.BufferedImage; import main.listener.EventListener; import java.util.Random; import java.util.*; import main.event.EventManager; import model.PlayBoard; import pieces.Piece; import view.MainFrame; import view.utils.PieceRenderUtils; public class Controller { Loading Loading @@ -74,7 +72,8 @@ public class Controller { } // model methods public void setPlayBoard(int sizeX, int sizeY, int nbPieces) { public void setPlayBoard(int sizeX, int sizeY, int nbPieces, long seed) { this.model.initSeed(seed); this.model.initNumberPiece(nbPieces); this.model.initSizePB(sizeY, sizeX); } Loading @@ -84,6 +83,7 @@ public class Controller { public int getPieceCount () { return this.model.getPieces().size(); } public Piece getSelectedPiece () { return this.model.getSelectedPiece(); } public int[][] getPlayBoard () { return this.model.getPlayBoard(); } public long getSeeed () { return this.model.getSeed(); } public Image getImageById(int id) { return this.model.getImageById(id); } public Piece getPieceById(int id) { return this.model.getPieceById(id); } Loading @@ -92,6 +92,10 @@ public class Controller { public void setPieceSelected(Piece p) { this.model.setPieceSelected(p); } public void registerArrangement() { this.model.registerArrangement(); } public ArrayList<String> getArrangement() { return this.model.getArrangement(); } public boolean canBeAddedToBoard(int x, int y) { return this.model.selectedPieceCanBeAddedToBoard( x, Loading
jeuAssemblage/src/model/PlayBoard.java +68 −5 Changes for jeuAssemblage/src/model/PlayBoard.java: 68 added lines, 5 removed lines. Original line number Diff line number Diff line Loading @@ -2,8 +2,12 @@ package model; import java.awt.*; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.HashMap; import java.io.*; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; import pieces.Piece; import pieces.PieceFactory; Loading @@ -17,6 +21,8 @@ public class PlayBoard { private HashMap<Integer, Image> hmPieceImage; private int[][] playBoard; private Long seed; public PlayBoard() { this.hmPieceImage = new HashMap<Integer, Image>(); Loading @@ -24,6 +30,12 @@ public class PlayBoard { this.alPieceOnBoard = null; this.playBoard = null; this.selectedPiece = null; this.seed = null; } public void initSeed(long seed) { this.seed = seed; PieceFactory.setSeed(seed); } public void initSizePB(int height, int width) { Loading @@ -40,6 +52,7 @@ public class PlayBoard { public int[][] getPlayBoard () { return this.playBoard; } public ArrayList<Piece> getPieces () { return this.alPieceOnBoard; } public Piece getSelectedPiece () { return this.selectedPiece; } public Long getSeed () { return this.seed; } public Image getImageById (int id) { return this.hmPieceImage.get(id); } public Piece getPieceById (int id) { return this.alPieceOnBoard.get(id-1);} Loading Loading @@ -100,9 +113,53 @@ public class PlayBoard { return ret; } public void registerArrangement() { String str = this.playBoard.length + ";" + this.playBoard[0].length + ";" + this.alPieceOnBoard.size() + ";" + this.seed; File f = new File(this.getPath() + "/maps.tetriste"); if (!f.exists()) { try { f.createNewFile(); } catch (Exception e) { e.printStackTrace(); } } try { BufferedWriter writer = new BufferedWriter(new FileWriter(f, true)); writer.append(str); writer.append('\n'); writer.close(); } catch (Exception e) { e.printStackTrace(); } } public ArrayList<String> getArrangement() { ArrayList<String> alRet = new ArrayList<String>(); File f = new File(this.getPath() + "/maps.tetriste"); if ( !f.exists() ) return alRet; try { Scanner sc = new Scanner(f); while (sc.hasNext()) { alRet.add(sc.nextLine()); } sc.close(); } catch (Exception e) { e.printStackTrace(); } return alRet; } /** * bla bla * are representation of an rectangle, contains respectively x, y, width, height * */ public void destroy() { while (!this.alPieceOnBoard.isEmpty()) { Loading @@ -113,6 +170,11 @@ public class PlayBoard { } // Privates private String getPath() { Path path = Paths.get(""); return path.toAbsolutePath().toString(); } private ArrayList<Piece> createPieces(int numberPiece) { ArrayList<Piece> tempAl = new ArrayList<Piece>(); int samePieceLimit = (int) Math.ceil(numberPiece / (PieceFactory.NUMBER_PIECE * 1d)); Loading Loading @@ -151,11 +213,12 @@ public class PlayBoard { private void placePieceOnBoard() { // TODO : changer ça en vrai fonction qui vérifie les possibilités avant d'ajouter, backtracking ? Random rand = new Random(this.seed); for ( Piece p: this.alPieceOnBoard) { int x, y; do { x = (int) (Math.random() * (this.playBoard[0].length - p.getWidth ())); y = (int) (Math.random() * (this.playBoard.length - p.getHeight())); x = rand.nextInt(this.playBoard[0].length - p.getWidth ()); y = rand.nextInt(this.playBoard.length - p.getHeight()); } while( !canBeAddedToBoard(x, y, p.getWidth(), p.getHeight()) ); addPieceOnBoard(p, x, y); Loading
jeuAssemblage/src/view/component/JTableArrangement.java 0 → 100644 +41 −0 Changes for jeuAssemblage/src/view/component/JTableArrangement.java: 41 added lines, 0 removed lines. Original line number Diff line number Diff line package view.component; import java.util.ArrayList; import javax.swing.JTable; import main.Controller; public class JTableArrangement { public static String[] columnNames; static { columnNames = new String[] { "Taille X", "Taille Y", "Nombre Pièces", "Seed" }; } public static Object[][] getData() { ArrayList<String> alStr = Controller.getInstance().getArrangement(); Object[][] obj = new Object[alStr.size()][columnNames.length]; for (int i = 0; i < alStr.size(); i++) { String[] arrayS = alStr.get(i).split(";"); for (int j = 0; j < arrayS.length; j++) { obj[i][j] = arrayS[j]; } } return obj; } public static JTable getJTable() { JTable jtable = new JTable(getData(), columnNames); jtable.setShowGrid(true); jtable.setFillsViewportHeight(true); return jtable; } }