Hallo,
Hallo möchte ein verteiltes Damespiel schreiben ,dabei soll jeder spieler seine fabre vor sich haben , das heißt das spielbrett muss gedreht werden.
Als einzelne Spielfelder verwende ich Labels auf denen ich jbg Bilder positioniere und die Labels bekommen als Text den jeweiligern index um später beim klicken zu wissen welches feld angeklickt wurde das funktioniert ja auch soweit ganz gut, solange ich es nur lokal hatte.
In der init Methode füge ich je nachdem welcher spieler ich bin die felder anders hinzu, so das dann jeder seine felder vor sich hat.
Wenn ich das programm dann verteilt starte sehe ich erst mal nur das brett ohne steine, danach muss ich sagen neues spiel oder spiel beitreten wähle ich neues spiel bin ich spieler1(weiß), wähle ich beitreten bin ich spieler2(schwarz).
Nun bin ich beim programm start ja erstmal vom spielfeld her automatisch spieler eins. Wie schaffe ich es das aus spieler1 nun spieler 2 wird das heißt das spielfeld gedreht wird. kann ich die gridbagconstarints ändern??
So hier zum besseren Verständnis mal mein Quellcode
Hier jetzt das frame der konstruktor ruft die init methode auf
Hallo möchte ein verteiltes Damespiel schreiben ,dabei soll jeder spieler seine fabre vor sich haben , das heißt das spielbrett muss gedreht werden.
Als einzelne Spielfelder verwende ich Labels auf denen ich jbg Bilder positioniere und die Labels bekommen als Text den jeweiligern index um später beim klicken zu wissen welches feld angeklickt wurde das funktioniert ja auch soweit ganz gut, solange ich es nur lokal hatte.
In der init Methode füge ich je nachdem welcher spieler ich bin die felder anders hinzu, so das dann jeder seine felder vor sich hat.
Wenn ich das programm dann verteilt starte sehe ich erst mal nur das brett ohne steine, danach muss ich sagen neues spiel oder spiel beitreten wähle ich neues spiel bin ich spieler1(weiß), wähle ich beitreten bin ich spieler2(schwarz).
Nun bin ich beim programm start ja erstmal vom spielfeld her automatisch spieler eins. Wie schaffe ich es das aus spieler1 nun spieler 2 wird das heißt das spielfeld gedreht wird. kann ich die gridbagconstarints ändern??
So hier zum besseren Verständnis mal mein Quellcode
Code:
private void initialize(int f_player)
{
this.setSize(450, 450);
this.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints;
checkersFields = new JLabel[ChessBoard.m_count][ChessBoard.m_count];
JLabel field;
for (int x = 0; x < ChessBoard.m_count; x++) {
for (int y = 0; y < ChessBoard.m_count ; y++) {
gridBagConstraints = new GridBagConstraints();
if (f_player%2!=0)
{
gridBagConstraints.gridx = x;
gridBagConstraints.gridy = Math.abs(y-7);
}else{
gridBagConstraints.gridx = Math.abs(x-7);
gridBagConstraints.gridy = Math.abs(y);
}
checkersFields[x][y] = field = new JLabel();
field.setText("" + x + y +"0");
field.setMinimumSize(new Dimension(50, 50));
field.setMaximumSize(new Dimension(50, 50));
field.setPreferredSize(new Dimension(50,50));
this.add(field, gridBagConstraints);
}
}
}
Hier jetzt das frame der konstruktor ruft die init methode auf
Code:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
CheckersFrame thisClass = new CheckersFrame();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
thisClass.pack();
}
});
}
private void initialize() {
this.setSize(410, 440);
this.setJMenuBar(getCheckersMenuBar());
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("Dame");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
BorderLayout borderLayout = new BorderLayout();
borderLayout.setHgap(0);
borderLayout.setVgap(9);
jContentPane = new JPanel();
jContentPane.setLayout(borderLayout);
jContentPane.add(getCheckersPanel(), BorderLayout.CENTER);
}
return jContentPane;
}