summaryrefslogtreecommitdiff
path: root/graphs/java/rockPaperScissors
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
commitc9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch)
tree3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/java/rockPaperScissors
add: graphs et rushs
Diffstat (limited to 'graphs/java/rockPaperScissors')
-rw-r--r--graphs/java/rockPaperScissors/.gitignore38
-rw-r--r--graphs/java/rockPaperScissors/pom.xml124
-rw-r--r--graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Bot.java18
-rw-r--r--graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/HandShape.java26
-rw-r--r--graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Match.java52
-rw-r--r--graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Player.java23
6 files changed, 281 insertions, 0 deletions
diff --git a/graphs/java/rockPaperScissors/.gitignore b/graphs/java/rockPaperScissors/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/graphs/java/rockPaperScissors/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store \ No newline at end of file
diff --git a/graphs/java/rockPaperScissors/pom.xml b/graphs/java/rockPaperScissors/pom.xml
new file mode 100644
index 0000000..747b009
--- /dev/null
+++ b/graphs/java/rockPaperScissors/pom.xml
@@ -0,0 +1,124 @@
+<?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>fr.epita.assistants</groupId>
+ <artifactId>rockPaperScissors</artifactId>
+ <version>1.0</version>
+
+
+ <properties>
+ <versions.java>21</versions.java>
+
+ <versions.junit>5.9.1</versions.junit>
+
+ <versions.maven-compiler-plugin>3.8.1</versions.maven-compiler-plugin>
+ <versions.maven-surefire-plugin>2.22.2</versions.maven-surefire-plugin>
+ <versions.maven-jar-plugin>3.1.1</versions.maven-jar-plugin>
+ <versions.maven-install-plugin>3.1.0</versions.maven-install-plugin>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+ <surefire.reportsDirectory>${project.build.directory}/surefire-reports</surefire.reportsDirectory>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <version>${versions.junit}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-junit-platform</artifactId>
+ <version>${versions.maven-surefire-plugin}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-compat</artifactId>
+ <version>3.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>3.6.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-monitor</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>2.0.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-filtering</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-interpolation</artifactId>
+ <version>1.13</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-profile</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-registry</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-repository-metadata</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${versions.maven-compiler-plugin}</version>
+ <configuration>
+ <source>${versions.java}</source>
+ <target>${versions.java}</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-install-plugin</artifactId>
+ <version>${versions.maven-install-plugin}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>${versions.maven-surefire-plugin}</version>
+ <configuration>
+ <reportsDirectory>${surefire.reportsDirectory}</reportsDirectory>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Bot.java b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Bot.java
new file mode 100644
index 0000000..5d8005b
--- /dev/null
+++ b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Bot.java
@@ -0,0 +1,18 @@
+package fr.epita.assistants.rockPaperScissors;
+
+public class Bot {
+ final String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public Bot(String name) {
+ this.name = name;
+ }
+
+ public final HandShape getBotHandShape()
+ {
+ return new HandShape((int) (Math.random() * 2));
+ }
+}
diff --git a/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/HandShape.java b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/HandShape.java
new file mode 100644
index 0000000..1d95c92
--- /dev/null
+++ b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/HandShape.java
@@ -0,0 +1,26 @@
+package fr.epita.assistants.rockPaperScissors;
+
+import java.util.Arrays;
+import java.util.List;
+
+/*
+ Note that this kind of class should be replaced with an Enum.
+ Enums will be introduced later in the workshop.
+ */
+
+public class HandShape {
+ final static private List<String> shapesValues = Arrays.asList("ROCK", "PAPER", "SCISSORS");
+ final private int index;
+
+ public HandShape(final int index) {
+ this.index= index;
+ }
+
+ public String getName(){
+ return shapesValues.get(index);
+ }
+
+ int getIndex() {
+ return index;
+ }
+} \ No newline at end of file
diff --git a/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Match.java b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Match.java
new file mode 100644
index 0000000..2116f58
--- /dev/null
+++ b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Match.java
@@ -0,0 +1,52 @@
+package fr.epita.assistants.rockPaperScissors;
+
+import java.util.Objects;
+
+public final class Match {
+ private static int matchCount;
+ private final int currentMatchNumber;
+ final String player1, player2;
+ final HandShape player1Choice, player2Choice;
+
+ public Match(String player1, String player2, HandShape player1Choice, HandShape player2Choice) {
+ this.currentMatchNumber = ++matchCount;
+ this.player1 = player1;
+ this.player2 = player2;
+ this.player1Choice = player1Choice;
+ this.player2Choice = player2Choice;
+ }
+
+ public static int getMatchCount() {
+ return matchCount;
+ }
+
+ static void resetMatchCount()
+ {
+ matchCount = 0;
+ }
+
+ public int getCurrentMatch() {
+ return currentMatchNumber;
+ }
+
+ public void runMatch()
+ {
+ System.out.println("Let's start match number " + currentMatchNumber + "!");
+ System.out.println("Rock, Paper, Scissors!");
+ System.out.println(player1 + " is playing: " + player1Choice.getName());
+ System.out.println(player2 + " is playing: " + player2Choice.getName());
+
+ if (player1Choice.getIndex() == player2Choice.getIndex())
+ {
+ System.out.println("DRAW!");
+ }
+ else if (player1Choice.getIndex() == (player2Choice.getIndex() + 1) % 3)
+ {
+ System.out.println("The winner is " + player1 + "!");
+ }
+ else
+ {
+ System.out.println("The winner is " + player2 + "!");
+ }
+ }
+}
diff --git a/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Player.java b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Player.java
new file mode 100644
index 0000000..72e0761
--- /dev/null
+++ b/graphs/java/rockPaperScissors/src/main/java/fr/epita/assistants/rockPaperScissors/Player.java
@@ -0,0 +1,23 @@
+package fr.epita.assistants.rockPaperScissors;
+
+public final class Player {
+ final String name;
+ int choice;
+
+ public void setChoice(int choice) {
+ this.choice = choice;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Player(String name) {
+ this.name = name;
+ }
+
+ public HandShape getPlayerHandShape()
+ {
+ return new HandShape(choice);
+ }
+}