Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Ruby-Bibliothek Gosu zur Erstellung von 2D-Spielen

Beitrags-Cover: Ruby-Bibliothek Gosu zur Erstellung von 2D-Spielen
InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Gosu — ist eine Bibliothek zur Entwicklung von 2D-Spielen und grafischen Anwendungen in der Programmiersprache Ruby (sowie C++). Sie vereinfacht die Erstellung von Spielen, indem sie eine Reihe von praktischen und effektiven Werkzeugen für die Arbeit mit Grafik, Sound, Text und Eingabeverwaltung bereitstellt.

Funktionen von Gosu

  • Gosu unterstützt das Laden und Anzeigen von Bildern in den Formaten PNG, JPEG und anderen. Auch Animationen mit Sprite-Listen werden unterstützt.
  • Die Bibliothek ermöglicht das Anzeigen von Text mit Systemschriftarten oder geladenen Schriftdateien.
  • Gosu unterstützt die Wiedergabe von Sounds und Musik in den Formaten WAV und MP3, was es einfach macht, Soundeffekte und musikalische Begleitung in das Spiel einzufügen.
  • Die Bibliothek bietet eine bequeme Verarbeitung von Eingaben über Tastatur und Maus, was die Steuerung von Charakteren und anderen Spielelementen vereinfacht.
  • Gosu ermöglicht die Erstellung von flüssigen Animationen unter Verwendung von Timern und Frame-Zyklen.
  • Dank des offenen Codes und der Unterstützung von Erweiterungen lässt sich Gosu leicht mit anderen Bibliotheken integrieren und ermöglicht das Hinzufügen neuer Funktionalitäten.
In den Threads zu diesem Beitrag werde ich nach und nach kleine Notizen hinzufügen, wie man mit Gosu arbeitet. Ich habe auch ein Video mit einer Demo angehängt, die in ein Ruby-Gem verpackt ist.
Installieren wir die Gosu-Demo:
gem install gosu-examples
Starten wir die Demo:
gosu-examples
gosu-examples
gosu-examples
Wenn alles richtig installiert ist, öffnet sich ein Fenster mit Demos, die man erkunden kann. Hier ist die Übersetzung des Textes vom Hauptbildschirm:
Willkommen im Gosu Example Box!

Dieses kleine Tool ermöglicht es Ihnen, beliebige Gosu-Beispiele aus der Liste auf der rechten Seite des Bildschirms zu starten.

Jedes Beispiel kann sowohl aus diesem Tool als auch aus dem Terminal/der Eingabeaufforderung als eigenständiges Ruby-Skript ausgeführt werden.

Tastenkombinationen:

• Um den Quellcode eines Beispiels oder einer Funktionsdemo zu sehen, drücken Sie E.
• Um den Ordner 'examples' zu öffnen, drücken Sie O.
• Um dieses Tool zu beenden, drücken Sie Esc.
• Um in den Vollbildmodus zu wechseln, drücken Sie Alt+Enter (Windows, Linux) oder cmd+F (macOS).

Warum werfen Sie nicht jetzt einen Blick auf den Code dieses Beispiels? Drücken Sie einfach E.
Wenn Sie sofort E drücken, öffnet sich in Ihrem Code-Editor der Teil, der für diesen ersten Bildschirm verantwortlich ist:
require "gosu"

WIDTH, HEIGHT = 640, 480

