Problem Kółko i krzyżyk

0
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Okno extends JFrame implements ActionListener{

	JButton b1,b2,b3,b4,b5,b6,b7,b8,b9;
	short ruch = 0;
	Font czcionka = new Font ("Impact",Font.PLAIN,60);
	Font label = new Font ("Impact",Font.PLAIN,40);
	Font Remis = new Font ("Impact",Font.PLAIN,50);
	boolean gracz = true;
	JLabel txt,txt2,txt3,score,score2;
	int OL =0;
	int XL =0;
	public Okno() {
		setSize(600,450);
		setTitle("Kółko i Krzyżyk");
		setLayout(null);
		
		txt2 = new JLabel("Wygrał");
		txt2.setBounds(425, 1, 400, 400);
		txt2.setFont(label);
		add(txt2);
		
		txt = new JLabel("Gracz:");
		txt.setBounds(425, 50, 400, 400);
		txt.setFont(label);
		add(txt);
		
		txt3 = new JLabel("Remis");
		txt3.setBounds(425, 5, 400, 400);
		txt3.setFont(Remis);
		txt3.setVisible(false);
		add(txt3);
		
		score = new JLabel("Gracz O: 0");
		score.setBounds(425, -100, 400, 400);
		score.setFont(label);
		add(score);
		
		score2 = new JLabel("Gracz X: 0");
		score2.setBounds(425, -50, 400, 400);
		score2.setFont(label);
		add(score2);
		
		
		
		b1 = new JButton("");
		b1.setBounds(20,20,125,125);
		add(b1);
		b1.addActionListener(this);
		b1.setBackground(Color.WHITE);
		
		b2 = new JButton("");
		b2.setBounds(150,20,125,125);
		add(b2);
		b2.addActionListener(this);
		b2.setBackground(Color.WHITE);
		
		b3 = new JButton("");
		b3.setBounds(280,20,125,125);
		add(b3);
		b3.addActionListener(this);
		b3.setBackground(Color.WHITE);
		
		b4 = new JButton("");
		b4.setBounds(20,150,125,125);
		add(b4);
		b4.addActionListener(this);
		b4.setBackground(Color.WHITE);
		
		b5 = new JButton("");
		b5.setBounds(150,150,125,125);
		add(b5);
		b5.addActionListener(this);
		b5.setBackground(Color.WHITE);
		
		b6 = new JButton("");
		b6.setBounds(280,150,125,125);
		add(b6);
		b6.addActionListener(this);
		b6.setBackground(Color.WHITE);
		
		b7 = new JButton("");
		b7.setBounds(20,280,125,125);
		add(b7);
		b7.addActionListener(this);
		b7.setBackground(Color.WHITE);
		
		b8 = new JButton("");
		b8.setBounds(150,280,125,125);
		add(b8);
		b8.addActionListener(this);
		b8.setBackground(Color.WHITE);
		
		b9 = new JButton("");
		b9.setBounds(280,280,125,125);
		add(b9);
		b9.addActionListener(this);
		b9.setBackground(Color.WHITE);
		
		b1.setFont(czcionka);
		b2.setFont(czcionka);
		b3.setFont(czcionka);
		b4.setFont(czcionka);
		b5.setFont(czcionka);
		b6.setFont(czcionka);
		b7.setFont(czcionka);
		b8.setFont(czcionka);
		b9.setFont(czcionka);
		
	}
	public void Wygryna(){

		
		
		b1.setEnabled(true);
		b1.setText("");
		gracz = !gracz;
		
		
		b2.setEnabled(true);
		b2.setText("");
		b3.setEnabled(true);
		b3.setText("");
		b4.setEnabled(true);
		b4.setText("");
		b5.setEnabled(true);
		b5.setText("");
		b6.setEnabled(true);
		b6.setText("");
		b7.setEnabled(true);
		b7.setText("");
		b8.setEnabled(true);
		b8.setText("");
		b9.setEnabled(true);
		b9.setText("");
      
		
	}



	@Override
	public void actionPerformed(ActionEvent e) {
		Object z = e.getSource();
		jojo(z,b1);
		jojo(z,b2);
		jojo(z,b3);
		jojo(z,b4);
		jojo(z,b5);
		jojo(z,b6);
		jojo(z,b7);
		jojo(z,b8);
		jojo(z,b9);
		}
		
	public void wykryj(JButton w,JButton e, JButton o) {
		if(w.getText() != "" && w.getText() ==e.getText() && e.getText() == o.getText()){
			txt.setText("Gracz:"+(gracz ? "X": "O"));
			if(gracz = false) {
				score.setText("Gracz O: "+OL++);
			}
			if(gracz = true) {
				score2.setText("Gracz X: "+XL++);
			}
			txt.setVisible(true);
			txt2.setVisible(true);
			txt3.setVisible(false);
			Wygryna();


		}
		else if (b1.getText() != "" && b2.getText() != "" &&b3.getText() != "" &&b4.getText() != "" &&b5.getText() != "" &&b6.getText() != "" &&b7.getText() != "" &&b8.getText() != "" &&b9.getText() != "" ) {
			txt.setVisible(false);
			txt2.setVisible(false);
			txt3.setVisible(true);
			Wygryna();		
		
		}
		
	}
	

	public void jojo(Object x, JButton b) {
		if(x == b) {
			b.setText(gracz ? "O": "X");
			b.setEnabled(false);
			gracz = !gracz;
			wykrywaj();
		}
	}
	public void wykrywaj() {
		
		wykryj(b1,b2,b3);
		wykryj(b4,b5,b6);
		wykryj(b7,b8,b9);
		
		wykryj(b1,b5,b9);
		wykryj(b3,b5,b7);
		
		wykryj(b1,b4,b7);
		wykryj(b2,b5,b8);
		wykryj(b3,b6,b9);
		
	}



	public static void main(String[] args) {
		
		Okno okno = new Okno();
		okno.setDefaultCloseOperation(EXIT_ON_CLOSE);
		okno.setVisible(true);
		okno.setResizable(false);
		

	}

}

