C# - Kein direktes Problem ... Oje ...

Christian Kusmanow

Erfahrenes Mitglied
Alexander12 hat gesagt.:
Oh, mit XML hab ich mich bisher noch nicht beschäftigt, wäre was ganz neues.
Na dann Hop Hop. :D
Auf TheCodeProject Findest richtig gute Tuts dazu. Auch hier im Forum. :google:
Alexander12 hat gesagt.:
Das mit den Properties in den TXTs da meint Ich Pfad und Name der Figur, aber da hääten wir ja wieder ein Problem. Z.b. Ein Spinger kann in einem Schachspiel immer nur 2 Felder vor und 1 Feld links oder rechts laufen, unabhängig davon wo Sie steht:
Denk nicht so kompliziert.
Währe es nicht besser wenn deine Spielfigur (Klasse) von selber entscheidet,
ob sie das tun will.
Ohne den Umweg in eine Textdatei zu schauen, wo sie sich grad befindet.
Ich hoffe ich hab Dich jetzt nicht falsch verstenden.

Übergib deiner Speilfigur das Spielfeld einfach als simple Referenz im Konstruktor,
lass Sie entscheiden ob Sie sich deine Figur bewegen darf
und regier einfach auf den Ausführungsstatus des Zugs.
Somit hast die "Regeln" direkt in deinem Objekt.
Ich stell mir da sowas wie eine Zug-Funktion [ bool Zug( KoordinatenStruct NeuePosition ) ] vor. ;)

//Edit:
Falsch!

cosmo == fies

Aber ja, ich fand Link auch interessant.
 
Zuletzt bearbeitet:

Alexander12

Erfahrenes Mitglied
Hi.

Ich will c# auch zuhause haben, aber hab kein Geld , drum lass ich es halt mit den Spielen

Hää? Wie meinst denn das? SharpDevelop ist z.B. kostenlos. Oder wie meinst?

@cosmo:

So habe Ich das gemeint (Siehe Anhang)
Der rote Punkt soll der Springer sein. :)

MfG Alexander12
 

Anhänge

  • schach.PNG
    schach.PNG
    440 Bytes · Aufrufe: 155

mage

Erfahrenes Mitglied
Hallo,

also ich würde z.B. einen Ansatz für die Darstellung über selbst programmierte Usercontrols verfolgen.
Ein Control für genau ein Feld und ein Control für das Schachbrett, welches sich die einzelnen Feldcontrols aufnimmt und aufbaut.

Für deine Variablen würd ich eine Enueration empfehlen, das liesst sich im Code viel besser und verständlicher:

Code:
public enum Figuren {
    BauerWeiss = 1,
    BauerSchwarz=2,
..
}
 

Christian Kusmanow

Erfahrenes Mitglied
Hi mage!
mage hat gesagt.:
also ich würde z.B. einen Ansatz für die Darstellung über selbst programmierte Usercontrols verfolgen.
Ein Control für genau ein Feld und ein Control für das Schachbrett, welches sich die einzelnen Feldcontrols aufnimmt und aufbaut.
Guter Ansatz! :)
Dann kannst ohne Probleme auf die Parent- & Child-Controls zugreifen.

@Alexander:
Ich poste heut abend oder morgen wieder, ok.
Hab jetzt weiter keine Zeit mehr für ne ordentliche Antwort.
Versuchs doch erstmal selber. ;) :)

Hää? Wie meinst denn das? SharpDevelop ist z.B. kostenlos. Oder wie meinst?
:D Hää? Hast das etwa noch nicht gewusst? :p
Der erste Link im Forum heisst doch [thread=154112]Freie IDEs für C# - Thread[/thread]
Den kannst doch jetzt nicht übersehen haben. ;-] :)
 

Alexander12

Erfahrenes Mitglied
Hi.

So was?

(Siehe Anhang ;-) )
Das ist jetzt ein Control für ein weißes Feld.


MfG Alexander12
 

Anhänge

  • area_white.zip
    717 Bytes · Aufrufe: 30

zioProduct

Erfahrenes Mitglied
Pfeif, unter meinem Link hättest du n Beispiel, wie man sowas macht *pfeif* :rolleyes:
OkOk ich hör auf Nerven, soll ja arbeiten und nicht die armen Tutorialer hier verrückt machen ;-]
 

Christian Kusmanow

Erfahrenes Mitglied
zioProduct hat gesagt.:
Pfeif, unter meinem Link hättest du n Beispiel, wie man sowas macht *pfeif* :rolleyes:
OkOk ich hör auf Nerven, soll ja arbeiten und nicht die armen Tutorialer hier verrückt machen ;-]
Ist ja schon gut. :rolleyes:
Hatte bereits auch gesagt das ich den Link inetressant fand. :p
Nur hatte ich gestern keine Zeit mehr, mir das mal anzuschauen.
Also schau mal da hinein Alexander. ;) Und versuch es bitter erstmal selber.
Ich denke Du solltest damit schon ein großes Stück weiter kommen. :)

