TicTacToe

cizzo

Mitglied
Hallo Leute,
vor ab ich bin neu hier im Forum und noch nicht all zu gewannt in Java.
Also ich würde mich freuen, wenn ihr nicht all zu hart zu mir seid, wenn ich hier und da mal
ein Fehler mache ;)

Gut nun zu meinem Problem.
Wir haben von unserem Prof die Aufgabe bekommen TicTacToe zu programmieren mit einer
grafischen Oberfläche.
Es reicht, wenn man Spieler 1 gegen Spieler 2 spielen kann. Eine KI ist nur in der Zusatzaufgabe gefordert.
Mein erster Wunsch ist es, dass meine JButtons erst erstellt werden, wenn ich im Menü
auf "Player vs. Player" geklickt habe.
Ich bräuchte dem entsprechen was für meinen ActionListener.
Freue mich sehr auf eure Hilfe.
Beste Grüße cizzo

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TicTacToe {

	public static void main(String[] args) {
		TicTacToeFrame frame = new TicTacToeFrame();		
		frame.setSize(400, 400);
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setResizable(false);
		frame.setVisible(true);
		frame.setTitle("Tic Tac Toe");		
	}
	
	public static class TicTacToeFrame extends JFrame
	{

		public TicTacToeFrame()
		{
			JMenuBar menu = new JMenuBar();
			JMenu spiel = new JMenu("Spiel");
			JMenuItem pvp = new JMenuItem("Player vs. Player");
			spiel.add(pvp);
			pvp.addActionListener(menuListener);
			JMenuItem pvc = new JMenuItem("Player vs. COM");
			spiel.add(pvc);
			pvc.addActionListener(menuListener);
			JMenuItem close = new JMenuItem("Schließen");
			spiel.add(close);
			close.addActionListener(menuListener);
			menu.add(spiel);
			setJMenuBar(menu);
		}
		ActionListener menuListener = new JMenuListener();
		Container contentPane = getContentPane();
		JButton b[]  = new JButton[9];

		public class JMenuListener implements  ActionListener
		{
			public void actionPerformed(ActionEvent e)
			{
				if (e.getActionCommand().equals("Player vs. Player")){
					System.out.println("Test Knopp 1");
				}

				if (e.getActionCommand().equals("Player vs. COM")){
					System.out.println("Test Knopp 2");

				}

				if (e.getActionCommand().equals("Schließen")){
					System.exit(0);
				}
			}
		}
	}

	public static class TicTacToePanel extends JPanel
	{  
		JButton b[]  = new JButton[9];

		public TicTacToePanel()
		{  
			setLayout(new BorderLayout());
			panel = new JPanel();
			panel.setLayout(new GridLayout(3, 3));

			//Hier werden die Knöppe erstellt			
			for(int i=0; i<b.length; i++){
				b[i] = new JButton("");
				b[i].addActionListener(knopp);
				panel.add(b[i]);
			}
			add(panel, BorderLayout.CENTER);
		}
		
		public class ButtonListenerPVP implements ActionListener
		{			
			public void actionPerformed(ActionEvent e)
			{  
				if(e.getSource() == b[1]){
					System.out.println("Bla");
				}				
			}
		}
		
		public JPanel panel;
		ActionListener knopp = new ButtonListenerPVP();
		boolean winnerBluse = false;
		boolean winnerRED = false; 
	}
}
 

cizzo

Mitglied
ja, ich hätte es hervorheben sollen ;)
Ich bin Moment auf der Suche, nach einer Möglickeit, die JButtons erst erstellen zu lassen,
wenn man im Menü auf "Player vs. Player" geklickt hat.
Gruß
 
Zuletzt bearbeitet:

Nicer

Bekanntes Mitglied
Na wie wäre es mit :

Java:
JButton b1 = new Button();
b1.setSize(x,y);
b1.setLocation(x,y);
b1.setVisible(false);

JButton b2 = new Button();
b2.setSize(x,y);
b2.setLocation(x,y);
b2.setVisible(false);

...

und dann im ActionListener des PvP Buttons einfach :

