Excel VBA Tetris

Nachbau von Tetris in Excel mit VBA. Erklärung des Programms und Download

Excel VBA Tetris

Funktion:

Nachbau von Tetris in Excel und VBA, über den Start Button lässt sich das Spiel starten mit den Pfeiltasten lassen sich die Blöcke verschieben und rotieren. Wenn eine Reihe gefüllt ist wird diese entfernt und der Score erhöht, wenn der Turm aus Blocken den oberen Rand erreicht ist das Spiel Verloren. Nach ende eines Spiels kann der Score und das Spielfeld mit den Button Löschen geleert werden.

Entwicklung:

Die Basis ist das Office Programm Excel von Microsoft es übernimmt die Darstellung des Spielfeldes und der Bedienelemente. Die Logik hinter den Spiel ist mit der Office Programmiersprache VBA = Visual Basic for Applikationen geschrieben. VBA lässt sich in die Kategorie der Interpreter Sprachen einordnen, und ist wie der Name vermuten lässt ein Abkömmling von Basic. Der Syntax ist der Selbe wie Bei Visual Basic.
VBA hat den großen Nachteil das es nicht sehr performant ist was gerade auf langsamen Computern ein Problem darstellt.

Programm Struktur:

Initialisierung:

1.Mit den Bestätigen des Button „Start“ wird die SUB Schaltfläche1_Klicken aufgerufen diese Startet die Application.OnKey abfragen in der Function „Start“.

2.Nach diesem Schritt wird eine Zufalls zahl zwischen 1-5 generiert die jewals einer Baustein zugeordnet ist und in das „objeckt“Array geschrieben wird. Dieses Spiegelt den aktuellen zustand des Blockes wieder der sich in Bewegung befindet und hält dessen Position und Farbe fest.

Hautschleife

1.Nach diesen Schritt wird die Function „runter“ aufgerufen und 2 abfragen durchgeführt: Baustein unten und Baustein Kollision. Wenn beides nicht eintrifft wird die Alte Position des in Bewegung befindlichen Bausteins gelöscht und um 1 nach unten verschoben.

2. Wenn keine Kollision erkannt wird und der Baustein nicht unten ist ruft sich die Function „runter“ mit Application.OnTime jede Sekunde selbst auf.

Tasten Betätigung:

1.Wenn die Pfeiltaste Rechts oder Links betätigt wird löscht die Sub „Rechts“ oder „Links“ die Aktuelle Position vom „objeckt“ Array und verschiebt sie nach rechts/links und gibt die neu Position aus.

2.Nach drücken der „Auf“ Taste wird die alte Position des „objeckt“ Array gelöscht und der Aktuelle Baustein Typ abgefragt und der Rotations-Status der in der variable „rotation“ abgelegt ist. Abhängig vom Baustein Typen und Rotations-Status werden die 4 Einzel blocke entsprechend verschoben.

3.Bei der rotation kann es passieren das der Baustein außerhalb des Spielfeldes ist, dies wird durch die Funktion „rotationx_anpassen“ behoben in dem der Block entsprechend verschoben wird

Baustein unten:

1.Wenn der Baustein auf der untersten Ebene angekommen ist wird dieser aus den „objeckt“ Array in das „fild“ Array übertragen welches den Spielbildschirm widerspiegelt. Nun wird die abfrage eingeleitet ob eine Reihe Komplet gefüllt ist und wenn dies der Fall ist der Score um die Anzahl der entfernten reihen erhöht. Nach dieser abfrage wird die Sub „Schaltfläche1_klicken“ erneut aufgerufen und der Prozess beging von neuen.

Kollision:

1.Wenn der Baustein mit eine anderen kollediert wird das „Application.OnTime“ nicht ausgeführt und die abfrage eingeleitet ob eine Reihe Komplet gefüllt ist und wenn dies der Fall ist der Score um die Anzahl der entfernten reihen erhöht. In dieser .Nach dieser abfrage wird die Funktion „fild_max“ ausgeführt die überprüft ob der Block die obere grenze erreicht wenn das der Fall ist wird Das Spiel beendet und ein Text über MsgBox ausgegeben. Wenn die Funktion „fild_max“ eine 0 zurück liefert wird die Sub „Schaltfläche1_klicken“ erneut aufgerufen und der Prozess beging von neuen.

Die .xlsm Datei ist nur mit Microsoft Office Lauffähig unter z.b. LibreOffice läuft diese nicht. Beim Start der Datei muss die Ausführung von Makros bestätigt werden.

Die Datei zum Download:

Hier Klicken