vier gewinnt programmieren - aber wie

Status
Nicht offen für weitere Antworten.

TF135

Mitglied
Ich programmiere "4 gewinnt" mittels GUI ... im Netz habe ich ein Beispiel gefunden, allerdings funktioniert es bei mir nicht:

Einfaches Vier Gewinnt mit GUI - Java - Coder Forum

In der Comandozeile von Eclipse steht FOO und das wars dann.

Von Abschreiben hat ma ja noch nie viel gelernt, also hab ich mich selber ans Werk gemacht.
Mein Spiel soll die Dimension 10 haben - sprich 10 x 10 Felder = 100
Ich könnte jetzt sinnfrei 100 Buttons anlegen ... Button1, 2. Aber sicher gibt es elegantere Lösungen. Mir schwebt ein Array von Buttons vor - geht das, wenn ja wie oder macht man das vielleicht ganz anders, besten Dank vorab.
 

Schandro

Top Contributor
Von der Syntax her geht das so:
JButton[][] area = new JButton[10][10];
Du musst aber noch jedem Element im Array ein neuen JButton zuweisen, automatisch werden die nicht erstellt, das Array stellt nur einen Haufen Referenzen/Varaiblen bereit die am Anfang noch alle auf "null" zeigen.
 

Marco13

Top Contributor
Code:
private JLabel[] field = new JLabel[42];
Ausgerechnet 42. Klassisch.

Die Frage "wie macht man das" kann nicht benatwortet werden - höchstens mit Gegenfragen wie "Wie viel Arbeit willst du dir machen?". Ein Array von Buttons wäre eine einfache (nicht schöne, aber einfache) Option.
Code:
JButton buttons[][] = new JButton[10][10]; // Auch klassisch ;)
...
buttons[0][2] = new JButton("X");
buttons[0][2].addActionListener(...)
 

TF135

Mitglied
also - wie immer - man möchte sich so wenig wie möglich arbeiten machen, ich mir auch allerdings habe ich das Problem, daß mir die Java-Welt sehr fremd ist und dann wieder gilt, jede Lösung die einem einfällt ist eine gute Lösung.

Erst dachte ich (die max. Dimension ist 15) ich tippe 225 Buttons - wird einer davon gedrückt male ich entweder ein x oder o rein und deaktiviere ihn (irgendwie). Das is mal sehr häslich und ich sitze vermutlich Jahre ... da kam ich auf die Idee mit Array ... irgendwie ist das auch ned viel schöner, aber da ihr mit Java mehr zu Streich kommt wie ich, fällt euch sicher was vielleicht total triviales ein.
 

Schandro

Top Contributor
Erst dachte ich (die max. Dimension ist 15) ich tippe 225 Buttons - wird einer davon gedrückt male ich entweder ein x oder o rein und deaktiviere ihn (irgendwie). Das is mal sehr häslich und ich sitze vermutlich Jahre ... da kam ich auf die Idee mit Array ... irgendwie ist das auch ned viel schöner,
WAS??

Du vergleichst grade 10.000 extrem hässliche undynamische Codezeilen
mit ca. 100 dynamischen Zeilen.

Lies dich mal in das Thema Arrays (vllt. sogar Collections) ein bevor du sowas behauptest.

Eine viel bessere Lösung als Arrays/Collections gibts für sowas nicht.
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
Erst dachte ich (die max. Dimension ist 15) ich tippe 225 Buttons - wird einer davon gedrückt male ich entweder ein x oder o rein und deaktiviere ihn (irgendwie). Das is mal sehr häslich und ich sitze vermutlich Jahre

Ja würdest du vermutlich :D .. aber wenn du es erstmal mit Arrays probieren möchtest, diese 225 Tipper kannst bequem in einer Schleife, bzw soltlest du dann auch, umsetzen.
Java:
public class GUI implements ActionListener {

private static final int DIMENSION = 10;

...

private void initGUI() {
    ...
    int numButtons = DIMENSION * DIMENSION;

    for (int i=0; i<numButtons; i++) {
        buttons[i] = new JButton();
        buttons[i].addActionListener(this);
    }

    //verteilen der buttons auf der GUI und sonstiges
}

public void actionPerformed(ActionEvent e) {
    JButton b = (JButton) e.getSource();

    if (spieler1isDran)
        b.setText("X");

    if (spieler2isDran)
        b.setText("O");

    b.setEnabled(false);
}

}//GUI