Ich hoffe nächste Woche wieder mehr Zeit zu finden. Schreibe ja auch jetzt erst.
Dann klink ich mich in den Thread wieder ein, sofern das dann noch nötig ist.

Was mir wieder aufgefallen ist, ist dein switch zum zuordnen der richtigen Bilder.
(Switch ist zudem auch arschlangsam)
Das geht auch richtig dynamisch (!)
Die Bilder musst Du dazu als Embedded Ressource mit in dein Projekt hinein kompilieren.
Dann müssen die Namen der Bilder "an einer bestimmten Stelle" deinen Wfigure Code beinhalten.
Dann baust den Namen des eingebetteten Bildes zusammen suchst danach in deiner aktuellen oder entfernten Assembly und holst es Dir.
Also so:
Code:
C# - ungetestet
const string sPictureName = "Figure_" + Wfigure;
Assembly ASM = Assembly.GetExecutingAssembly();
			
foreach ( string Name in ASM.GetManifestResourceNames() )
	if ( Name.IndexOf( sPictureName ) > -1 ){
		using ( Stream RessourceStream = ASM.GetManifestResourceStream( Name ) )
			this.pictureBox1.Image = Image.FromStream( RessourceStream );
		break;
	}
[Edit]Ansonsten kannst Dir auch die Namen, beim Start des Programms, in eine Hashtable schreiben.
Sofern sie lose mit irgendwo im Programmordner rumliegen sollen.
Dann hast einen Einzeiler. ;)[/Edit]

Als kleine Entschädigung dafür dass ich die Woche leider nicht mehr mit machen kann.

Also bis nächste Woche und ein schönes WE, cosmo
 
Zuletzt bearbeitet:

Reverent

Erfahrenes Mitglied
Hallo Leute,
Habt Ihr euch schon mal gedanken über die Logik gemacht, die in so ein Schachspiel steckt?
z.B. wie Du als Mensch Schach spielst!!
Ich z.B. verschaffe mir ein Überblick über den Stand aller Figuren, dann überlege ich mir welche Figur ich jetzt am besten verziehen kann und dann kommen so gedanken wie, wenn ich jetzt diesen Zug machen, was setzt mein Gegenüber dann und wie reagiere ich dann wieder und das ist bis jetzt nur die ERSTE EBENE!
Ich als nicht so guter Spieler Überlege ca. bis zur 3-4 Ebene!
Und da sehe ich die Darstellung Deines Schachbrettes mit den Figuren als Zweitrangig an!
Frage:"Programmierst du mit Ebenen?"
Wenn ja würde ich mir überlegen, ob man da nicht vielleicht mit Rekusion arbeiten kann!
Bleibt noch zu Überlegen wie man eine Strategie programmieren kann, oder ergibt die sich von selber ,wenn eine gewisse KI fertig ist.
Bis Dann
 

Alexander12

Erfahrenes Mitglied
Hi.

Ich z.B. verschaffe mir ein Überblick über den Stand aller Figuren, dann überlege ich mir welche Figur ich jetzt am besten verziehen kann und dann kommen so gedanken wie, wenn ich jetzt diesen Zug machen, was setzt mein Gegenüber dann und wie reagiere ich dann wieder und das ist bis jetzt nur die ERSTE EBENE!
Ich als nicht so guter Spieler Überlege ca. bis zur 3-4 Ebene!

Ich kann Schach spielen, das mal vorweg. Das was du hier uafgeführt hast, habe Ich auch scho 10 Mal durchdacht. Aber setz das mal so schnell in Code um.

Ich habe mir mal das Valichess im Compiler angeschaut, da sind ca 50 Codefiles drin, mehrere 1000 Zeilen also.

So langsam bin Ich am überlegen, ob das zu groß ist fü eine Person, dazu auch noch Schüler..


MfG Alexander12
 

Nico Graichen

Erfahrenes Mitglied
Alexander12 hat gesagt.:
Ich habe mir mal das Valichess im Compiler angeschaut, da sind ca 50 Codefiles drin, mehrere 1000 Zeilen also.
offtopic:
1000 Zeile ist doch nicht viel. Hatte früher in der Schule in TurboPascal ein Programm geschrieben, dass fast 3000 Zeilen hatte. Und das alles Prozedural (!) und (leider) ohne Kommentare.

Alexander12 hat gesagt.:
So langsam bin Ich am überlegen, ob das zu groß ist fü eine Person, dazu auch noch Schüler..
Das Projekt ist für eine Person sicherlich nicht zu groß. Da musst dir nur vorher RICHTIG Gedanken darüber machen, was machen deine Objekte wann, wo und wie. *noch mal an den Tipp von Cosmo mit UML erinner*. Wenn du dein Projekt von Vornherein richtig durchdenkst, brauchst du nur noch den Inhalt der Funktionen schreiben (welche Funktion wann, wo, wie und warum aufruft, weißt du schon vorher). Dieses Herangehen an ein Projekt erfodert aber viel Disziplin. Das genaue Planen von Abläufen nimmt ein bisschen mehr Zeit als 10 Minuten in Anspruch. Eher 10 Tage und mehr.