Rohfassung von Spielbrett über Main ausgeben

Cerberus81

Mitglied
Hallo zusammen.

Ich studiere noch im ersten Semester Medieninformatik und habe mit Java noch einige Probleme.
Nun sollen wir als Abschlussarbeit für das allwöchentliche Praktikum bis Ende Januar ein 4Gewinnt Spiel mit Computergegner programmieren.

Ich habe mir überlegt, bevor ich mit irgendwelchen Dingen wie Spielregeln, oder KI beginne, ersteinmal das generelle Spielfeld darzustellen, welches auf der X-Achse 7 Felder und auf der Y-Achse 6 Felder umfassen soll.
Nach ein wenig googeln habe ich hierfür eine Hilfestellung gefunden, wie man das Ganze am besten anhand einer verschachtelten Schleife angehen kann.
Was diese Schleife macht, verstehe ich auch so soweit. Nun habe ich sie bloß ein wenig geändert und würde sie mir gerne auf der Konsole ausgeben lassen.
Nun stehe ich wieder einmal vor dem Problem, dass ich nicht weiß, wie die Mainmethode den Anfang des bis hierhin geschriebenen Spielbrettes ausgibt.
Der Code sieht folgendermaßen aus:

Java:
public class viergewinnt {


                                    // Definition des Spielfeldes
                                    // und der Spieler als CV

             private static final char SENKRECHT = 7;
             private static final char WAAGERECHT = 6;
             private static char [][] spielfeld = new char [7][6];
             private static String spieler;

public static void zeichnenSpielFeld(char[][] spielfeld) {

    int y = WAAGERECHT;
        do {
            y--;
            System.out.print("|");
            for(int x = 0; x < SENKRECHT; x++){
                System.out.print(" "+ spielfeld[x][y] +" |");
            }
            System.out.println();
        } while(y > 0);
}
    public static void main(String[] args) {

        
    }
}

Meine Frage ist eigentlich nur: Was schreibe ich jetzt in die Main Methode, um mir das erste Grundgerüst des Feldes schon einmal anzeigen lassen zu können?
 

Spin

Top Contributor
Moinsen:)

Witzig, wie man doch gleich anfangen will ein Spiel zu programmieren. Euphorie ist dabei wohl der beste Antrieb :)

Du hast also einen Code gefunden und möchtest diesen in der main ausführen?
Mhh, würde doch einfach vorschlagen, deine Methode dort mal aufzurufen.

Diese ist static und void. Na denn , einfach Klassennamen (Punkt) und Methode.

Java:
public static void main(String[] args) {
 
        
viergewinnt.zeichnenSpielFeld(...);

    }


1. Klassenname immer mit großen Anfangsbuchstabe ;)
2. Warum ist deinen Methode static?
3. Warum arbeitest du mit do / while?


Najut , viel spass , noch :) Siehe oben , so kannste das ding aufrufen.

Hatte auch mal viergewinnt gemacht , nur ein wenig anders ;)

grüße
 

Cerberus81

Mitglied
Hallo.

Naja, dafür, dass wir erst 10 Wochen lang Vorlesung gehabt haben, finde ich das auch ein wenig heftig.
Aber ohne die Abschlussaufgabe kein Testat und ohne Testat keine Zulassung zur Prüfung.

Also, ich will hier keine Codes aus dem Internet abschreiben. Ich suche momentan erstmal nur nach ein paar Beispielen, um bessere Übersicht zu gewinnen. Daher wird sich auch an der Schleife noch etwas ändern, da ich sie selbst auf den ersten Blick ziemlich umständlich finde.

Aber es hilft mir schonmal zu wissen, wie ich so einzelne Methoden, die noch zu keinem größeren Ganzen gehören, überhaupt darstellen kann.

Danke dir für deinen Tipp!

EDIT: Static ist sie doch, damit die Variablen für das Spielfeld nicht doppelt vorhanden sein können, oder sehe ich das falsch?
 

Landei

Top Contributor
4. Warum sind WAAGERECHT und SENKRECHT chars? char ist für Zeichen gedacht, auch wenn man (C++-Abstammung sei dank) damit rechnen kann. Normal wäre int, byte ginge auch noch.
 

Cerberus81

Mitglied
Huch, überschnitten.

