Schachspiel programmieren mit BlueJ

ice-breaker schrieb:
Natürlich, aber sie scheinen ja gar keine bis so gut wie keine Vorkenntnisse zu haben. Ob diese nun wirklich nicht vermittelt wurden (seine Aussage) oder die Studenten eben nicht aufgepasst haben, kann keiner wissen.

Ist auch nicht wirklich relevant, finde ich. An der Uni darf erwartet werden, dass man selbstständig gewisse Dinge erarbeitet.

ice-breaker schrieb:
Und bei komplett fehlenden Vorkenntnissen ist es mit einer Swing-GUI dann doch eine verdammte Menge an Arbeit. Swing ist nunmal nicht einfach.

Was benötigt man denn an Swing-Code um die Aufgabe zu lösen? Du musst ein Frame und darauf einige Bilder anzeigen. Für die Feldauswahl zeichnest Du ein Rectangle. Die Bilder müssen geladen werden. Und noch ein bißchen Mouse-Handling. Sehr überschaubar, würde ich meinen. In die Tiefen von Swing muss hierfür niemand eintauchen. Interessant ist vor allem die Spiellogik.

ice-breaker schrieb:
Und das wir keinen Tag benötigen, ist doch irrelevant. Wir sind keine Anfänger mehr.

Ich habe das nur angeführt, weil einige Aussagen einen Aufwand vermuten ließen, der innerhalb eines Uni-Projektes nicht zu stemmen ist. Und wie gesagt, der OP redet von einer Gruppe von Studenten, also mindestens drei Leute!

Aber wir schweifen ab. Wenn der OP sich wieder mit konkreten Problemchen melden sollte, können wir gezielt Hinweise geben.
 
soares schrieb:
Ist auch nicht wirklich relevant, finde ich. An der Uni darf erwartet werden, dass man selbstständig gewisse Dinge erarbeitet.

Da muss ich vor dem TE stellen: Bei meiner Hochschule kann man erst dann einigermaßen in Java programmieren, wenn man die ersten zwei Semester hinter sich hat (dann hat man alles Wesentliche wie OO und GUI mal gesehen). Und wenn der TE bisher (so gut wie?) gar nichts über das Programmieren auf dem Lehrplan hatte, dann lernt er das alles auch nicht in 3 Monate Selbststudium im Rahmen eines Projekts. Da kann nur Mist bei herauskommen.

Es ist allerdings die Schuld des TE bzw. seiner Gruppe, dass sie nicht dann auf ein anderes Projekt gewechselt haben, als ihnen die Dimension und Schwierigkeit des Schachprogramms klar wurde.
 
Zuletzt bearbeitet:
Programmieren im Informatikstudium ist ein köstliches Thema :) (studiere nicht Informatik, habe aber viele Informatikgrundkurse gehört und war beim Thema Programmieren schon manchmal sehr amüsiert). Aber darum soll es hier ja nicht gehen...

Ein sehr gute Hilfe in Sachen Swing ist das Tutorial von Oracle selbst (zumindest auf deren Seiten): http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html
Dort gibt es viele Codebeispiele und Erklärung zu den JComponents. Ist auf Englisch.

Und im deutschen noch das Galileo Computing Buch: Java ist auch eine Insel: http://www.iks.hs-merseburg.de/~uschroet/Literatur/Java_Lit/JAVA_Insel/javainsel_17_001.htm
Dort wird auch erklärt, wie in Java vernünftig gezeichnet wird.

Also bevor ihr euch an eine GUI macht, lest dazu Büher oder Links oder fragt jemand persönlich (über ein Forum wird euch niemand Programmieren beibringen können). Vor allen in den ersten Semstern ist es keine Schande zum Prof oder Assistenten zu gehen und um Hilfe zu beten. (Es gibt Profs die sagen: "Oh, es kommt niemand zu meinen Sprechstunden. Dann verstehen die Studenten wohl alles und es ist zu leicht. Also werde ich es mal schwieriger machen.").
Hierbei ist jedoch wichtig konkrete Probleme mitzubringen und nicht zu sagen: "Ich hab keine Ahnung, helft mir". (das gilt auch hier ;) )...
 
