Programmatino tetris en java
velocity
Messages postés
204
Date d'inscription
Statut
Membre
Dernière intervention
-
velocity Messages postés 204 Date d'inscription Statut Membre Dernière intervention -
velocity Messages postés 204 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
comme je l'ai déjà postez sur un autre poste, je suis en train de programmer un jeu tetris en java et la je rencontre quelques problème dans la réalisation d'un joueur artificiel . En fait je ne sese d'avoir ce message d'erreur :
Exception in thread "Thread-0" java.lang.StackOverflowError
at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByteEncoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:46)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:74)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:60)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:74)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:60)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:74)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:60)
....
pouvez vous m'expliquez le pb ? et merci d'avance
comme je l'ai déjà postez sur un autre poste, je suis en train de programmer un jeu tetris en java et la je rencontre quelques problème dans la réalisation d'un joueur artificiel . En fait je ne sese d'avoir ce message d'erreur :
Exception in thread "Thread-0" java.lang.StackOverflowError
at sun.nio.cs.SingleByteEncoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByteEncoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at java.io.PrintStream.println(Unknown Source)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:46)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:74)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:60)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:74)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:60)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:74)
at ElementDeJeux.AIPlayer.evaluer(AIPlayer.java:60)
....
pouvez vous m'expliquez le pb ? et merci d'avance
A voir également:
- Programmatino tetris en 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
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
salut
ta fonction ElementDeJeux.AIPlayer.evaluer() est récursive et s'appelle elle meme de maniere infinie.
ta fonction ElementDeJeux.AIPlayer.evaluer() est récursive et s'appelle elle meme de maniere infinie.
Bonjour progjv et merci pour votre réponse rapide,
En effet c'est une methode récurise que j'essaie d'ecrire ,elle me permet de trouver la meilleur positionpour la pieceEnJeu . elle doit essayer toutes les possibilités de deplacement et de rotation pour enfin ne retourner qu'une seule position. mais j'ai du mal à la réaliser.
voici ce que j'ai fait jusqu'à maintenant :
à l'affichage dana la console je remarque que la piece ne fait que tourner et ce deplacer à gauche à l'infinie .
je ne sais pas comment regler ce pb .
En effet c'est une methode récurise que j'essaie d'ecrire ,elle me permet de trouver la meilleur positionpour la pieceEnJeu . elle doit essayer toutes les possibilités de deplacement et de rotation pour enfin ne retourner qu'une seule position. mais j'ai du mal à la réaliser.
voici ce que j'ai fait jusqu'à maintenant :
public ModeleGrille evaluer(ModeleGrille mg,int enableRotation){ try{ System.out.println("xpos: "+mg.pieceEnJeu.xpos + "ypos: " + mg.pieceEnJeu.ypos); if(enableRotation == 1){ //essayer les rotations possibles ModeleGrille mgClone = (ModeleGrille)mg.clone(); int i =0; do{ System.out.println("tourner"); if(mg.pieceEnJeu.tourner()){ mgClone.transitions.add(1); //calculer le score de la grille; mgClone.getScore(); //essayer les transitions possibles vers la gauche evaluerGauche(mg); //essayer les transitions possibles vers la droite evaluerDroite(mg); //essayer les transitions possibles vers la droite evaluerBas(mg); }else{ break; } i++; }while(i<4); } //retourner le modele qui donne le meilleur score à terminer }catch(CloneNotSupportedException cnse){ cnse.printStackTrace(); } return null; } public ModeleGrille evaluerGauche(ModeleGrille mg){ try{ if(mg.pieceEnJeu.gaucheVide()){ ModeleGrille mgClone = (ModeleGrille)mg.clone(); System.out.println("gauche"); mgClone.pieceEnJeu.deplacer_gauche(); mgClone.transitions.add(2); //calculer le score de la grille; mgClone.getScore(); return evaluer(mgClone,1); } }catch(CloneNotSupportedException cnse){ cnse.printStackTrace(); } return null; } public ModeleGrille evaluerDroite(ModeleGrille mg){ try{ if(mg.pieceEnJeu.droiteVide()){ ModeleGrille mgClone = (ModeleGrille)mg.clone(); System.out.println("droite"); mgClone.pieceEnJeu.deplacer_droite(); mgClone.transitions.add(2); //calculer le score de la grille; mgClone.getScore(); return evaluer(mgClone,1); } }catch(CloneNotSupportedException cnse){ cnse.printStackTrace(); } return null; } public ModeleGrille evaluerBas(ModeleGrille mg){ try{ if(mg.pieceEnJeu.gaucheVide()){ ModeleGrille mgClone = (ModeleGrille)mg.clone(); System.out.println("gauche"); mgClone.pieceEnJeu.deplacer_gauche(); mgClone.transitions.add(2); //calculer le score de la grille; mgClone.getScore(); return evaluer(mgClone,1); }else{ //supprimer les lignes completes mg.clean(); //calculer le score de la grille; mg.getScore(); return mg; } }catch(CloneNotSupportedException cnse){ cnse.printStackTrace(); } return null; }
à l'affichage dana la console je remarque que la piece ne fait que tourner et ce deplacer à gauche à l'infinie .
je ne sais pas comment regler ce pb .