J'ai créé une méthode simple dans ma classe CardGames qui réplique un jeu de cartes pour jouer avec des instructions conditionnelles. J'appelle la méthode d'une classe de joueur séparée parce que le joueur gagne/perd des points basés sur la carte. Je veux que la méthode puisse changer la variable des points des objets joueurs. Ce que je veux faire, c'est que lorsque playSimpleCardGame est appelé par l'objet Player, la méthode change les points de l'objet Player.Variables d'objets changées par méthode dans une autre classe
Mais quand je l'exécute les points ne changent pas. J'ai essayé d'étendre/mettre en œuvre les deux classes (c'est-à-dire tirer dans l'obscurité). J'ai également créé une variable d'instance points dans la classe CardGames, mais l'objet Player n'a pas de points en tant que variable. Qu'est-ce que je rate?
public class Player
{
private int points;
public static void main(String[] args)
{
CardGames steve = new CardGames();
System.out.println(steve.playSimpleCardGame("red"));
System.out.println(steve.playSimpleCardGame("red"));
System.out.println(steve.playSimpleCardGame("black"));
System.out.println(steve.playSimpleCardGame("black"));
System.out.println(steve.points);
}
}
public class CardGames
{
/*
* Rules of this game:
* If you draw a red card, you get a point.
* If you draw a black card, you lose two points.
*/
public int playSimpleCardGame(String color)
{
if (color.equalsIgnoreCase("red"))
return points = points + 1;
else
return points = points - 2;
}
}
public class Player
{
private int points;
public Player(){
points=0;
}
public static void main(String[] args)
{
CardGames game = new CardGames();
Player steve = new Player();
System.out.println(game.playSimpleCardGame("red", steve));
System.out.println(game.playSimpleCardGame("red", steve));
System.out.println(game.playSimpleCardGame("black", steve));
System.out.println(game.playSimpleCardGame("black", steve));
System.out.println(steve.points);
}
public int getPoints() {
return points;
}
public void addPoints(int p) {
this.points = points + p;
}
}
public class CardGames
{
/*
* Rules of this game:
* If you draw a red card, you get a point.
* If you draw a black card, you lose two points.
*/
public int playSimpleCardGame(String color, Player player)
{
if (color.equalsIgnoreCase("red"))
{
player.addPoints(1);
return player.getPoints();
}
else
{
player.addPoints(-2);
return player.getPoints();
}
}
}
Vous avez peut-être nommé deux variables 'points', même sur le même objet, mais ce n'est pas la même variable. – user2357112
Votre code ne serait pas compilé, car il n'y a pas de 'points' dans' CardGames' ... Essayez de déplacer les 'points' de' Player' à 'CardGames' ... –
Cela fait fonctionner la méthode, mais ça ne donne pas les points de l'objet Player, les points sont toujours dans CardGames. Je voudrais être en mesure d'appeler quelque chose de la ligne steve.points. – gunsnfloyd