Naja, wenn ich das Spielfeld dann aus den Werten anlege, wird das doch später mit Symbolen für die Spielsteine gefüllt. Muss das dann nicht char sein?
 

Spin

Top Contributor
Also Tipp gebe ich dir UML ;)
Modellier doch einfach mal dein Viergewinnt.

Dazu gehören Beispielsweise abstracte Klassen oder auch interfaces.
Würde halt damit anfangen mir alles aufzuschreiben , was mir einfällt.

Neben dem ein Tip:

Viergewinnt gehört zu den Regulären Spielen:

Ein Spiel hat damit in einer Spielsituation immer endlich viele erlaubte Züge.
Für eine Spielsituation kann erfragt werden, wer am Zuge ist.
Nach einen bestimmten Zug, lässt sich eine neuer Spielzustand berechnen.
Das Spiel ist vorbei, wenn kein Zug mehr möglich ist oder jemand gewonnen hat.
Und es kann für einen Spieler bewertet werden, ob die Situation gut oder schlecht für ihn ist.


Denke immer an den Punkten ;)
 

sambalmueslie

Bekanntes Mitglied
hm wie wäre es, wenn du mehrerer Klassen machst

Board(Spielfeld)

BoardView.java -> Zeigt das Spielfeld an (in dem einfachen Fall ausgabe per ASCII)
BoardModel.java -> Speichert die Daten für das Spielfeld
BoardController.java -> Steuert das Spielfeld (hier kannst du sagen, Roter Stein auf A4 oder so)

Game

GameController.java -> Steuert das Spiel
GameModel.java -> Speichert das Spielfeld und Spielerinformationen, die Daten für das Spiel halt
GameView -> Das Fenster für das Spiel (wird erst mal nicht gebraucht)

Aus Main heraus erstellst du einen GameController und der erzeugt alles andere :)
bzw steuert die anderen Controller an.

Gruß Oli
 

Cerberus81

Mitglied
Eure Tipps helfen mir grad wirklich weiter. Danke für die Mühe!
Ich setze mich jetzt nocheinmal davor. Diese viel zu lange Schleife werde ich wohl als erstes kippen.
 

Spin

Top Contributor
Mal gefragt: Soll das Ganze auf der Konsole geschehen oder in eine Fenster?

MVC ist für so ein kleines Projekt übertrieben , lieber Olli ;)
Außer man bleibt lediglich bei der Bennung der Klassen ;)
 

Cerberus81

Mitglied
Nein, also wirklich nur ganze primitiv auf der Konsole. Ohne Grafik etc.

Einfach nur mit ein paar Strichen das Spielfeld darstellen und für die Spielsteine zum Beispiel "x" und "o".

Ich hatte wie gesagt erst zehn Vorlesungen und auch keine Vorkenntnisse.

Wir sollen also mit 2D Arrays, Schleifen, Instanz-und Klassenvariablen, einzelnen einfachen Methoden, Klassenvererbung etc. arbeiten.

Alles noch auf ganz niedrigem Niveau.
 

sambalmueslie

Bekanntes Mitglied
Mal gefragt: Soll das Ganze auf der Konsole geschehen oder in eine Fenster?

MVC ist für so ein kleines Projekt übertrieben , lieber Olli ;)
Außer man bleibt lediglich bei der Bennung der Klassen ;)

Also erst mal !!!! oli schreibt man mit einem "L" ;)

und dann zum eigentlichen :) .. ich find das sauber und ordentlich .. und warum nicht auch bei was kleinem sauber arbeiten :)
hilft einem, wenn es dann auch mal bisschen größer werden sollte ;)

edit:

aber sonst geb ich dir recht, erst mal UML-Bildchen malen und sich überlegen was man wo braucht :)

@cerberus
das dauert am anfang leider immer ein bisschen und du musst dich gedulden, bis du wirklich was "siehst" :) darum erst mal nachdenken und bisschen planen und dann bauen und am ende alles anders machen :D..
man nennt es lernen :)
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
Lieber mvc in einem kleinen Projekt lernen als bei einem großen sowieso auf die Schnauzue zu fliegen ;-)

Naja, dafür, dass wir erst 10 Wochen lang Vorlesung gehabt haben, finde ich das auch ein wenig heftig.
mhn da bin ich anderer meinung.. if, for, arrays, funktionen... mehr braucht man nicht...

