Projet java : jeu de l'oie
ophlapetite
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
baladur13 Messages postés 47801 Date d'inscription Statut Modérateur Dernière intervention -
baladur13 Messages postés 47801 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis en L1 informatique et j'ai un projet à faire en java qui est un jeu de l'oie, seulement il me reste 5 jours et je n'y arrive toujours pas , j'ai essayé des tas de choses qui ne marchent pas je suis donc un peu désespérée,
merci d'avance si vous m'aidez
je suis en L1 informatique et j'ai un projet à faire en java qui est un jeu de l'oie, seulement il me reste 5 jours et je n'y arrive toujours pas , j'ai essayé des tas de choses qui ne marchent pas je suis donc un peu désespérée,
merci d'avance si vous m'aidez
A voir également:
- Jeu de l'oie java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- 94 jeu - Télécharger - Puzzle & Réflexion
4 réponses
package jeudeloie; import java.util.Scanner; /** * * @author ophel */ public class Jeu { private Case[] lesCases; private Joueur[] lesJoueurs; private Joueur joueurCourant; public Jeu(){ lesCases= new Case[64]; initJoueurs(); joueurCourant=lesJoueurs[0]; // initTours(); } public void initJoueurs(){ Scanner sc= new Scanner(System.in); System.out.println("Veuillez entrer le nombre de joueurs:"); int nb= sc.nextInt(); sc.nextLine(); lesJoueurs= new Joueur[nb]; for(int i=0; i<nb; i++) {System.out.println("Veuillez entrer le pseudo du joueur"+(i+1)); String s= sc.nextLine(); lesJoueurs[i]= new Joueur(s); } } public void initTours(){ while(joueurCourant.getCasej().getNumero()!=64){ for(int i=0; i<lesJoueurs.length;i++ ) { joueurCourant=lesJoueurs[i]; System.out.println("Vous êtes sur la case numéro "+lesJoueurs[i].getCasej().getNumero()+" intitulée "+lesJoueurs[i].getCasej().getLibelle()); lesJoueurs[i].getCasej().execute(); } } } public void finJeu(){ System.out.println("Le joueur gagnant est: "+joueurCourant); System.exit(0); } }
package jeudeloie; /** * * @author ophel */ public class Case { private String libelle; private int numero; private Action act; private Joueur joueur; public String getLibelle() { return libelle; } public void setLibelle(String libelle) { this.libelle = libelle; } public Joueur getJoueur() { return joueur; } public void setJoueur(Joueur joueur) { this.joueur = joueur; } public int getNumero() { return numero; } public void setNumero(int num) { this.numero = num; if (num==0) { libelle="Départ"; act.setType("Lancer"); } if(num>0&&num<6) { libelle="case standart"; act.setType("Lancer"); } if (num==6) { libelle="Pont"; act.setType("Redirection"); } if (num==9||num==18||num==27||num==36||num==45||num==54||num==63) { libelle="Oie"; act.setType("Redirection"); } if (num==7||num==8) { libelle="Case standart"; act.setType("Lancer"); } if(num>9&& num<18) { libelle="Case standart"; act.setType("Lancer"); } if( num== 19) { libelle="Hotel"; act.setType("LancerOccasionel"); } if(num>19&&num<27) { libelle="Case standart"; act.setType("Lancer"); } if(num>27&&num<31) { libelle="Case standart"; act.setType("Lancer"); } if( num==31) { libelle="Puits"; act.setType("LancerOccasionnel"); } if(num>31&&num<36) { libelle="Case standart"; act.setType("Lancer"); } if( num>36&&num<42) { libelle="Case standart"; act.setType("Lancer"); } if (num==42) { libelle="Labyrinthe"; act.setType("Redirection"); } if(num>42&&num<45) { libelle="Case standart"; act.setType("Lancer"); } if(num>45&&num<52) { libelle="Case standart"; act.setType("Lancer"); } if(num==52) { libelle="Prison"; } if(num==53) { libelle="Case standart"; act.setType("Lancer"); } if(num>54&&num<58) { libelle="Case standart"; act.setType("Lancer"); } if(num==58) { libelle="Mort"; act.setType("Redirection"); } if(num>58&&num<63) { libelle="Case standart"; act.setType("Lancer"); } if(num==63) { libelle="Arrivée"; act.setType("Gain"); } } public Action getAct() { return act; } public void setAct(Action act) { this.act = act; } public Case(){ libelle="Départ"; numero=0; act= null; } public void execute(){ if (act.getType().equals("Lancer")) {act= new Lancer(joueur); act.execute(); } } }
package jeudeloie; /** * * @author ophel */ public abstract class Action { private String type; public String getType() { return type; } public void setType(String type) { this.type = type; } public abstract void execute(); }
package jeudeloie; /** * * @author ophel */ public class Joueur { private String pseudo; private Case casej; public String getPseudo() { return pseudo; } public void setPseudo(String pseudo) { this.pseudo = pseudo; } public Case getCasej() { return casej; } public void setCasej(Case casej) { this.casej = casej; } public Joueur(String s){ setPseudo(s); casej= new Case(); casej.setNumero(0); } }
package jeudeloie; import java.util.Scanner; /** * * @author ophel */ public class Lancer extends Action { private Joueur j; public Lancer(Joueur joueur){ j=joueur; } public void execute(){ Scanner sc= new Scanner(System.in); System.out.println(j.getPseudo()+" ,veuillez entrer le résultat du premier dé:"); int de1= sc.nextInt(); System.out.println(j.getPseudo()+" ,veuillez entrer le résultat du deuxième dé:"); int de2= sc.nextInt(); int som= de1+de2; j.getCasej().setNumero( j.getCasej().getNumero()+som); System.out.println("Vous êtes sur la case numéro "+j.getCasej().getNumero()+" intitulée "+j.getCasej().getLibelle()); } }
voila ce que j'ai fait pour l'instant
Bonjour,
Est-ce que tu pourrais nous donner ton main(), moi j'ai un NullPointerException dès la saisie des pseudos...
Et au passage, c'est quoi qui te bloque ? (comme je n'ai pas pu tester ce n'est pas forcément évident)
Tu as une erreur, ou juste un truc que tu voudrais faire (quoi ?) qui ne marche pas comme tu voudrais ? (qu'est-ce que tu voudrais ?)
Est-ce que tu pourrais nous donner ton main(), moi j'ai un NullPointerException dès la saisie des pseudos...
Et au passage, c'est quoi qui te bloque ? (comme je n'ai pas pu tester ce n'est pas forcément évident)
Tu as une erreur, ou juste un truc que tu voudrais faire (quoi ?) qui ne marche pas comme tu voudrais ? (qu'est-ce que tu voudrais ?)
Ah oui ça marchait avant que je mette le casej.setNumero(0) dans le constructeur de la classe joueur normalement;
Mon main :
Bah du coup j'aimerai déja que ma classe lancer marche pour pouvoir coder les autres actions possibles des cases..
Mon main :
package jeudeloie; /** * * @author ophel */ public class Jeudeloie { /** * @param args the command line arguments */ public static void main(String[] args) { Jeu j= new Jeu(); // TODO code application logic here } }
Bah du coup j'aimerai déja que ma classe lancer marche pour pouvoir coder les autres actions possibles des cases..
Voici ce que je te propose :
1) utiliser des enum à la place des classes Action et Case.
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
2) utiliser des références de méthodes (par exemple avec un Consumer) pour tes actions.
https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html
Exemple (partiel) pour les case 0 à 10 :
1) utiliser des enum à la place des classes Action et Case.
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
2) utiliser des références de méthodes (par exemple avec un Consumer) pour tes actions.
https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html
Exemple (partiel) pour les case 0 à 10 :
package jeudeloie; import java.util.function.Consumer; public enum Action { LANCER("Lancer", Action::executeLancer), STANDARD("Case standard", Action::executeStandard), REDIRECTION("Redirection", Action::executeRedirection); private final String libelle; private final Consumer<Joueur> executeMethod; private Action(String libelle, Consumer<Joueur> executeMethod) { this.libelle = libelle; this.executeMethod = executeMethod; } public String getLibelle() { return libelle; } public void execute(Joueur joueur) { executeMethod.accept(joueur); } private static void executeLancer(Joueur joueur) { int numero = joueur.getPosition(); System.out.println("Vous êtes sur la case numéro " + numero + " intitulée " + Case.findByNumero(numero).getLibelle()); } private static void executeStandard(Joueur joueur) { //TODO } private static void executeRedirection(Joueur joueur) { //TODO } }
package jeudeloie; public enum Case { DEPART("Départ", Action.LANCER, 0), STANDARD("Case standard", Action.LANCER, 1, 2, 3, 4, 5, 7, 8), PONT("Pont", Action.REDIRECTION, 6), OIE("Oie", Action.REDIRECTION, 9); private final String libelle; private final Action action; private final int[] numeros; private Case(String libelle, Action action, int... numeros) { this.libelle = libelle; this.action = action; this.numeros = numeros; } public String getLibelle() { return libelle; } public Action getAction() { return action; } public static Case findByNumero(int numero) { for (Case c : Case.values()) for (int n : c.numeros) if (n == numero) return c; throw new IllegalArgumentException("La case " + numero + " n'existe pas."); } }
Aucun cours ne pourra t'apprendre tout un langage comme Java, il y a forcément des choses que tu devras découvrir par toi même, et celles-ci en font partie.
Remarque : pour les enum c'est même surprenant qu'on ne les enseigne pas, c'est vraiment basique.
Après, est-ce que c'est autorisé ou non dans le cadre de ton projet, seul ton prof pourra y répondre, mais faire preuve d'initiative est rarement sanctionné. Après tout, tu es à l'université, plus au collège...
Remarque : pour les enum c'est même surprenant qu'on ne les enseigne pas, c'est vraiment basique.
Après, est-ce que c'est autorisé ou non dans le cadre de ton projet, seul ton prof pourra y répondre, mais faire preuve d'initiative est rarement sanctionné. Après tout, tu es à l'université, plus au collège...
Bonjour
Puisque vous dites dans une alerte le problème résolu, et comme on est jamais aussi bien servi que par soi-même
==> https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
Puisque vous dites dans une alerte le problème résolu, et comme on est jamais aussi bien servi que par soi-même
==> https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
Je ne pourrais pas t'aider moi-même, c'est hors de mes compétences. Essaye de décrire ce qui bloque ou bugue quand tu fais tourner ton code.
du coup ce qui me bloque c'est au moment d’exécuter les actions des différentes cases du jeu