Pomożecie Bo nie wiem W czym mam błąd Punkty do "O" i "X" nie rozdają się prawidłowo
Przepraszam że zawracam głowę ale mam dopiero 13lat i nie wiem Jak to rozwiązać

0

Użyj formatowania, zadaj poprawnie pytanie i napisz co to za błąd.

0

@Dregorio: Dziękuje za pomoc

0

Ten komentarz to był sarkazm... Nie mam szklanej kuli, napisz co nie działa. Nie kompiluje się? Nie odpala?

0

@Dregorio: Problem polega na tym że Jak chce by dołało Punkty do OL to dodaje do XL

1

No to warunek tutaj:

        if(gracz = false) {
            score.setText("Gracz O: "+OL++);
        }
        if(gracz = true) {
            score2.setText("Gracz X: "+XL++);
        }

masz odwrócony. Daj odwrotnie i powinno być ok. Ponadto prościej możesz to zapisać:

        if(gracz) {
            score2.setText("Gracz X: "+XL++);
        } else {
            score.setText("Gracz O: "+OL++);
        }
0

@Dregorio: dziękuję pomogłeś

1

Polecam też stosowanie tablic i pętli, bo ciężko się czyta i co za tym idzie, zwiększasz sobie szanse na popełnienie błędu. Np. zamiast:

b1 = new JButton("");
        b1.setBounds(20,20,125,125);
        add(b1);
        b1.addActionListener(this);
        b1.setBackground(Color.WHITE);

        b2 = new JButton("");
        b2.setBounds(150,20,125,125);
        add(b2);
        b2.addActionListener(this);
        b2.setBackground(Color.WHITE);

        b3 = new JButton("");
        b3.setBounds(280,20,125,125);
        add(b3);
        b3.addActionListener(this);
        b3.setBackground(Color.WHITE);

Wykonaj pętlę na tablicy:

int N = 3;
JButton[] b = new JButton[N];
for(int i = 0; i<N; i++){
	b2 = new JButton("");
	b[i].setBounds(//tutaj wstaw jakieś wzory na te wymiary, zakładam, że przyda się operacja modulo: %);
        add(b[i]);
	b[i].addActionListener(this);
	b[i].setBackground(Color.WHITE);
}

Możesz to zrobić dla wszystkich powtarzalnych (zestawów) operacji.
Ogólnie - nie powinno się stosować metody "kopiuj wklej" i powielanie tego samego kodu, bo to utrudnia szukanie błędów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1