Witam,
Napisałem grę w kółko i krzyżyk i bardzo chciałbym o komentarz dotyczący mojego kodu, chodzi mi o to czy nie popełniam jakichś podstawowych błędów w sposobie pisania kodu, coś co źle powinienem zrobić w inny sposób itp.
package pakietGłówny;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
public class KolkoKrzyzyk extends JFrame implements ActionListener {
public static final ImageIcon KOLKO = new ImageIcon("D:/kolko.gif");
public static final ImageIcon KRZYZYK = new ImageIcon("D:/krzyzyk.gif");
public JButton[] planszaDoGry = new JButton[10];
public static final int SZEROKOSC = 300;
public static final int WYSOKOSC = 300;
public ImageIcon GRACZ = KRZYZYK;
public static final Color MENU_KOLOR = new Color(240, 230, 140);
public static final Color BUTTON_KOLOR = new Color(255, 255, 255);
KolkoKrzyzyk() {
super("Kółko i krzyżyk");
JMenuBar menuBar = new JMenuBar();
JMenu menuPlik = new JMenu("Plik");
JMenuItem menuNowaGra = new JMenuItem("Nowa gra");
JMenuItem menuZakoncz = new JMenuItem("Zakończ");
menuPlik.setBackground(MENU_KOLOR);
menuBar.setBackground(MENU_KOLOR);
menuNowaGra.setBackground(MENU_KOLOR);
menuZakoncz.setBackground(MENU_KOLOR);
menuPlik.add(menuNowaGra);
menuBar.add(menuPlik);
menuPlik.add(menuZakoncz);
setJMenuBar(menuBar);
setSize(SZEROKOSC, WYSOKOSC);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new GridLayout(3, 3, 5, 5));
for (int i = 0; i < 9; i++) {
ProdukcjaPrzyciskow ab = new ProdukcjaPrzyciskow();
planszaDoGry[i] = ab;
add(ab);
ab.setBackground(BUTTON_KOLOR);
planszaDoGry[i].addActionListener(this);
}
menuNowaGra.setToolTipText("Naciśnij jeżeli chcesz rozpoczać nową gre");
menuZakoncz.setToolTipText("Czy aby na pewno?");
menuZakoncz.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent zdarzenie) {
System.exit(0);
}
});
menuNowaGra.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent zdarzenie1) {
for (int q = 0; q < 9; q++) {
planszaDoGry[q].setIcon(null);
}
}
});
}
class ProdukcjaPrzyciskow extends JButton {
ProdukcjaPrzyciskow() {
super();
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() instanceof ProdukcjaPrzyciskow) {
if (((ProdukcjaPrzyciskow) e.getSource()).getIcon() == null && GRACZ == KRZYZYK) {
((ProdukcjaPrzyciskow) e.getSource()).setIcon(KRZYZYK);
GRACZ = KOLKO;
repaint();
}
if (((ProdukcjaPrzyciskow) e.getSource()).getIcon() == null && GRACZ == KOLKO) {
((ProdukcjaPrzyciskow) e.getSource()).setIcon(KOLKO);
GRACZ = KRZYZYK;
repaint();
}
}
try {
if ((planszaDoGry[0]).getIcon() == KRZYZYK && (planszaDoGry[1]).getIcon() == KRZYZYK && (planszaDoGry[2]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[3]).getIcon() == KRZYZYK && (planszaDoGry[4]).getIcon() == KRZYZYK && (planszaDoGry[5]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[6]).getIcon() == KRZYZYK && (planszaDoGry[7]).getIcon() == KRZYZYK && (planszaDoGry[8]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[0]).getIcon() == KRZYZYK && (planszaDoGry[3]).getIcon() == KRZYZYK && (planszaDoGry[6]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[1]).getIcon() == KRZYZYK && (planszaDoGry[4]).getIcon() == KRZYZYK && (planszaDoGry[7]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[2]).getIcon() == KRZYZYK && (planszaDoGry[5]).getIcon() == KRZYZYK && (planszaDoGry[8]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[0]).getIcon() == KRZYZYK && (planszaDoGry[4]).getIcon() == KRZYZYK && (planszaDoGry[8]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[6]).getIcon() == KRZYZYK && (planszaDoGry[4]).getIcon() == KRZYZYK && (planszaDoGry[2]).getIcon() == KRZYZYK) {
throw new Exception("Krzyżyk wygrywa!");
} else if ((planszaDoGry[0]).getIcon() == KOLKO && (planszaDoGry[1]).getIcon() == KOLKO && (planszaDoGry[2]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[3]).getIcon() == KOLKO && (planszaDoGry[4]).getIcon() == KOLKO && (planszaDoGry[5]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[6]).getIcon() == KOLKO && (planszaDoGry[7]).getIcon() == KOLKO && (planszaDoGry[8]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[0]).getIcon() == KOLKO && (planszaDoGry[3]).getIcon() == KOLKO && (planszaDoGry[6]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[1]).getIcon() == KOLKO && (planszaDoGry[4]).getIcon() == KOLKO && (planszaDoGry[7]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[2]).getIcon() == KOLKO && (planszaDoGry[5]).getIcon() == KOLKO && (planszaDoGry[8]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[0]).getIcon() == KOLKO && (planszaDoGry[4]).getIcon() == KOLKO && (planszaDoGry[8]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[6]).getIcon() == KOLKO && (planszaDoGry[4]).getIcon() == KOLKO && (planszaDoGry[2]).getIcon() == KOLKO) {
throw new Exception("Kolko wygrywa!");
} else if ((planszaDoGry[0]).getIcon() != null && (planszaDoGry[1]).getIcon() != null && (planszaDoGry[2]).getIcon() != null
&& (planszaDoGry[3]).getIcon() != null && (planszaDoGry[4]).getIcon() != null && (planszaDoGry[5]).getIcon() != null
&& (planszaDoGry[6]).getIcon() != null && (planszaDoGry[7]).getIcon() != null && (planszaDoGry[8]).getIcon() != null) {
throw new Exception("Remis!");
}
} catch (Exception c) {
int wynik = JOptionPane.showConfirmDialog(this,
c.getMessage() + " Czy chcesz teraz zakończyć działanie?", "Gratulacje!", JOptionPane.YES_NO_OPTION);
if (wynik == JOptionPane.YES_OPTION) {
dispose();
}
}
}
public static void main(String[] args) {
KolkoKrzyzyk kk = new KolkoKrzyzyk();
}
}