diff --git a/Partie_1/src/main/java/ch/hepia/JeudeCarte.java b/Partie_1/src/main/java/ch/hepia/JeudeCarte.java index 4e4161c568e790ebbb11480ff15c96b6e1ecea0d..fa401b82dd35dc37e4b8ffe6e09db85983104bad 100644 --- a/Partie_1/src/main/java/ch/hepia/JeudeCarte.java +++ b/Partie_1/src/main/java/ch/hepia/JeudeCarte.java @@ -2,6 +2,7 @@ package ch.hepia; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; public class JeudeCarte { @@ -14,9 +15,13 @@ public class JeudeCarte { for (COULEUR couleur : COULEUR.values()) { - for (int rang = 1; rang < (nb / 4) + 1; rang++) { + for (int rang = 7; rang <= (nb / 4) + 6; rang++) { - jeuDeCartes.add(new Carte(couleur, rang)); + if (rang > 13) { + jeuDeCartes.add(new Carte(couleur, rang - 13)); + } else { + jeuDeCartes.add(new Carte(couleur, rang)); + } } @@ -31,6 +36,24 @@ public class JeudeCarte { } } + Collections.sort(jeuDeCartes, new Comparator<Carte>() { + + public int compare(Carte carte1, Carte carte2) { + + int comparaisonCouleur = carte1.getCouleur().compareTo(carte2.getCouleur()); + + if (comparaisonCouleur == 0) { + + return Integer.compare(carte1.getRang(), carte2.getRang()); + + } else { + + return comparaisonCouleur; + } + } + + }); + } public Carte GetTopCarteOfGame() { diff --git a/Partie_1/target/classes/ch/hepia/App.class b/Partie_1/target/classes/ch/hepia/App.class new file mode 100644 index 0000000000000000000000000000000000000000..d5795b47d0ecbc759fc3b02a25486ac8ca5073e7 Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/App.class differ diff --git a/Partie_1/target/classes/ch/hepia/COULEUR.class b/Partie_1/target/classes/ch/hepia/COULEUR.class new file mode 100644 index 0000000000000000000000000000000000000000..c38a76f38b5f56aec3100849ad749e77c1255bcd Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/COULEUR.class differ diff --git a/Partie_1/target/classes/ch/hepia/Carte.class b/Partie_1/target/classes/ch/hepia/Carte.class new file mode 100644 index 0000000000000000000000000000000000000000..1418966a8287d87e9d6565a59b19f36027075195 Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/Carte.class differ diff --git a/Partie_1/target/classes/ch/hepia/Hand$1.class b/Partie_1/target/classes/ch/hepia/Hand$1.class new file mode 100644 index 0000000000000000000000000000000000000000..7f5a3d911ba36617faafa35f851ab6311d560287 Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/Hand$1.class differ diff --git a/Partie_1/target/classes/ch/hepia/Hand.class b/Partie_1/target/classes/ch/hepia/Hand.class new file mode 100644 index 0000000000000000000000000000000000000000..80fa43d1bfba60969578d63306fe5fc7df58b3c3 Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/Hand.class differ diff --git a/Partie_1/target/classes/ch/hepia/JeudeCarte$1.class b/Partie_1/target/classes/ch/hepia/JeudeCarte$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e87f2ad85071fb1b622c4a955974eae6caf97a63 Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/JeudeCarte$1.class differ diff --git a/Partie_1/target/classes/ch/hepia/JeudeCarte.class b/Partie_1/target/classes/ch/hepia/JeudeCarte.class new file mode 100644 index 0000000000000000000000000000000000000000..0d4ad7e41abf120a377871e76ff03f71e3cb474b Binary files /dev/null and b/Partie_1/target/classes/ch/hepia/JeudeCarte.class differ diff --git a/Partie_1/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Partie_1/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index b4947887ab0d20b440b494250ec27987eb0dd6f0..16f6c1c2dce9b466ea9ce68a22240a6c593fad47 100644 --- a/Partie_1/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/Partie_1/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,4 +1,4 @@ -/home/padi/Git/java-card-game/src/main/java/ch/hepia/JeudeCarte.java -/home/padi/Git/java-card-game/src/main/java/ch/hepia/Carte.java -/home/padi/Git/java-card-game/src/main/java/ch/hepia/App.java -/home/padi/Git/java-card-game/src/main/java/ch/hepia/Hand.java +/home/padi/Git/java-card-game/Partie_1/src/main/java/ch/hepia/Hand.java +/home/padi/Git/java-card-game/Partie_1/src/main/java/ch/hepia/Carte.java +/home/padi/Git/java-card-game/Partie_1/src/main/java/ch/hepia/App.java +/home/padi/Git/java-card-game/Partie_1/src/main/java/ch/hepia/JeudeCarte.java diff --git a/Partie_2/pom.xml b/Partie_2/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cb8921635687777cf25035757163633f56ebad6 --- /dev/null +++ b/Partie_2/pom.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>ch.hepia</groupId> + <artifactId>Java_Card_Game</artifactId> + <version>1.0-SNAPSHOT</version> + + <name>Java_Card_Game</name> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>20</maven.compiler.source> + <maven.compiler.target>20</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.openjfx</groupId> + <artifactId>javafx-controls</artifactId> + <version>19</version> + </dependency> + </dependencies> + + <build> + <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> + <plugins> + <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <version>3.1.0</version> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.0</version> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.22.1</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>3.4.1</version> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>3.1.0</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + <configuration> + <mainClass>ch.hepia.App</mainClass> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> +</project> \ No newline at end of file diff --git a/Partie_2/src/main/java/ch/hepia/App.java b/Partie_2/src/main/java/ch/hepia/App.java new file mode 100644 index 0000000000000000000000000000000000000000..342c31da3185fb97e565c42c74072e6668344e51 --- /dev/null +++ b/Partie_2/src/main/java/ch/hepia/App.java @@ -0,0 +1,20 @@ +package ch.hepia; + +public class App { + + public static void main(String[] args) { + + Paquet BlackJack = new Paquet(6, 52); + + BlackJack.getPaquet().get(0).ShowPaquet(); + + BlackJack.getPaquet().get(1).ShowPaquet(); + + BlackJack.getPaquet().get(2).ShowPaquet(); + + BlackJack.getPaquet().get(3).ShowPaquet(); + + BlackJack.getPaquet().get(4).ShowPaquet(); + } + +} diff --git a/Partie_2/src/main/java/ch/hepia/Carte.java b/Partie_2/src/main/java/ch/hepia/Carte.java new file mode 100644 index 0000000000000000000000000000000000000000..1afe323a25c62c4899f7b0ebc326ceaeeb455be1 --- /dev/null +++ b/Partie_2/src/main/java/ch/hepia/Carte.java @@ -0,0 +1,92 @@ +package ch.hepia; + +enum COULEUR { + coeur, + carreau, + pique, + trefle +} + +public class Carte { + + final private COULEUR couleur; + final private int rang; + private int force; + + private static final int NOMBRE_DE_RANGS = 13; + + String[][] playingCards = { + { "🃟", "🂱", "🂲", "🂳", "🂴", "🂵", "🂶", "🂷", "🂸", "🂹", "🂺", "🂻", "🂽", "🂾" }, + { "🃟", "🃁", "🃂", "🃃", "🃄", "🃅", "🃆", "🃇", "🃈", "🃉", "🃊", "🃋", "🃍", "🃎" }, + { "🃟", "🂡", "🂢", "🂣", "🂤", "🂥", "🂦", "🂧", "🂨", "🂩", "🂪", "🂫", "🂭", "🂮" }, + { "🃟", "🃑", "🃒", "🃓", "🃔", "🃕", "🃖", "🃗", "🃘", "🃙", "🃚", "🃛", "🃝", "🃞" } + }; + + public Carte(COULEUR couleur, int rang) { + + if (rang < 0 || rang > NOMBRE_DE_RANGS) { + throw new IllegalArgumentException("Carte invalide : rang incorrect"); + } + + this.couleur = couleur; + this.rang = rang; + + } + + public Carte(COULEUR couleur, int rang, int force) { + + if (rang < 0 || rang > NOMBRE_DE_RANGS) { + throw new IllegalArgumentException("Carte invalide : rang incorrect"); + } + + this.couleur = couleur; + this.rang = rang; + this.force = force; + + } + + public COULEUR getCouleur() { + + return this.couleur; + + } + + public int getRang() { + + return this.rang; + + } + + public int getForce() { + + return this.force; + + } + + public String getNomCouleur() { + + String[] NOMS_COULEURS = { "♥", "♦", "♠", "♣" }; + return NOMS_COULEURS[couleur.ordinal()]; + + } + + public String getNomRang() { + + String[] NOMS_RANGS = { "Joker", "As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Valet", "Dame", "Roi" }; + return NOMS_RANGS[rang]; + + } + + public String getNomComplet() { + if (getRang() == 0) { + + return "🃟"; + + } else { + + return playingCards[couleur.ordinal()][rang]; + + } + } + +} diff --git a/Partie_2/src/main/java/ch/hepia/Hand.java b/Partie_2/src/main/java/ch/hepia/Hand.java new file mode 100644 index 0000000000000000000000000000000000000000..001bdb521f7ada59612186a2d7e7253fe99abf86 --- /dev/null +++ b/Partie_2/src/main/java/ch/hepia/Hand.java @@ -0,0 +1,126 @@ +package ch.hepia; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class Hand implements Comparable<Hand> { + + private List<Carte> Hand; + + public Hand(Carte... cartes) { + + Hand = new ArrayList<>(); + + for (Carte carte : cartes) { + + Hand.add(carte); + + } + } + + public Hand(JeudeCarte game, int nb) { + + Hand = new ArrayList<>(); + + this.DrawCardFromGame(game, nb); + } + + public void AddCardToHand(Carte... cartes) { + + for (Carte carte : cartes) { + + this.Hand.add(carte); + + } + } + + public void RemoveCardFromHand(Carte... cartes) { + + for (Carte carte : cartes) { + + this.Hand.remove(carte); + + } + } + + public void DrawCardFromGame(JeudeCarte game) { + + this.AddCardToHand(game.GetTopCarteOfGame()); + + game.RemoveCarteFromGame(game.GetTopCarteOfGame()); + + } + + public void DrawCardFromGame(JeudeCarte game, int nb) { + + for (int x = 0; x < nb; x++) { + this.DrawCardFromGame(game); + } + + } + + public void SortHand() { + + Collections.sort(Hand, new Comparator<Carte>() { + + public int compare(Carte carte1, Carte carte2) { + + int comparaisonCouleur = carte1.getCouleur().compareTo(carte2.getCouleur()); + + if (comparaisonCouleur == 0) { + + return Integer.compare(carte1.getRang(), carte2.getRang()); + + } else { + + return comparaisonCouleur; + } + } + + }); + + } + + public void ShowHand() { + + this.SortHand(); + + System.out.println("-------- Main --------"); + + COULEUR currentcolor = null; + + for (Carte carte : Hand) { + + System.out.print(carte.getNomComplet() + " "); + + } + + System.out.println("\n----------------------"); + } + + @Override + public int compareTo(Hand otherHand) { + + int Hand_1_Power = 0; + int Hand_2_Power = 0; + + for (Carte carte : Hand) { + Hand_1_Power += carte.getRang(); + } + + for (Carte carte : otherHand.Hand) { + Hand_2_Power += carte.getRang(); + } + + if (Hand_1_Power > Hand_2_Power) { + return 1; + } else if (Hand_1_Power < Hand_2_Power) { + return -1; + } else { + return 0; + } + + } +} diff --git a/Partie_2/src/main/java/ch/hepia/JeudeCarte.java b/Partie_2/src/main/java/ch/hepia/JeudeCarte.java new file mode 100644 index 0000000000000000000000000000000000000000..fa401b82dd35dc37e4b8ffe6e09db85983104bad --- /dev/null +++ b/Partie_2/src/main/java/ch/hepia/JeudeCarte.java @@ -0,0 +1,102 @@ +package ch.hepia; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class JeudeCarte { + + private List<Carte> jeuDeCartes; + + public JeudeCarte(int nb) { + + jeuDeCartes = new ArrayList<>(); + + for (COULEUR couleur : COULEUR.values()) { + + for (int rang = 7; rang <= (nb / 4) + 6; rang++) { + + if (rang > 13) { + jeuDeCartes.add(new Carte(couleur, rang - 13)); + } else { + jeuDeCartes.add(new Carte(couleur, rang)); + } + + } + + } + + if (nb % 4 != 0) { + + for (int x = 0; x < nb % 4; x++) { + + jeuDeCartes.add(new Carte(COULEUR.carreau, 0)); + + } + } + + Collections.sort(jeuDeCartes, new Comparator<Carte>() { + + public int compare(Carte carte1, Carte carte2) { + + int comparaisonCouleur = carte1.getCouleur().compareTo(carte2.getCouleur()); + + if (comparaisonCouleur == 0) { + + return Integer.compare(carte1.getRang(), carte2.getRang()); + + } else { + + return comparaisonCouleur; + } + } + + }); + + } + + public Carte GetTopCarteOfGame() { + + return this.jeuDeCartes.get(0); + + } + + public void AddCarteToGame(Carte... cartes) { + + for (Carte carte : cartes) { + + this.jeuDeCartes.add(carte); + + } + } + + public void RemoveCarteFromGame(Carte... cartes) { + + for (Carte carte : cartes) { + + this.jeuDeCartes.remove(carte); + + } + } + + public void shuffle() { + + Collections.shuffle(jeuDeCartes); + + } + + public void ShowPaquet() { + + System.out.println("------- Paquet -------"); + + for (Carte carte : jeuDeCartes) { + + System.out.println(carte.getNomComplet()); + + } + + System.out.println("----------------------"); + } + +} diff --git a/Partie_2/src/main/java/ch/hepia/Paquet.java b/Partie_2/src/main/java/ch/hepia/Paquet.java new file mode 100644 index 0000000000000000000000000000000000000000..43311c54e7d597eb450df72bd20fe2100d251e49 --- /dev/null +++ b/Partie_2/src/main/java/ch/hepia/Paquet.java @@ -0,0 +1,25 @@ +package ch.hepia; + +import java.util.List; +import java.util.ArrayList; + +public class Paquet { + + private List<JeudeCarte> paquet; + + public Paquet(int nb_paquet, int nb_carte) { + + paquet = new ArrayList<>(); + + for (int i = 0; i < nb_paquet; ++i) { + JeudeCarte jeuDeCarte = new JeudeCarte(nb_carte); + jeuDeCarte.shuffle(); + paquet.add(jeuDeCarte); + } + + } + + public List<JeudeCarte> getPaquet() { + return paquet; + } +} diff --git a/Partie_2/src/test/java/ch/hepia/CarteTest.java b/Partie_2/src/test/java/ch/hepia/CarteTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f1ac133fe7f7a24190d80d303fd27399edda526f --- /dev/null +++ b/Partie_2/src/test/java/ch/hepia/CarteTest.java @@ -0,0 +1,49 @@ +package ch.hepia; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class CarteTest { + + @Test + public void testGetCouleur() { + Carte carte = new Carte(COULEUR.coeur, 2); + assertEquals(COULEUR.coeur, carte.getCouleur()); + } + + @Test + public void testGetRang() { + Carte carte = new Carte(COULEUR.carreau, 7); + assertEquals(7, carte.getRang()); + } + + @Test + public void testGetForce() { + Carte carte = new Carte(COULEUR.trefle, 12, 10); + assertEquals(10, carte.getForce()); + } + + @Test + public void testGetNomCouleur() { + Carte carte = new Carte(COULEUR.coeur, 0); + assertEquals("Coeur", carte.getNomCouleur()); + } + + @Test + public void testGetNomRang() { + Carte carte = new Carte(COULEUR.coeur, 2); + assertEquals("2", carte.getNomRang()); + } + + @Test + public void testGetNomComplet() { + Carte carte = new Carte(COULEUR.carreau, 12); + assertEquals("Dame de Carreau", carte.getNomComplet()); + } + + @Test + public void testGetNomComplet_2() { + Carte carte = new Carte(COULEUR.carreau, 0); + assertEquals("Joker", carte.getNomComplet()); + } +} \ No newline at end of file diff --git a/Partie_2/target/classes/ch/hepia/App.class b/Partie_2/target/classes/ch/hepia/App.class new file mode 100644 index 0000000000000000000000000000000000000000..f7311f97a007d3a3a5afb84aa9256f7b6fc83a88 Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/App.class differ diff --git a/Partie_2/target/classes/ch/hepia/COULEUR.class b/Partie_2/target/classes/ch/hepia/COULEUR.class new file mode 100644 index 0000000000000000000000000000000000000000..c582fd28bd308c74abcc31d7c543625ab96af75b Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/COULEUR.class differ diff --git a/Partie_2/target/classes/ch/hepia/Carte.class b/Partie_2/target/classes/ch/hepia/Carte.class new file mode 100644 index 0000000000000000000000000000000000000000..341e2309b35bffef294182e2a3233fa317f33bff Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/Carte.class differ diff --git a/Partie_2/target/classes/ch/hepia/Hand$1.class b/Partie_2/target/classes/ch/hepia/Hand$1.class new file mode 100644 index 0000000000000000000000000000000000000000..908aad6a87b844477dcbcdc972021120b67c4dcc Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/Hand$1.class differ diff --git a/Partie_2/target/classes/ch/hepia/Hand.class b/Partie_2/target/classes/ch/hepia/Hand.class new file mode 100644 index 0000000000000000000000000000000000000000..6d7bd2ac1a5d5ea193a65f676b466df1e45e3039 Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/Hand.class differ diff --git a/Partie_2/target/classes/ch/hepia/JeudeCarte$1.class b/Partie_2/target/classes/ch/hepia/JeudeCarte$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2735eb7c27de1aa52aa4584d2c1ef9d746a2b524 Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/JeudeCarte$1.class differ diff --git a/Partie_2/target/classes/ch/hepia/JeudeCarte.class b/Partie_2/target/classes/ch/hepia/JeudeCarte.class new file mode 100644 index 0000000000000000000000000000000000000000..9db2f435378dabe844941e28f2ab1ffb196c1d54 Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/JeudeCarte.class differ diff --git a/Partie_2/target/classes/ch/hepia/Paquet.class b/Partie_2/target/classes/ch/hepia/Paquet.class new file mode 100644 index 0000000000000000000000000000000000000000..287773450d9a2e8fcd9120c796067e1f9f2a10cf Binary files /dev/null and b/Partie_2/target/classes/ch/hepia/Paquet.class differ diff --git a/Partie_2/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/Partie_2/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000000000000000000000000000000000000..88fcb47184538c4dc2609ac5ab60b5a32e81b4c3 --- /dev/null +++ b/Partie_2/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,7 @@ +ch/hepia/App.class +ch/hepia/Hand.class +ch/hepia/COULEUR.class +ch/hepia/Hand$1.class +ch/hepia/Paquet.class +ch/hepia/JeudeCarte.class +ch/hepia/Carte.class diff --git a/Partie_2/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Partie_2/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000000000000000000000000000000000000..27e74050a7644854626e836c4d3f851a22f78ce5 --- /dev/null +++ b/Partie_2/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +/home/padi/Git/java-card-game/Partie_2/src/main/java/ch/hepia/Hand.java +/home/padi/Git/java-card-game/Partie_2/src/main/java/ch/hepia/Carte.java +/home/padi/Git/java-card-game/Partie_2/src/main/java/ch/hepia/App.java +/home/padi/Git/java-card-game/Partie_2/src/main/java/ch/hepia/Paquet.java +/home/padi/Git/java-card-game/Partie_2/src/main/java/ch/hepia/JeudeCarte.java diff --git a/Partie_2/target/test-classes/ch/hepia/CarteTest.class b/Partie_2/target/test-classes/ch/hepia/CarteTest.class new file mode 100644 index 0000000000000000000000000000000000000000..60dcda85d37ead5584d2ad54aaa8affb1935c4b2 Binary files /dev/null and b/Partie_2/target/test-classes/ch/hepia/CarteTest.class differ