Commit 987de037 authored by erreiip's avatar erreiip
Browse files

Add ArrangementList

parent 15255b8d
Loading
Loading
Loading
Loading
+1 −1
Changes for jeuAssemblage/maps.tetriste: 1 added line, 1 removed line.
Original line number Diff line number Diff line
12;13;6;2001265384976310272
0;0;0;0;shesh10;10
+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(() -> {
            
+6 −0
Changes for jeuAssemblage/src/model/PlayBoard.java: 6 added lines, 0 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;
+33 −4
Changes for jeuAssemblage/src/model/arrangement/Arrangement.java: 33 added lines, 4 removed lines.
Original line number Diff line number Diff line
package model;
package model.arrangement;

public class Arrangement {
    private int sizeX;
@@ -6,8 +6,8 @@ public class Arrangement {
    private int pieceCount;
    private long seed;
    
    private String username;
    private int score;
    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 +15,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
+105 −0
Changes for jeuAssemblage/src/model/arrangement/ArrangementList.java: 105 added lines, 0 removed lines.
Original line number Diff line number Diff line
package model.arrangement;

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 {

    private static List<Arrangement> arrangements;

    static {

        ArrangementList.arrangements = ArrangementList.getArrangementList();
    }

    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();
        
    }
    
    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();
    }
}