class Welcome < (Example rescue Gosu::Window)
  PADDING = 20

  def initialize
    super WIDTH, HEIGHT

    self.caption = "Willkommen!"

    text =
      "<b>Willkommen im Gosu Example Box!</b>

      Dieses kleine Tool ermöglicht es Ihnen, beliebige Gosu-Beispiele aus der Liste auf der rechten Seite des Bildschirms zu starten.

      Jedes Beispiel kann sowohl aus diesem Tool <i>als auch</i> aus dem Terminal/der Eingabeaufforderung als eigenständiges Ruby-Skript ausgeführt werden.

      Tastenkombinationen:

      • Um den Quellcode eines Beispiels oder einer Funktionsdemo zu sehen, drücken Sie <b>E</b>.
      • Um den Ordner 'examples' zu öffnen, drücken Sie <b>O</b>.
      • Um dieses Tool zu beenden, drücken Sie <b>Esc</b>.
      • Um in den Vollbildmodus zu wechseln, drücken Sie <b>Alt+Enter</b> (Windows, Linux) oder <b>cmd+F</b> (macOS).

      Warum werfen Sie nicht jetzt einen Blick auf den Code dieses Beispiels? Drücken Sie einfach <b>E</b>."

    # Entfernen Sie alle führenden Leerzeichen, damit der Text linksbündig ist
    text.gsub! /^ +/, ""

    @text = Gosu::Image.from_markup text, 20, width: WIDTH - 2 * PADDING

    @background = Gosu::Image.new "media/space.png"
  end

  def draw
    draw_rotating_star_backgrounds

    @text.draw PADDING, PADDING, 0
  end

  def draw_rotating_star_backgrounds
    # Ignorieren Sie die Mathematik in dieser Methode, sie sieht nicht so gut aus, wie ich dachte
    # es würde. =(

    angle = Gosu.milliseconds / 50.0
    scale = (Gosu.milliseconds % 1000) / 1000.0

    [1, 0].each do |extra_scale|
      @background.draw_rot WIDTH * 0.5, HEIGHT * 0.75, 0, angle, 0.5, 0.5,
        scale + extra_scale, scale + extra_scale
    end
  end
end

Welcome.new.show if __FILE__ == $0
Und wenn Sie cptn_ruby.rb auswählen, können Sie ein einfaches Plattformspiel spielen (ich habe ein Gameplay-Video zu diesem Beitrag hinzugefügt) ^_^
Im nächsten Beitrag werde ich den Prozess des Schreibens / Erstellens eines Spiels etwas näher betrachten.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was sind Immutabilität und Mutabilität?
19. Jun, 07:48 Uhr

Was sind Immutabilität und Mutabilität?

meme code
meme code@memecode
[Ruby] Was ergibt die Addition von 10,5 und 10?
23. Jun, 13:23 Uhr

[Ruby] Was ergibt die Addition von 10,5 und 10?

meme code
meme code@memecode
[Ruby] Was unterscheidet Variablen, die mit @, @@ und $ beginnen?
23. Jun, 14:00 Uhr

[Ruby] Was unterscheidet Variablen, die mit @, @@ und $ beginnen?

meme code
meme code@memecode
Was ist eine Funktion in der Programmierung?
24. Jun, 18:15 Uhr

Was ist eine Funktion in der Programmierung?

meme code
meme code@memecode
[Fix] extconf.rb ist bei der Installation der Ruby-Bibliothek Gosu fehlgeschlagen
27. Jun, 16:38 Uhr

[Fix] extconf.rb ist bei der Installation der Ruby-Bibliothek Gosu fehlgeschlagen

meme code
meme code@memecode
Wie macht man einen leeren Git-Commit?
28. Jun, 08:33 Uhr

Wie macht man einen leeren Git-Commit?

meme code
meme code@memecode
Gosu Ruby Tutorial - пройдемось по офіційній документації
03. Jul, 11:50 Uhr

Gosu Ruby Tutorial - пройдемось по офіційній документації

meme code
meme code@memecode
Wir schreiben das Demospiel Drones vs Zombies (Gosu / Ruby)
12. Jul, 12:17 Uhr

Wir schreiben das Demospiel Drones vs Zombies (Gosu / Ruby)

meme code
meme code@memecode
Wie behebt man einen Windows-Absturz, der durch CrowdStrike verursacht wurde?
19. Jul, 13:53 Uhr

Wie behebt man einen Windows-Absturz, der durch CrowdStrike verursacht wurde?

meme code
meme code@memecode
Was bedeutet .map(&:name) in Ruby?
28. Jul, 11:18 Uhr

Was bedeutet .map(&:name) in Ruby?

meme code
meme code@memecode
Wie funktioniert die map-Methode in Ruby? Eine Übersicht über die Funktionsweise der Methode mit Beispielen
30. Jul, 07:33 Uhr

Wie funktioniert die map-Methode in Ruby? Eine Übersicht über die Funktionsweise der Methode mit Beispielen

meme code
meme code@memecode
Was bedeutet der Punkt am Anfang einer Datei (.gitignore, .DS_Store, .bashrc usw.)?
02. Aug, 13:15 Uhr

Was bedeutet der Punkt am Anfang einer Datei (.gitignore, .DS_Store, .bashrc usw.)?

meme code
meme code@memecode