Gra dla małych dzieci (cz. 2) - Tworzenie gier
Ostatnio skończyliśmy na prostym mechanizmie, który umożliwia przytrzymanie guzika by wytwarzać różnokolorowe fajerwerki. Zmieniłem go jednak na pressed any key, by można było sobie powciskać guziki, a nie trzymać.
Dźwięk
Ale trzeba dodać jakieś efekty dźwiękowe. Niech każde wciśnięcie będzie nie tylko wizualną uciechą dla dziecka, ale również dźwiękową.
Ze strony OpenGameArt.org pobrałem 6 różnych prostych efektów dźwiękowych - jak dźwięk gitary czy perkusji.
OpenGameArt to strona przechowująca rożne elementy graficzne i dźwiękowe dla twórców gier. W zależności od licencji możemy ich użyć w swoim produkcie. Do dyspozycji mamy bardzo dużo różnego rodzaju sampli, z których użyłem parę.
Niestety nie znam sposobu na zrobienie "screena" z gry z muzyką prócz nagrania tego ;) Ale niestety nie mam warunków :( Jednak opowiem jak to zrobić.
Pobieramy dowolną ilość prostych dźwięków - dla przykładu 6. Najlepiej nazwać je jak są - snd_0 itd. ale możemy też dać im bardziej finezyjne nazwy.
Kod Create Controllera
Każde wciśnięcie przycisku będzie losowo wybierać dźwięk i go odtwarzać. Na początek zróbmy tablicę z danymi, gdzie wartością będzie nazwa zasobu muzycznego.
Tablica to coś w rodzaju zmiennych, tylko danych nie przechowują bezpośrednio, ale w indeksie. Powiedzmy, że mamy ekwipunek, który ma 3 miejsca. Na zmiennych musielibyśmy mniej więcej tak zakodować
ekwipunek_1=1
ekwipunek_2=1
ekwipunek_3=1
Jest to możliwe, ale przecież możemy mieć tablicę, która ma nazwę ekwipunek i zmieniać jej "indeks", analogiczny kod:
ekwipunek[0]=1
ekwipunek[1]=1
ekwipunek[2]=1
Indeks tablicy bierzemy od zera. Ale ktoś się może zapytać - co to zmienia? A ułatwia różne rzeczy. Dla przykładu możemy losować indeks tablicy i go odtwarzać. Inaczej byłoby to mocno utrudnione (o czym niebawem).
W każdym razie w mojej wersji gry będzie 6 utworów, więc w create dajemy:
sound[0] = snd_0;
sound[1] = snd_1;
sound[2] = snd_2;
sound[3] = snd_3;
sound[4] = snd_4;
sound[5] = snd_5;
Czyli element tablicy sound o numerze 0 ma snd_0 i tak dalej.
Odtwarzanie dźwięku
Tutaj mamy przykładowy kod użyty do odtwarzania dźwięku losowego:
audio_play_sound(sound[irandom_range(0, 5)], 0, 0);
Działa on tak. Odtwórz dźwięk sound[x] gdzie x jest losowane od 0 do 5. Irandom_range zwraca wartość całkowitą. Tak więc w jednej zbiorczej nazwie sound mamy 6 elementów dźwiękowych, które są losowo wybierane. Mam nadzieję, że to proste :P
Oczywiście kod dajemy (jego wykonywanie) w pressed any key, by dźwięk odgrywał się przy wciśnięciu dowolnego przycisku.
Wiele od strony graficznej się nie zmieniło.
Losowy efekt graficzny
Cały czas robimy piękne fajerwerki, ale przecież efektów graficznych mamy parę do dyspozycji, o czym mówi dokumentacja:
https://docs.yoyogames.com/source/dadiospice/002_reference/particles/simple%20effects/index.html
Weźmiemy wszystkie prócz rain i snow, gdyż one są obszarowe i zarazem nie będą dobrze wyglądać. Zróbmy podobną tablicę - effects i zapiszmy każdy typ efektu w niej.
effect[0] = ef_cloud;
effect[1] = ef_ellipse;
effect[2] = ef_explosion;
effect[3] = ef_firework;
effect[4] = ef_flare;
effect[5] = ef_ring;
effect[6] = ef_smoke;
effect[7] = ef_smokeup;
effect[8] = ef_spark;
effect[9] = ef_star;
Czyli tablica effect ma indeksy od 0 do 9 - fajnie :)
Teraz zmodyfikujmy troszkę kod wyświetlania efektu w losowym miejscu dla pressed any key.
Wyglądał on tak:
effect_create_above(ef_firework, random(room_width), random(room_height), choose(0, 1, 2), make_color_hsv(random(255), 255, 255));
Czyli wyświetl w losowym miejscu efekt firework. Usuńmy ef_firework i wpiszmy effect[irandom_range(0, 9)]
Nie wszystkie efekty graficzne są ładne (moim zdaniem), ale niech będą - jakaś różnorodność powinna być zachowana ;)
Na zakończenie
Zrobimy jeszcze jeden tekst na temat kończenia gry. Omówimy podstawowe opcje, które możemy wyłączyć, by np. dziecko nie wyszło z gry i nie zaczęło bawić się naszym pulpitem ;) Na razie to tyle i mam nadzieję, że kurs się na coś przydał. Do zobaczenia w następnym wpisie, czyli zapewne za tydzień.
OpenGameArt.org dobry temat, uczę syna scratcha, więc się przyda
Cieszę się. W dzieciach nadzieja naszego kraju ;) A przy okazji fajna zabawa może być z nauki programowania