C# Lernen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hinsichtlich der Frage, wie man C# lernen kann, lies hier: Wie kann man C# lernen?. Dort habe ich schon einmal mehrere hilfreiche Quellen aufgeführt.

Da ich gerne mit Spielen arbeiten würde, habe ich keinen Ansatzpunkt, an welchem ich starten könnte.

Starte mit einfachen/kleinen Spielen.

  • Asteroids
  • Black Jack
  • Breakout
  • Conways Game Of Life
  • Hangman
  • Nim
  • Pong
  • Schiffe versenken
  • Snake
  • Super Mario
  • Tetris
  • Tic-Tac-Toe

Sie fordern größtenteils nur Grundlagenkenntnisse (Variablen, Operatoren, Kontrollstrukturen). Mache dir aber, bevor du anfängst (fernab von C#), einen Plan. Ohne den kommst du nicht weit.

Grundsätzliche Tipps zur Herangehensweise zum Lösen von Problemen habe ich hier schon einmal gegeben. Das sollte dir weiterhelfen.

Zu deinem Beispiel:

Wenn ich beispielsweise das Movement eines Spielers coden will (...)

Wenn sich ein Spieler bewegt, hat er auf jeden Fall eine Richtung, in die er steuert und eine Schrittweite. Im einfachsten Fall könnte man dies (einmal nur bezogen auf 2D) mit nur zwei Werten deutlich machen (x, y), die 1, -1 oder 0 sein können. Noch besser ist die Auftrennung:



und um die Geschwindigkeit zu beeinflussen, könnte noch ein weiterer Faktor hinzukommen.

Dann fehlen nur noch zwei Punkte: Die Nutzereingabe muss eingelesen werden (welche Tasten hat er gedrückt), sodass man diese in die beschriebenen Faktoren umwandeln kann. Da geht es schon los mit Verzweigungen:

if input == arrow.up:
  directionY = -1
else if input == arrow.down:
  directionY = 1

if input == arrow.left:
  directionX = -1
else if input == arrow.right:
  directionX = 1

Inwiefern die Tastatureingabe konkret gelesen wird, hängt von der Umgebung ab, mit der du dein Spiel entwickelst. Auf der Konsole würde die Console-Klasse helfen, die API einer Engine wie Unity hingegen stellt eine eigene Input-Klasse bereit. Da heißt es also auch: Recherchieren / die Dokumentation der jeweiligen Tools (Microsoft .NET-Dokumentation / Unity / ...) nutzen.

Danach muss der Spieler bewegt werden. Wieder beeinflusst die genutzte Entwicklungsumgebung, wie man es konkret löst. Logisch betrachtet wird die Zeichenfläche geleert (bspw. mit einer weißen Fläche übermalt) und der Spieler neu (an der neuen Position) gezeichnet, die man für ihn anhand der alten Position, addiert mit der Verschiebung, berechnet.

Bezüglich der angesprochenen Entwicklungsumgebungen:

  • Vieles kannst du allein schon mit der Konsole zustande bekommen. Du brauchst dafür nur zu wissen, dass du den Cursor mit Console.SetCursorPosition bewegen kannst. So ist es möglich, vorherige Ausgaben wieder zu überschreiben. Fange doch damit an.
  • Es gibt diverse Frameworks, Bibliotheken und Engines, mit denen sich mit C# Spiele entwickeln lassen. Z. B. Duality, FlatRedBall, FNA, MonoGame, raylib oder Unity. Z.T. fordern sie dafür aber auch bestimmte Grundkenntnisse zur OOP. Ein einfaches Tool unter den genannten wäre raylib.