[ Foro de Java ]
package appeac5p1;
/**
*
* @author ainoh
*/
public class AppEAC5P2 {
public static void main(String[] args) {
AppEAC5P2 prg = new AppEAC5P2();
prg.inici();
}
void inici(){
int quiHaDeGuanyar;
int quiDiuLafuncio;
String [][] dadesJugadors= omplirDadesJugadors();
String resultat;
DadesPartida dadesPartida;
Partida partida= new Partida();
dadesPartida=partida.crearDadesPartida(dadesJugadors[2][UtilsES.POS_NOM],3);
//PROVA DE quinaApostaGuanya
//Guanya Usuari
quiHaDeGuanyar = Partida.USUARI;
dadesPartida.apostesFetes[0]=Partida.TISORA;
dadesPartida.apostesFetes[1]=Partida.PEDRA;
quiDiuLafuncio = partida.quinaApostaGuanya(dadesPartida);
if(quiHaDeGuanyar==quiDiuLafuncio){
resultat="OK";
}else{
resultat="KO";
}
System.out.print("Resultat calculat: ");
System.out.print(quiDiuLafuncio);
System.out.print(". Resultat correcte: ");
System.out.println(quiHaDeGuanyar);
System.out.print("Test 1 de la funció quinaApostaGuanya: ");
System.out.println(resultat);
//GUANYA MAQUINA
quiHaDeGuanyar = Partida.MAQUINA;
dadesPartida.apostesFetes[0]=Partida.PAPER;
dadesPartida.apostesFetes[1]=Partida.PEDRA;
quiDiuLafuncio = partida.quinaApostaGuanya(dadesPartida);
if(quiHaDeGuanyar==quiDiuLafuncio){
resultat="OK";
}else{
resultat="KO";
}
System.out.print("Resultat calculat: ");
System.out.print(quiDiuLafuncio);
System.out.print(". Resultat correcte: ");
System.out.println(quiHaDeGuanyar);
System.out.print("Test 2 de la funció quinaApostaGuanya: ");
System.out.println(resultat);
//EMPAT
quiHaDeGuanyar = Partida.EMPAT;
dadesPartida.apostesFetes[0]=Partida.PAPER;
dadesPartida.apostesFetes[1]=Partida.PAPER;
quiDiuLafuncio = partida.quinaApostaGuanya(dadesPartida);
if(quiHaDeGuanyar==quiDiuLafuncio){
resultat="OK";
}else{
resultat="KO";
}
System.out.print("Resultat calculat: ");
System.out.print(quiDiuLafuncio);
System.out.print(". Resultat correcte: ");
System.out.println(quiHaDeGuanyar);
System.out.print("Test 3 de la funció quinaApostaGuanya: ");
System.out.println(resultat);
//TEST de demanarQuantesJugades
int numJugades;
System.out.println();
System.out.println();
//Porvar de seleccionar un valor fora de rang i finalment un dins del rang (3-5)
numJugades = UtilsES.demanarQuantesJugades();
System.out.print("Has demanat de fer ");
System.out.print(numJugades);
System.out.println(" jugades");
//TEST de demanarAposta
int aposta;
System.out.println();
System.out.println();
//Porvar de seleccionar un valor fora de rang i finalment un dins del rang (0-2)
String[] apostes = {"PEDRA", "PAPER", "TISORES"};
aposta = UtilsES.demanarAposta();
System.out.print("Has apostat per ");
System.out.println(apostes[aposta]);
//TEST de mostrarTitol
UtilsES.mostrarTitol("Identificació del jugador.");
System.out.println();
System.out.println();
//TEST de mostrarError
UtilsES.mostrarError("No s'ha pogut emmagatzemar el nom del jugador!");
System.out.println();
System.out.println();
//TEST de mostrarGuanyadorPartida
dadesPartida.nomsJugadors= new String []{"Màquina", "Anna"};
dadesPartida.tornsGuanyats = new int [] {2,2};
int guanyador = Partida.EMPAT;
System.out.println();
System.out.println();
System.out.println("++++ EMPAT ++++");
UtilsES.mostrarGuanyadorPartida(dadesPartida.nomsJugadors, dadesPartida.tornsGuanyats, guanyador);
dadesPartida.tornsGuanyats[Partida.MAQUINA] = 1;
dadesPartida.tornsGuanyats[Partida.USUARI] = 3;
guanyador = Partida.USUARI;
System.out.println();
System.out.println();
System.out.println("++++ USUARI ++++");
UtilsES.mostrarGuanyadorPartida(dadesPartida.nomsJugadors, dadesPartida.tornsGuanyats, guanyador);
dadesPartida.tornsGuanyats[Partida.MAQUINA] = 2;
dadesPartida.tornsGuanyats[Partida.USUARI] = 1;
guanyador = Partida.MAQUINA;
System.out.println();
System.out.println();
System.out.println("++++ MAQUINA ++++");
UtilsES.mostrarGuanyadorPartida(dadesPartida.nomsJugadors, dadesPartida.tornsGuanyats, guanyador);
}
String [][] omplirDadesJugadors(){
String [][] dadesJugadors = {
{"Adria", "5"}, {"Agnes", "0"}, {"Anna", "3"}, {"Arnau", "2"},
{"Beth","9"}, {"Blanca", "6"}, {"Bruna", "1"}, {"Carla", "7"},
{"Cesc", "0"}, {"Clara", "5"}, {"Duna", "2"}, {"Laia", "4"},
{"Eloi", "3"}, {"Emma", "6"}, {"Gerard", "8"}, {"Guillem", "5"},
{"Lluc", "7"}, {"Jordi", "1"}, {"Martí", "5"}, {"Max", "3"},
{"Neus", "6"}, {"Nico", "2"}, {"Nina", "1"}, {"Noa", "6"},
{"Nora", "1"}, {"Nuria", "8"}, {"Oriol", "6"}, {"Pau", "1"},
{"Paula", "9"}, {"Pep", "0"}, {"Pol", "10"}, {"Queralt", "3"},
{"Quim", "1"}, {"Rita", "7"}, {"Roc", "8"}, {"Roger", "9"},
{"Sergi", "3"}, {"Txell", "1"}, {"Xavi", "9"}, {"Alex", "4"},
{"Èlia", "0"}, {"Èric", "6"}, {"", ""}, {"", ""}
};
return dadesJugadors;
}
}
package appeac5p1;
public class Partida {
public static final int EMPAT=2;
public static final int MAQUINA=0;
public static final int USUARI=1;
public static final int PEDRA=0;
public static final int PAPER=1;
public static final int TISORA=2;
DadesPartida crearDadesPartida (String nomJugador, int maxTorns){
DadesPartida dadesPartida = new DadesPartida();
dadesPartida.inicialitza();
dadesPartida.totalTorns=maxTorns;
dadesPartida.nomsJugadors [USUARI]=nomJugador;
return dadesPartida;
}
int quiGuanyaLaPartida (DadesPartida dadesPartida){
int resultat=0;
if(dadesPartida.tornsGuanyats[0]<dadesPartida.tornsGuanyats[1]){
resultat=1;
}
else if (dadesPartida.tornsGuanyats[0]>dadesPartida.tornsGuanyats[1]){
resultat=0;
}
else if (dadesPartida.tornsGuanyats[0]==dadesPartida.tornsGuanyats[1]){
resultat=2;
}
return resultat;
}
int quinaApostaGuanya(DadesPartida dadesPartida){
int apostaM=dadesPartida.apostesFetes[0];
int apostaU=dadesPartida.apostesFetes[1];
int resultat;
if(apostaM == apostaU){
resultat=EMPAT;
}else if(apostaM==PEDRA && apostaU==PAPER){
resultat=USUARI;
}else if(apostaM==PAPER && apostaU==TISORA){
resultat=USUARI;
}else if(apostaM==TISORA && apostaU==PEDRA){
resultat=USUARI;
}else{
resultat=MAQUINA;
}
return resultat;
}
}
package appeac5p1;
import java.util.Scanner;
public class UtilsES {
static final String MISSATGE_LINIA_SEPARACIO = "============================================================================";;
static final String MISSATGE_TITOL_MENU = " PEDRA/PAPER/TISORA EL VIDEOJOC";
static final String MISSATGE_TRII_OPCIO = "Trieu una opció";
static final String MISSATGE_ERROR_NO_NUMERO = "Error el que heu escrit no és un número. Torneu-ho a intentar";
static final String MISSATGE_COMIAT = "Fins la propera";
static final String MISSATGE_TITOL_IDENTIFICACIO = "PANTALLA D'IDENTIFICACIÓ DEL JUGADOR";
static final String MISSATGE_TRII_OPCIO_NOM_JUGADOR = "Introduïu el nom del jugador: ";
static final String MISSATGE_TITOL_MOSTRAR_DADES = " MOSTRAR DADES D'UN JUGADOR";
static final String MISSATGE_ERROR_DADES_PLENES = "No s'ha pogut enregistrar el jugador. S'ha sobrepassat la capacitat màxima";
static final String LINIA_SEP_OPCIONS= "----------------------------------------------------------------------------";
static final String LINIA_SEP_ALERTA="!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";
static final String LINIA_FIN_PARTIDA="****************************************************************************";
static final String MISSATGE_FIN_PARTIDA="FINAL DE LA PARTIDA";
static final String MISSATGE_QUANTES_JUGADES = "Quantes jugades vols realitzar(3-5)?:";
static final String MISSATGE_RANG_JUGADES = "El rang vàlid de jugades a escollir es troba entre 3 i 5 ambdós inclosos.\nTorneu-ho a intentar";
static final String MISSATGE_DEMANAR_APOSTA = "Quina aposta fas (0:PEDRA, 1:PAPER, 2:TISORA)?";
static final short NUM_JUGADORS = 30;
static final short NUM_DADES_JUGADORS = 2;
static final short POS_NOM = 0;
static final short POS_PARTIDES_GUANYADES = 1;
void mostraDadesJugador(int posJugador, String[][] dadesJugadors){
separarLinies(2);
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.println(MISSATGE_TITOL_MOSTRAR_DADES);
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.println("PARTIDES GUANYADES NOM JUGADOR");
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.print(" " );
System.out.print(dadesJugadors[posJugador][POS_PARTIDES_GUANYADES]);
System.out.print(" ");
System.out.println(dadesJugadors[posJugador][POS_NOM]);
}
static int demanarEnter(String missatge, String missatgeError){
Scanner scanner = new Scanner(System.in);
int ret;
boolean correcte;
do{
System.out.println(missatge);
correcte=scanner.hasNextInt();
if(!correcte){
scanner.next();
System.out.println(missatgeError);
}
}while(!correcte);
ret = scanner.nextInt();
scanner.nextLine();
return ret;
}
String demanarString(String missatge, String missatgeError){
Scanner scanner = new Scanner(System.in);
System.out.println(missatge);
String textIntroduit = scanner.nextLine();
while (textIntroduit.isEmpty()){
System.out.println(missatgeError);
System.out.println(missatge);
textIntroduit = scanner.nextLine();
}
return textIntroduit;
}
void separarLinies(int linies){
for(int i=0; i<linies; ++i){
System.out.println();
}
}
static int demanarQuantesJugades(){
int numJugades = 0;
while (numJugades < 3 || numJugades > 5){
numJugades =demanarEnter(MISSATGE_QUANTES_JUGADES, MISSATGE_ERROR_NO_NUMERO);
if(numJugades < 3 || numJugades > 5){
System.out.println(MISSATGE_RANG_JUGADES);
}
}
return numJugades;
}
static int demanarAposta(){
boolean correcte;
int ap;
do{
System.out.println();
ap = demanarEnter(MISSATGE_DEMANAR_APOSTA, MISSATGE_ERROR_NO_NUMERO);
correcte = ap>=0 && ap<=2;
}while(!correcte);
return ap;
}
static void mostrarTitol(String titolPantalla){
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.println(MISSATGE_TITOL_MENU);
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.println(titolPantalla);
System.out.println(LINIA_SEP_OPCIONS);
}
static void mostrarError(String missatge){
System.out.println(LINIA_SEP_ALERTA);
System.out.println(LINIA_SEP_ALERTA);
System.out.println(missatge);
System.out.println(LINIA_SEP_ALERTA);
System.out.println(LINIA_SEP_ALERTA);
}
static void mostrarGuanyadorPartida(String[] nomsJugadors, int[] tornsGuanyats, int guanyador){
System.out.println(LINIA_FIN_PARTIDA);
System.out.println(" FINAL DE LA PARTIDA");
System.out.println(LINIA_FIN_PARTIDA);
System.out.println();
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.println(" PUNTUACIO FINAL");
System.out.println(MISSATGE_LINIA_SEPARACIO);
System.out.printf("%9s", nomsJugadors[0]);
System.out.printf("%9s", nomsJugadors[1]);
System.out.println("\n========================");
System.out.printf("%7d", tornsGuanyats[0]);
System.out.printf("%9s", tornsGuanyats[1]);
System.out.println("\n========================");
if(guanyador == Partida.EMPAT){
System.out.println("Esteu empatats");
}else{
System.out.print("El guanyador de la partida és: ");
System.out.println(nomsJugadors[guanyador]);
}
}
}
Al ejecutar me aparece: run:
Exception in thread "main" java.lang.NullPointerException
at appeac5p1.Partida.crearDadesPartida(Partida.java:17)
at appeac5p1.AppEAC5P2.inici(AppEAC5P2.java:28)
at appeac5p1.AppEAC5P2.main(AppEAC5P2.java:15)
C:\Users\ainoh\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
No entiendo, alguien me puede decir donde está el error?
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)