-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial Maze_de
Select your language / Choisissez votre langue / Wählen Sie Ihre Sprache:
English | Français | Deutsch | Italiano | Español | Português | Slovenščina | Українська | Русский
In diesem Tutorial erstellen Sie ein Labyrinth-Spiel, in dem der Spieler durch Korridore navigiert, um den Ausgang zu erreichen, während er Hindernissen ausweicht und Münzen sammelt. Dieser klassische Spieltyp ist perfekt, um flüssige Bewegung, Kollisionserkennung und Level-Design zu lernen.
Was Sie lernen werden:
- Flüssige Spielerbewegung mit Tastatureingabe
- Wandkollisions-Behandlung
- Zielerkennung (den Ausgang erreichen)
- Sammelbare Gegenstände
- Einfaches Timer-System
Schwierigkeit: Anfänger Preset: Anfänger-Preset
- Der Spieler bewegt sich mit den Pfeiltasten durch ein Labyrinth
- Wände blockieren die Spielerbewegung
- Sammle Münzen für Punkte
- Erreiche den Ausgang, um das Level abzuschließen
- Beende das Labyrinth so schnell wie möglich!
| Element | Zweck |
|---|---|
| Spieler | Die Figur, die Sie steuern |
| Wand | Solide Hindernisse, die Bewegung blockieren |
| Ausgang | Ziel, das das Level beendet |
| Münze | Sammelbare Gegenstände für Punkte |
| Boden | Visueller Hintergrund (optional) |
Alle Wand- und Boden-Sprites sollten 32x32 Pixel groß sein, um ein korrektes Raster zu erstellen.
- Klicken Sie im Ressourcen-Baum mit der rechten Maustaste auf Sprites und wählen Sie Sprite erstellen
- Nennen Sie es
spr_player - Klicken Sie auf Sprite bearbeiten, um den Editor zu öffnen
- Zeichnen Sie eine kleine Figur (Kreis, Person oder Pfeilform)
- Verwenden Sie eine helle Farbe wie Blau oder Grün
- Größe: 24x24 Pixel (kleiner als Wände für einfachere Navigation)
- Klicken Sie auf OK zum Speichern
- Erstellen Sie ein neues Sprite namens
spr_wall - Zeichnen Sie ein solides Ziegel- oder Steinmuster
- Verwenden Sie graue oder dunkle Farben
- Größe: 32x32 Pixel
- Erstellen Sie ein neues Sprite namens
spr_exit - Zeichnen Sie eine Tür, Flagge oder einen leuchtenden Zielmarker
- Verwenden Sie grüne oder goldene Farben
- Größe: 32x32 Pixel
- Erstellen Sie ein neues Sprite namens
spr_coin - Zeichnen Sie einen kleinen gelben/goldenen Kreis
- Größe: 16x16 Pixel
- Erstellen Sie ein neues Sprite namens
spr_floor - Zeichnen Sie ein einfaches Bodenfliesen-Muster
- Verwenden Sie eine helle, neutrale Farbe
- Größe: 32x32 Pixel
Die Wand blockiert die Spielerbewegung.
- Klicken Sie mit der rechten Maustaste auf Objekte und wählen Sie Objekt erstellen
- Nennen Sie es
obj_wall - Setzen Sie das Sprite auf
spr_wall - Aktivieren Sie das Kontrollkästchen "Solid"
- Keine Events benötigt
Der Ausgang beendet das Level, wenn der Spieler ihn erreicht.
- Erstellen Sie ein neues Objekt namens
obj_exit - Setzen Sie das Sprite auf
spr_exit
Event: Kollision mit obj_player
- Event hinzufügen → Kollision → obj_player
- Aktion hinzufügen: Main2 → Nachricht anzeigen
- Nachricht:
Du gewinnst! Zeit:+ string(floor(global.timer)) +Sekunden
- Nachricht:
- Aktion hinzufügen: Main1 → Nächster Raum (oder Raum neu starten für einzelnes Level)
Münzen erhöhen den Punktestand, wenn sie gesammelt werden.
- Erstellen Sie ein neues Objekt namens
obj_coin - Setzen Sie das Sprite auf
spr_coin
Event: Kollision mit obj_player
- Event hinzufügen → Kollision → obj_player
- Aktion hinzufügen: Score → Score setzen
- Neuer Score:
10 - Aktivieren Sie "Relativ", um 10 Punkte hinzuzufügen
- Neuer Score:
- Aktion hinzufügen: Main1 → Instanz zerstören
- Gilt für: Self
Der Spieler bewegt sich flüssig mit den Pfeiltasten.
- Erstellen Sie ein neues Objekt namens
obj_player - Setzen Sie das Sprite auf
spr_player
Event: Create
- Event hinzufügen → Create
- Aktion hinzufügen: Kontrolle → Variable setzen
- Variable:
move_speed - Wert:
4
- Variable:
Event: Step
- Event hinzufügen → Step → Step
- Aktion hinzufügen: Kontrolle → Code ausführen
// Horizontale Bewegung
var hspd = 0;
if (keyboard_check(vk_right)) hspd = move_speed;
if (keyboard_check(vk_left)) hspd = -move_speed;
// Vertikale Bewegung
var vspd = 0;
if (keyboard_check(vk_down)) vspd = move_speed;
if (keyboard_check(vk_up)) vspd = -move_speed;
// Horizontale Kollisionsprüfung
if (!place_meeting(x + hspd, y, obj_wall)) {
x += hspd;
} else {
// So nah wie möglich an die Wand bewegen
while (!place_meeting(x + sign(hspd), y, obj_wall)) {
x += sign(hspd);
}
}
// Vertikale Kollisionsprüfung
if (!place_meeting(x, y + vspd, obj_wall)) {
y += vspd;
} else {
// So nah wie möglich an die Wand bewegen
while (!place_meeting(x, y + sign(vspd), obj_wall)) {
y += sign(vspd);
}
}Wenn Sie lieber Aktionsblöcke statt Code verwenden:
Event: Taste gedrückt - Pfeil rechts
- Event hinzufügen → Tastatur → <Rechts>
- Aktion hinzufügen: Kontrolle → Kollision testen
- Objekt:
obj_wall - X:
4 - Y:
0 - Prüfen: NOT
- Objekt:
- Aktion hinzufügen: Bewegung → Zur Position springen
- X:
4 - Y:
0 - Aktivieren Sie "Relativ"
- X:
Wiederholen Sie für Links (-4, 0), Oben (0, -4) und Unten (0, 4).
Der Spiel-Controller verwaltet den Timer und zeigt Informationen an.
- Erstellen Sie ein neues Objekt namens
obj_game_controller - Kein Sprite benötigt
Event: Create
- Event hinzufügen → Create
- Aktion hinzufügen: Kontrolle → Variable setzen
- Variable:
global.timer - Wert:
0
- Variable:
Event: Step
- Event hinzufügen → Step → Step
- Aktion hinzufügen: Kontrolle → Variable setzen
- Variable:
global.timer - Wert:
1/room_speed - Aktivieren Sie "Relativ"
- Variable:
Event: Draw
- Event hinzufügen → Draw → Draw
- Aktion hinzufügen: Kontrolle → Code ausführen
// Score zeichnen
draw_set_color(c_white);
draw_text(10, 10, "Punkte: " + string(score));
// Timer zeichnen
draw_text(10, 30, "Zeit: " + string(floor(global.timer)) + "s");
// Verbleibende Münzen zeichnen
var coins_left = instance_number(obj_coin);
draw_text(10, 50, "Münzen: " + string(coins_left));- Klicken Sie mit der rechten Maustaste auf Räume und wählen Sie Raum erstellen
- Nennen Sie ihn
room_maze - Setzen Sie die Raumgröße (z.B. 640x480)
- Aktivieren Sie "Am Raster ausrichten" und setzen Sie das Raster auf 32x32
Bauen Sie Ihr Labyrinth nach diesen Richtlinien:
- Erstellen Sie den Rand - Umgeben Sie den Raum mit Wänden
- Bauen Sie Korridore - Erstellen Sie Wege durch das Labyrinth
- Platzieren Sie den Ausgang - Setzen Sie ihn ans Ende des Labyrinths
- Verteilen Sie Münzen - Platzieren Sie sie entlang der Wege
- Platzieren Sie den Spieler - Nahe am Eingang
- Fügen Sie den Spiel-Controller hinzu - Irgendwo (er ist unsichtbar)
W W W W W W W W W W W W W W W W W W W W
W P . . . . W . . . . . . . W . . . . W
W . W W W . W . W W W W W . W . W W . W
W . W . . . . . . . . . . . . . . W . W
W . W . W W W W W . W W W W W W . W . W
W . . . W . . . . . . . . C . W . . . W
W W W . W . W W W W W W W . . W W W . W
W C . . . . W . . . . . W . . . . . . W
W . W W W W W . W W W . W W W W W W . W
W . . . . . . . . C . . . . . . . . . W
W . W W W W W W W W W . W W W W W W . W
W . . . . . . . . . . . W . . . . . . W
W W W W W W W W W W W . W . W W W W . W
W . . . . . . . . . . . . . W . C . E W
W W W W W W W W W W W W W W W W W W W W
W = Wand P = Spieler E = Ausgang C = Münze . = Leer
- Klicken Sie auf Ausführen oder drücken Sie F5 zum Testen
- Verwenden Sie die Pfeiltasten, um durch das Labyrinth zu navigieren
- Sammeln Sie Münzen für Punkte
- Finden Sie den Ausgang zum Gewinnen!
Erstellen Sie einen einfachen patrouillierenden Feind:
- Erstellen Sie
spr_enemy(rote Farbe, 24x24) - Erstellen Sie
obj_enemymit Spritespr_enemy
Event: Create
hspeed = 2; // Bewegt sich horizontalEvent: Kollision mit obj_wall
hspeed = -hspeed; // Richtung umkehrenEvent: Kollision mit obj_player
room_restart(); // Spieler verliertIm Create-Event von obj_game_controller:
global.lives = 3;Wenn der Spieler einen Feind berührt (statt neu zu starten):
global.lives -= 1;
if (global.lives <= 0) {
show_message("Game Over!");
game_restart();
} else {
// Spieler am Start respawnen
obj_player.x = start_x;
obj_player.y = start_y;
}- Erstellen Sie
obj_key- verschwindet beim Einsammeln, setztglobal.has_key = true - Erstellen Sie
obj_locked_door- öffnet sich nur wennglobal.has_key == true
- Erstellen Sie zusätzliche Räume (
room_maze2,room_maze3) - In
obj_exitverwenden Sieroom_goto_next()stattroom_restart()
Fügen Sie Sounds hinzu für:
- Münzen sammeln
- Ausgang erreichen
- Feinde berühren (falls hinzugefügt)
- Hintergrundmusik
| Problem | Lösung |
|---|---|
| Spieler bewegt sich durch Wände | Prüfen Sie, ob obj_wall "Solid" aktiviert hat |
| Spieler steckt in Wänden fest | Stellen Sie sicher, dass das Spieler-Sprite kleiner als die Wandlücken ist |
| Münzen verschwinden nicht | Überprüfen Sie, dass das Kollisions-Event Self zerstört, nicht Other |
| Timer funktioniert nicht | Stellen Sie sicher, dass der Spiel-Controller im Raum platziert ist |
| Bewegung fühlt sich ruckelig an | Passen Sie den move_speed-Wert an (versuchen Sie 3-5) |
Gratulation! Sie haben ein Labyrinth-Spiel erstellt! Sie haben gelernt:
- Flüssige Bewegung - Gedrückte Tasten für kontinuierliche Bewegung prüfen
-
Kollisionserkennung -
place_meetingvor dem Bewegen verwenden - Pixel-genaue Kollision - So nah wie möglich an Wände bewegen
- Sammelobjekte - Gegenstände erstellen, die den Score erhöhen und verschwinden
- Timer-System - Vergangene Zeit mit Variablen verfolgen
- Level-Design - Navigierbare Labyrinth-Layouts erstellen
- Zeitangriff - Fügen Sie einen Countdown-Timer hinzu. Erreichen Sie den Ausgang, bevor die Zeit abläuft!
- Perfekter Score - Erfordern Sie das Sammeln aller Münzen, bevor sich der Ausgang öffnet
- Zufälliges Labyrinth - Erforschen Sie prozedurale Labyrinth-Generierung
- Nebel des Krieges - Zeigen Sie nur den Bereich um den Spieler
- Minimap - Zeigen Sie eine kleine Übersicht des Labyrinths
- Tutorials - Mehr Spiel-Tutorials
- Anfänger-Preset - Übersicht der Anfänger-Funktionen
- Tutorial: Pong - Ein Zwei-Spieler-Spiel erstellen
- Tutorial: Breakout - Ein Brick-Breaker-Spiel erstellen
- Tutorial: Sokoban - Ein Box-Pushing-Puzzle erstellen
- Event-Referenz - Vollständige Event-Dokumentation