Pong mit GDI+ - Linie die Kreis folgen soll!
-
Hallo,
ich programmiere gerade ein kleines Pong Spiel in C# und möchte, dass der Ball, wenn er eine
bestimmte Geschwindigkeit erreicht, eine Linie hinter sich "herzieht". Ab einer bestimmten Entfernung
soll die Linie dann wieder nach und nach verschwinden. Leider habe ich im Moment keinen Schimmer wie ich das anstellen soll, da ständig die Oberfläche "gecleart" wird.
Es handelt sich um die auskommentierte Zeile...Ich hoffe da gibt es einen Weg danke schonmal!private void spielfläche_Paint(object sender, PaintEventArgs e) { Graphics g = Graphics.FromImage(bMap); if (Form1.kantenGlaettung == true) { e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; } g.Clear(Color.Black); if(sp1_punkte != Form1.siegPunkte && sp2_punkte != Form1.siegPunkte) { for (int i = 0; i < spielfläche.Height; i += 10) { g.DrawLine(new Pen(Brushes.White, 3), spielfläche.Width / 2, i, spielfläche.Width / 2, i + 5); } g.DrawString(sp1_punkte.ToString(), new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 55, 20)); g.DrawString(sp2_punkte.ToString(), new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 + 15, 20)); g.DrawLine(new Pen(Brushes.White, 3), 15, 15, 15, 30); g.FillEllipse(Brushes.White, ball); g.FillRectangle(Brushes.White, mensch); g.FillRectangle(Brushes.White, computer); } else if (sp2_punkte == Form1.siegPunkte && Form1.pvp == false) { g.DrawString("Leider Verloren :(", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 160, 200)); g.DrawString("Zurück zum Hauptmenü mit <Q>", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 265, 300)); } else if (sp1_punkte == Form1.siegPunkte && Form1.pvp == false) { g.DrawString("Gewonnen!!!", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 110, 200)); g.DrawString("Zurück zum Hauptmenü mit <Q>", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 265, 300)); } else if (sp2_punkte == Form1.siegPunkte && Form1.pvp == true) { g.DrawString("Spieler 2 gewinnt!!!", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 160, 200)); g.DrawString("Zurück zum Hauptmenü mit <Q>", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 265, 300)); } else if (sp1_punkte == Form1.siegPunkte && Form1.pvp == true) { g.DrawString("Spieler 1 gewinnt!!!", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 160, 200)); g.DrawString("Zurück zum Hauptmenü mit <Q>", new Font("Rage Italic", 32), Brushes.White, new Point(spielfläche.Width / 2 - 265, 300)); } if (powered == 1) { //g.DrawLine(new Pen(Brushes.Red), ballX_alt + ball.Width / 2, ballY_alt + ball.Height / 2, ball.X + ball.Width / 2, ball.Y + ball.Height / 2); } g.Dispose(); e.Graphics.DrawImage(bMap, 0, 0); }