Commit 19eef694 authored by erreiip's avatar erreiip
Browse files

Add JTable for recorded Seed

parent e5fb9ece
Loading
Loading
Loading
Loading
+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
+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
+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 {
    
@@ -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);
	}
@@ -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); }
@@ -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,
+68 −5
Changes for jeuAssemblage/src/model/PlayBoard.java: 68 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -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;
@@ -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>();
@@ -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) {
@@ -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);}
@@ -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()) {
@@ -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));
@@ -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);
+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