Schachspiel programmieren mit BlueJ

Buchstabe_A

Lt. Junior Grade
Registriert
Okt. 2007
Beiträge
430
Guten Morgen erstmal,

Um das vorweg zunehmen, ich habe in meinem Leben noch nie programmiert, und jetzt sollen wir als Projekt ein Schachspiel programmieren, was ich schon sehr heftig finde. Wir haben nun in unserer Gruppe schon einiges hinbekommen, aber laufen tut da bisher nichts so wirklich. Zum Programmieren nutzen wir BlueJ.


Nun zum Problem:

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?



Infos zum Schachfeld:

Das Schachfeld hat eine Größe von 800 x 800 Pixeln
Jedes Feld dementsprechend 100 x 100 Pixel
Die Figuren sind als .png gespeichert und ebenfalls 100 x 100 Pixel groß.


Um euch ein Bild davon machen zu können habe ich unser bisheriges Ergebniss hier hochgeladen:

schachspiel.rar



Vielen Dank schonmal im Vorraus

P.S.: Wenn wir das geklärt haben sollten, dann hätte ich natürlich noch ein paar mehr fragen zu usnerem Projekt
 
Zuletzt bearbeitet:
Soll das ein Scherz sein? Schachprogramme gehören zu den kompliziertesten Programmen überhaupt.

Versucht euch erstmal an TicTacToe, das ist schwierig genug.
 
Ja dafür ist es schon zu spät, er sagte wir sollen das durchziehen.
Wir machen aber auch nur die grundlegendsten Sachen, keine KI o.ä..
Nur Mensch gegen Mensch und es sollten die Figuren halt wissen, wo sie stehen müssen, wie sie gehen können und halt die Bild Implementierung sollte funzen....wenn das schonmal klappen würde wäre das schon gigantisch ^^
 
Hi,

was heißt "als Projekt bekommen"? Als Schulprojekt? Finde ich sehr heftig. Ich bin Programmierer, ich würde mich da nicht so "mal eben" hintrauen.

Was heißt "nur Grundlegende Sachen, keine KI"? wie soll das Ding denn funktionieren und was soll es "können"?

Wenn nur "Mensch gegen Mensch" dann ist es ja relativ einfach - dann musst du ja "quasi" nur festlegen, welche Figur welchen Zug machen darf und ein paar Scharegeln implementieren.

Wie lange habt ihr Zeit? Und was habt ihr schon?

VG,
Mad
 
Zuletzt bearbeitet:
Also:

Ich bin im ersten Semester am Computervisualistik und Design studieren, habe wie gesagt keine Vorkenntnisse von Java o.ä., genauso wie der Rest meiner Gruppe. Wir beissen uns da so durch. ^^
Wir haben angefangen mit diesem dämlcihen Programm Alice programmieren zu "verstehen" und sind vor 2 Monaten auf BlueJ umgestiegen... Aber ich finde es auch sehr heftig jetzt schon so etwas zu programmieren.

Jedenfalls, bei dem Schachspiel soll es erstmal nur möglich sein, Mensch gegen Mensch zu spielen, die Figuren sollten wissen wo sie auf dem Schachbrett stehen müssen und wie sie sich bewegen können. Außerdem möchte ich wissen, wie ich jeder Figur ihre Bilder zuweise, da hab ich nämlich auch echt nen Problem mit.
 
Also das wäre echt geil wenn wir da jemanden hätten, haben usn schon bei unseren Mitstudenten erkundigt die ein wenig mehr drauf haben, aber die stehen selebr unter Zeitdruck udn sagen auch, dass das mit dem Schachspiel viel zu heftig ist.
Nur wir haben jetzt halt das Problem das wir uns dieses Proejkt haben aufschwatzen lassen von usnerem Prof...
 
Ein Schachspiel ohne KI finde ich persönlich nicht zu aufwendig. Ich habe aber auch nie mit BlueJ gearbeitet^^.

Schachbrett bietet sich halt an, dass man das als Array implementiert ... Feld[0][0] ist dann oben links usw.

Dein (eurer) Downloadlink funktioniert nicht, aber erzähl eher wo eure Probleme liegen mit Code. (Keine Hausaufgaben und keiner wird für euch das machen :rolleyes:)
 
ja mein Problem liegt in erster Linie darin, der jeweiligen Klasse ( Dame, bAuer etc.) ein Bild zuzuweisen, wäre nett wenn ihr mir dabei helfen könntet zu verstehen, wie man Bilder den Klassen zuweist. So das sie sich selbst den pfad zum Bild suchen und wissen welches sie nutzen müssen.

Der Link sollte jetzt funktionieren.
 
Die Zuweisung funktioniert üblicherweise mit einem Getter. Wenn man nicht den konrekten Pfad übergibt, kann man dort auch die Logik hinterlegen, den Namen oder was auch immer in einen Dateipfad zu übersetzen. Ich würde es allerdings nicht so machen ;)

Was noch völlig fehlt, ist irgendwelcher Code der für die Anzeige zuständig ist. Dort würde ich auch die Logik unterbringen, die entscheidet, welches Bild für welche Figur darzustellen ist. Welches Toolkit soll denn verwendet werden? Swing, SWT, JavaFX? Oder was spezielles?
 
