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

Alexander12

Erfahrenes Mitglied
Hi.

Ich habe Mal etwas versucht. Ich wollte mal so ein kleine Mini-Schachspiel proggen, hab also 64 Pictureboxen auf die Form geklatscht, dass es so schwarz-weiß Karriert aussieht.
Nun habe Ich für jede pictureBox eine Variable erstellt, also 64.

Nun überprüft ein Timer jede Millisekunde den Wert der Variablen, moment ...

Code:
// Werte der Variablen
// 11 = Bauer weiß;     21 = Bauer schwarz
// 12 = Turm weiß;      22 = Turm schwarz
// 13 = Springer weiß;  23 = Springer schwarz 
// 14 = Läufer weiß;    24 = Läufer schwarz
// 15 = Dame weiß;      25 = Dame schwarz
// 16 = König weiß;     26 = König schwarz
// 0 = weiß;            1 = schwarz

So, dass sind die Bedeutungen der Variablen. Nun der Timer:

Code:
private void tmr_figuren_Tick(object sender, EventArgs e)
{
       // Feld A1
            switch (_a1)
            {
                case 11:
                    this.a1.Image = Image.FromFile("data/bauer_weiß.PNG");
                    break;
                case 21:
                    this.a1.Image = Image.FromFile("data/bauer_schwarz.PNG");
                    break;
                case 12:
                    this.a1.Image = Image.FromFile("data/turm_weiß.PNG");
                    break;
                case 22:
                    this.a1.Image = Image.FromFile("data/turm_schwarz.PNG");
                    break;
                case 13:
                    this.a1.Image = Image.FromFile("data/springer_weiß.PNG");
                    break;
                case 23:
                    this.a1.Image = Image.FromFile("data/springer_schwarz.PNG");
                    break;
                case 14:
                    this.a1.Image = Image.FromFile("data/laeufer_weiß.PNG");
                    break;
                case 24:
                    this.a1.Image = Image.FromFile("data/laeufer_schwarz.PNG");
                    break;
                case 15:
                    this.a1.Image = Image.FromFile("data/dame_weiß.PNG");
                    break;
                case 25:
                    this.a1.Image = Image.FromFile("data/dame_schwarz.PNG");
                    break;
                case 16:
                    this.a1.Image = Image.FromFile("data/koenig_weiß.PNG");
                    break;
                case 26:
                    this.a1.Image = Image.FromFile("data/koenig_schwarz.PNG");
                    break;

            }
}
So, jetzt überprüft er die Werte und stellt die entsprechende Figur auf das Feld...

So, es ist kein Fehler im Code 100%-tig!! Aber wenn ihr bemerkt habt, dass es nur der Code für das erste Feld von 64 ist, dann wisst ihr ja was da für Arbeit blüht...

Ich muss diese Prozedur also 64 programmieren, wäre das Programm nicht langsam, denkt dran: Jede MILLISEKUNDE 64 Mal dieser Code. Das geht nicht.

Kann Ich das einfacher lösen, also danner alle Felder auf einmal prüft, etc.

Bitte, Bitte, Ihr erspart mir so um die 10 Jahre Arbeit, kein Witz!


MfG Alexander12
 

JensG

Erfahrenes Mitglied
Hallo Alexander,

schau dir mal diesen Thread an. Vielleicht holft das ja ein wenig weiter was den Ansatz angeht.
Da geht es um das Klassendesign eines Schachspiels. Ist zwar in JAVA aber es geht ja um den Entwurf und der sollte in allen OOP Sprachen anwendbar oder übertragbar sein.

Jens
 

Christian Kusmanow

Erfahrenes Mitglied
Hallo Leute!

JensG hat gesagt.:
schau dir mal diesen Thread an.
:eek: *woah* Was für ein Schinken. :D
Leider hab ich grad nicht die Zeit mir das alles mal durchzulesen.
Stecken bstimmt noch ein paar gute Ideen zum Aufschnappen drinn. ;)

Zu deinem Code:
Bevor ich weiter ausführe, ließ Dir erstmal den Thread durch und dann erklärst mir mal bitte,
warum Du hier einen Timer verwendest. :confused:
Du könntest ein und die selbe Methode mit den Klick-Events deiner PictureBoxen verknüpfen
und innerhalb der Ereignissbehandlung Dir das jeweilige Bild der ankgeklickten PictureBox holen.
Wofür Du es jetzt auch immer brauchst weiss ich ja nicht,
zumindest erkenn ich nicht ganz, was dein Code jetzt eigentlich für eine "Aufgabe" hat.

Mach's erstmal Gut, cosmo
 

zioProduct

