Bonjour,
Je développe actuellement un sokoban durant mon temps libre.
(Rappel "Sokoban" : petit jeu où on déplace son personnage sur une grille. Le but est de pousser des cartons se trouvant sur la grille jusqu'à les superposer sur des emplacements prévu à cet effet. Une fois celà fait, le joueur passe au niveau suivant).
Les bases du jeu sont fonctionnelles, seulement j'ai un bug au moment où je développe l'historique des mouvements du personnage, pour qu'il puisse revenir en arrière s'il fait une erreur.
Voici un extrait de code correspondant à la difficulté que je rencontre, puis une explication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 protected void keyPressed(int keyCode) { if(keyCode == MainGraph.KEY_NUM4 && xPlayer > 0) { if(locationPlayers[0][0] != 0) { this.recordInTmp(this.grid, this.locationPlayers, this.locationBoxes); this.locationPlayers[0][0]--; System.out.println(this.locationPlayersHistoryTmp[0][0]+"+++++++++++++++++"+this.locationPlayersHistoryTmp[0][1]); this.paintWhat.put("player", Boolean.TRUE); this.movePlayerOnMap(); elementsToRepaint(); } } (...) }Le soucis que je rencontre, c'est que quand j'affiche "this.locationPlayersHistoryTmp[0][0]" après l'instruction "this.locationPlayers[0][0]--;", la valeur de "this.locationPlayersHistoryTmp[0][0]" se décrémente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public void recordInTmp(String[][] grid, int[][] locationPlayers, int[][] locationBoxes) { this.bigGridTmp = grid; this.locationPlayersHistoryTmp = locationPlayers; this.locationBoxesHistoryTmp = locationBoxes; }
Comment faire pour que la valeur de "this.locationPlayersHistoryTmp[0][0]" reste inchangé même après que l'instruction "this.locationPlayers[0][0]--;" s'est executée ?
Voilà, je vois pas comment faire pour que la valeur de "this.locationPlayersHistoryTmp[0][0]" ne change pas par rapport à celle de "this.locationPlayers[0][0]".
Tout coup d'oeil extérieur sera le bienvenue![]()
Partager