Commit a29ad9c6 authored by Ciliste's avatar Ciliste
Browse files

Merge branch 'changement-archi' of https://github.com/Ciliste/JeuAssemblage into changement-archi

parents 407b523c 7658dc3a
Loading
Loading
Loading
Loading
+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
+12 −2
Changes for jeuAssemblage/src/main/App.java: 12 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -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 {
@@ -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(() -> {
            
+9 −2
Changes for jeuAssemblage/src/model/PlayBoard.java: 9 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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()); }
@@ -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
+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;
@@ -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
+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