Ja ich versuche es bereits über Swing zu lösen, aber meine Ansätze funktionieren bisher nicht so wie erwünscht.
Hab auch schon danach gegoogelt aber ich fidne das wenig hilfreich, wie gesagt ich habs noch nie gemacht und ich steh dort echt auf´m Schlauch. Ich verstehe auch nicht wie ich z.B. der Klasse Dame das bild zuweise.
Ich habs jetzt mal mit´m Schachbrett versucht, dem wenigstens das Muster zugrunde zu legen und das ist mein Ansatz:


import java.awt.*;
import javax.swing.*;

public class Schachbrett_Grafik extends JApplet
{
Image bild;

public void init()
{
bild = getImage (getDocumentBase(), "Figuren Fertig/Schachfeld komplett.png");
}
public void paint ( Graphics g )
{
g.drawString("Anzeigen des Bildes", 20, 20);
g.drawImage( bild,0,0,100,100,this);
}
}



Nur ich check es halt nicht, wie ich ihm sage auf welchem Pfad das Bild liegt das er das für sich nutzen kann....
 
Applet? Würg :D Aber egal...

Du benötigst eine geeignete Datenstruktur, in der Du den Status jedes einzelnen Feldes festhälst. Beim Zeichnen iterierst Du über die einzelnen Felder und gibst die jeweilige Grafik aus, wenn das Feld mit einer Figur besetzt ist.
 
Ist denn vorgegeben, dass es eine grafische Anwendung sein muss? Sonst würde ich einfach eine Konsolenanwendung drausmachen und von den einzelnen Figuren eben immer den Buchstaben ausgeben:
Code:
  abc
8 D-B
7 BKB
6 ---
D=Dame, B=Bauer, K=König, -=leer

Und für die Züge dann eben eine Texteingabe nach dem Muster "a1 b1" um von A1 nach B1 zu bewegen.


Also eine grafische Oberfläche für Anfänger, das ist schon ein echt heftiges Stück.
 
Was soll daran heftig sein? Die Jungs sind im ersten Semester und nicht in der dritten Klasse!
 
Hi,

@soares

Ja und? Am Anfang hieß es "Schachprogramm", da war noch nicht die Rede von "nur Mensch gegen Mensch".
Abgesehen davon scheinst du im Startpost das

Um das vorweg zunehmen, ich habe in meinem Leben noch nie programmiert

überlesen zu haben.

Wenn ein Schachcomputer nicht heftig ist zu programmieren dann weiß ich es nicht. Aber schön dass es für dich kein Problem ist - zeugt von großer Erfahrung im Programmieren ;)

VG,
Mad
 
@Madman1209
Beim Kommentar von Icebreaker war schon bekannt, dass es nicht um ein Schachprogramm mit einer KI geht, sondern nur um die 2D-Darstellung eines Schachbrettes und der Möglichkeit die Figuren gemäß den Regeln zu bewegen. Das ist sicherlich keine völlig triviale Aufgabe, aber IMHO kann man im Rahmen eines Studienprojektes von einer Gruppe(!) von Studenten erwarten, dass das leistbar ist.

Ist doch eine tolle Aufgabe! Pixel auf den Bildschirm bringen! Drag & Drop! So etwas sollte doch Spass machen!?
 
Hi,

ja sicher. Aber mal im Ernst: Ich habe hier Leute im Büro sitzen, die Informatik studiert haben und das höchste der Gefühle ist es, die ein E-R-Diagramm malen zu lassen :) wirklich programmieren können nicht sehr viele nach dem Studium wenn sie da selbst nicht dahinter waren. Und unter der Pränmisse "ich habe absolut keine Programmiererfahrung" ist auch ein einfaches Schachspiel ohne KI eine ganz schöne Aufgabe - wollen wir uns darauf einigen? :) ;)

VG,
Mad
 
Ich schrieb doch oben, dass es eine tolle Aufgabe ist :D

Natürlich ist das ohne Erfahrung alles erst mal schrecklich schwierig und man sieht den Wald vor lauter Bäumen nicht. Ich kann mich noch gut an meine ersten Versuche erinnern. Aber lamentieren hilft nicht. Und ein Anfang ist doch auch schon gemacht. Wenn ich ein Bild darstellen kann, sollte es nicht unmöglich sein, auch 64 Bilder anzuzeigen?

Nur um das noch mal einzuordnen: Soweit ich die Aufgabe überblicke, reden wir hier über etwas, für das ein Programmierer keinen Tag benötigt.
 
soares schrieb:
Die Jungs sind im ersten Semester und nicht in der dritten Klasse!

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.
Und bei komplett fehlenden Vorkenntnissen ist es mit einer Swing-GUI dann doch eine verdammte Menge an Arbeit. Swing ist nunmal nicht einfach.


Und das wir keinen Tag benötigen, ist doch irrelevant. Wir sind keine Anfänger mehr.
 
Zuletzt bearbeitet:
Zurück
Oben