Ich hatte Lust zu sehen, ob ich mit meiner Aufwandseinschätzung richtig lag und habe heute abend so ein Schachbrett mal umgesetzt. Hat richtig Spass gemacht! Etwas über 1000 Zeilen (mit Javadoc-Kommentaren und Allman-Brace-Style). Nur die Schach- und Mattbewertung fehlt noch, aber dazu bin ich jetzt zu müde.

Den Code poste ich aus verständlichen Gründen nicht, aber für konkrete Fragen bin ich jetzt im Thema :D

Falls Interesse besteht, kann ich einige Bilder hochladen. Ist grafisch natürlich nicht super aufwändig, aber so zwei, drei Sachen gibt es zu sehen. Eine Upload-Möglichkeit für Screencasts wäre nett!
 
Willst nciht von deinem hohen ross runterkommen @soares ?????

Selbst bei einem Sachspiel Mensch gegen Mensch sind immernoch einige Sachen zu beachten. Nochdazu im ersten Semester.... lol
mein Kumpel is im 3 oder 4 und kann Programmiert wie ......... ^^ von daher.

und ein Tag is sooo schnell rum. alleine bist du dir ein konzept überlegt hast benötigt schon nen tag.... dann muss das Schachspiel noch getestet werden das verschlingt auch mindestens nen halben tag....

@Thread
versucht das ganze doch erstmal auf Konsolenebene aufzuziehn

als Feld benutzt ihr ein 2-dim array

und als übersicht gebt ihr die spielen in ca. dieser vorm aus

Code:
Spieler 1
-----------------------
K   D   T   L   S  B
1   1   2   2   2  8

Spieler 2
-----------------------
K   D   T   L   S  B
1   1   2   2   2  8


Spielfeld
-------------------
   A B C D E F G H
1 T S  L D K L S T
2 B B  B B B B B B
3
4
5
6
7 B B  B B B B B B
8 T S  L D K L S T

Spieler 1 an der reihe:
Figur wahl: A2
Ziehen zu: A3


und dann wird das ganze eben in der neuen Fassung angezeigt

So bekommt ihr erstmal Gefühl fürs Programmieren und die Logik könnt ihr dann später weiterverwenden.


Meiner ansicht liegt hier auch ein Problem im Studium wie will man ohne Programmierkentnisse was programmieren. Meiner meinung nach müsste am Anfang ein Grundkurs in C++. Erst ohne OOP dann mit OOP. Und dann kann man mit Java/C# oder was auch immer beginnen.



Bei Fragen kannst dich gerne per PN melden.
Tobi
 
Zuletzt bearbeitet:
wenn man ein schachprogramm (auch wenn es nur mensch vs mensch ist) schreiben will, sollte man sich erstmal mit dem spiel selber auseinanderwsetzen.


ueber folgendes soltet ihr euch informieren:

sonderzuege
-rochade(klein/gross)
-en passant
-bauernumwandlung

"unentschieden" beim schach
- remis (stichwort: zugwiederholung)
- patt

zuggenerator ist bei vielen dingen hilfreich auch wenn es nur human vs human ist.

wenn man all diese probleme geloest hat, kann man sich um die darstellung kuemmern. wuerde es aber auch so wie Xetoxyc machen. grosse buchstaben = weiss,
kleine buchstaben = schwarz
 
@protossgamer
Ich weiß, du willst nur helfen, aber das vorrangige Problem ist hier nicht, welche Arten von Züge es gibt.
Buchstabe_A schrieb:
Ich habe bei unserem Schachspiel das Problem, das ich nicht in der Lage bin, den Klassen Bauer, König, Dame etc. ein eigenes Bild zuzuweisen.
Kann mir irgendjemand sagen, wie ich der Klasse sage, wo sie sich das Bild herholt, also wie sie automatisch den Pfad zu dem Bild findet.
Außerdem verstehe ich nicht, wie ich der Klasse überhaupt sage, das sie ein Bild für sich nutzen soll.

Eine weitere Frage ist, wäre es sinnvoll für das Schachbrett selber eine Grafik einzufügen und dann ein Array "darüber" zulegen oder wie sollte man das bewerkstelligen?

Die Jungs haben das Problem, dass sie von Programmierung nahezu nichts verstehen und es deshalb schon an der Modellierung der Klassen und Objekte hapert. Ich mein', wenn man fragt, wie man einem Objekt ein Bild zuordnen kann bzw. wie man vielen Objekten verschiedene Bilder zuordnen kann, dann sind sie bei weitem noch nicht in der Lage, komplexere Spielmechanismen und bedingte Abläufe zu implementieren.
Da fehlt noch zu viel Basiswissen, dass sie sich erst noch erarbeiten müssen.
 
aber viel mehr als "korrekte" zuege brauchen sie nicht zu implementieren.

ganz grob zieht das doch so aus:

-zugeingabe von weiss
- ist der zug legal? wenn ja dann weiter sonst gebe meldung aus und gehe wieder zur zugeingabe
- ist das spiel bereits entschieden? wenn ja, dann spiel mit meldung beenden
- zug darstellen (grapisch/ascii je nach lust)
-zugeingabe schwarz
- ist der zug legal? wenn ja dann weiter sonst gebe meldung aus und gehe wieder zur zugeingabe
- ist das spiel bereits entschieden? wenn ja, dann spiel mit meldung beenden
- zug darstellen (grapisch/ascii je nach lust)
- wieder zur zugeingabe weiss

das problem ist hier "lediglich" legale zuege zuzulassen bzw das ende der partie zu erkennen. beides ist jetzt nicht so einfach wie es scheint.
 
Hi,

@protossgamer

Du verkennst die Fakten :) Wir sind noch gar nicht bei der Schachlogik! Es hapert schon an der Darstellung der unterschiedlichen Schachfiguren! Das wollte e-Laurin sagen.

VG,
Mad
 
ich druecke es mal anders aus. ich habe die befuerchtung, dass man sich da verrent. man haelt sich bei der darstellung auf, anstelle das problem anzugehen.
oder noch weiter uebertrieben. es wird darueber nachgedacht womit man die sounds komponiert, die bei jedem zug zu hoeren sind.
ihr muesst doch einen betreuer/tutor haben. was ist das denn fuer eine uni ?
 
Madman1209 schrieb:
Du verkennst die Fakten :) Wir sind noch gar nicht bei der Schachlogik! Es hapert schon an der Darstellung der unterschiedlichen Schachfiguren! Das wollte e-Laurin sagen.

Über die Vorgehensweise zur Bestimmung gültiger bzw ungültiger Züge kann man sich ganz losgelöst Gedanken machen. Ohne je etwas von Programmierung gehört zu haben (was beim TE übrigens nicht der Fall ist). Und in einem zweiten Schritt überlegen, wie man das Code-technisch umsetzt. Dann kommen auch konkrete Fragen.

Man kann (und sollte) die Zuglogik auch ganz unabhängig von der GUI halten. Bietet sich bei einem Team auch an. Dann kann an den verschiedenen Teilen auch gleichzeitig gearbeitet werden.


Weil der TE Probleme beim Laden der Bilder hatte. Hier mein relevanter Code:

Code:
private BufferedImage image(String rName)
        throws IOException
{
    return ImageIO.read(Resources.class.getResource("resources/" + rName));
}

Die Bilder liegen im Verzeichnis "resources", ein Unterverzeichnis zum Verzeichnis in dem sich die Klasse befindet, die die Methode enthält. "rName" gibt den Namen des Bildes an, ohne Pfad, z.B. "whitePawn.png".
 
Madman1209 schrieb:
Es hapert schon an der Darstellung der unterschiedlichen Schachfiguren! Das wollte e-Laurin sagen.
eigentlich hat er etwas anderes mit einem anderen Sinn ausgesagt:

e-Laurin schrieb:
Die Jungs haben das Problem, dass sie von Programmierung nahezu nichts verstehen [...]


Sie werden also keine grafische Oberfläche bauen können, also auch die Regeln für Schach nicht umsetzen können, da sie eben von der Programmierung keine Ahnung. Das hat e-Laurin eben an der Aussage fest gemacht, dass gefragt wird, wie man einem Objekt ein Bild zuweisen kann, also nichtmal klar ist, was ein Objekt ist, oder dass die Darstellung erstmal nichts mit Objekten zu tun hat.
Der Aussage muss ich mich übrigens auch anschließen, deswegen habe ich dich da nochmal korrigiert ;) Denn es ändert die Diskussionsgrundlage gewaltig.
 
Zurück
Oben