so in etwa würden dann zichtausende buttons entstehen können, oder eben nur einer, deine Wahl :D

ob der code da grad so 100% wasserdicht ist weiss ich nicht, is grad einfach nur runtergetippt
 
Zuletzt bearbeitet:

TF135

Mitglied
@schandro

klar ist das Vorgehen mit Array schon viel viel besser, also zig Buttons zu Fuß zu generieren, aber ich war mir halt nicht sicher obs vielleicht noch nen viel eleganteren Weg gibt

@digga1984

der Ansatz leuchtet mir ein ... damit kann ich mal probieren, wobei im Moment klemmts schon viel früher, aber der Tag ist ja noch jung
 

TF135

Mitglied
so da bin ich wieder und schaue recht ratlos, ich habe das programmiert:

int numB = DIM * DIM; // Anzahl der Buttons errechnen
Button[] buttons = new Button[DIM]; // erzeugen von Buttons mit Anzahl DIM

for (int i = 0; i < numB; i++)
{
//buttons = new Button(""); // Button ohne Inhalt erzeugen
}

daß ich noch keinen Button sehen kann ist mir klar, ABER sobald ich den Teil in der for-Schleife verwende, verschwinden meine bisherigen Labels auf meinem Fenster, allerdings ist mir ziemlich unklar wieso?
 

Schandro

Top Contributor
sobald ich den Teil in der for-Schleife verwende, verschwinden meine bisherigen Labels auf meinem Fenster
Das kann nicht sein, da du in der auskommentierten Zeile nur ein paar Instanzen von Button erstellst und sie im Array abspeicherst. Das dürfte absolut keine Auswirkung auf irgendwas anderes haben.

Schreib doch mal ein passendes KSKB.^^
 

diggaa1984

Top Contributor
Kleines selbst-kompilierbares Beispiel war das glaube ^^

also ne klasse die ohne zu zucken compilierbar ist, ohne Exception ohne nix, welche den Fehler verdeutlicht.

und ich geben Schandro mal recht :D

edit2: du musst aber auch soviel Platz im array reservieren wie numB angibt. bei ner Dimension von 10 reservierst du 10 Plätze statt 100, aber ändert nix an Labels oder dergleichen, müsste dir nur ne IndexOutOfBounds-Exception geben, was im blödesten Fall abgefangen wird ohne was zu machen, und du NIX mehr dem Fenster addest was unterhalb der for-schleife geschrieben wurde. Wenn da Labels stehen, dann is klar das die net sichtbar werden ^^
 
Zuletzt bearbeitet:

TF135

Mitglied
Schande über mein Haupt - wenn man alle dem genug Speicher reserviert, dann hat ma hinterher au keine Probleme:

-> richtig: Button[] buttons = new Button[numB];

Mal gucken was ich noch so für Mist baue, bis wenigstens alle Felder auf m Schirm sind :rtfm:
 

TF135

Mitglied
so da bin ich wieder, ich "Spezialist" :oops:

mein Programm sieht bisher so aus:

public class StartFW extends JFrame
{
static final long serialVersionUID = 1L; //

public StartFW(String title)
{
super(title); //
setSize(500, 675); // feste Fenstergröße
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true); // sichtbar

add(new TextFW()); // Beschriftungen aufrufen

add(new PlayerA()); // Spieler A - Steinwahl

add(new DimFW()); // Wahl der Dimension
}

public static void main (String args[])
{
new StartFW ("4 gewinnt - Spieler A vs. Spieler B");
}
}

wenn ich das ausführe, sehe ich NUR was in DimFW() passiert - ein Choicefeld, TextFW() und PlayerA() funktionieren, werden aber nur sichtbar, wenn die Aufrufe danach ausmaskiere. Für euch is das wahrscheinlich logisch - öhm für mich nicht. Wie bringe ich es fertig, daß die vorherigen Aufrufe erhalten bleiben und nicht immer "überschrieben" werden?
 

Marco13

Top Contributor

TF135

