Avatar billede tvh33 Nybegynder
20. januar 2009 - 16:22 Der er 2 kommentarer og
1 løsning

Minestryger - Findes der en nem løsning?

Hej

Jeg har tænkt på at lave et minestryger spil i java. Har overvejet hvordan de forskellige problemer skal håndteres og har udtænkt nogle metoder. har dog et rimeligt centralt problem.

Selve brættet med alle felterne (fx 9*9) har jeg tænkt mig at holde styr på i et to-dimentionelt heltals-array. Problemet er at jeg skal have nogle JLabels (i dette tilfælde 81!) til at fungere som felter man kan klikke på, hvorefter feltet så udfører nogle kommandoer.

Hvordan ville det være lettest at oprette "brættet"?
Har tænkt på om man kunne oprette alle 81 JLabels (eller hvor mang man nu vil) i en løkke, men hvad så med navngivningen af hvert enkelt?

På forhånd tak
Avatar billede _carsten Nybegynder
20. januar 2009 - 17:36 #1
Jeg ville stort set lave det som du selv giver udtryk for, her 3 klasser, en Knap, en spilleplade og en JFrame til at putte det hele i, og så skal du vel have nogle klasser som styrer hvad der skal ske på pladen

public class Start extends javax.swing.JFrame {

    public Start() {
        initComponents();
    }

    private void initComponents() {
        spilleplade1 = new minestryger.Spilleplade();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().add(spilleplade1, java.awt.BorderLayout.CENTER);

        pack();
    }


    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Start().setVisible(true);
            }
        });
    }
   
    private minestryger.Spilleplade spilleplade1;
}





import java.awt.Font;
import javax.swing.JLabel;

public class Spilleplade extends javax.swing.JPanel {

    public Spilleplade() {
        initComponents();
        JLabel[] knapper = new Knap[81];

        for (int i = 0; i < knapper.length; i++) {
           
            // Tallet sættes kun på for at du nemmere kan se hvordan de lægges på spillepladen
           
            Knap knap = new Knap("" + (i + 1));
            knap.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            Font f = knap.getFont();
            knap.setFont(new Font(f.getName(), Font.BOLD, f.getSize()));
            knapper[i] = knap;

            add(knap);
        }
    }

    private void initComponents() {
        setBorder(javax.swing.BorderFactory.createEtchedBorder());
        setLayout(new java.awt.GridLayout(9, 9));
    }
}





import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;


public class Knap extends JLabel implements MouseListener{
    public Knap(String text){
        super(text);
        addMouseListener(this);
        setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
    }

    public void mouseClicked(MouseEvent e) {
        System.out.println("KLIK");
        setBorder(null);
    }

    public void mousePressed(MouseEvent e) {
        System.out.println("TRYK");
    }

    public void mouseReleased(MouseEvent e) {
        System.out.println("SLIP");
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
}
Avatar billede tvh33 Nybegynder
20. januar 2009 - 18:55 #2
tusind tak
Avatar billede _carsten Nybegynder
22. januar 2009 - 12:40 #3
Og et svar her
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester