Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Biblioteka Ruby Gosu do tworzenia gier 2D

Okładka posta: Biblioteka Ruby Gosu do tworzenia gier 2D
Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Gosu — to biblioteka do tworzenia gier 2D oraz aplikacji graficznych w języku Ruby (a także C++). Ułatwia tworzenie gier, oferując zestaw wygodnych i efektywnych narzędzi do pracy z grafiką, dźwiękiem, tekstem oraz obsługą wejścia.

Możliwości Gosu

  • Gosu obsługuje ładowanie i wyświetlanie obrazów w formatach PNG, JPEG i innych. Obsługuje również animacje za pomocą sprite sheetów.
  • Biblioteka pozwala na wyświetlanie tekstu za pomocą systemowych czcionek lub załadowanych plików czcionek.
  • Gosu wspiera odtwarzanie dźwięków i muzyki w formatach WAV i MP3, co umożliwia łatwe dodawanie efektów dźwiękowych oraz muzyki do gry.
  • Biblioteka zapewnia wygodne przetwarzanie wejścia z klawiatury i myszy, co ułatwia sterowanie postaciami oraz innymi elementami gry.
  • Gosu pozwala na tworzenie płynnych animacji, wykorzystując timery i cykle klatkowe.
  • Dzięki otwartemu kodowi i wsparciu dla rozszerzeń, Gosu łatwo integruje się z innymi bibliotekami i pozwala na dodawanie nowych funkcjonalności.
W wątkach/tematach do tego wpisu będę stopniowo dodawać małe notatki na temat pracy z Gosu. Dołączyłem również wideo z demem, które jest spakowane w Ruby-gem.
Instalujemy demko Gosu:
gem install gosu-examples
Uruchamiamy demko:
gosu-examples
gosu-examples
gosu-examples
Jeśli wszystko zostało poprawnie zainstalowane, otworzy się okno z demkami, które można badać. Oto tłumaczenie tekstu z ekranu głównego:
Witamy w Gosu Example Box!

To małe narzędzie pozwala na uruchamianie dowolnych gier Gosu z listy po prawej stronie ekranu.

Każdy przykład można uruchomić zarówno z tego narzędzia, jak i z terminala/wiersza poleceń jako osobny skrypt Ruby.

Skróty klawiaturowe:

• Aby zobaczyć kod źródłowy przykładu lub demonstracji możliwości, naciśnij E.
• Aby otworzyć folder 'examples', naciśnij O.
• Aby wyjść z tego narzędzia, naciśnij Esc.
• Aby przełączyć się w tryb pełnoekranowy, naciśnij Alt+Enter (Windows, Linux) lub cmd+F (macOS).

Dlaczego nie spojrzeć na kod tego przykładu już teraz? Po prostu naciśnij E.
Jeśli od razu naciśniesz E, w twoim edytorze kodu otworzy się część, która odpowiada za ten pierwszy ekran:
require "gosu"

WIDTH, HEIGHT = 640, 480

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

  def initialize
    super WIDTH, HEIGHT

    self.caption = "Witamy!"

    text =
      "<b>Witamy w Gosu Example Box!</b>

      To małe narzędzie pozwala na uruchamianie dowolnych gier przykładowych Gosu z listy po prawej stronie ekranu.

      Każdy przykład można uruchomić zarówno z tego narzędzia <i>jak</i> z terminala/wiersza poleceń jako samodzielny skrypt Ruby.

      Skróty klawiaturowe:

      • Aby zobaczyć kod źródłowy przykładu lub demonstracji możliwości, naciśnij <b>E</b>.
      • Aby otworzyć folder ‘examples’, naciśnij <b>O</b>.
      • Aby wyjść z tego narzędzia, naciśnij <b>Esc</b>.
      • Aby przełączyć się w tryb pełnoekranowy, naciśnij <b>Alt+Enter</b> (Windows, Linux) lub <b>cmd+F</b> (macOS).

      Dlaczego nie spojrzeć na kod tego przykładu już teraz? Po prostu naciśnij <b>E</b>."

    # Usuń wszystkie wiodące spacje, aby tekst był wyrównany do lewej
    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
    # Zignoruj matematykę w tej metodzie, nie wygląda tak dobrze, jak myślałem
    # że będzie. =(

    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
A wybierając cptn_ruby.rb można zagrać w prosty platformer (wideo z rozgrywki dodałem do tego wpisu) ^_^
W następnym wpisie trochę przyjrzę się samemu procesowi pisania / tworzenia gry.

Ten post nie ma jeszcze żadnych dodatków od autora.

Czym jest niemutowalność i mutowalność?
19 cze 07:48

Czym jest niemutowalność i mutowalność?

meme code
meme code@memecode
[Ruby] Co zwróci wynik dodawania 10.5 i 10?
23 cze 13:23

[Ruby] Co zwróci wynik dodawania 10.5 i 10?

meme code
meme code@memecode
[Ruby] Czym różnią się zmienne zaczynające się od @, @@ i $?
23 cze 14:00

[Ruby] Czym różnią się zmienne zaczynające się od @, @@ i $?

meme code
meme code@memecode
Co to jest funkcja w programowaniu?
24 cze 18:15

Co to jest funkcja w programowaniu?

meme code
meme code@memecode
[Fix] extconf.rb nie powiódł się podczas instalacji biblioteki Ruby Gosu
27 cze 16:38

[Fix] extconf.rb nie powiódł się podczas instalacji biblioteki Ruby Gosu

meme code
meme code@memecode
Jak zrobić pusty commit w gicie?
28 cze 08:33

Jak zrobić pusty commit w gicie?

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

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

meme code
meme code@memecode
Pisujemy demo-grę Drones vs Zombies (Gosu / Ruby)
12 lip 12:17

Pisujemy demo-grę Drones vs Zombies (Gosu / Ruby)

meme code
meme code@memecode
Jak naprawić awarię Windows spowodowaną przez CrowdStrike?
19 lip 13:53

Jak naprawić awarię Windows spowodowaną przez CrowdStrike?

meme code
meme code@memecode
Co oznacza .map(&:name) w Ruby?
28 lip 11:18

Co oznacza .map(&:name) w Ruby?

meme code
meme code@memecode
Jak działa metoda map w Ruby? Przegląd działania metody z przykładami
30 lip 07:33

Jak działa metoda map w Ruby? Przegląd działania metody z przykładami

meme code
meme code@memecode
Co oznacza kropka na początku pliku (.gitignore, .DS_Store, .bashrc itd.)?
2 sie 13:15

Co oznacza kropka na początku pliku (.gitignore, .DS_Store, .bashrc itd.)?

meme code
meme code@memecode