image image


Spaß mit Shoes: Action!

image

In den meisten meiner bisherigen Shoes-Tutorien bewegte sich zwar etwas auf dem Monitor, aber der Spieler hatte keine Möglichkeit, einzugreifen. Daher möchte ich heute zeigen, wie man mit der Tastatur eine Spielfigur steuern kann. Für den Hintergrund und die Sprites habe ich dieses Mal das hier erwähnte freie (CC-BY-SA 3.0) Tileset DawnLike benutzt, das aus 16x16 Pixeln großen Kacheln besteht, die teilweise animiert sind.

Das Tileset ist für Rogue-ähnliche Spiele gedacht, bei denen man die Spielfigur wie auf einem Schachbrett Kachel für Kachel bewegt. Daher sind die Animationen nur Zugabe, ohne sie könnte man diese Spiele (die sogar ursprünglich statt der Bilder nur aus ASCII-Zeichen bestanden) natürlich auch spielen. Aber wenn das Tileset die Möglichkeiten zur Animation bietet …

Als Hintergrundbild habe ich eines der mitgelieferten Beispiele (underworld.png) verwendet und es einfach aus Tiled (als Bild) exportiert, es war für die Zwecke dieses Tutoriums schaurig-schön genug.

Die Sprites habe ich mit einem Trick aus Tiled ausgeschnitten. Ich habe einfach ein eine Kachel von 16x16 Pixel großes Tileset definiert und dann mit dem Stempel-Werkzeug da jeden Sprite einzeln eingefügt und ebenfalls als Bild exportiert.

Für das Skelett des Quellcodes habe ich auf das bewährte Running Orcs-Skript zurückgegriffen und es entsprechend modifiziert:

# encoding: utf-8

FPS = 6
x = 144
y = 48

Shoes.app width: 320, height: 240, title: "Rogue" do
  background "images/underworld.png"
  rogue = image "images/rogue0.png", left: x, top: y
  lighta = image "images/light0.png", left: 96, top: 0
  lightb = image "images/light0.png", left: 208, top: 0
  
  animate(FPS) do |frame|
    if frame % 2 == 0
      rogue.path = "images/rogue0.png"
      lighta.path = "images/light0.png"
      lightb.path = "images/light0.png"
    else
      rogue.path = "images/rogue1.png"
      lighta.path = "images/light1.png"
      lightb.path = "images/light1.png"
    end

    keypress do |k|
      if k == :left
        x = x - 16
      elsif k == :right
        x = x + 16
      elsif k == :up
        y = y - 16
      elsif k == :down
        y = y +  16
      end
    end

    rogue.move x, y
  end
  
end

Der Hintergrund ist 320 x 240 Pixel groß, daher habe ich auch dem Shoes-Skript diese Größe zugewiesen und mit

rogue = image "images/rogue0.png", left: x, top: y

der Spielfigur erst einmal eine Ausgangsposition zugewiesen. Und damit die Animation nicht zu hektisch wird und ich auch keinen Timer programmieren wollte, habe ich dem Skript mit FPS = 6 eine Framerate von 6 Bildern in der Sekunde zugewiesen – für die einzelnen Tastaturabfragen ist das häufig genug, das Teil ist schließlich kein Action Shooter.

Shoes fragt ständig die Tastatur ab und bietet unter anderem mit keypress die Möglichkeit, auf Tastaturevents zu reagieren. Speziellen Tasten sind Symbole zugewiesen, mich interessierten erst einmal nur die Pfeiltasten :left, :right, :up und :down. Jedes Mal, wenn eine dieser Tasten gedrückt wird, wird die Spielfigur um 16 Pixel in die entsprechende Richtung verschoben.

Als Zugabe habe ich dem Labyrinth noch zwei Lichter spendiert, die zwar nicht bewegt werden, aber hübsch flackern. Die einzelnen Bilder habe ich hier (falls Ihr das nachprogrammieren wollt):

image image image image

Das alles ist noch völlig rudimentär. Der Held kann über Gluthitze laufen, durch Mauern gehen und auch komplett aus dem Spielfeld verschwinden. Ich wollte das Skript für das Tutorium nicht unnötig aufblasen, aber natürlich müßte man in einem realen Programm abfragen, ob die Bewegung in die gewünschte Richtung überhaupt legal, das heißt erlaubt und möglich ist. Bei kachelbasierten Spielen erfolgt dies im Regelfall in einer Abfrage, ob das gewünschte nächste Feld »besetzt« ist. Dazu vielleicht in einem späteren Tutorium mehr …


Noch mehr Shoes-Tutorials im Schockwellenreiter


image


(Kommentieren)  Spaß mit Shoes: Action! – 20160119 bitte flattrn

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung


Werbung


image  image  image
image  image  image