Mitglied
Jahre und viele Sorgenfalten später ...

ich habe im default-Fall ein Button-Array (eindimensional) von 100 Elementen, mühsam habe ich es au hinbekommen den entsprechenden Button einzufärben wenn er gedrückt wird. Jetzt wollte wissen welche No der Knopf hat also z.B. Button[12], dazu wollte ich:

int p;
p = (JButton)e.getSource(); // weißt p die No des gedrückten Button zu

so meckert Eclipse (Type mismatch: cannot convert from JButton to int), bestimmt au zurecht ... und irgendwie hab ich hier gelesen, daß das Button-Model das gar ned könnte, suche ich also eine Lösung die es so nicht gibt oder liegt die Lösung zum greifen nahe?
 

TF135

Mitglied
Java:
for(int i=0; i < buttons.length; i++)
		{
			if (e.getSource() == buttons[i])
			{
				System.out.println(i);
			}
		}

so hab ich das gemacht und es gibt mir die No des richtigen Knopfs aus, damit komm ich weiter ... aber das mit system.out.println geht eigentlich anders oder, Stichwort Formatierung
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Vier gewinnt programmieren, Klick-Reihenfolge Spiele- und Multimedia-Programmierung 2
T Vier gewinnt programmieren Spiele- und Multimedia-Programmierung 9
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
C Vier Gewinnt Spiel Programmiertipp Spiele- und Multimedia-Programmierung 11
C Vier Gewinnt Problem mit Ordnerstruktur Spiele- und Multimedia-Programmierung 2
C Vier Gewinnt Spiele- und Multimedia-Programmierung 7
M Eine Art "Vier Gewinnt" Spiele- und Multimedia-Programmierung 5
A Vier-Gewinnt-Problem Spiele- und Multimedia-Programmierung 11
Y Applet für "Vier Gewinnt": Welche Klassen verwende Spiele- und Multimedia-Programmierung 10
C Vier gewinnt 3D Spiele- und Multimedia-Programmierung 16
R Vier gewinnt: Bitte testen Spiele- und Multimedia-Programmierung 25
M Vier Gewi nnt - Sieger ermitteln Spiele- und Multimedia-Programmierung 9
P Fünf Gewinnt Spiele- und Multimedia-Programmierung 9
S 4 Gewinnt Spiele- und Multimedia-Programmierung 1
F 4 Gewinnt - Code wird ignoriert Spiele- und Multimedia-Programmierung 7
S Problem mit 4 gewinnt(MinMax Algorithmus) Spiele- und Multimedia-Programmierung 2
G 4 gewinnt - Kritik/Verbesserungsvorschläge/etc. Spiele- und Multimedia-Programmierung 3
C 4 gewinnt KI Spieler gegen Computer Spiele- und Multimedia-Programmierung 1
H Tic Tac Toe / 3 Gewinnt OHNE Applet Spiele- und Multimedia-Programmierung 9
D 4 gewinnt Projekt Spiele- und Multimedia-Programmierung 2
B 4 Gewinnt Problem Spiele- und Multimedia-Programmierung 5
N 4 Gewinnt fertig (Kritik, Fragen etc. erwünscht) Spiele- und Multimedia-Programmierung 29
A 4 gewinnt Spiele- und Multimedia-Programmierung 4
S Welche Klassen für ein 4 Gewinnt? Spiele- und Multimedia-Programmierung 6
M BlueJ Schach Steuerung programmieren Spiele- und Multimedia-Programmierung 28
ItundMathe1994 TicTacToe Spiel programmieren Spiele- und Multimedia-Programmierung 2
N Escape the Room - Spiele Apps programmieren Spiele- und Multimedia-Programmierung 14
Laaalo Tic tac toe programmieren Spiele- und Multimedia-Programmierung 4
mihe7 Wie man einfache Spiele programmieren kann Spiele- und Multimedia-Programmierung 23
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
N Minecraft Spigot-Plugin | Schusswaffe programmieren Spiele- und Multimedia-Programmierung 3
A Programmieren eines Memorys mit Java (in Eclipse) Spiele- und Multimedia-Programmierung 5
A DoodleJump programmieren: Kollisionsabfrage Spiele- und Multimedia-Programmierung 6
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
K Android Spiel Programmieren Spiele- und Multimedia-Programmierung 6
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
J HDMI Ausgänge mit Java programmieren? Spiele- und Multimedia-Programmierung 18
L Hörtest programmieren und implementieren Spiele- und Multimedia-Programmierung 2
E Möchte Jump and Run programmieren Spiele- und Multimedia-Programmierung 2
E Möchte Spiel Programmieren Spiele- und Multimedia-Programmierung 7
M Gesellschaftsspiel Mühle in Java programmieren Spiele- und Multimedia-Programmierung 3
M Textbasiertes Spiel programmieren Spiele- und Multimedia-Programmierung 4
M Logitech G15/G510 Applets programmieren Spiele- und Multimedia-Programmierung 3
F Spiel ähnlich wie SimCity/o.ä programmieren Spiele- und Multimedia-Programmierung 5
O Rundenbasiertes strategiespiel programmieren Spiele- und Multimedia-Programmierung 2
K 2D Blockade Programmieren Spiele- und Multimedia-Programmierung 3
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
J Mod Loader programmieren Spiele- und Multimedia-Programmierung 11
I Hitpoints/Lifepoints programmieren, wie? Spiele- und Multimedia-Programmierung 7
L Minecraft Minecraft Plugin programmieren (Craftbukkit 1.7.2) Problem Spiele- und Multimedia-Programmierung 4
B Spiel Programmieren, die Anfänge Spiele- und Multimedia-Programmierung 6
wolfgang63 Einfachen Soundgenerator programmieren Spiele- und Multimedia-Programmierung 1
J UNO Programmieren Spiele- und Multimedia-Programmierung 4
F Bot Programmieren Spiele- und Multimedia-Programmierung 10
N Game GUI Programmieren Spiele- und Multimedia-Programmierung 16
1 Minecraft Minecraft Plugins programmieren Spiele- und Multimedia-Programmierung 6
T MiniCraft - selbst nach Programmieren Spiele- und Multimedia-Programmierung 25
A Klickgame ala "Harveys neue Augen" oder "Edna bricht aus" in Java programmieren... Fragen zu Kleinig Spiele- und Multimedia-Programmierung 8
S Spiel Programmieren (Kreise treffen) Spiele- und Multimedia-Programmierung 5
F wie richtig spiele programmieren ? Spiele- und Multimedia-Programmierung 19
C Hinterteil von Snake programmieren Spiele- und Multimedia-Programmierung 11
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
B Kartenspiel Leben und Tod programmieren Spiele- und Multimedia-Programmierung 11
N Stimme programmieren Spiele- und Multimedia-Programmierung 11
Sebi Mit Java Online games programmieren ? Spiele- und Multimedia-Programmierung 8
N Labyrinth programmieren/Denkhilfe Spiele- und Multimedia-Programmierung 3
data89 Spiel mit JMonkey programmieren Spiele- und Multimedia-Programmierung 6
O Programmieren von "Familienduell" Spiele- und Multimedia-Programmierung 3
A Wie JAVA Webcam Client programmieren? Spiele- und Multimedia-Programmierung 11
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
B Problem beim Programmieren von 4Gewinnt Spiele- und Multimedia-Programmierung 5
A Programmieren eines Bruchrechners Spiele- und Multimedia-Programmierung 3
K Malefiz programmieren - Frage zu den einzelnen Spielfeldern Spiele- und Multimedia-Programmierung 5
G wer möchte mit mir risiko programmieren? Spiele- und Multimedia-Programmierung 7
B Problem beim Programmieren Von Mühle Spiele- und Multimedia-Programmierung 6
N Sinus Welle programmieren! Spiele- und Multimedia-Programmierung 4
J Gesellschaftsspiele programmieren Spiele- und Multimedia-Programmierung 8
P 2D Spiel mir drehbaren Bildern (Sprites) programmieren Spiele- und Multimedia-Programmierung 10
U Ball programmieren Spiele- und Multimedia-Programmierung 26
A "Wegnehm-Spiel" programmieren, Tipps + Links? Spiele- und Multimedia-Programmierung 8

Ähnliche Java Themen

Neue Themen


Oben