Donc j'essaie de passer la valeur de X de la fonction ActionPeformed à la fonction saveGame. Par contre la valeur de x quand il atteint les fonctions devient 0. Par ailleurs, voici comment je devrais travailler, le programme va d'abord initialiser les valeurs de chaque joueur (il y a quatre joueurs) et chacune aura des valeurs X et Y. et quand le bouton Enregistrer est cliqué, il doit prendre la valeur de X de chaque joueur et l'écrire dans un fichier.Passer une valeur d'une fonction à une autre fonction en Java
Voici mes codes:
Classe: MainPage
import java.awt.*;
import javax.swing.*;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.awt.event.*;
import java.util.Random;
import java.lang.Math.*;
import static java.util.logging.Logger.global;
public class MainPage extends JFrame implements ActionListener{
Random rand = new Random();
.
.
protected Players[] player = new Players[5];//declare array for players
int[] dtrump = new int[5];
public MainPage(boolean savegame)
{
saveGame();
}
public MainPage(){
.
.
.
for(int i=1;i<=4;i++){ //instantiate players
player[i] = new Players();
}
public void actionPerformed(ActionEvent e){
String ac = e.getActionCommand();
String num[] = ac.split("/");
int row = Integer.parseInt(num[0]);
int col = Integer.parseInt(num[1]);
boolean sucess = false;
boolean crash = false;
int x = player[turn].getX();
int y = player[turn].getY();
.
.
for(int i=1;i<5;i++) {
System.out.println(" - ");
System.out.println(player[i].getX());
dtrump[i] = player[i].getX();
System.out.println(dtrump[i]);
}
}
.
.
.
public void saveGame()
{
for(int i=1;i<5;i++) {
System.out.println(" - ");
//System.out.println(player[i].getX());
// dtrump[i] = player[i].getX();
System.out.println(dtrump[i]);
}
try {
//System.out.println(player[2].getX());
File save = new File("save.txt");
if (!save.exists()) {
save.createNewFile();
}
FileWriter savefile = new FileWriter(save);
for (int i = 1; i < 5; i++) {
System.out.println(dtrump[i]);
savefile.write(dtrump[i] + System.getProperty("line.separator"));
// savefile.write(pyerY[k]+ System.getProperty("line.separator"));
}
savefile.close();
//JOptionPane.showMessageDialog(null,"Eggs are not supposed to be green.");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
Joueurs de classe:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Players{
private int x;
private int y;
.
.
.
public void setX(int x){
this.x = x; }
public int getX(){
return x; }
public void setY(int y){
this.y = y; }
public int getY(){
return y; }
}
Veuillez poster un [Exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) –
Bienvenue dans Stack Overflow! Vous avez posté beaucoup de code dans votre question, ce qui nous empêche de savoir exactement où se situe le problème (et aux futurs lecteurs). Veuillez réduire votre code de problème à 10 lignes ou moins. Voir: [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) et [Comment déboguer de petits programmes] (https://ericlippert.com/2014/03/05/how-to-debug-petits-programmes /). –
Cette question n'est pas claire. Je n'ai vu nulle part dans 'actionPerfomed' appelant' saveGame'. Vous venez de l'appeler de constructeur différent. –