21. februar 2003 - 20:00Der er
17 kommentarer og 1 løsning
Hvorfor går det ned med en NullPointerException ??
Hvad kan jeg sige ?? her er koden, hvad går galt. Det skal være et lille spil hvor man flytter rundt på 24 brikker på 25 pladser hvor man så kan flytte til den tomme plads ind til brikkerne står i rækkefølge !!
class knap extends JButton { private int vaerdi; private JButton knp;
public knap(int vd) { vaerdi = vd; if (vd != 0) knp = new JButton(""+vd); if (vd == 0) knp = new JButton(""); }
public int getVaerdi() { return vaerdi; } }
public class spil extends JFrame implements ActionListener { private final int str = 5; knap kn[][] = new knap[str][str]; JButton cmdBland = new JButton("Nyt spil"); JButton cmdLuk = new JButton("Luk Spillet"); int tryk = 0;
public static void main (String [] args) { new spil(); }
public spil() { super("Spil"); setSize(str*50,str*50+50); setVisible(true); setResizable(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cont = getContentPane(); cont.setLayout(new GridLayout(str,str+1)); for (int i = 0; i<str; i++) { for (int j = 0; j<str; j++) { cont.add(kn[i][j]); kn[i][j].addActionListener(this); } } cont.add(cmdBland); cmdBland.addActionListener(this); int tom =0; do { cont.add(new JLabel()); tom++; } while (str-2>tom); cont.add(cmdLuk); cmdLuk.addActionListener(this); }
public void start() { System.out.println("start"); int n = 0; for (int i = 0; i<str; i++) { for (int j = 0; j<str; j++) { kn[i][j] = new knap(n); n++; } } bland(); }
public void bland() { System.out.println("bland"); knap k1; int t1 = 0; int t2 = 0; int t3 = 0; int t4 = 0; Random rand = new Random (); for (int i = 0; i<(100*str); i++) { t1 = rand.nextInt(str); t2 = rand.nextInt(str); t3 = rand.nextInt(str); t4 = rand.nextInt(str); k1 = kn[t1][t2]; kn[t1][t2] = kn[t3][t4]; kn[t3][t4] = k1; } }
public void slut() { for (int i = 0; i<str; i++) { for (int j = 0; j<str; j++) { if (kn[i][j].getVaerdi() != (i+5*j-5)) return; } } JOptionPane.showMessageDialog(this, "Du har vundet på " + tryk + " træk", "Du vandt", JOptionPane.PLAIN_MESSAGE); }
public boolean lovlig(knap k1) { System.out.println("lovlig"); for (int i = 0; i<str; i++) { for (int j = 0; j<str; j++) { if (kn[i][j].getVaerdi() == k1.getVaerdi()) break; { } if (kn[i+1][j].getVaerdi() == 0) return true; if (kn[i-1][j].getVaerdi() == 0) return true; if (kn[i][j+1].getVaerdi() == 0) return true; if (kn[i][j-1].getVaerdi() == 0) return true; } } System.out.println("false"); return false; }
public void ulovlig() { JOptionPane.showMessageDialog(this, "Ulovligt træk", "Fejl", JOptionPane.ERROR_MESSAGE); }
public void actionPerformed(ActionEvent e) { knap k2; if (e.getSource() == cmdLuk) this.dispose(); if (e.getSource() == cmdBland) bland(); for (int i = 0; i<str; i++) { for (int j = 0; j<str; j++) { if (e.getSource() == kn[i][j]) { if (lovlig(kn[i][j])) { k2 = kn[i][j]; for (int k = 0; k<str; k++) { for (int l = 0; l<str; l++) { if (kn[k][l].getVaerdi() == 0) { kn[i][j] = kn[k][l]; kn[k][l] = k2; } } } tryk++; slut(); } else ulovlig(); } } }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
public class spil extends JFrame implements ActionListener { private final int str = 5; knap kn[][] = new knap[str][str]; JButton cmdBland = new JButton("Nyt spil"); JButton cmdLuk = new JButton("Luk Spillet"); int tryk = 0;
public static void main(String[] args) { new spil(); }
public spil() { super("Spil"); start(); setSize(str * 50, str * 50 + 50); setVisible(true); setResizable(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cont = getContentPane(); cont.setLayout(new GridLayout(str, str + 1)); for (int i = 0; i < str; i++) { for (int j = 0; j < str; j++) { cont.add(kn[i][j]); kn[i][j].addActionListener(this); } } cont.add(cmdBland); cmdBland.addActionListener(this); int tom = 0; do { cont.add(new JLabel()); tom++; } while (str - 2 > tom); cont.add(cmdLuk); cmdLuk.addActionListener(this); pack(); setVisible(true); }
public void start() { System.out.println("start"); int n = 0; for (int i = 0; i < str; i++) { for (int j = 0; j < str; j++) { kn[i][j] = new knap(n); n++; } } bland(); }
public void bland() { System.out.println("bland"); knap k1; int t1 = 0; int t2 = 0; int t3 = 0; int t4 = 0; Random rand = new Random(); for (int i = 0; i < (100 * str); i++) { t1 = rand.nextInt(str); t2 = rand.nextInt(str); t3 = rand.nextInt(str); t4 = rand.nextInt(str); k1 = kn[t1][t2]; kn[t1][t2] = kn[t3][t4]; kn[t3][t4] = k1; } }
public void slut() { for (int i = 0; i < str; i++) { for (int j = 0; j < str; j++) { if (kn[i][j].getVaerdi() != (i + 5 * j - 5)) return; } } JOptionPane.showMessageDialog( this, "Du har vundet på " + tryk + " træk", "Du vandt", JOptionPane.PLAIN_MESSAGE); }
public boolean lovlig(knap k1) { System.out.println("lovlig"); for (int i = 0; i < str; i++) { for (int j = 0; j < str; j++) { if (kn[i][j].getVaerdi() == k1.getVaerdi()) break; { } if (kn[i + 1][j].getVaerdi() == 0) return true; if (kn[i - 1][j].getVaerdi() == 0) return true; if (kn[i][j + 1].getVaerdi() == 0) return true; if (kn[i][j - 1].getVaerdi() == 0) return true; } } System.out.println("false"); return false; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.