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
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) {}
}