Mario KLine Platformer
- Utilitys
-
Yu Zhang
I am a senior practitioner in Fintech industry.
And I have done a lot of academic research on financial markets.
From 2012, I work as a Quant.
Forex, stock and futures are my main trading varieties.
I can use MQL4, MQL5, C++, MySql, and Python. - Version: 1.0
- Aktivierungen: 20
# Mario KLine Platformer – Side-Scrolling-Candlestick-Plattformspiel 🎮📊
`Mario KLine Platformer` ist ein unglaublich kreatives Side-Scrolling-Plattformspiel für MetaTrader 5 (MT5). Dieses Skript verbindet auf clevere Weise Finanzcharts mit der klassischen Spielmechanik im Super-Mario-Stil –**indem es die Echtzeit-Candlestick-Daten (OHLC) des aktuellen Charts als Level-Gelände nutzt**. Laufen, springen und Feuerbälle über Markttrends hinweg schießen – in einem einzigartigen „Chart-Abenteuer“!
---
## 🌟 Wichtige Konzepte & Funktionen
1. **Candlesticks als spielbares Terrain (K-Line-Terrain)**
* Beim Start ruft das Spiel historische Kerzendiagrammdaten (Eröffnung, Höchstkurs, Tiefstkurs, Schlusskurs) aus dem aktiven Chart ab und wandelt diese in Boden und Klippen um.
* Grüne Bullen-Kerzen und rote Bären-Kerzen bilden Stufen unterschiedlicher Höhe. Die Oberkanten der Kerzenkörper dienen als begehbarer Boden. Schatten und hervorgehobene Ränder verleihen den Charts eine 3D-Ästhetik im Retro-Stil.
* **Markttrends bestimmen den Schwierigkeitsgrad**: Ein starker Aufwärtstrend erzeugt steile „Berge“, die es zu erklimmen gilt, während ein starker Abwärtstrend tiefe „Schluchten“ bildet, die präzise Sprünge erfordern, um sie zu überqueren.
2. **Upgrades & Power-Up-System**
* Wenn man die schwebenden goldenen Frageblöcke trifft, erscheinen zufällig verschiedene Power-Ups:
* 🍄 **Superpilz**: Vergrößert Marios Sprite (bis zu 40 Pixel höher) und erhöht die Wachstumsstufe (bis zu 5). Jede Stufe wirkt wie ein Schild und absorbiert einen Treffer.
* 🔥 **Feuerblume**: Verbessert Marios Schussfähigkeit bis auf Stufe 5. Höhere Stufen ermöglichen es, mehr Feuerbälle gleichzeitig (in mehrere Richtungen) mit höherer Geschwindigkeit und verkürzter Abklingzeit abzufeuern.
* 🪙 **Münzen**: Triff die Münzblöcke, um Goldmünzen herauszuspringen und sofort 200 Punkte zu erhalten.
3. **Vielfältige Gegner & Mini-Boss-Begegnungen**
* **Goombas (normale Gegner)**: Patrouillieren zwischen den Kerzenleuchter-Sockeln, springen zufällig und schießen dunkelviolette Energiekugeln auf Mario.
* **Mini-Bosse**: Erscheinen in festgelegten Abständen an den Kerzenständern. Mit 5 HP (die Gesundheitsanzeige wird oben angezeigt), goldenen Kronen und lila Rüstungen feuern sie Projektile in drei Richtungen ab.
* **Kampfmechanik**: Du kannst Gegner eliminieren, indem du auf ihre Köpfe springst (tötet Goombas sofort, fügt Bossen 1 Schaden zu und löst einen hohen Sprung aus) oder indem du sie mit Feuerbällen beschießt.
4. **Erweiterte Bewegungsmechanik**
* **Step Assist**: Mario steigt automatisch auf niedrige Kerzenränder, wodurch du dir ständiges Springen ersparst.
* **Wandrutschen & Wandsprung**: Wenn du dich in der Luft neben einer hohen Wand befindest, löst das Halten der Richtungstaste ein langsames Rutschen aus. Durch Drücken der Sprungtaste während des Rutschens führst du einen Wandsprung in die entgegengesetzte Richtung aus, wodurch du hohe Wände mühelos erklimmen kannst.
5. **Integrierter 2D-Software-Rasterizer**
* Das Spiel benötigt keine externen GDI-Abhängigkeiten. Es nutzt die rohen Pixelpuffer-Arrays von MQL5 (`g_image[]`) zum Zeichnen von Pixeln und Formen (`FillRect`), die innerhalb einer `OBJ_BITMAP_LABEL` -Ressource aktualisiert werden .
* Immersives Hintergrundsystem: Farbverläufe am Himmel, eine leuchtende Sonne, parallax-scrollende Wolken (0,3-fache Geschwindigkeit) und ferne Berge (0,5-fache Geschwindigkeit), überlagert mit Handelsrasterlinien.
---
## 🕹️ Steuerungsanleitung
* **←** und **→**: Bewegen Sie Mario nach links und rechts.
* **↑**: Springen. Drücke diese Taste beim Rutschen an einer Wand, um einen „Wandsprung“ auszulösen.
* **Strg (Control)**: Feuerbälle abschießen (erfordert Feuerblumen-Level $\ge 1$).
* **Enter**: Spiel neu starten/zurücksetzen.
* **ESC**: Das Spiel beenden und die normale Diagrammansicht wiederherstellen.
---
## 🛠️ Code-Architektur
Der Code ist übersichtlich und folgt den Standarddesigns für Retro-Spielschleifen:
1. **`BuildTerrain()` (Terrain Builder)**
* Lädt aktuelle OHLC-Daten der Candlesticks herunter (bis zu 10.000 Balken) und ordnet Kursbereiche den Bildschirmpixeln zu (ein typischer Candlestick nimmt 32 horizontale Pixel und etwa 110 vertikale Pixel ein).
* Speichert Werte in den Arrays`g_highH`, `g_lowH`, `g_bodyTopH`, `g_bodyBotH`.
2. **`SpawnEnemies()` & `SpawnBoxes()` (Szenengeneratoren)**
* Erzeugt Gegner, Bosse und Gegenstände basierend auf mathematischen Verteilungen über die Kerzen hinweg.
* Erzeugt Blöcke 110 Pixel über der Höhe der Kerzen.
3. **`UpdateGame(double dt)` (Spielzustands-Tick)**
* Berechnet Spielerpositionen, Schwerkraftphysik, Kollisionen mit dem Terrain und Eingaben für das Wandrutschen.
* Überprüft Block-Kopf-Treffer, aktualisiert Power-Up-Bewegungen und verwaltet das Sammeln von Gegenständen.
* Verarbeitet Geschossbewegungen, Schaden durch Geschosse an Gegnern und Kollisionen zwischen Gegnern und dem Spieler.
* Levelabschluss: Wenn die Koordinaten des Spielers `g_px` den letzten Kerzenständer erreichen, wird der Siegzustand ausgelöst (+1.000 Punkte und Anzeige einer Abschlussmeldung).
4. **`RenderGame()` & `DrawMario()` (Pixel-Rasterizer)**
* Zeichnet Himmelsverläufe und verschiebt Parallax-Berge und Wolken relativ zur Kamera `g_camX`.
* Durchläuft sichtbare Bereiche, um Kerzenständer, Flaggen, Blöcke, Partikel und Lebensbalken zu zeichnen.
* Rendert das animierte Mario-Sprite (abwechselnde Bein-Frames für den Laufzyklus) und lässt das Sprite während der Unbesiegbarkeits-Frames blinken.
---
## ⚙️ Konfigurationsparameter
Passen Sie diese Einstellungen beim Starten des Skripts an:
* **InpMaxBars** (`Candlesticks Count`): Standardwert `1000`. Legt die Gesamtlänge des Levels fest (bis zu 10.000 Balken).
* **InpBossBars** (`Boss Interval`): Standardwert `100`. Legt fest, wie viele Kerzen vergehen, bevor ein Mini-Boss erscheint.
---
## 🚀 So führen Sie das Skript aus
1. Öffnen Sie MetaTrader 5.
2. Wählen Sie das gewünschte Symbol und den Chart-Zeitrahmen aus (z. B. EURUSD, H1).
3. Navigieren Sie im Fenster „Navigator“ zu **Skripte -> Meine Skripte -> 3D-Animation -> Mario_KLine_Platformer**.
4. Doppelklicken Sie auf`Mario_KLine_Platformer` oder ziehen Sie es auf den Chart.
5. Legen Sie die Level-Parameter im Dialogfeld fest und klicken Sie dann auf „OK“.
6. Der Chart wird ausgeblendet und das Spiel beginnt. Drücken Sie jederzeit**ESC**, um zu Ihrem normalen Handelschart zurückzukehren.
---

