Hallo, ich habe derzeit an einem kleinen Blackjack Spiel. Die Klassen und alles andere drum und dran ist fertig und funktionsfähig. Im Grunde hat es bereits funktioniert, bis ich mit den Buttons angefangen habe und ein wenig umgestellte vom Code her.
Ich habe bereits gegoogelt und mich informiert wo so etwas entstehen könnte ( keine Initialisierung usw.), aber finde meinen eigenen Fehler leider nicht.
Hier mein Code:
Ich habe bereits gegoogelt und mich informiert wo so etwas entstehen könnte ( keine Initialisierung usw.), aber finde meinen eigenen Fehler leider nicht.
Hier mein Code:
Java:
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.SwingUtilities;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.text.*;
public class SiebzehnVier extends JFrame implements ActionListener {
JTextField sname1,sname2;
JButton selectb, playb, exitb;
int anzahl = 2;
String [] spielernamen = new String[anzahl];
JPanel spielPanel = new JPanel();
JPanel spielerPanel = new JPanel();
JPanel gegnerPanel = new JPanel();
Runde r;
int kartenmatrix [][] = new int[4][9];
boolean namengesetzt=false;
public int convertPoint(int x) {
switch(x) {
case 2: return 0;
case 3: return 1;
case 4: return 2;
case 7: return 3;
case 8: return 4;
case 9: return 5;
case 10: return 6;
case 11: return 7;
default: return -1;
}
}
public String getKarte(int x) {
String kette = "";
int a,b,c;
c=0;
b=convertPoint(r.werte[x]);
if (b>-1){
while (c == 0){
a=(int)Math.random ()*4;
if (kartenmatrix[a][b]==0) {
kette = "img/" + a + "0" + b + ".png";
kartenmatrix[a][b]++;
c++;;
}
}
}
return kette;
}
public void startGame() {
for(int j=0; j<4;j++)
for(int k=0; k<9;k++)
kartenmatrix[j][k]=0;
r = new Runde(anzahl, spielernamen);
}
public SiebzehnVier() {
String kette="";
initwindow();
initUI();
for(int i=0; i<6;i++) {
kette = getKarte(i);
if (!kette.equals("")) {
spielerPanel.add(new JLabel(new ImageIcon(getKarte(i))));
spielerPanel.add(new JLabel("Spielername: "+r.s[0].getSpielername()));
spielerPanel.add(new JLabel("Spiele: "+r.s[0].getSpiele()));
spielerPanel.add(new JLabel("Gewonnen: "+r.s[0].getGewonneneSpiele()));
spielerPanel.updateUI();
}
}
for(int i=6; i<10;i++) {
kette = getKarte(i);
if (!kette.equals("")) {
gegnerPanel.add(new JLabel(new ImageIcon(getKarte(i))));
gegnerPanel.add(new JLabel("Spielername: "+r.s[1].getSpielername()));
gegnerPanel.add(new JLabel("Spiele: "+r.s[1].getSpiele()));
gegnerPanel.add(new JLabel("Gewonnen: "+r.s[1].getGewonneneSpiele()));
gegnerPanel.updateUI();
}
}
repaint();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == selectb){
if (!namengesetzt){
spielernamen[0]=sname1.getText();
spielernamen[1]=sname2.getText();
namengesetzt=true;
startGame();
}
else {
r.Spielstart();
r.s[0].setSpiele();
r.s[1].setSpiele();
}
}
if(e.getSource() == playb){
if (r.count < 10) {
r.s[r.count].setPunkte();
r.count++;
r.s[r.count].setPunkte();
r.count++;
}
else {
r.setGewinner();
}
}
if(e.getSource() == exitb) {
r.setGewinner();
}
repaint();
}
public final void initUI() {
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("Datei");
menubar.add(file);
setJMenuBar(menubar);
JToolBar vertical = new JToolBar(JToolBar.VERTICAL);
vertical.setFloatable(false);
vertical.setMargin(new Insets(10, 5, 5, 5));
ImageIcon select = new ImageIcon("img/icon/agree.png");
ImageIcon play = new ImageIcon("img/icon/play.png");
ImageIcon exit = new ImageIcon("img/icon/exit.png");
JButton selectb = new JButton(select);
selectb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton playb = new JButton(play);
playb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton exitb = new JButton(exit);
exitb.setBorder(new EmptyBorder(3, 0, 3, 0));
sname1 = new JTextField("Spielername 1",10);
sname2 = new JTextField("Spielername 2",10);
//sname1.setMaximumSize(new Dimension(200, vertical.getPreferredSize().height)); // setColumns(int);
JToolBar toolbar = new JToolBar();
toolbar.setFloatable(false);
sname1.setMaximumSize(new Dimension(200, vertical.getPreferredSize().height));
sname1.setBorder(LineBorder.createGrayLineBorder());
toolbar.add(sname1);
sname2.setBorder(LineBorder.createGrayLineBorder());
sname2.setMaximumSize(new Dimension(200, vertical.getPreferredSize().height));
toolbar.add(sname2);
add(toolbar, BorderLayout.NORTH);
selectb.addActionListener(this);
playb.addActionListener(this);
exitb.addActionListener(this);
vertical.add(selectb);
vertical.add(playb);
vertical.add(exitb);
add(vertical, BorderLayout.WEST);
// spielPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
spielPanel.setLayout(new GridLayout(2, 1, 5, 5));
spielPanel.setBackground(Color.GRAY);
add(spielPanel, BorderLayout.CENTER);
spielerPanel.setBackground(Color.GRAY);
spielerPanel.setBorder(LineBorder.createGrayLineBorder());
gegnerPanel.setBackground(Color.GRAY);
spielPanel.add(spielerPanel);
spielPanel.add(gegnerPanel);
JLabel statusbar = new JLabel(" Statusbar");
statusbar.setPreferredSize(new Dimension(-1, 22));
statusbar.setBorder(LineBorder.createGrayLineBorder());
add(statusbar, BorderLayout.SOUTH);
repaint();
}
public final void initwindow(){
setTitle("Simulation: Siebzehn und Vier");
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SiebzehnVier fenster = new SiebzehnVier();
fenster.setVisible(true);
}
});
}
}