Java:
b1.setVisible(true);
b2.setVisible(true);

...

in diesem fall erstellst du die buttons mit der Klasse TicTacToeFrame ( oder wie die bei dir heisst ), versteckst sie direkt nach dem erzeugen und machst sie dann sichtbar wenndu den PvP button klickst
 
Zuletzt bearbeitet:

cizzo

Mitglied
Code:
for(int i=0; i<b.length; i++){
				b[i] = new JButton("");
				b[i].addActionListener(knopp);
				panel.add(b[i]);
				b[i].setVisible(false);
			}

Ich hab deine Idee mal so in die Schleife eingefügt.


Mein ActionListener sieht jetzt so aus:

Code:
if (e.getActionCommand().equals("Player vs. Player")){
					for(int i=0; i<b.length; i++){
					b[i].setVisible(true);
					}					
				}


Mein Problem ist jetzt nur, dass er die Variable b nicht kennt.
Sie wird in:
Code:
public static class TicTacToePanel extends JPanel
	{  
		JButton b[]  = new JButton[9];
erstellt.
 

Nicer

Bekanntes Mitglied
kann ein JButton mit einem Array verbunden werden ( also viele Einträge haben ) ??

Ausserdem weissich nicht wie du mit ner schleife die positionen setzen willst , denn die sind ( logischerweise ) bei jedem spielbutton anders...

PS : ich habe in der zeit vom Letzen bis zu Diesem Post ein Komplettes TicTacToe mit PvP modus , ergebnisanzeige , random Startspieler usw programmiert , ich schick dir den code mal per PM , dassdu verstehst wie ich das oben gemeint hab.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
TicTacToe Java Basics - Anfänger-Themen 6
C TicTacToe Java Basics - Anfänger-Themen 2
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
A Überprüfung für unentschieden in TicTacToe Java Basics - Anfänger-Themen 10
A Überprüfung in TicTacToe Java Basics - Anfänger-Themen 5
A TicTacToe Java Basics - Anfänger-Themen 8
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
J TicTacToe Java Basics - Anfänger-Themen 2
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
shiroX Input/Output TicTacToe-Savegame Java Basics - Anfänger-Themen 1
shiroX Methoden Mögliche Spielstände bei TicTacToe Java Basics - Anfänger-Themen 14
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
P TicTacToe Problem mit Win Methode Java Basics - Anfänger-Themen 4
Z TicTacToe mit Array Java Basics - Anfänger-Themen 6
T TicTacToe Spielfeld Java Basics - Anfänger-Themen 7
B TicTacToe Java Basics - Anfänger-Themen 2
S TicTacToe Java Basics - Anfänger-Themen 4
I TicTacToe blöde KI Java Basics - Anfänger-Themen 2
I Fehler bei TicTacToe Java Basics - Anfänger-Themen 108
G TicTacToe KI Java Basics - Anfänger-Themen 15
C Problem TicTacToe Java Basics - Anfänger-Themen 6
P 3D TicTacToe - Unentschieden Java Basics - Anfänger-Themen 5
G Tictactoe Java Basics - Anfänger-Themen 9
B TicTacToe Programmieren Java Basics - Anfänger-Themen 2
M Einfaches TicTacToe Programm Java Basics - Anfänger-Themen 19
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
W TicTacToe - Porblem mit dem Code.. Java Basics - Anfänger-Themen 5
H Hilfe bei TicTacToe mit jEdit Java Basics - Anfänger-Themen 7
0 TicTacToe, Problem mit den Checkbox-Aktionen Java Basics - Anfänger-Themen 6
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2
kulturfenster Problem bei TicTacToe Java Basics - Anfänger-Themen 11
P Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge Java Basics - Anfänger-Themen 3
H TicTacToe: Zeit zwischen Zügen lassen Java Basics - Anfänger-Themen 9
M TicTacToe Java Basics - Anfänger-Themen 7
H TicTacToe-geeignete Klassenhierarchie Java Basics - Anfänger-Themen 3
G Hilfe bei TicTacToe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben