Eine Sammlung von Tipps und Tricks zum Thema Grafikprogrammierung mit GDI+.
Ein Timer führt in regelmäßigen Abständen ein Tick
-Event aus. Der System.Windows.Forms
.Timer
kann über die Toolbox auf die GUI gezogen werden.
Anschließend können wir
- die Zeit zwischen jedem
Tick
-Event einstellen (+ Interval { get; set; }: int
) und - den Timer starten (
+ Start():void
) oder - stoppen (
+ Stop():void
) oder - den Zustand abfragen. (
+ Enabled{ get; set; }: bool
) (Standard ist ausgeschaltet:enabled = false
)
Ergänzen Sie hier die notwendigen Code-Ausschnitte, um zu zeigen, wie man es macht.
- Sie können CodeBlöcke mit Syntax-Highlighting einsetzen
- Wird es zu unübersichtlich? Sie können auch Unterordner mit Beispiel-Code anlegen und auf die entsprechenden Dateien verlinken. Inspiration.
- Die folgende Liste kann gerne ergänzt werden :)
Um Bewegungen animieren zu können, muss Zunächst ein Timer erstellt werden der die Ticks zählt. Als nächstes müssen wir innerhalb des Timer-Events ein Codeabschnitt implementieren, welcher in jedem Tick ausgeführt werden soll. Anschließend müssen wir den Timer nur noch starten.
- Um das Timer Event anzulegen
private void tmrGameTick_Tick(object sender, EventArgs e)
- Für die Animation implementieren wir Code, welcher ein Hindernis bewegt,
aktuellesHindernis.Move();
- Zuletzt den Code für den start implementieren
tmrGameTick.Start();
Um die Steuerung mit Tasten zu ermöglichen, müssen wir Zunächst ein Steuerungs-Event anlegen. In diesem Event können wir anschließend Befehle geben, auf welche Eingaben das Event achten muss. Zum Schluss muss man nur noch den Code für die jeweilige Eingabe implementieren.
- Um das Steuerungs Event anzulegen
private void FrmFrogger_KeyDown(object sender, KeyEventArgs e)
- Um abzufragen ob die Pfeil Taste genutzt wurde, können wir den Code schreiben
if (e.KeyCode == Keys.Up)
- Code der bei Aktion ausgeführt werden soll
punktzahl++;
Um dies zu verhindern können wir innerhalb des Steuerungs-Events eine Bewegungsgrenze für die betroffene Aktion einstellen. In dem wir dem Programm sagen, dass die currentline nicht gleich 4 sein darf.
if (e.KeyCode == Keys.Up)
{
if (currentline != 4)
{
spieler.Y = spieler.Y - hoeheJeBereich;
currentline++;
}
else
{
spieler.Y = hoehe - 35;
}
}
Um das Spiel pausieren zu können und jegliche Aktionen zu verhindern, muss eine Sperre für die Steuerung und ein Stop für den Timer implementiert werden.
- Um die Sperre für die Steuerung einzurichten können wir abfragen ob der Spiel Status pausiert wurde.
Dafür können wir einen Code Abschnitt implementieren, der abfragt ob eine Taste für die Pausierung des Spieles benutzt wurde.
if (e.KeyCode == Escape) { Timer.Stop(); pausescreen.show(); }
Das schönste Ergebnis, welches wir in unserem Frogger-Projekt erleben durften war, dass wir diverse Farben für unsere Hindernisse ermöglichen konnten. Dies hat funktioniert in dem wir einen Random generator, sowie eine Farb Palette angelegt haben und diese Palette anschließend mit RGB Werten befüllt haben.
- Anlegen eines Random Generators
Random rndColor = new Random();
- Anlegen von der Farbpallete
Color carColor = Color.FromArgb(rndColor.Next(256), rndColor.Next(256), rndColor.Next(256));
- Zuletzt den einfügen des Parameters in das neue Hinderniss
alleHindernisse.Add(new Hindernis(breite, yWertDerBahn, 60, hoeheJeBereich,rndSpeed.Next(1, speed) , carColor));