Commit 35c28405 authored by Florian MOINARD's avatar Florian MOINARD
Browse files

Merge branch 'master' into 'main'

Master

See merge request !2
parents f90b4890 456a26a3
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="Design Pattern Project" />
</profile>
</annotationProcessing>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_13" default="true" project-jdk-name="13" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?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>org.example</groupId>
<artifactId>Design Pattern Project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
</project>
\ No newline at end of file
public interface Etat {
void partie(JustePrix justePrix);
}
public class EtatArret implements Etat {
@Override
public void partie(JustePrix justePrix) {
System.out.println("Vous n'avez pas encore commencé à jouer");
justePrix.setEtat(this);
}
public String toString() {
return "Etat arrêt";
}
}
public class EtatGagne implements Etat{
@Override
public void partie(JustePrix justePrix) {
System.out.println("Vous avez gagné");
justePrix.setEtat(this);
}
public String toString() {
return "Etat gagné";
}
}
public class EtatJouer implements Etat{
@Override
public void partie(JustePrix justePrix) {
System.out.println("Vous êtes en train de jouer");
justePrix.setEtat(this);
}
public String toString() {
return "Etat jouer";
}
}
public class EtatPerdu implements Etat{
@Override
public void partie(JustePrix justePrix) {
System.out.println("Vous avez perdu");
justePrix.setEtat(this);
}
public String toString() {
return "Etat perdu";
}
}
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
JustePrix justePrixPartie = new JustePrix();
EtatArret etatArret = new EtatArret();
etatArret.partie(justePrixPartie);
System.out.println(justePrixPartie.getEtat().toString());
Produit S21 = new TelephoneBuilder().setOs("Android10").setProcesseur("Intel").setBatterie(
4000).setEcran(6.20).setMarque("Samsung").setPrix(700).getProduit();
Produit iPhone13 = new TelephoneBuilder().setOs("iOS15").setProcesseur("Apple").setBatterie(
3227).setEcran(6.10).setMarque("Apple").setPrix(950).getProduit();
Produit SurfacePro7 = new TabletteBuilder().setOs("Windows11").setProcesseur("Intel").setBatterie(
5702).setEcran(13.00).setMarque("Microsoft").setPrix(1200).getProduit();
Produit iPad = new TelephoneBuilder().setOs("iPadOS15").setProcesseur("Apple").setBatterie(
8686).setEcran(10.2).setMarque("Apple").setPrix(500).getProduit();
int justeprix;
System.out.println("Bienvenue dans la boutique où vous pouvez remporter vos produits !");
System.out.println("Pour les remporter, c'est simple, il vous suffit de deviner les prix des produits \n");
System.out.println("Choisissez la catégorie de produits que vous souhaitez deviner : ");
System.out.println("Tapez '1' si vous souhaitez deviner la catégorie " + S21.getTypeProduit());
System.out.println("Tapez '2' si vous souhaitez deviner la catégorie " + SurfacePro7.getTypeProduit());
Scanner scan = new Scanner(System.in);
int choix = scan.nextInt();
if (choix == 1) {
System.out.println("Vous avez choisi les téléphones, voici les téléphones que vous pouvez deviner :");
System.out.println("Tapez '1' si vous souhaitez deviner le S21");
System.out.println("Tapez '2' si vous souhaitez deviner l'iPhone13");
choix = scan.nextInt();
if (choix == 1) {
justeprix = S21.getPrix();
jouerPartie(justeprix, justePrixPartie);
} else if (choix == 2) {
justeprix = iPhone13.getPrix();
jouerPartie(justeprix, justePrixPartie);
}
} else if (choix == 2) {
System.out.println("Vous avez choisi les tablettes, voici les téléphones que vous pouvez deviner :");
System.out.println("Tapez '1' si vous souhaitez deviner la Surface Pro 7");
System.out.println("Tapez '2' si vous souhaitez deviner l'iPad");
choix = scan.nextInt();
if (choix == 1) {
justeprix = SurfacePro7.getPrix();
jouerPartie(justeprix, justePrixPartie);
} else if (choix == 2) {
justeprix = iPad.getPrix();
jouerPartie(justeprix, justePrixPartie);
}
}
}
private static void jouerPartie(int justeprix, JustePrix justePrixPartie)
{
EtatJouer etatJouer = new EtatJouer();
etatJouer.partie(justePrixPartie);
System.out.println(justePrixPartie.getEtat().toString());
int prix = -1;
int essai = 0;
Scanner deviner = new Scanner(System.in);
System.out.println("Vous avez 10 essais deviner le prix, attention... partez !");
while (justeprix != prix && essai <= 10)
{
prix = deviner.nextInt();
if (justeprix > prix) {
System.out.println("C'est plus !");
} else {
System.out.println("C'est moins !");
}
essai ++;
}
if (essai > 10) {
EtatPerdu etatPerdu = new EtatPerdu();
etatPerdu.partie(justePrixPartie);
System.out.println(justePrixPartie.getEtat().toString());
} else {
EtatGagne etatGagne = new EtatGagne();
etatGagne.partie(justePrixPartie);
System.out.println(justePrixPartie.getEtat().toString());
System.out.println("Bravo ! le juste prix est : " + justeprix + ". Vous l'avez trouvé en " + essai + " essais");
}
}
}
public interface IProduitBuilder {
IProduitBuilder setOs(String os);
IProduitBuilder setProcesseur(String processeur);
IProduitBuilder setBatterie(int batterie);
IProduitBuilder setEcran(double ecran);
IProduitBuilder setMarque(String marque);
IProduitBuilder setPrix(int prix);
Produit getProduit();
}
public class JustePrix {
private Etat etat;
public JustePrix() {
etat = null;
}
public void setEtat(Etat etat) {
this.etat = etat;
}
public Etat getEtat() {
return etat;
}
}
public class Produit {
private String os;
private String processeur;
private int batterie;
private double ecran;
private String marque;
private int prix;
private String typeProduit;
public Produit(String os, String processeur, int batterie, double ecran, String marque, int prix, String typeProduit) {
super();
this.os = os;
this.processeur = processeur;
this.batterie = batterie;
this.ecran = ecran;
this.marque = marque;
this.prix = prix;
this.typeProduit = typeProduit;
}
public int getPrix() {
return prix;
}
public String getTypeProduit() {
return typeProduit;
}
}
public class TabletteBuilder implements IProduitBuilder{
String os = "";
String processeur = "";
int batterie = 0;
double ecran = 0.00;
String marque = "";
int prix = 0;
String typeProduit = "Tablette";
@Override
public IProduitBuilder setOs(String os) {
this.os = os;
return this;
}
@Override
public IProduitBuilder setProcesseur(String processeur) {
this.processeur = processeur;
return this;
}
@Override
public IProduitBuilder setBatterie(int batterie) {
this.batterie = batterie;
return this;
}
@Override
public IProduitBuilder setEcran(double ecran) {
this.ecran = ecran;
return this;
}
@Override
public IProduitBuilder setMarque(String marque) {
this.marque = marque;
return this;
}
@Override
public IProduitBuilder setPrix(int prix) {
this.prix = prix;
return this;
}
@Override
public Produit getProduit() {
return new Produit(os, processeur, batterie, ecran, marque, prix, typeProduit);
}
}
public class TelephoneBuilder implements IProduitBuilder{
String os = "";
String processeur = "";
int batterie = 0;
double ecran = 0.00;
String marque = "";
int prix = 0;
String typeProduit = "Telephone";
@Override
public IProduitBuilder setOs(String os) {
this.os = os;
return this;
}
@Override
public IProduitBuilder setProcesseur(String processeur) {
this.processeur = processeur;
return this;
}
@Override
public IProduitBuilder setBatterie(int batterie) {
this.batterie = batterie;
return this;
}
@Override
public IProduitBuilder setEcran(double ecran) {
this.ecran = ecran;
return this;
}
@Override
public IProduitBuilder setMarque(String marque) {
this.marque = marque;
return this;
}
@Override
public IProduitBuilder setPrix(int prix) {
this.prix = prix;
return this;
}
@Override
public Produit getProduit() {
return new Produit(os, processeur, batterie, ecran, marque, prix, typeProduit);
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment