/// <summary> /// Wird aufgerufen, wenn auf den Menüpunkt "Neues Spiel" geklickt wird /// </summary> private void miNeuesSpiel_Click(object sender, EventArgs e) { if (this.a.isRunning) { bool h = this.a.isPause; this.a.isPause = true; DialogResult res = MessageBox.Show( this, "Willst du das laufende Spiel wirklich beenden?", this.Text, MessageBoxButtons.YesNo); this.a.isPause = h; if (res == System.Windows.Forms.DialogResult.No) { return; } } TSegmentBase.stopAnimation(); this.a.stopGame(); this.Display.reset(); this.Data.reset(); this.a = new TArena(this.Display, this.Data); this.Segment.registerArena(this.a); this.myArena = new TVisualArena(a, this.paTetris, this.Data, this.Segment); this.paTetris.Refresh(); this.paNext.Refresh(); }
/// <summary> /// Standard-Konstruktor /// </summary> public foMain() { InitializeComponent(); this.Data = new TSharedData(); this.Display = new TDisplayFoMain(this, this.Data); this.a = new TArena(this.Display, this.Data); this.Segment = new TVisualSegment(this.paTetris); this.Segment.registerArena(this.a); this.myArena = new TVisualArena(a, this.paTetris, this.Data, this.Segment); TSegmentBase.registerForm(this); }
/// <summary> /// Zeichnet das Teil mit allen seinen Segmenten /// </summary> /// <param name="g">Graphics-Objekt zum Zeichnen</param> /// <param name="t">Das zu zeichnende Teil</param> /// <param name="c">Die Farbe des Teils</param> /// <param name="segment">Das Segment-Objekt, mit dem gezeichnet wird</param> public static void drawTeil(Graphics g, TTeil t, Color c, TSegmentBase segment) { for (int i = 0; i < TTeil.MaxBreite; i++) { for (int k = 0; k < TTeil.MaxHoehe; k++) { if (t.hasSegment(i, k)) { int positionSektor = (t.PositionSektor + i) % TArena.AnzahlSektoren; int positionSchicht = t.PositionSchicht - k; segment.drawSegment(positionSektor, positionSchicht, g, c); } } } }
/// <summary> /// Löscht das Teil und alle seine Segmente /// </summary> /// <param name="g">Graphics-Objekt zum Zeichnen</param> /// <param name="t">Das zu zeichnende Teil</param> /// <param name="backColor">Hintergrundfarbe des Panels</param> /// <param name="arena">Verweis auf die Arena</param> /// <param name="segment">Verweis auf das Segment zum Zeichnen</param> public static void deleteTeil(Graphics g, TTeil t, Color backColor, TVisualArena arena, TSegmentBase segment) { for (int i = 0; i < TTeil.MaxBreite; i++) { for (int k = 0; k < TTeil.MaxHoehe; k++) { if (t.hasSegment(i, k)) { int positionSektor = (t.PositionSektor + i) % TArena.AnzahlSektoren; int positionSchicht = t.PositionSchicht - k; segment.deleteSegment(positionSektor, positionSchicht, g, backColor); arena.repairNachbarn(positionSektor, positionSchicht, g); } } } }
/// <summary> /// Wird aufgerufen, wenn das Fenster geschlossen wird /// </summary> private void foMain_FormClosed(object sender, FormClosedEventArgs e) { TSegmentBase.stopAnimation(); this.a.stopGame(); }