zu deiner zeichnenSpielFeld.. ich würde da auch keine do while nehmen.... while nimmt man eher, wenn man nichit weiß wie oft man etwas macht...
Java:
public class Test {

   public static void main(String[] args) throws ParseException {
      char[][] spielfeld = 
            {{'a', 'b', 'c'}, 
            {'d', 'e', 'f'}};
      zeichnenSpielFeld(spielfeld);

   }
   
   public static void zeichnenSpielFeld(char[][] spielfeld) {
      for(int y =0; y<spielfeld.length; y++){
         for(int x = 0; x<spielfeld[y].length; x++){
            System.out.print(" "+ spielfeld[y][x] +" |");
         }
         System.out.println();
      }
      
  }
}
das sieht doch sauberer aus...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Spielbrett programmieren: Datenstruktur Java Basics - Anfänger-Themen 3
C Input/Output Ein Spielbrett auf Konsole ausgeben Java Basics - Anfänger-Themen 2
K Spielbrett kopieren Java Basics - Anfänger-Themen 4
G Stopp Feld programmieren für Spielbrett Java Basics - Anfänger-Themen 8
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
B großzügiges Pixelraster über Bildschirm legen Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
S Java über SSH Java Basics - Anfänger-Themen 13
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
W char über die Konsole? Java Basics - Anfänger-Themen 7
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
A Array Ansprache einer Zelle über Punktnotation? Java Basics - Anfänger-Themen 3
O Java über cmd benutzen ? Java Basics - Anfänger-Themen 5
J Variablenzugriff über string Java Basics - Anfänger-Themen 18
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
M Java Kompilieren über Package grenzen hinaus Java Basics - Anfänger-Themen 4
M Arrays mit mehreren Werten über JOptionPane initialisieren Java Basics - Anfänger-Themen 12
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
M Mehrere Datenbank zugriffe über tomee.xml regeln? Java Basics - Anfänger-Themen 1
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
B OOP-Anfänge über CMD + Editor Java Basics - Anfänger-Themen 30
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
T DoWhile Schleife über mehrere Mothoden Java Basics - Anfänger-Themen 5
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
S Variablen Klassenvariable über Objekt aufrufen Java Basics - Anfänger-Themen 16
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
I GUI über Eclipse oder NetBeans Java Basics - Anfänger-Themen 23
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
O Methode über Leerzeichen Java Basics - Anfänger-Themen 13
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
J MySQL Datumsabfrage über ResultSet in Java-Servlet Java Basics - Anfänger-Themen 4
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
R Keine Verbindung zu MySql über Netbeans Java Basics - Anfänger-Themen 15
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
G Arraynamen über eine Schleife ansprechen Java Basics - Anfänger-Themen 4
S Bild über JButton legen Java Basics - Anfänger-Themen 3
temi Druckeransteuerung über ESC-Sequenz Java Basics - Anfänger-Themen 21
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
M Java Programm über Batch-Datei ausführen Java Basics - Anfänger-Themen 1
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
P Threads Prozess kann nicht über die GUI gestartet werden Java Basics - Anfänger-Themen 8
T CMD über Java-Programm aufrufen Java Basics - Anfänger-Themen 2
X Finde die Files über FTP nicht Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
P Programm kann über CMD nicht ausgeführt werden Java Basics - Anfänger-Themen 2
E Frage über Speichern und Ausgabe Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
X Betriebssytem interne Consolen Commands über Java starten Java Basics - Anfänger-Themen 2
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
A .jar über Webbrowser aufrufen Java Basics - Anfänger-Themen 2
D Ausgabe über JLabel Java Basics - Anfänger-Themen 12
L Erste Schritte Arrays über eine for Schleife ansprechen. Java Basics - Anfänger-Themen 6
MiMa Datentyp Short Wert zuweisen über Methode Java Basics - Anfänger-Themen 2
K Objekt soll Anwendung über Änderungen informieren Java Basics - Anfänger-Themen 8
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
F Gewichteter Mittelwert über eine Zeitperiode Java Basics - Anfänger-Themen 3
B Schleife über einen Container Java Basics - Anfänger-Themen 7
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
T jar von stick aus über jre auf stick starten Java Basics - Anfänger-Themen 6
L Iterieren über ArrayList Java Basics - Anfänger-Themen 1
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben