Auszug aus dem Buch am Beispiel von XNATetris
By Benjamin Nitschkehttp://abi.exdream.com
XNA TetrisWiederbenutzbare Game Components
Texture Fonts mit Bitmaps
Wie erkennen wir Input/Steuerung in XNA
Wie spielen wir Sound in XNA ab
Am Beispiel von XNA Tetris sieht man wie das alles geht!
Wiederbenutzbare Game Components Trennung zwischen Basis-Klasse, Tetris Spiel und
Tests
Wiederbenutzbare Game Components Beispiele für Game Components
Frame CounterScreenshot GrabberTeile eines Spiels (siehe rechts)Oder sogar Teile einer Render-
Engine um z.B. 3D landscapes darzustellen
Aber wir schreiben nicht alles als Game Components, oft ist es besser einfach Code zu schreiben
Wiederbenutzbare Game Components GameComponent hat Initialize und Update
MethodenKann benutzt werden für Updates und SpiellogikOder um Input Daten zu handelnOder wenn Du das Rendern selbst machen willst
DrawableGameComponent hat eine Draw MethodLeichter zu benutzen, wenn man was rendern willGut für 2D Grafik, Draw wird automatisch aufgerufenAber kann auch zum falschen Zeitpunkt rendern
Texture FontsFonts waren nicht supported in XNA 1.0 (Update:
Seit XNA 1.0 Refresh von April 2007 gibt es nun eine neue TextureFont Klasse, aber vielleicht will man immer noch wissen wie es funktioniert)
Wenn man nur 2-3 Texte im Spiel hat reicht oft eine einfache Texture mit vorgerenderter Grafik aus
Wenn man vollen Text-Support will, muss man über Bitmaps selbst Buchstaben stückchenweise rendern
Texture FontsSelbst so eine Bitmap Font zu erstellen und
auszuschneiden ist nicht einfach, am besten ein Tool benutzen oder vorhandene Fonts benutzen.
Texture FontsUm Text zu schreiben die WriteText(x,
y, message) Methode benutzen
Um rauszufinden wieviel Platz auf dem Bildschirm durch ein Text benoetigt werden GetTextWidth(message) benutzen
Und um letzendlich alle font Texte auf den Bildschirm zu bringen die WriteAll() Methode zu benutzen
Handling InputFing alles mal ganze einfach an
Nun gibts wirklich viele Properties, aber nach wie vor sehr nützlich
Viele sinnvolle Extra-Funktionen
Damit es funktioniert einfach nur jeden Frame Update aufrufen
Handling SoundJedes Spiel brauch seine eigene Sound-Klasse
weil die Sounds nunmal immer anders sindBenutz ein Unit-Test um alle Sounds zu testenXNA Tetris benutzt folgende Soundeffekte:
BlockMove wenn man ein Block bewegtBlockRotate wenn man ein Block rotiertBlockFalldown wenn ein Block den Boden
erreichtLineKill kommt jedes mal, wenn eine Linie
komplett wirdFight beginnt das SpielUnd Victory und Lose kommen am Spiel-Ende
XNA TetrisSo, genug Theorie, es wird Zeit für XNA Tetris
Tetris stammt ursprünglich vonAlexey Pajitnov aus Russland
Wir benutzen im Spiel paareinfache Grafiken für:den HintergrundSpielelementeUnd die Tetris-Blocks
XNA TetrisGucken wir uns mal das Rendern des
Hintergrunds im Detail mit dem folgenden Unit Test an:
Als naechstes brauchen wir das Tetris-Spielfeld. Wir wollen ein Spielfeld von 12x20 blocks:
Und den Code zum Rendern:
Die verschiedenen Block-Typen in XNA Tetris:O: Der blockigste von allenT: Mr. TI: Tetris!J: Gespiegeltes LL: Das Gegenteil von J ^^S und Z sind die Zig-Zags
Gravitation wird von der Update Methode jede Sekunde (und schneller) verwaltet
Letzendlich überprüfen wir jeden Frame ob der aktuelle Block noch weiter nach unten beweget werden kann (oder in die Richtung vom Input)
Wenn das nicht klappt wird der Block fixiert und ein neuer Block wird oben erstellt und das Spiel geht von vorne los. Jedesmal, wenn ein Block den Boden berührt müssen wir gucken ob eine Linie voll wurde!
Damit das ganze Spass macht, muss man natürlich noch ein bisschen Fine-Tuning betreiben und z.b. die Schwierigkeit, Punkte, Levels, Geschwindigkeit, Steuerung, etc. anpassen.
Aber schon nach einigen Unit-Tests kann man mit den Grundprinzipien rumspielen und überlegen wie man das Spiel erweitern kann
TestRotatingBlock und TestFallingBlockAndKillLine sind die 2 wichtigsten Unit Tests dafür
XNA TetrisErstmal ein bisschen Tetris spielen und
relaxenErweiterungsideen: Neues Grafikset, neue
Blocks, …
XNA Tetris
Vielen Dank fürs Zuschauen
Mein Blog: http://abi.exdream.com
Mein Buch: Professional XNA Game Development
Coding4Fun.de: http://www.Coding4Fun.de
Top Related