Erfahrenes Mitglied
Kleine Hilfe

Dies sollte dir einen guten einstieg bieten. Auf dem kanst du Gut aufbauen für dein Schachspiel, oder zeust versuchen dieses Spiel ohne Hilfe nachzumachen ;)

mfg
ziop ;-)

PS: :offtopic: :rolleyes:
 

Christian Kusmanow

Erfahrenes Mitglied
Ich würd für jede Figur ein Objekt implemeintieren was quasi Bild und und die Regeln beinhaltet.
So ein bissel was davon (Regel Theorie) hab ich auch in dem Thread aufgeschnappt.

Du musst Dir da schon was einfallen lassen.

Mein erstes großes Programm war Schiffe versenken auf der Console. ;-)
Komplett dynamisch und die Schiffe wurden in generierten TXT-Daten gesetzt.
Mich da durch zu beißen, hat mir echt geholfen,
ein grundlegendes Verständniss für die Dinge zu bekommen.
Vor allem das man alles schön dynamisch vor sich hat und der Code sich nicht aufbläht
und man ein und den selben Vorgang immer wiederkehrend via Parameter ausführt,
sofern das nötig ist.

Wenn bis heute Abend keine Vorschlage gemacht wurden sind,
werd ich mir mal was überlegen, ok. :) Hab heut leider Projektstress.
Für mich währe es mal wieder eine kleine Herrausforderung.
Daher will ich jetzt nicht einfach aus dem Stehgreif herraus was posten,
sondern mir mal überlegen wie man das OOP gerecht, klein und dynamisch bewerkstelligen kann.

Sollte ein Tick schwerer als Schiffe versenken sein.
Aber ich hatte damals noch nicht so viel Kenntniss vom Framework wie Du.
Daher denke ich, sollte Dir das erstmal nicht allzu schwer fallen
ein brauchbares Konzept zu erstellen. :)

Bis dann, cosmo
 

Alexander12

Erfahrenes Mitglied
Hi cosmo,

Für mich währe es mal wieder eine kleine Herrausforderung.

Für mich eine große Herausforderung. Ich mich bisher mal an nem kleinen 2D-Spiel versucht, progge grade ne Adressverwaltung, sonst habe Ich eigentlich immer nur an so Kleinzeug rumgeproggt, wie nem Texteditor oder so was.
Du hast irgendwo ne Textdatei genannt, da könnt man ja die Properties von den Figuren reinhängen..

Ich finde das echt nett von dir das du mir da Tipps etc. gibst. :)

Danke für deine Hilfe schon Mal im Vorraus!!



MfG Alexander12
 

Christian Kusmanow

Erfahrenes Mitglied
Alexander12 hat gesagt.:
Hi cosmo,



Für mich eine große Herausforderung. Ich mich bisher mal an nem kleinen 2D-Spiel versucht, progge grade ne Adressverwaltung, sonst habe Ich eigentlich immer nur an so Kleinzeug rumgeproggt, wie nem Texteditor oder so was.
Ist immerhin schon mehr als ich damals drauf hatte.
Die Anfangszeiten hab ich, wie sicherlich fast jeder hier, in der Console verbracht.
Das Spiel hat mich letztendlich von der Console zu den Windows.Forms gebracht.
Ich hatte irgendwie aufeiunmal das Bedürfniss, den Spaß visuell darzustellen.
Vor allem damit sich auch das setzen der Schiffe in den Textdateien erübrigt.
Alexander12 hat gesagt.:
Du hast irgendwo ne Textdatei genannt, da könnt man ja die Properties von den Figuren reinhängen
Inwiefern meinst das?
Möchtest Du jetzt das Spiel zwischen durch abspeichern,
damit man irgendwann weiterspielen kann?
Dann serialisier doch die Spielfiguren oder dein Spielfeld einfach.

Du könntst es aber auch als Übung betrachten. ;)
Ich würd Dir dann aber dafür eher XML-Files empfehlen.
Die lassen sich, dank des DOM Konzepts, viel einfacher handhaben.
Zudem brauchst Dir dann keinen Parser für deine Textdateien schreiben.
Oder Du versuchst auch mal das.
Wie Du halt willst, wenn Du Zeit & Lust dazu hast und verspielt genug bist. ;-] :)
 

Alexander12

Erfahrenes Mitglied
Hi.

Oh, mit XML hab ich mich bisher noch nicht beschäftigt, wäre was ganz neues.

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:



MfG Alexander12
 

zioProduct

Erfahrenes Mitglied
Zum Glück wird mein toller Link ignoriert :(
Cosmo = fies :(

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

mfg
ziop ;-)