diff --git a/ActionPageAccueil.java b/ActionPageAccueil.java new file mode 100644 index 0000000..5dc326a --- /dev/null +++ b/ActionPageAccueil.java @@ -0,0 +1,46 @@ +/** + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +/** +*Classe heritant d'ActionListener, elle gere les trois boutons du menu principal/** + */ +public class ActionPageAccueil implements ActionListener +{ + /** + *attribut men contenant l'objet FrameAccueil, il prend la valeur de L'Objet FrameAccueil passe en argument dans le constructeur. + */ + private FrameAccueil menu; + public ActionPageAccueil(FrameAccueil p) + { + super(); + this.menu=p; + } + +/** +*actionPerformed effectue lance une action en fonction du bouton choisi par l'utilisateur grace a getActionCommand(). +*/ + public void actionPerformed (ActionEvent e) { + String reponse; + reponse=e.getActionCommand(); + if(reponse=="JOUER") + { + FrameJeu choix = new FrameJeu(); + this.menu.dispose(); + } + else if (reponse== "GRILLE PREDEFINIE" ) + { + ChooseFrameJeuPredefini choix = new ChooseFrameJeuPredefini(); + this.menu.dispose(); + } + else if(reponse=="QUITTER") + { + System.exit(0); + } + } +} \ No newline at end of file diff --git a/ActionPageEnd.java b/ActionPageEnd.java new file mode 100644 index 0000000..0d1abf4 --- /dev/null +++ b/ActionPageEnd.java @@ -0,0 +1,40 @@ +/** +*@author Tanguy Domergue et Leni Boscher +*/ + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +/** +*Classe heritant d'ActionListener, elle gère les deux boutons du menu end permettant de quitter ou de revenior au menu principal +*/ +public class ActionPageEnd implements ActionListener +{ +/** +*attribut men contenant l'objet Frame_End, il prend la valeur de L'Objet Frame_End passe en argument dans le constructeur. +*/ + private FrameEnd men; + public ActionPageEnd(FrameEnd p) + { + super(); + this.men=p; + } + +/** +*actionPerformed effectue lance une action en fonction du bouton choisi par l'utilisateur grace a getActionCommand(). +*/ + public void actionPerformed (ActionEvent e) { + String reponse; + reponse = e.getActionCommand(); + if(reponse=="REJOUER") + { + FrameAccueil choix=new FrameAccueil(); + this.men.dispose(); + } + else if(reponse=="QUITTER") + { + System.exit(0); + } + } +} \ No newline at end of file diff --git a/BackgroundPanelAccueil.java b/BackgroundPanelAccueil.java new file mode 100644 index 0000000..ae3f708 --- /dev/null +++ b/BackgroundPanelAccueil.java @@ -0,0 +1,22 @@ +/** +*@author Tanguy Domergue et Leni Boscher +*/ + +import javax.swing.*; +import java.awt.*; + +public class BackgroundPanelAccueil extends JPanel +{ + // insère une image du dossier dans une variable img + Image img; + public BackgroundPanelAccueil() + { + img = Toolkit.getDefaultToolkit().getImage("img/fondAccueil.png"); + } + + protected void paintComponent(Graphics g) + { + // dessine l'image gérérée au dessus + g.drawImage(img, 0, 0, this); + } +} \ No newline at end of file diff --git a/BackgroundPanelEnd.java b/BackgroundPanelEnd.java new file mode 100644 index 0000000..ab00b4a --- /dev/null +++ b/BackgroundPanelEnd.java @@ -0,0 +1,18 @@ +import javax.swing.*; +import java.awt.*; + +public class BackgroundPanelEnd extends JPanel +{ + // insère une image du dossier dans une variable img + Image img; + public BackgroundPanelEnd() + { + img = Toolkit.getDefaultToolkit().getImage("img/fondEnd.png"); + } + + protected void paintComponent(Graphics g) + { + // dessine l'image gérérée au dessus + g.drawImage(img, 0, 0, this); + } +} diff --git a/Blue.java b/Blue.java new file mode 100644 index 0000000..d2e8d00 --- /dev/null +++ b/Blue.java @@ -0,0 +1,18 @@ +/** La classe Blue represente un bloc bleu + * + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; + +public class Blue extends Couleur{ + + public Blue(){ + super(); + this.setCouleur(3); + } +} diff --git a/ChooseFrameJeuPredefini.java b/ChooseFrameJeuPredefini.java new file mode 100644 index 0000000..c496865 --- /dev/null +++ b/ChooseFrameJeuPredefini.java @@ -0,0 +1,34 @@ +/** + * + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ +import java.awt.*; +import javax.swing.*; +import javax.swing.filechooser.FileNameExtensionFilter; +import java.io.*; + +public class ChooseFrameJeuPredefini extends JFrame //cette fenetre ouvre les repertoire de l'utilisateur pour rentrer des fichiers prédéfini +{ + public ChooseFrameJeuPredefini() + { + this.setTitle("Jeu2"); + Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + int height = (int)dimension.getHeight(); + int width = (int)dimension.getWidth(); + this.setSize(width, height); + this.setVisible(true); + + JFileChooser chooser = new JFileChooser(); + FileNameExtensionFilter filter = new FileNameExtensionFilter( + "Fichier texte", "txt"); + chooser.setFileFilter(filter); + this.add(chooser); + int returnVal = chooser.showOpenDialog(this); + + if(returnVal == JFileChooser.APPROVE_OPTION) { + new FrameJeu(chooser.getSelectedFile()); + this.dispose(); + } + } +} \ No newline at end of file diff --git a/ControllerMouseGame.java b/ControllerMouseGame.java new file mode 100644 index 0000000..c55e891 --- /dev/null +++ b/ControllerMouseGame.java @@ -0,0 +1,292 @@ +/** La classe ControllerMouseGame gere les clics lies a l'utilisateur + * ainsi que les regles du jeu + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; +import java.lang.*; +import java.awt.event.*; + +public class ControllerMouseGame implements MouseListener +{ + + /** Tableau d'entiers qui permet de stocker + * les objets d'un meme groupe + */ + private int[][] group; + + private int score=0; + private int group_size=0; + private FrameJeu frame; + private int x,y; + private Score scoreS; + + /** Constructeur de la classe qui cree un tableau group + * et qui l'initialise a -1 + * @param fen : permet de reprendre la fenetre de jeu de FrameJeu + * @param scr : permet de recuperer le score de la classe Score + * @param x : l'indice x des cases sur lesquelles on cliquera + * @param y : l'indice y des cases sur lesquelles on cliquera + */ + public ControllerMouseGame(FrameJeu fen, Score scr, int x, int y) + { + this.group = new int[10][15]; + this.frame = fen; + this.x = x; + this.y = y; + this.scoreS = scr; + for(int i=0;i<10;i++) + { + for(int j=0;j<15;j++) + { + this.group[i][j] = -1; + } + } + + } + + /** Methode qui teste si un bloc est deja + * dans le tableau group + */ + public boolean testInGroup(int x, int y) + { + if(group[x][y]==this.frame.getCaseTab(x,y)) + { + return false; + } + return true; + } + + /** Methode qui reunit les blocs en groupe + * @param x : indice x du bloc + * @param y : indice y du bloc + */ + public void testGroup(int x, int y) + { + + if(x>0) + { + if((this.frame.getCaseTab(x,y) != 0) && (this.frame.getCaseTab(x,y) == this.frame.getCaseTab(x-1,y))) + { + if((testInGroup(x-1,y))) + { + this.group_size++; + this.group[x-1][y] = this.frame.getCaseTab(x-1,y); + testGroup(x-1,y); + } + } + } + + if(y>0) + { + if((this.frame.getCaseTab(x,y) != 0) && (this.frame.getCaseTab(x,y) == this.frame.getCaseTab(x,y-1))) + { + if((testInGroup(x,y-1))) + { + this.group_size++; + this.group[x][y-1] = this.frame.getCaseTab(x,y-1); + testGroup(x,y-1); + } + } + } + + if(x+1<10) + { + if((this.frame.getCaseTab(x,y) != 0) && (this.frame.getCaseTab(x,y) == this.frame.getCaseTab(x+1,y))) + { + if((testInGroup(x+1,y))) + { + this.group_size++; + this.group[x+1][y] = this.frame.getCaseTab(x+1,y); + testGroup(x+1,y); + } + } + } + + if(y+1<15) + { + if((this.frame.getCaseTab(x,y) != 0) && (this.frame.getCaseTab(x,y) == this.frame.getCaseTab(x,y+1))) + { + if((testInGroup(x,y+1))) + { + this.group_size++; + this.group[x][y+1] = this.frame.getCaseTab(x,y+1); + testGroup(x,y+1); + } + } + } + } + + /** Methode qui reorganise la colonne + * et qui comble les vides + * @param j : colonne a reordonner + */ + + public void orderColumn(int j) + { + for(int i=9;i>0;i--) + { + if(this.frame.getCaseTab(i,j)==0) + { + int c = this.frame.getCaseTab(i-1,j); + this.frame.setCaseTabC(i-1,j,0); + this.frame.setCaseTab(i-1,j,0); + this.frame.setCaseTabC(i,j,c); + this.frame.setCaseTab(i,j,c); + } + } + } + + /** Methode qui copie une colonne de droite a gauche + * @param j : colonne a copier + */ + + public void copyColumn(int j) + { + for(int i=j;i<14;i++) + { + for(int k=0;k<10;k++) + { + int c = this.frame.getCaseTab(k,i+1); + this.frame.setCaseTab(k,i+1,0); + this.frame.setCaseTabC(k,i+1,0); + this.frame.setCaseTab(k,i,c); + this.frame.setCaseTabC(k,i,c); + } + + } + } + + /** Methode qui regarde chaque colonne, + * si certaines sont vides, elle deplace de droite + * a gauche + */ + + public void checkEmptyColumn() + { + int check = 1; + + for(int i=13;i>=0;i--) + { + if(this.frame.getCaseTab(9,i) == 0) + { + copyColumn(i); + } + } + } + + // @Override + public void mouseClicked(MouseEvent e){ + + } + + // @Override + public void mouseEntered(MouseEvent e){ + testGroup(this.x,this.y); + for(int i=0;i<10;i++){ + for(int j=0;j<15;j++){ + if(group[i][j] != -1) + { + this.frame.getCaseTabC(i,j).setBackground(new Color(250,188,23)); + } + } + } + resetGroup(); + } + + // @Override + public void mouseExited(MouseEvent e){ + testGroup(this.x,this.y); + for(int i=0;i<10;i++){ + for(int j=0;j<15;j++){ + if(group[i][j] != -1) + { + this.frame.getCaseTabC(i,j).setBackground(new Color(238,238,238)); + } + } + } + resetGroup(); + } + + // @Override + public void mousePressed(MouseEvent e){ + + } + + // @Override + public void mouseReleased(MouseEvent e){ + mouseExited(e); + int xi,yi; + xi = this.x; + yi = this.y; + + testGroup(this.x,this.y); + + int i=0; + int cgrp=0; + for(i=0;i<10;i++) + { + for(int j=0;j<15;j++) + { + if(this.group[i][j]!=-1) + { + this.frame.setCaseTab(i,j,0); + this.frame.setCaseTabC(i,j,0); + cgrp++; + } + orderColumn(j); + } + } + checkEmptyColumn(); + + int s = (cgrp-2)*(cgrp-2); + if(cgrp>2) + { + this.scoreS.updateScore(s); + } + resetGroup(); + this.x = xi; + this.y = yi; + + if(endCondition()==1){ + FrameEnd fenetre = new FrameEnd(scoreS.getScore()); + frame.dispose(); + } + + } + + /** Méthode qui remet le tableau Group + * à -1 + */ + public void resetGroup() + { + for(int i=0;i<10;i++){ + for(int j=0;j<15;j++){ + this.group[i][j] = -1; + } + } + } + + /** Méthode qui pose une condition pour la fin + * de la partie + */ + public int endCondition(){ + for(int i=0;i<10;i++){ + for(int j=0;j<15;j++){ + testGroup(i,j); + for(int x=0;x<10;x++){ + for(int y=0;y<15;y++){ + if(group[x][y] != -1){ + return 0; + } + } + } + } + } + return 1; + } +} \ No newline at end of file diff --git a/Couleur.java b/Couleur.java new file mode 100644 index 0000000..1251c48 --- /dev/null +++ b/Couleur.java @@ -0,0 +1,56 @@ +/** La classe Couleur sert a dessiner les images en fonction + * des blocs + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; + +public class Couleur extends JPanel{ + private int Couleur; + private Image img; + + public Couleur(){ + super(); + } + + @Override + protected void paintComponent(Graphics pinceau) { + Graphics secondPinceau = pinceau.create(); + + if (this.isOpaque()) { + + secondPinceau.setColor(this.getBackground()); + secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); + } + if (this.Couleur == 0){ + secondPinceau.setColor(Color.WHITE); + secondPinceau.fillOval(0,0,50,50); + } + + if (this.Couleur == 1){ + Image img = Toolkit.getDefaultToolkit().getImage("./img/rouge.png"); + secondPinceau.drawImage(img, 10, 10, this); + } + if (this.Couleur == 2){ + Image img = Toolkit.getDefaultToolkit().getImage("./img/vert.png"); + secondPinceau.drawImage(img, 10, 10, this); + } + if (this.Couleur == 3){ + Image img = Toolkit.getDefaultToolkit().getImage("./img/bleu.png"); + secondPinceau.drawImage(img, 10, 10, this); + } + } + + public void setCouleur(int c) { + this.Couleur = c; + repaint(); + } + + public int getCouleur(){ + return Couleur; + } +} \ No newline at end of file diff --git a/FrameAccueil.java b/FrameAccueil.java new file mode 100644 index 0000000..938e8a5 --- /dev/null +++ b/FrameAccueil.java @@ -0,0 +1,52 @@ +import javax.swing.*; +import java.awt.*; + +public class FrameAccueil extends JFrame // fenetre d'acceuil qui propose 3 boutons qui permettront a l'utilisateur de se dirigé vers le jeu ou la sortis +{ + public FrameAccueil() + { + this.setTitle("Menu"); + this.setSize(1143,855); + this.setLocation(0, 0); + this.setResizable(false); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + BackgroundPanelAccueil fond = new BackgroundPanelAccueil(); + this.add(fond); + + JButton bouton_jouer = new JButton("JOUER"); + JButton bouton_grille = new JButton("GRILLE PREDEFINIE"); + JButton bouton_quitter = new JButton("QUITTER"); + + Color blue = new Color(13,122,238); + Color vert = new Color(54,144,36); + Color rouge = new Color(232,13,33); + + bouton_jouer.setForeground(blue); + bouton_jouer.setBackground(Color.WHITE); + bouton_jouer.setPreferredSize(new Dimension(300, 50)); + + bouton_grille.setForeground(vert); + bouton_grille.setBackground(Color.WHITE); + bouton_grille.setPreferredSize(new Dimension(300, 50)); + + bouton_quitter.setForeground(rouge); + bouton_quitter.setBackground(Color.WHITE); + bouton_quitter.setPreferredSize(new Dimension(300, 50)); + + fond.add(bouton_jouer, BorderLayout.CENTER); + fond.add(bouton_grille, BorderLayout.CENTER); + fond.add(bouton_quitter, BorderLayout.CENTER); + + ActionPageAccueil action = new ActionPageAccueil(this); + bouton_jouer.addActionListener(action); + bouton_grille.addActionListener(action); + bouton_quitter.addActionListener(action); + + this.setVisible(true); + + /*fond.setLayout(null); + fond.setBounds(0, 0, 0, 0);*/ + + } +} \ No newline at end of file diff --git a/FrameEnd.java b/FrameEnd.java new file mode 100644 index 0000000..72c3f26 --- /dev/null +++ b/FrameEnd.java @@ -0,0 +1,55 @@ +import javax.swing.*; +import java.awt.*; + +public class FrameEnd extends JFrame +// fenetre qui s'ouvre à la fin de la partie nous permettant de voir le score, de retourner au menu d'accueil ou de quitter le jeu +{ + public FrameEnd(int s)// ajout des boutons REJOUER QUITTER et affichage du score + { + String t; + JPanel p = new JPanel(); + this.setTitle("Fin"); + this.setSize(1143,855); + this.setLocation(0, 0); + this.setResizable(false); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + t=Integer.toString(s); + JLabel scr = new JLabel("Score : " + t); + Font f = new Font("ARIAL", Font.BOLD, 20); + scr.setFont(f); + scr.setVerticalAlignment(JLabel.CENTER); + p.add(scr); + p.setPreferredSize(new Dimension(300, 50)); + + + BackgroundPanelEnd fond2 = new BackgroundPanelEnd(); + this.add(fond2); + + JButton bouton_rejouer = new JButton("REJOUER"); + JButton bouton_quitter = new JButton("QUITTER"); + + Color blue = new Color(13,122,238); + Color vert = new Color(54,144,36); + Color rouge = new Color(232,13,33); + + bouton_rejouer.setForeground(blue); + bouton_rejouer.setBackground(Color.WHITE); + bouton_rejouer.setPreferredSize(new Dimension(300, 50)); + + bouton_quitter.setForeground(rouge); + bouton_quitter.setBackground(Color.WHITE); + bouton_quitter.setPreferredSize(new Dimension(300, 50)); + + fond2.add(bouton_rejouer, BorderLayout.CENTER); + fond2.add(bouton_quitter, BorderLayout.CENTER); + + ActionPageEnd action = new ActionPageEnd(this); + bouton_rejouer.addActionListener(action); + bouton_quitter.addActionListener(action); + + fond2.add(p, BorderLayout.CENTER); + + + this.setVisible(true); + } +} \ No newline at end of file diff --git a/FrameJeu.java b/FrameJeu.java new file mode 100644 index 0000000..32ac470 --- /dev/null +++ b/FrameJeu.java @@ -0,0 +1,188 @@ +/** La classe FrameJeu gere l'interface du jeu + * + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; + + +public class FrameJeu extends JFrame +{ + + private static final long serialVersionUID = 1L; + private Couleur[][] tabc; + private int[][] tab; + + /** Constructeur qui initialise le jeu lorsque + * l'utilisateur choisit une grille aléatoire + */ + public FrameJeu(){ + JPanel score = new JPanel(); + Score s = new Score(); + score.add(s); + + JPanel pan = new JPanel(); + this.setBackground(Color.WHITE); + this.add(pan); + + this.add(score, BorderLayout.NORTH); + + + Random rdm = new Random(); + this.tabc = new Couleur[10][15]; + this.tab = new int[10][15]; + + int i,j,x; + pan.setLayout(new GridLayout(10,15)); + for(i=0;i<10;i++){ + for(j=0;j<15;j++){ + x = rdm.nextInt(3); + if(x==0){ + tabc[i][j] = new Red(); + pan.add(tabc[i][j]); + tab[i][j] = 1; + } + + if (x==1){ + tabc[i][j] = new Green(); + pan.add(tabc[i][j]); + tab[i][j] = 2; + } + + if (x==2){ + tabc[i][j] = new Blue(); + pan.add(tabc[i][j]); + tab[i][j] = 3; + } + } + } + + this.setTitle("Jeu"); + Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + int height = (int)dimension.getHeight(); + int width = (int)dimension.getWidth(); + this.setSize(width, height); + this.setVisible(true); + +// ControllerMouseGame controller = new ControllerMouseGame(this); + for (i=0;i<10;i++){ + for(j=0;j<15;j++){ + this.getCaseTabC(i,j).addMouseListener(new ControllerMouseGame(this,s,i,j)); + } + } + } + + /** Constructeur qui initialise le jeu + * lorsque l'utilisateur choisit un fichier predefini + */ + public FrameJeu(File fichier) + { + JPanel score = new JPanel(); + Score s = new Score(); + score.add(s); + + JPanel pan = new JPanel(); + this.setBackground(Color.WHITE); + this.add(pan); + + this.add(score, BorderLayout.NORTH); + + + this.tabc = new Couleur[10][15]; + this.tab = new int[10][15]; + + + int i,j; + String line; + pan.setLayout(new GridLayout(10,15)); + + try + { + FileReader reader = new FileReader (fichier); + BufferedReader bufered =new BufferedReader(reader); + + for(i=0;i<10;i++) + { + line = bufered.readLine(); + + for(j=0;j<15;j++) + { + char lettre = line.charAt(j); + + if(lettre=='R') + { + tabc[i][j] = new Red(); + pan.add(tabc[i][j]); + tab[i][j] = 1; + } + + if (lettre=='V') + { + tabc[i][j] = new Green(); + pan.add(tabc[i][j]); + tab[i][j] = 2; + } + + if (lettre=='B') + { + tabc[i][j] = new Blue(); + pan.add(tabc[i][j]); + tab[i][j] = 3; + } + } + } + + try { + bufered.close(); + } catch (IOException e) + { + System.out.println("Erreur de fermeture"); + } + + } catch (IOException e) + { + System.out.println("Erreur d'ouverture"); + } + + this.setTitle("Jeu"); + Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + int height = (int)dimension.getHeight(); + int width = (int)dimension.getWidth(); + this.setSize(width, height); + this.setVisible(true); + // ControllerMouseGame controller = new ControllerMouseGame(this); + for (i=0;i<10;i++){ + for(j=0;j<15;j++){ + this.getCaseTabC(i,j).addMouseListener(new ControllerMouseGame(this,s,i,j)); + } + } + } + + public int[][] getTab() { + return this.tab; + } + + public Couleur[][] getTabC() { + return this.tabc; + } + + public int getCaseTab(int i, int j){ + return this.tab[i][j]; + } + + public Couleur getCaseTabC(int i, int j){ + return this.tabc[i][j]; + } + + public void setCaseTab(int i, int j, int x){ + this.tab[i][j] = x; + } + + public void setCaseTabC(int i, int j, int x){ + this.tabc[i][j].setCouleur(x); + } +} diff --git a/Green.java b/Green.java new file mode 100644 index 0000000..49623ae --- /dev/null +++ b/Green.java @@ -0,0 +1,18 @@ +/** La classe Green represente un bloc vert + * + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; + +public class Green extends Couleur{ + + public Green(){ + super(); + this.setCouleur(2); + } +} diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..dee032f --- /dev/null +++ b/Main.java @@ -0,0 +1,8 @@ +import javax.swing.*; +import java.awt.*; + +public class Main{//initialisation du menu + public static void main(String[] args) { + new FrameAccueil(); + } +} \ No newline at end of file diff --git a/README.md b/README.md index 70aebd4..7f00669 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Samegame +# PT21_APL2020 diff --git a/Rapport/Compte_Rendu_Samegame.pdf b/Rapport/Compte_Rendu_Samegame.pdf new file mode 100644 index 0000000..689300c Binary files /dev/null and b/Rapport/Compte_Rendu_Samegame.pdf differ diff --git a/Red.java b/Red.java new file mode 100644 index 0000000..303d100 --- /dev/null +++ b/Red.java @@ -0,0 +1,18 @@ +/** La classe Red represente un bloc rouge + * + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; + +public class Red extends Couleur{ + + public Red(){ + super(); + this.setCouleur(1); + } +} \ No newline at end of file diff --git a/Samegame b/Samegame new file mode 160000 index 0000000..60ae8d7 --- /dev/null +++ b/Samegame @@ -0,0 +1 @@ +Subproject commit 60ae8d7ed1f97447a879e5dd73760553a0869ebb diff --git a/Score.java b/Score.java new file mode 100644 index 0000000..f94f246 --- /dev/null +++ b/Score.java @@ -0,0 +1,36 @@ +/** La classe Score represente le label qui affiche le score + * + * @version 1.0 + * @author Tanguy Domergue et Leni Boscher + */ + +import java.awt.*; +import javax.swing.*; +import java.io.*; +import java.util.Random; + +public class Score extends JLabel{ + private int score=0; + /** + * Constructeur qui initialise le score + */ + public Score(){ + super(); + this.setText("Score : " + this.score); + Font font = new Font("ARIAL", Font.BOLD, 25); + this.setFont(font); + } + + /** + * Méthode qui met à jour le score en temps réel + */ + public void updateScore(int scr){ + this.score += scr; + this.setText("Score : " + this.score); + } + + public int getScore(){ + return this.score; + } + +} \ No newline at end of file diff --git a/file/all.txt b/file/all.txt new file mode 100644 index 0000000..160b90d --- /dev/null +++ b/file/all.txt @@ -0,0 +1,10 @@ +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +VVVVVVVVVVVVVVV +RVVVVVVVVVVVVVV \ No newline at end of file diff --git a/file/test.txt b/file/test.txt new file mode 100644 index 0000000..d56c22f --- /dev/null +++ b/file/test.txt @@ -0,0 +1,10 @@ +RVVRRVRVBBBBRBV +BVVVVRBVVBRRVRB +VBBRVRBVRRBRRRR +BRBVBRBBVVBRVRV +RVBVBBBRRBRRRBV +RVVVBBRBVVBVVRB +BRBRBBBRBVRVRRV +VRRVVBBVVBBRVVV +BVRRVVBRVRRRBVV +BBRBBBBRVVRRVRB \ No newline at end of file diff --git a/img/bleu.png b/img/bleu.png new file mode 100644 index 0000000..bef6849 Binary files /dev/null and b/img/bleu.png differ diff --git a/img/fondAccueil.png b/img/fondAccueil.png new file mode 100644 index 0000000..cbc5600 Binary files /dev/null and b/img/fondAccueil.png differ diff --git a/img/fondEnd.png b/img/fondEnd.png new file mode 100644 index 0000000..f028a94 Binary files /dev/null and b/img/fondEnd.png differ diff --git a/img/rouge.png b/img/rouge.png new file mode 100644 index 0000000..2c4d904 Binary files /dev/null and b/img/rouge.png differ diff --git a/img/vert.png b/img/vert.png new file mode 100644 index 0000000..8823b4f Binary files /dev/null and b/img/vert.png differ diff --git a/makefile b/makefile new file mode 100644 index 0000000..f99442c --- /dev/null +++ b/makefile @@ -0,0 +1,41 @@ +### Tanguy DOMERGUE # Leni BOSCHER ### + +JFLAGS = -g +COMPILATION = javac + +EX= java + +.SUFFIXES: .java .class + +.java.class: + $(COMPILATION) $(JFLAGS) $*.java + + +CLASSES = \ + ActionPageEnd.java\ + BackgroundPanelEnd.java\ + FrameEnd.java\ + FrameAccueil.java\ + BackgroundPanelAccueil.java\ + ChooseFrameJeuPredefini.java\ + Score.java\ + ControllerMouseGame.java\ + FrameJeu.java\ + Couleur.java\ + Red.java\ + Blue.java\ + Green.java\ + ActionPageAccueil.java\ + Main.java\ + + +default: classes + +classes: $(CLASSES:.java=.class) + +run: + $(EX) Main + +clean: + $(RM) *.class +