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 '24 07:48

Czym jest niemutowalność i mutowalność?

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

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

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

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

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

Co to jest funkcja w programowaniu?

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

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

@memecode
Jak zrobić pusty commit w gicie?
28 cze '24 08:33

Jak zrobić pusty commit w gicie?

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

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

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

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

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

Jak naprawić awarię Windows spowodowaną przez CrowdStrike?

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

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

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

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

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

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

@memecode