public void spielSpeichern() { Figur[,] zwSpeicher = new Figur[8, 8]; FileStream fs = new FileStream("..\\..\\Speicherdaten\\Speicher.txt", FileMode.Create, FileAccess.Write, FileShare.None); FileStream stat = new FileStream("..\\..\\Speicherdaten\\Stat.txt", FileMode.Create, FileAccess.Write, FileShare.None); StreamWriter sw = new StreamWriter(fs); StreamWriter statw = new StreamWriter(stat); statw.WriteLine(wpunkte); statw.WriteLine(spunkte); statw.WriteLine(WeissAmZug); statw.WriteLine(KoenigGeschlagen); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (Feld[i, j] != null) { sw.WriteLine(i + "-" + j + "-" + Feld[i, j].ToString() + "|" + Feld[i, j].Weiss); } else { sw.WriteLine(i + "-" + j + "-" + "null" + "|null"); } } } sw.Close(); statw.Close(); }
//------------------------------ Zum testen-------------------------- private void reset(Reset resetValue) { zurueckSetzen(); switch (resetValue) { case Reset.Bauernumwandlung: startPositionierungenB(); break; case Reset.enPeasant: startPositionierungenEn(); break; case Reset.Komplett: startPositionierungen(); break; case Reset.Rochade: startPositionierungenR(); break; } rdBWeiss.Checked = true; btnStart.Enabled = true; grpBoxFarbeBeginnt.Enabled = true; this.ausgewaehlteFigur = null; this.figurAngewaehlt = false; this.farbeAmZug = Farbe.Weiss; this.grpBoxFarbeAmZug.BackColor = Color.White; this.rTextBoxZuege.Clear(); }
// Bauernumwandlung private static Figur BauernUmwandlung(char neueFigur, Figur figur, string neuePos) { string farbe; if (figur.Farbe == Farbe.Weiss) { farbe = "w"; } else { farbe = "s"; } switch (neueFigur) { case 'B': return(new Laeufer(figur.Farbe, neuePos, farbe + "Laeufer.png", dctFigur)); case 'Q': return(new Dame(figur.Farbe, neuePos, farbe + "Dame.png", dctFigur)); case 'N': return(new Pferd(figur.Farbe, neuePos, farbe + "Koenig.png", dctFigur)); case 'R': return(new Turm(figur.Farbe, neuePos, farbe + "Turm.png", dctFigur)); default: return(figur); } }
// bewegt sich, mehrere (gleiche) Figuren koennen den Zug durchfuehren auf gleicher Reihe (1-8) private static bool MehrereFigurenGleicheReiheSchmeissen(Figur figur, string zug) { return(figur.listMoeglicheFelder().Contains(zielFeld(zug)) && zug.Contains("x") && zug[1] != 'x' && figur.AktuellePosition.EndsWith(zug[1].ToString())); }
// Dictionry aktualisieren private void setDictionary(string key, Figur figur) { if (this.dctFigur.ContainsKey(key)) { this.dctFigur.Remove(key); } this.dctFigur.Add(key, figur); }
private static void setDictionary(string key, Figur figur) { if (dctFigur.ContainsKey(key)) { dctFigur.Remove(key); } dctFigur.Add(key, figur); }
public void spielLaden() { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { Feld[i, j] = null; } } Figur[,] zwSpeicher = new Figur[8, 8]; FileStream fs = new FileStream("..\\..\\Speicherdaten\\Speicher.txt", FileMode.Open, FileAccess.Read, FileShare.None); FileStream stat = new FileStream("..\\..\\Speicherdaten\\Stat.txt", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader sr = new StreamReader(fs); StreamReader statr = new StreamReader(stat); string[] tmp1 = new string[4]; for (int i = 0; i < 4; i++) { tmp1[i] = statr.ReadLine(); } wpunkte = Convert.ToInt32(tmp1[0]); wpunkte = Convert.ToInt32(tmp1[1]); WeissAmZug = Convert.ToBoolean(tmp1[2].ToLower()); KoenigGeschlagen = Convert.ToBoolean(tmp1[3].ToLower()); string[,] tmp = new string[8, 8]; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { tmp[i, j] = sr.ReadLine(); switch (tmp[i, j].Substring(4, tmp[i, j].IndexOf("|") - 4)) { case "Schach.Bauer": this.FigurHinzufuegen(new Bauer(Convert.ToBoolean(tmp[i, j].Substring(tmp[i, j].IndexOf("|") + 1).ToLower()), Convert.ToInt32(tmp[i, j].Substring(2, 1)), Convert.ToInt32(tmp[i, j].Substring(0, 1)), true, ref Feld)); break; case "Schach.Turm": this.FigurHinzufuegen(new Turm(Convert.ToBoolean(tmp[i, j].Substring(tmp[i, j].IndexOf("|") + 1).ToLower()), Convert.ToInt32(tmp[i, j].Substring(2, 1)), Convert.ToInt32(tmp[i, j].Substring(0, 1)), true, ref Feld)); break; case "Schach.Koenig": this.FigurHinzufuegen(new Koenig(Convert.ToBoolean(tmp[i, j].Substring(tmp[i, j].IndexOf("|") + 1).ToLower()), Convert.ToInt32(tmp[i, j].Substring(2, 1)), Convert.ToInt32(tmp[i, j].Substring(0, 1)), true, ref Feld)); break; case "Schach.Dame": this.FigurHinzufuegen(new Dame(Convert.ToBoolean(tmp[i, j].Substring(tmp[i, j].IndexOf("|") + 1).ToLower()), Convert.ToInt32(tmp[i, j].Substring(2, 1)), Convert.ToInt32(tmp[i, j].Substring(0, 1)), true, ref Feld)); break; case "Schach.Springer": this.FigurHinzufuegen(new Springer(Convert.ToBoolean(tmp[i, j].Substring(tmp[i, j].IndexOf("|") + 1).ToLower()), Convert.ToInt32(tmp[i, j].Substring(2, 1)), Convert.ToInt32(tmp[i, j].Substring(0, 1)), true, ref Feld)); break; case "Schach.Bischhof": this.FigurHinzufuegen(new Bischhof(Convert.ToBoolean(tmp[i, j].Substring(tmp[i, j].IndexOf("|") + 1).ToLower()), Convert.ToInt32(tmp[i, j].Substring(2, 1)), Convert.ToInt32(tmp[i, j].Substring(0, 1)), true, ref Feld)); break; case "null": Feld[i, j] = null; break; default: break; } } } sr.Close(); statr.Close(); aktualisiereBitmap(); }
public Rochade(string feldTurm, string zielFeldTurmRochade, string feldKoenig, string zielFeldKoenigRochade, Figur turm, Figur koenig) { this.feldTurm = feldTurm; this.zielFeldTurmRochade = zielFeldTurmRochade; this.feldKoenig = feldKoenig; this.zielFeldKoenigRochade = zielFeldKoenigRochade; this.turm = turm; this.koenig = koenig; }
public Figur FigurEntfernen(int sp, int zeile) { try { Figur tmp = Feld[sp - 1, zeile - 1]; Feld[sp - 1, zeile - 1] = null; aktualisiereBitmap(); return(tmp); } catch { return(null); } }
public void FigurHinzufuegen(Figur e) { try { if (e != null) { //e.sch = this; } Feld[e.Spalte, e.Zeile] = e; aktualisiereBitmap(); } catch (Exception) { return; } }
public Rochade Rochade(string feldKoordinaten) { int neuePosKoenig = 1; int neuePosTurm = 2; int richtung = 1; Figur turm = turmFuerRochade(feldKoordinaten); if (turm == null) { return(null); } // DIE POSITION IST VOM KOENIG AUSGEHEND! // --> 'a' ist die grosse Rochade if (turm.AktuellePosition[0] == 'h') { neuePosKoenig = 2; neuePosTurm = 1; } // Grosse Rochade if (turm.AktuellePosition[0] == 'a') { neuePosKoenig = -2; neuePosTurm = -1; richtung = -1; } if (this.ersterZug && turm != null && turm.Farbe == this.farbe) { // Pruefen, ob eine Figur im Weg ist, bzw der Koenig auf den Feldern bedroht wird foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figurImWeg(richtung)) { return(null); } if (figur.Value.Farbe != this.farbe && rochadeFeldBedroht(figur.Value, richtung)) { return(null); } } } return(new Rochade(turm.AktuellePosition, linienFeldVerschiebung(neuePosTurm), this.aktuellePosition, linienFeldVerschiebung(neuePosKoenig), turm, this)); }
/* * Beim Anklicken einer Figur werden Felder hervorgehoben, die die moeglichen Zuege darstellen */ private void felderMarkieren(Figur neueFigur) { foreach (string t in neueFigur.listMoeglicheFelder()) { Control c = this.Controls.Find(t, true).First(); try { moeglicheFelder.Add(c); }catch (Exception e) { Debug.WriteLine(e.Message); } c.Paint += panel_PaintBorder; c.Invalidate(); } }
public void Waehle(int zeile, int spalte) { Console.WriteLine(zeile + " " + spalte); if (this.auswahlSpalte > -1 && this.auswahlZeile > -1 && Feld[this.auswahlSpalte, this.auswahlZeile] != null && (Feld[this.auswahlSpalte, this.auswahlZeile].Weiss == this.WeissAmZug || this.isDebug) && Feld[this.auswahlSpalte, this.auswahlZeile].kannBetreten(zeile, spalte) && !KoenigGeschlagen) { Feld[this.auswahlSpalte, this.auswahlZeile].FirstMove = false; Feld[this.auswahlSpalte, this.auswahlZeile].Spalte = spalte; Feld[this.auswahlSpalte, this.auswahlZeile].Zeile = zeile; Figur alteFigur = Feld[spalte, zeile]; Feld[spalte, zeile] = Feld[this.auswahlSpalte, this.auswahlZeile]; Feld[this.auswahlSpalte, this.auswahlZeile] = null; if (alteFigur != null) { this.figurGeschlagen(alteFigur); } this.auswahlSpalte = -1; this.auswahlZeile = -1; this.WeissAmZug = !this.WeissAmZug; this.werdeZurDame(); } else if (this.auswahlSpalte == spalte && this.auswahlZeile == zeile) { this.auswahlSpalte = -1; this.auswahlZeile = -1; } else if ((Feld[spalte, zeile] != null && Feld[spalte, zeile].Weiss == this.WeissAmZug) || this.isDebug) { this.auswahlSpalte = spalte; this.auswahlZeile = zeile; } aktualisiereBitmap(); }
public void figurGeschlagen(Figur f) { if (!f.Weiss) { switch (f.ToString()) { case "Schach.Bauer": wpunkte += 1; break; case "Schach.Turm": wpunkte += 5; break; case "Schach.Koenig": wpunkte += 15; this.ende(!f.Weiss, wpunkte, spunkte); break; case "Schach.Dame": wpunkte += 9; break; case "Schach.Springer": wpunkte += 3; break; case "Schach.Bischhof": wpunkte += 3; break; default: break; } } else { switch (f.ToString()) { case "Schach.Bauer": spunkte += 1; break; case "Schach.Turm": spunkte += 5; break; case "Schach.Koenig": spunkte += 15; this.ende(!f.Weiss, wpunkte, spunkte); break; case "Schach.Dame": spunkte += 9; break; case "Schach.Springer": spunkte += 3; break; case "Schach.Bischhof": spunkte += 3; break; default: break; } } }
private void btn_Click(object sender, EventArgs e) { Button tmpSender = (Button)sender; switch (tmpSender.Name) { case "btnDame": neueFigur = new Dame(this.farbe, this.position, tmpSender.Tag.ToString(), dctFigur); return; case "btnLaeufer": neueFigur = new Laeufer(this.farbe, this.position, tmpSender.Tag.ToString(), dctFigur); return; case "btnPferd": neueFigur = new Pferd(this.farbe, this.position, tmpSender.Tag.ToString(), dctFigur); return; case "btnTurm": neueFigur = new Turm(this.farbe, this.position, tmpSender.Tag.ToString(), dctFigur); return; } }
// bewegt sich, mehrere (gleiche) Figuren koennen den Zug durchfuehren auf gleicher Reihe (1-8) private static bool MehrereFigurenGleicheReiheBewegen(Figur figur, string zug) { return(figur.listMoeglicheFelder().Contains(zielFeld(zug)) && zug.Length > 3 && figur.AktuellePosition.EndsWith(zug[1].ToString())); }
private static KeyValuePair <string, Figur> figurErmitteln(string zug, Farbe farbe) { switch (zug[0]) { // Rochade case 'O': Rochade rochade = null; foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Koenig))) { if (zug == "O-O") { rochade = getRochade(figur.Value, linienFeldVerschiebung(figur.Value.AktuellePosition, +3)); } else { rochade = getRochade(figur.Value, linienFeldVerschiebung(figur.Value.AktuellePosition, -4)); } } } try { setDictionary(rochade.ZielFeldKoenigRochade, rochade.Koenig); setDictionary(rochade.ZielFeldTurmRochade, rochade.Turm); removeVonDictionary(rochade.FeldKoenig); removeVonDictionary(rochade.FeldTurm); rochade.Turm.AktuellePosition = rochade.ZielFeldTurmRochade; rochade.Koenig.AktuellePosition = rochade.ZielFeldKoenigRochade; } catch (Exception e) { Debug.WriteLine("Rochade: " + e.Message); } break; case 'P': foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Bauer))) { // Ist beim Bauernzug ein "=" enthalten, wird eine Bauernumwandlung durchgefuehrt // Das heisst, das aus dem Bauer eine neue FIgur entshtet // bsp e8=Q --> Bauer wird zur Dame if (zug.Contains("=")) { string tmpZielFeld = zug.Substring(1, 2); if (Bewegen(figur.Value, zug.Substring(0, 3))) { Debug.WriteLine("--------------Anfang-----------------------"); foreach (KeyValuePair <string, Figur> miau in dctFigur) { Debug.WriteLine("Key: " + miau.Key + " figur" + miau.Value); } Debug.WriteLine("-------------------------------------------"); Figur neueFigur = BauernUmwandlung(zug[zug.Length - 1], figur.Value, tmpZielFeld); #if true Debug.WriteLine("neue Figur:" + neueFigur + " aktPos " + neueFigur.AktuellePosition + "Bildname " + neueFigur.BildName); Debug.WriteLine("alte Figur:" + figur.Value + " aktPos " + figur.Value.AktuellePosition + "Bildname " + figur.Value.BildName); #endif setDictionary(tmpZielFeld, neueFigur); removeVonDictionary(figur.Value.AktuellePosition); break; } // Den Rest ueberspringen, weil nicht relevant continue; } if (Bewegen(figur.Value, zug)) { return(figur); } // Pferd schmeisst, ohne das anderes Pferd der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle if (Schmeissen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheLinieSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheLinieBewegen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheReiheSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheReiheBewegen(figur.Value, zug)) { return(figur); } } } break; case 'K': foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Koenig))) { if (Bewegen(figur.Value, zug)) { return(figur); } // Pferd schmeisst, ohne das anderes Pferd der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle if (Schmeissen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheLinieSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheLinieBewegen(figur.Value, zug)) { return(figur); } } } break; case 'Q': foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Dame))) { if (Bewegen(figur.Value, zug)) { return(figur); } // Pferd schmeisst, ohne das anderes Pferd der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle if (Schmeissen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheLinieSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheLinieBewegen(figur.Value, zug)) { return(figur); } } } break; case 'B': foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Laeufer))) { if (Bewegen(figur.Value, zug)) { return(figur); } // Pferd schmeisst, ohne das anderes Pferd der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle if (Schmeissen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheLinieSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheLinieBewegen(figur.Value, zug)) { return(figur); } } } break; case 'N': foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Pferd))) { if (Bewegen(figur.Value, zug)) { return(figur); } // Pferd schmeisst, ohne das anderes Pferd der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle if (Schmeissen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheLinieSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheLinieBewegen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheReiheSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheReiheBewegen(figur.Value, zug)) { return(figur); } } } break; case 'R': foreach (KeyValuePair <string, Figur> figur in dctFigur) { if (figur.Value.Farbe == farbe && (figur.Value.GetType() == typeof(Turm))) { if (Bewegen(figur.Value, zug)) { return(figur); } // Pferd schmeisst, ohne das anderes Pferd der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle if (Schmeissen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheLinieSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheLinieBewegen(figur.Value, zug)) { return(figur); } if (MehrereFigurenGleicheReiheSchmeissen(figur.Value, zug)) { return(figur); } // bewegt sich, mehrere Figuren koennen den Zug durchfuehren if (MehrereFigurenGleicheReiheBewegen(figur.Value, zug)) { return(figur); } } } break; } return(new KeyValuePair <string, Figur>()); }
/** * Dem Panel werden die Figuren als Tags hinzugefuegt, weiterhin wird jede Figur * mit dem Key (Spielfeldname) in ein Dictionary geschrieben **/ private void addFigur(Figur figur, Panel p) { p.Tag = figur; p.BackgroundImage = figur.FigurBild; this.dctFigur.Add(p.Name, figur); }
// Setzen des Tags und des Bildes des Panels private void setControl(Figur figur, Control c) { c.Tag = figur; c.BackgroundImage = figur.FigurBild; }
// Figur geht zu Feld --> Nc3 (N=Pferd, c3 = Zielfeld) private static bool Bewegen(Figur figur, string zug) { return(figur.listMoeglicheFelder().Contains(zielFeld(zug)) && zug.Length == 3); }
// Die Zuege der Rochade machen --> loeschen der Figur vom Feld, setzen der Figur aufs neue Feld // Position aktualisieren private void rochadeDictUndFigurAktualisieren(string aktuellesFeld, string zielFeld, Figur figur) { Control c = this.Controls.Find(zielFeld, true).First(); setControl(figur, c); setControlNull(this.Controls.Find(aktuellesFeld, true).First()); setDictionary(zielFeld, figur); removeVonDictionary(figur.AktuellePosition); figur.AktuellePosition = zielFeld; }
/* * Hier werden die verschiedenen Moeglichkeiten bei der Figurauswahl ausgewertet * 1) Keine Figur ausgewaehl, und Feld ist leer * 2) Keine Figur ausgewaehlt, auf dem Feld ist eine Figur * 3) Figur ist ausgewaehlt, aber andere Figur wird ausgewaehlt (kein schmeissen, da eigene Farbe) * 4) Figur ist ausgewaehlt, und Feld ohne Figur / mit Gegner Figur wird angeklickt */ private void panel_Click(object sender, EventArgs e) { Figur figur = (Figur)((Panel)sender).Tag; Panel panel = ((Panel)sender); // 1) Ist keine Figur angewaehlt und das Feld ist leer --> return if (figur == null && !figurAngewaehlt) { return; } // 2) keine Figur angewaehlt, das Feld ist nicht leer --> Felder markieren und Figur merken // Figurfarbe muss der FarbeAmZug entsprechen. if (figur != null && !figurAngewaehlt && figur.Farbe == farbeAmZug) { this.ausgewaehlteFigur = figur; if (ausgewaehlteFigur.listMoeglicheFelder() == null) { ausgewaehlteFigur = null; figurAngewaehlt = false; return; } felderMarkieren(figur); figurAngewaehlt = true; return; } // 3) Figur ist angewaehlt, andere Figur wird ausgewaehlt (kein moeglicher Zug) // --> Es ist eine Figur angewaehlt, und das Panel was angeklickt wird, // faellt nicht unter die Liste der moeglichen Zuege. // Figurfarbe muss der FarbeAmZug entsprechen. if (figurAngewaehlt && figur != null && !Figur.zugMoeglich(panel.Name, ausgewaehlteFigur.listMoeglicheFelder()) && figur.Farbe == farbeAmZug ) { // Falls keine moeglichen Zuege, figur abwaehlen und abbrechen if (ausgewaehlteFigur.listMoeglicheFelder() == null) { ausgewaehlteFigur = null; figurAngewaehlt = false; return; } zurueckSetzenBorder(); ausgewaehlteFigur = figur; felderMarkieren(figur); return; } // 4) Figur ist angewaehlt --> pruefen ob Feld in moegliche Zuege, und dann ziehen, ansonsten // Figur angewaehlt lassen if (figurAngewaehlt && Figur.zugMoeglich(panel.Name, ausgewaehlteFigur.listMoeglicheFelder())) { // Keine Zuege moeglich (z.B. Turm ganz am Anfang, wenn noch Bauern drum stehen) // --> Figuren abwaehlen --> Pruefen! if (ausgewaehlteFigur.listMoeglicheFelder() == null) { figurAngewaehlt = false; ausgewaehlteFigur = null; return; } // Rochade //-------------------------------------------------------------- if (ausgewaehlteFigur.GetType() == typeof(Koenig)) { // Ist das angeklickte Feld ein Turm, mit dem eine Rochade moeglich ist? if (((Koenig)ausgewaehlteFigur).Rochade(panel.Name) != null) { Rochade rochade = ((Koenig)ausgewaehlteFigur).Rochade(panel.Name); Debug.WriteLine("Feld Koenig " + rochade.FeldKoenig + " Feld Turm " + rochade.FeldTurm + " Zielfeld Koenig " + rochade.ZielFeldKoenigRochade + "Zielfeld Turm " + rochade.ZielFeldTurmRochade); rochadeZug(rochade); figurAngewaehlt = false; zurueckSetzenBorder(); this.farbeAmZug = farbeAmZugAendern(); return; } } //-------------------------------------------------------------- // Die Figur an das angeklickte Panel verschieben figurVerschieben(this.Controls.Find(panel.Name, true).First()); // Figur vom alten Panel "entfernen figureVonPanelEntfernen(this.Controls.Find(ausgewaehlteFigur.AktuellePosition, true).First()); // Position vom Objekt aktualisieren ausgewaehlteFigur.AktuellePosition = panel.Name; if (ausgewaehlteFigur.GetType() == typeof(Bauer) && ((Bauer)ausgewaehlteFigur).EntfernterKey != String.Empty) { setControlNull(this.Controls.Find(((Bauer)ausgewaehlteFigur).EntfernterKey, true).First()); } // Bauernumwandlung if (ausgewaehlteFigur.GetType() == typeof(Bauer) && ((Bauer)ausgewaehlteFigur).spielFeldEndeEreicht()) { frmBauernumwandlung bauernumWandlung = new frmBauernumwandlung(ausgewaehlteFigur.Farbe, ausgewaehlteFigur.AktuellePosition, dctFigur); if (bauernumWandlung.ShowDialog() == DialogResult.OK) { removeVonDictionary(bauernumWandlung.NeueFigur.AktuellePosition); setControlNull(this.Controls.Find(bauernumWandlung.NeueFigur.AktuellePosition, true).First()); setControl(bauernumWandlung.NeueFigur, this.Controls.Find(bauernumWandlung.NeueFigur.AktuellePosition, true).First()); } } figurAngewaehlt = false; zurueckSetzenBorder(); this.farbeAmZug = farbeAmZugAendern(); } }
// Ist eines der RochadeFelder bedroht? (um die Uebersicht zu wahren in einer Extra Funktion // da die Abfrage sonst extrem lang wird) // --------------------------------------------------------------------------------------- private bool rochadeFeldBedroht(Figur figur, int richtung) { return(figur.listMoeglicheFelder().Contains(linienFeldVerschiebung(1 * richtung)) || figur.listMoeglicheFelder().Contains(linienFeldVerschiebung(2 * richtung)) || figur.listMoeglicheFelder().Contains(this.aktuellePosition)); }
private static Rochade getRochade(Figur figur, string zug) { return(((Koenig)figur).Rochade(zug)); }
// Fgiur schmeisst, ohne das andere (gleiche) Figur der gleichen Farbe schmeissen kann // Nxe4 --> x = schmeissen, e4 = Zielfeld // x steht immer an der 2ten Stelle private static bool Schmeissen(Figur figur, string zug) { return(figur.listMoeglicheFelder().Contains(zielFeld(zug)) && zug[1] == 'x'); }