Bonjour a tous,
je suis en train de programmer un jeu puissance 4 basique pour 2 joueurs à afficher dans un terminal. J'ai donc creer plusieurs classes : Pion, Joueur, Grille et Partie, que j'ai testé dans des mains et qui fonctionnent toutes très bien. Malheureusement ma classe LancementJeu qui est mon main final ne fonctionne pas, au début tout va bien, elle me demande le nom des joueurs, le nombre de lignes et de colonnes souhaitées, ce qui est parfaitement normal et puis après je sais pas pourquoi elle m'envoie :
Exception in thread "main" java.lang.NullPointerException
at puissance4.Partie.getColonnes(Partie.java:51)
at puissance4.LancementJeu.tourJoueur1(LancementJeu.java:62)
at puissance4.LancementJeu.lancement(LancementJeu.java:47)
at puissance4.LancementJeu.<init>(LancementJeu.java:11)
at puissance4.LancementJeu.main(LancementJeu.java:136)
Je sais qu'un pointeur ne peut pas pointer sur rien, mais là, je ne vois vraiment pas pourquoi il me dit çà...
Si quelqu'un pourrait m'aider ce serait vraiment sympa parce que franchement je désespère.
Voici ma classe LancementJeu, sans elle je doute que vous puissiez m'aider :
package puissance4;
import outils.*;
public class LancementJeu {
private int j;
private Partie p;
private Console co = new Console();
public LancementJeu(){
this.p = new Partie();
this.lancement();
}
// Lancement d'une partie
public void lancement(){
boolean partieEnCours = true;
co.println("Jeu puissance 4");
// Mise en place de la partie
co.println("Nom du joueur 1 (couleur rose):");
String nom1 = co.readLine();
co.println("Nom du joueur 2 (couleur bleu):");
String nom2 = co.readLine();
co.println("Nombre de lignes desirees :");
int nb_lignes = co.readInt();
co.println("Nombre de colonnes desirees :");
int nb_colonnes = co.readInt();
Partie p = new Partie();
co.println("\n");
p.setJoueur1(nom1);
p.setJoueur2(nom2);
p.setGrille(nb_lignes,nb_colonnes);
co.println(p.toString());
j = 1;
// La partie
while (partieEnCours){
switch (j){
case 0:
partieEnCours = false;
break;
case 1:
tourJoueur1();
break;
case 2:
tourJoueur2();
break;
case 3:
finPartie();
break;
}
}
}
// Fonctions privees
private void tourJoueur1(){
String jouer = "Ou veux-tu jouer (numero de colonne de 0 a "+p.getColonnes()+")";
co.println(p.getNomJoueur1()+" a toi de jouer");
co.println(jouer);
int no = co.readInt();
if (! p.numColonneValide(no)){
co.println("Numero de colonne non valide");
co.println("Veuillez choisir un autre numero");
no = co.readInt();
}
else {
Pion p1 = new Pion("rose");
p.ajouterPion(no,p1);
int l = p.numLignePionEnHaut(no);
if (p.aligner(l,no)){
co.println(p.getNomJoueur1()+" gagnant !");
j = 3;
}
else {
if (p.grilleRemplie()){
co.println("Grille pleine, partie terminee");
j = 3;
}
else {
co.println(p.toString());
j = 2;
}
}
}
}
private void tourJoueur2(){
String jouer = "Ou veux-tu jouer (numero de colonne de 0 a "+p.getColonnes()+")";
co.println(p.getNomJoueur2()+" a toi de jouer");
co.println(jouer);
int no = co.readInt();
if (! p.numColonneValide(no)){
co.println("Numero de colonne non valide");
co.println("Veuillez choisir un autre numero");
no = co.readInt();
}
else {
Pion p2 = new Pion("bleu");
p.ajouterPion(no,p2);
int l = p.numLignePionEnHaut(no);
if (p.aligner(l,no)){
co.println(p.getNomJoueur2()+" gagnant !");
j = 3;
}
else {
if (p.grilleRemplie()){
co.println("Grille pleine, partie terminee");
j = 3;
}
else {
co.println(p.toString());
j = 1;
}
}
}
}
private void finPartie(){
co.println("Voulez-vous rejouer ? (oui/non)");
String rep = co.readLine();
if (rep.equals("oui")){
this.lancement();
}
if (rep.equals("non")){
j = 0;
}
co.println("Repondre oui ou non");
}
public static void main(String [] a) {
new LancementJeu();
}
}
