Felgo ilə Slot Oyunu Necə Hazırlanır - Slot Oyunu üçün Dərslik

Bu dərslik, Flask of Rum slot oyununu yaratmaq yolunda sizə addım-addım təlimat verir.

Slot Oyunu?

Kazino dünyasına girəndə və mövcud oyunlara nəzər salanda ən populyar növlərdən biri slot oyunudur. İnternetdən və ya mobil tətbiqlərdən istifadə edə biləcəyiniz onlayn kazinolarda belə bu oyunlar mütləq zirvəyə aiddir. Slotomania, Slotpark və ya Greentube kimi tanınmış slot oyun istehsalçılarına baxaraq onları hərəkətdə görmək mümkündür!

Slot maşınlarının tipik dizaynı. Book of Ra klassik bir

slot oyun nümunəsidir, lakin hər cür oyun mövcuddur.

Oradakı slot oyunlarının sayı inanılmaz olsa da, əksəriyyəti eyni əsas oyun mexanikasını bölüşür:

  • Əsas oyun pəncərəsi simvolları olan bir çox sütundan ibarətdir. Mexaniki slot maşınlarının tarixi mənşəyinə görə bu sütunlara makaralar da deyilir.
  • Oyunçu bahis etmək istədiyi məbləği seçir və slot maşınını işə salır.
  • Hər dəfə slot maşını işə salındıqda oyunçuların krediti bahis məbləği ilə azalır.
  • Maşın dayandıqda eyni simvollar ardıcıl olaraq sıralanırsa, oyunçu əvvəl bahis etdiyi məbləğə əsasən kredit qazanır.
  • Oyunçunun nə qədər kredit qazanması, slot maşın oyun növündən, mövcud simvollardan və hər bir simvol üçün qazanma faktorlarının necə qurulmasından asılıdır.

Bu artıq əyləncəli səslənir, elə deyilmi? Ancaq oyunların çoxunda onları daha da maraqlı edən bəzi xüsusiyyətlər var: Məsələn, The Book of Ra yalnız oyunun adı deyil, həm də xüsusi bir gücə malik makaralarda simvoldur. Uyğun simvollar xətti yaratmaq üçün oyundakı digər simvolların yerini tuta bilər. Bu cür joker simvollar artıq qazanma şansını artırır, amma bu hamısı deyil. Oyunçu üç və ya daha çox kitabı bir sətrə yığmağı bacarırsa, qazanma şansını daha da artıran bəzi bükülmələrlə on pulsuz oyun alır. Misir zindanlarının əsl kəşfiyyatçıları kimi, Ra Kitabını tapan oyunçular da çox şanslıdırlar və böyük qazanc əldə edə bilərlər.

Əksər slot maşınlarının qazanma şansınızı artıran xüsusi simvolları var.

Wildcard simvolları, pulsuz fırlatmalar verən simvollar və ya hətta mini oyunlara başlayan simvollar böyük bir əyləncə faktorudur və müasir slot oyunlarının əksəriyyətində baş verir. Bu təlimatda, bu cür oyunlara bənzər bir pirat temalı slot oyunu edəcəyik! Və əminəm ki, quldurların ən böyük xəzinəsinin nə olduğunu bilirsiniz. Doğru, bir Rum Şişesi! Son versiya belə görünəcək, yarrrrr!

Bu möhtəşəm slot maşınını hazırlayacaqsınız.

Dərsliyin əhatə dairəsi

Bu təlimatı tamamladıqdan sonra, Felgo ilə rekord müddətdə öz slot maşınınızı yaratmaq üçün yaxşı hazırlanmalısınız. Bu dərslik əhatə edir:

  • Xüsusi bir slot maşını yaratmaq üçün SlotMachine komponentindən istifadə.
  • Xüsusi SlotMachineModel ilə slot maşın makaralarını təsadüfi sifariş simvollarla doldurun.
  • 9 fərqli qazanan xətdə uyğun simvolların aşkarlanması.
  • Hər bir simvolun yerini tuta biləcək xüsusi bir simvol olaraq Rum Şişəsindən istifadə.
  • Bir oyun üçün konfiqurasiya məlumatlarını saxlamaq üçün tək bir obyekt təyin etmək. (məsələn, mövcud simvollar, qazanma faktorları.)
  • Siqnallardan istifadə edərək hadisələri bildirin.

Ancaq Felgo ilə yeni başlamısınızsa və Qt Creator və ya QML ilə necə işləyəcəyinizi bilmirsinizsə, zəhmət olmasa aşağıdakı təlimata nəzər yetirin:

  • Felgo və Qt Creator ilə işə başlayın

Ayrıca, bu oyunu sadə saxlamaq və inkişaf etdirmək üçün bir az yer buraxmaq üçün, üç və ya daha çox rom balonu bir xətt meydana gətirdikdə on pulsuz oyun qazanma xüsusiyyətini əlavə etmədik. Bu nümunə oyunun slot maşınını ehtiyaclarınıza mükəmməl uyğun olan tam hüquqlu bir slot maşınına çevirmək sizə aiddir.

Flask of Rum demo oyununun mənbə koduna birbaşa baxmaq istəsəniz - Felgo SDK -dakı digər demolarla birlikdə tapa bilərsiniz. SDK qovluğunda demoyu harada tapa biləcəyinizə baxın.

Oyun xüsusiyyətlərinə ümumi baxmaq üçün Rum Şişesi - Slot Oyununa baxın.

Resurslar

Bu dərs üçün lazım olan yeganə əlavə mənbələr bəzi şəkillərdir. Yaratmaq istədiyiniz Qt Creator layihəsinin aktivlər kataloquna yerləşdirilməlidir. Şəkilləri buradan yükləyə bilərsiniz.

Layihənin Qurulması

İlk addım Qt Creator -da yeni boş bir layihə yaratmaqdır. Oyunun landşaft yönümlü olmasını istəyirik, buna görə layihə qurarkən bu rejimi seçdiyinizə əmin olun. İşiniz bitdikdə, yüklənmiş şəkilləri layihənizin aktivlər qovluğuna əlavə edin. Qt Creator -da layihə ağacının Digər fayllar \ aktivləri qovluğunda da görünməlidirlər. Zəhmət olmasa, mənbələr arxivini açdığınız zaman yarana biləcək əlavə bir alt kataloq əlavə etməməyə diqqət edin.

Layihə ağacınız belə görünməlidir.

Hər şey hazırdırsa, nəhayət bir kod əlavə etməyə başlaya bilərik!

Əsas Oyun Düzeni

Birincisi, ekranın ortasındakı həqiqi slot maşınının ətrafındakı boşluğu dolduran əsas oyun düzeni yaratmaq istəyirik. Bura daxildir:

  • Oyunların əsas səhnəsinin sadə bir versiyası. Oyunda gördüyümüz bütün elementlər burada yerləşdiriləcək.
  • Flask of Rum loqotipi və oynamaq üçün ümumi kreditlər. Oyun pəncərəsinin yuxarısındakı bir çubuq bu elementləri tutacaq.
  • Slot maşınını işə salmaq və ya bahis məbləğini dəyişdirmək üçün düymələr. Bu düymələr oyun pəncərəsinin altındakı bir çubuğa yerləşdirilir.

Əsas oyun düzeni yuxarıdakı bir çubuqdan, altdan biri və gözəl tünd qırmızı fondan ibarətdir.

Sadə bir səhnə

Qırmızı fonumuz üçün yalnız bir neçə xassəni və rəngli bir düzbucağı təyin edən sadə bir oyun səhnəsindən başlayaq. Sadəcə qml qovluğunuzdakı cari Main.qml faylını aşağıdakı tətbiqlə əvəz edin.

Bu bir neçə sətirlə oyun pəncərəmizi 960 x 640 piksel olaraq qurduq. Bu oyunu kompüterinizdə oynayarkən standart pəncərə ölçüsüdür. Mobil cihazlarda oyun pəncərəsinin ölçüsü hər bir cihaz üçün fərqlidir.

Daha sonra oyun pəncərəsinə bir Səhnə əlavə edirik və activeScene: səhnəni ifadə edərək onu aktiv səhnə kimi konfiqurasiya edirik. Bu ifadədəki dəyər səhnəsi, Səhnə elementimiz üçün təyin etdiyimiz idə aiddir. Bu nümunədəki səhnənin məntiqi ölçüsü 480 x 320 pikseldir. Səhnədəki bütün elementlər oyun pəncərəsinin ölçüsünə uyğun olaraq səhnə ilə birlikdə miqyaslanır. Bu, sabit bir mövqe və ölçüdə olan elementləri daha yüksək qətnamə olan ekranlarda daha kiçik olmalarından narahat etmədən əlavə etməyi çox asanlaşdırır.

Qeyd:Felgo'da fərqli ölçeklendirme rejimi mövcuddur. Varsayılan rejim, səhnəni ekranın kənarında boş yerlər buraxa biləcək oyun pəncərəsinə uyğundur. Ölçmə rejimləri haqqında daha çox məlumat əldə etmək üçün müxtəlif ekran ölçüləri və qətnamələri üçün mobil oyunlar necə yaradılacağını öyrənin.

BetAmount və creditAmount iki xüsusiyyət, cari bahis məbləğini və oyunun ümumi kredit məbləğini idarə etmək üçün qlobal xüsusiyyətlərdir. Artıq 4 və 400 ilkin dəyərləri təyin etmişik, buna görə də slot maşınlarının hər dönməsi ilkin 400 kredit məbləğini 4 kredit azaldır. Səhnənin son elementi fon rəngimizi təyin edən düzbucaqlıdır. Düzbucağı yalnız səhnəni deyil, bütün oyun pəncərəsini dolduracaq şəkildə konfiqurasiya edirik. Bu, arxa planın hər bir cihazda bütün ekranı əhatə etməsini təmin edir.

Üst çubuğun yaradılması

Üst çubuq, oyun loqosu və kredit məbləği kimi əlavə maddələr ehtiva edən səhnənin çox fərqli bir elementidir. Kodunuzu təmiz və yaxşı qurmaq üçün bu cür elementlər üçün ayrı bir QML maddəsi yaratmaq yaxşı bir fikirdir. Qml qovluğunuzda yeni bir TopBar.qml faylı yaradın və bu kodla doldurun:

Üst çubuğun arxa plan Şəkilinin hündürlüyünə uyğun gələn 50 piksel yüksəkliyi var. Ancaq bu nöqtədə üst çubuq üçün sabit bir genişlik təyin etmirik. Bunun əvəzinə, arxa plan görüntüsünü bütün üst çubuğu doldurmaq üçün konfiqurasiya edirik, buna görə də sonrakı nöqtədə üst çubuğun hər hansı bir genişliyini təyin etmək mümkündür və arxa plan şəkli hər zaman hamısını əhatə edir. Bu davranışı çubuğun enini oyun ekranının eni ilə uyğunlaşdırmaq üçün istifadə edəcəyik.

Üst çubuğun digər elementləri sabit ölçülərə malikdir, lakin çubuğun sabit bir nöqtəsinə yerləşdirilmir. Bunun əvəzinə, əşyaları nisbətən üst çubuğa və ya bir -birinə bağlayırıq. Bu, istənilən cihaz genişliyində eyni nisbi mövqeləri təmin edir. Məsələn, logo həmişə şaquli və üfüqi mərkəzdədir.

Kreditlərin simvolu, soldan 4 piksel və çubuğun üstündən 8 piksel yerləşdirdiyimiz bir yığın qızıl sikkələrdir. Sonra kredit məbləği mətnini birbaşa qızıl sikkələrin soluna bağlayırıq və şaquli olaraq mərkəzləşdiririk. Mətn dəyəri olaraq scene.creditAmount istifadə edərək, səhnəmizin müvafiq xüsusiyyətini göstəririk. Bundan əlavə, creditAmount əmlakında baş verən hər hansı bir dəyişiklik avtomatik olaraq mətnə ​​tətbiq olunur. Mülkiyyət bağlama anlayışı sayəsində mümkündür və mətnin və faktiki kredit məbləğinin senkronize saxlanılması ilə bağlı narahatlıqları aradan qaldırır.

Və bu uşaqlar, üst çubuğu necə yaratdığınızdır. ;-)

Düymələr, Siqnallar və Alt Çubuq

Elementlərin hizalanması və ölçülməsi üçün əsas prinsiplər baxımından alt çubuq üst çubuğa çox bənzəyir. Ancaq üst çubuqdan fərqli olaraq bir neçə əlavə xüsusiyyətə ehtiyac var:

  • Alt çubuq əsasən tıklanabilir şəkillər şəklində olan düymələrdən ibarətdir. Bütün bu düymələr üçün siqnalların nə vaxt tıklandığını təyin edirik. İstənilən digər komponent, bu siqnallar üçün işləmə funksiyalarını əlavə edə bilər və bir klik hadisəsi baş verdikdə kodu icra edə bilər.
  • Şəkillərdəki klik hadisələrini dinləyə bilmək üçün bütün düymələrə MouseArea əlavə edəcəyik.
  • Başlat və avtomatik düymə xüsusi düymələrdir, çünki iki vəziyyəti var: Ya aktiv, ya da qeyri-aktiv ola bilərlər. Bu vəziyyətlərin hər biri üçün düyməni normal və ya sıxılmış vəziyyətdə göstərən fərqli bir şəkil göstəririk. Daha sonra, alt çubuğa vəziyyətlərin nə vaxt dəyişdirilməli olduğunu bar istifadəçisinin qərar verməsinə imkan verən iki əlavə xüsusiyyət təqdim edirik.

İndi BottomBar.qml faylını qml qovluğumuza əlavə edək və kodla dolduraq.

Yenə sabit bir hündürlük təyin edirik və bütün çubuğu dolduran bir fon şəkli əlavə edirik. Başlat və avtomatik düymələr bir-birinə çox bənzəyir. Çubuğun sağında və ya solunda hizalanmış bir şəkil təyin edir və bəzi əlavə xüsusiyyətlər ehtiva edir. Satır mənbəyi ilə: bottomBar.startActive? "../assets/ButtonStartActive.png": "../assets/ButtonStart.png", başlanğıc düyməsi startActive xüsusiyyətinə əsaslanaraq fərqli bir şəkil göstərir. Ayrıca, MouseArea bir klik algıladığında, uyğun gələn siqnalı işə salırıq. Avtomatik düymə üçün müvafiq xüsusiyyətlərdən və siqnallardan eyni şəkildə istifadə edirik.

Bahis məbləğini idarə etmək üçün düymələr üfüqi olaraq alt çubuğun ortasında yerləşir və bir -birinin yanında hizalanır. Bu məqsədlə, bütün alt elementlərini üfüqi bir sıraya yerləşdirən Satır komponentindən istifadə edirik. Daha sonra düymələrin özlərinin üfüqi hizalanmasından narahat olmadan çubuqdakı Satır komponentinin mövqeyini təyin edə bilərik. Düymələr üçün yalnız şaquli mərkəzdə olan və düzgün siqnal tetikleyen bir MouseArea olan bir Şəkil təyin edirik.

Bu çox kod kimi görünür, amma əsasən bütün elementləri düzgün göstərmək və hadisələri dinləmək və siqnalları işə salmaq üçündür.

Çubuqları səhnəyə əlavə etmək

Əminəm ki, bu anda həm yuxarı, həm də alt çubuğun hərəkətdə olduğunu görmək istəyirsiniz. Hər ikisini əsas səhnəyə əlavə edin və necə göründüyünü görə bilərik.

İki çubuq bir neçə sətirlə tez bir zamanda əlavə olunur. Çubuqları istədiyimiz genişliklə işləməyə hazırladığımız üçün genişliyi oyun pəncərəsinin həqiqi genişliyinə təyin edə bilərik. Daha sonra hər cihazda bütün ekran genişliyini istifadə edirlər. Alt çubuq üçün, siqnalları artıq səhnəmizdə əlavə etdiyimiz idarəçi funksiyalarına bağlayırıq. Əksər funksiyalar artıq həyata keçirilə bilər:

  • boostBetAmount () - Oyunçunun cari kredit məbləği ilə ödəyə biləcəyi bahis məbləğini növbəti böyük addıma qədər artırır. Mümkün addımlar 4, 5, 8, 10, 15 və 20 kreditdir.
  • azaldılmasıBetAmount () - Oyunçunun cari kredit məbləği ilə ödəyə biləcəyi bahis məbləğini növbəti kiçik addıma qədər azaldır.
  • maxBetAmount () - Oyunçunun ödəyə biləcəyi maksimum bahis məbləğini təyin edir.
  • autoPlaySlotMachine () - Avtomatik düyməni aktivləşdirir və ya deaktiv edir. Düyməni aktivləşdirdiyiniz zaman oyun avtomatik olaraq slot maşınını işə salır. Düymə aktiv deyilsə, oyunçu hər döngəni əl ilə başlaya bilər. Oyunçu avtomatik düyməni aktivləşdirdikdə, slot maşınını da birbaşa işə salırıq. Bu vəziyyətdə başlanğıc düyməsini əlavə olaraq basmaq lazım deyil.
  • startSlotMachine () - Hələlik burada heç nə etmirik. Slot maşınımızı oyuna əlavə etdikdən sonra bu funksiyadan başlayacağıq.

Bahis məbləğini dəyişdirən bütün funksiyalar, slot maşını işləyərkən dərhal geri qayıdır. Bunun səbəbi, bir slot maşınında bahis məbləğində hər hansı bir dəyişikliyin qarşısını almaq istəyirik. Bu yoxlama üçün alt çubuğun startActive xüsusiyyətindən istifadə edirik. Slot maşınını işə saldıqda, başlanğıc düyməsini aktivləşdirəcəyik və bununla da bahis dəyişikliklərini deaktiv edəcəyik.

Hələlik hamısı budur! Qaçış vura, düymələrlə oynaya və hər zaman ekrana uyğun olan zəhmli çubuqlara baxa bilərsiniz!

Slot maşınına ehtiyacımız var

Nəhayət əyləncəli hissəyə gələ bilərik: əsl slot maşın! Felgo, əsas vəzifələri yerinə yetirməyimizə kömək edən xüsusi bir SlotMachine komponenti təklif edir. Simvolları birdən çox makaraya yerləşdirmək, makaraları fırlatmaq və ya bir -birinin ardınca dayandırmaqla maraqlanmağa ehtiyac yoxdur. Etəcəyimiz budur:

  • Göstərmək istədiyimiz əşyalar üçün məlumat modelini təyin edin. Bizim vəziyyətimizdə makaralarımız üçün fərqli simvollar təyin edirik.
  • Məlumat konfiqurasiyamıza əsaslanaraq bu elementlərin görünüşünü təyin edin.
  • Bütün mövcud pəncərə hündürlüyünü istifadə etmək üçün slot maşınını konfiqurasiya edin və bütün elementləri buna uyğun olaraq ölçün.

Simvolların tərifi ilə başlamağımızı təklif edirəm. Oyunumuz bu on simvoldan istifadə edir:

Soldan: Rum Şişesi, 10, J, Q, K və A poker kartı simvolları, tutuquşu, kəllə, xəzinə və kapitan.

Bu simvolların hər biri üçün makaralarda onun tezliyini təyin etmək istəyirik. Kraliça simvolu hər silindrdə beş dəfə görünməlidir. Kapitan yalnız bir dəfə var. Slot maşınında bir kapitan xətti görünəndə oyunçu böyük qazanır. Slot maşınımızın beş çarxa sahib olmasını istəyirik və bir spin sonunda üç və ya daha çox simvol bir xətt meydana gətirərsə, oyunçu bahis etdiyi məbləğə əsasən kredit alır. Bu cədvəl, hər bir simvolun 3, 4 və ya 5 simvoldan ibarət bir xətt meydana gətirdikləri halda geri dönüş faktorlarını göstərir.

simvollar 3x 4x 5x
10, J, Q 1: 1 1: 5 1:20
K, A. 1: 1 1: 8 1:30
tutuquşu, kəllə 1: 6 1:20 1: 150
rom 1: 1 1:20 1: 200
xəzinə 1: 8 1:80 1: 400
kapitan 1:20 1: 200 1: 1000

Bu dəyərlər fərqli bir şəkildə seçə biləcəyiniz bir konfiqurasiya ayarıdır. Bu parametrləri saxlamaq üçün bir konfiqurasiya faylına sahib olmaq ağıllı olardı, buna görə də sonrakı nöqtədə simvolları asanlıqla dəyişdirmək və faktorları qazanmaq mümkündür. Bəzi simvol parametrləri dəyişdikdə heç bir kodu uyğunlaşdırmaq istəmirik. Buna nail olmağın bir neçə yolu var. Məsələn, qlobal bir konfiqurasiya xüsusiyyəti əlavə edə bilərik və ya konfiqurasiya məlumatlarını saxlayan bir JavaScript faylı daxil edə bilərik. Qlobal parametrləri necə əlavə edə biləcəyinizi başqa bir şəkildə göstərmək üçün tək bir konfiqurasiya obyekti tətbiq etmək qərarına gəldik.

Sən təkbaşısan?

Proqramlaşdırma dillərində, singletonlar, tətbiq daxilində unikal olmalı olan obyektləri həyata keçirməyin çox yaygın bir yoludur. Singleton sinifinin yalnız bir nümunəsi ola bilər və olacaq. Bir çox fərqli iş üçün istifadə olunur. Bizim vəziyyətimizdə, konfiqurasiya obyektini təklik olaraq təyin edirik. Tətbiqdə yalnız bir qlobal konfiqurasiya qəbulu istəyirik. Ayrıca, singletonu səhnəmizə və ya başqa bir yerə əlavə etməyimizə ehtiyac yoxdur. Konfiqurasiya obyektinə bütün xüsusiyyətləri, siqnalları və funksiyaları ilə birbaşa digər fayllarda rahatlıqla daxil ola bilərik.

Subay əbədi təkdir.

QML -də bir singleton tətbiq etmək üçün iki addım lazımdır:

  • Yeni bir QML obyekti yaradın və onu tək kimi qeyd edin.
  • Tək obyekt üçün növ elan edən "qmldir" faylı əlavə edin. Bu, singletonu digər fayllarda bir növ olaraq birbaşa əlçatan edir.

SlotMachine komponentini simvol məlumatları ilə başlatmaq üçün SlotMachineModel elementindən istifadə edəcəyik. Bu SlotMachineModel, hər bir simvol üçün lazım ola biləcək əlavə xüsusi konfiqurasiya məlumatlarını da saxlaya bilər. Bəs bundan istifadə edərək konfiqurasiya obyektimizi qurmaq üçün necə istifadə edək? Qml qovluğunda yeni bir qovluq konfiqurasiyası yaradaq və SymbolConfig.qml faylını əlavə edək.

Bu sinif, onu tək obyekt olaraq qeyd edən Singleton xətti praqması istisna olmaqla, təyin etdiyiniz digər QML sinifləri kimidir. Obyektimiz üçün əsas sinif SlotMachineModel -dir, buna görə də SlotMachine komponentini işə salmaq üçün konfiqurasiya obyektimizdən istifadə edə bilərik. Bu başlanğıc üçün vacib xüsusiyyət simvol xüsusiyyətidir. Bu xüsusiyyətin bütün simvollarımızı xüsusiyyət olaraq təyin edən bir JavaScript obyektinə sahib olması tələb olunur ki, bu simvol üçün tezlik parametrləri və bəzi xüsusi məlumatlar var.

Hər bir simvol üçün xüsusi məlumatlar, hər bir simvol üçün qazanma faktorları kimi əlavə konfiqurasiya məlumatlarımızı əlavə edə biləcəyimiz yerdir. Yalnız qazanma faktorlarını xüsusi məlumat olaraq deyil, həm də simvol üçün göstərilməli olan görüntünün mənbəyini də əlavə etmək qərarına gəldik. Bu yolla, sonra istədiyiniz və simvol şəkli ilə simvolları asanlıqla silə və ya əlavə edə və faktorları qazana bilərsiniz. Bundan əlavə, sinifimizə konfiqurasiya məlumatlarımıza daxil olmağımıza kömək edən bəzi funksiyalar əlavə edə bilərik.

  • GetWinFactor () funksiyası müəyyən bir simvol və müəyyən bir xətt uzunluğu üçün qazan faktoru konfiqurasiyasını qaytarır.
  • GetSymbolData () funksiyası müəyyən bir simvol üçün xüsusi məlumatlara daxil olmaq üçün istifadə edilə bilər.

Bu, təklik yaratmaq üçün ilk addım idi. Qalan şey, tək obyektimiz üçün bir QML növü elan etməkdir. Bunun üçün qml/config qovluğumuza qmldir adlı yeni bir fayl əlavə edirik. Bu faylın *.qml və ya *.txt kimi bir fayl növü uzantısına malik olmadığından əmin olun.

Bu, versiyası 1.0 olan SymbolConfig tipinin SymbolConfig.qml faylında tətbiq olunduğunu bildirir. Bununla, SlotMachine qurmaq üçün lazım olan bütün məlumatları konfiqurasiya etdik.

Model, nümayəndə və slot maşını

Yeni əlavə etdiyimiz konfiqurasiyaya əsaslanan xüsusi bir slot maşını yaratmaq istəyirik. Daha əvvəl də qeyd edildiyi kimi, SlotMachine komponenti bir slot maşınını asanlıqla qurmağımıza kömək edir. Bir SlotMachine -in işə düşməsinin əsas hissəsi onun modelini təyin etmək və xüsusiyyətlərini verməkdir.

  • Model, slot maşınının makaralarını əşyalarla doldurmaq üçün məlumatların verilməsindən məsuldur. Simvollarımızı konfiqurasiya etmək üçün artıq SlotMachineModel -dən istifadə etmişik. Slot maşınını bu konfiqurasiya ilə qidalandırsaq, çarxlar tezlik parametrlərinə əsaslanaraq təsadüfi qaydada bu simvollarla doldurulacaq.
  • Nümayəndə çarxdakı hər bir simvolun görünüşünü müəyyənləşdirir. Konfiqurasiya obyektində qoyduğumuz görüntü mənbəyindən istifadə edən hər bir simvol üçün bir şəkil göstərmək istəyirik.

SlotMachineModel -dən istifadə edərək slot maşınımızın məlumatlarını təyin edirik, simvollarımızın görünüşünü təyin etməyə davam edə bilərik. Qml qovluğunda yeni bir qovluq slotmachine yaradın və aşağıdakı Symbol.qml tərifini əlavə edin.

Simvol elementi olduqca sadədir: Bir Şəkil ehtiva edir və bir xüsusiyyət taxma adı istifadə edərək görüntü mənbəyini təyin etməyə imkan verir. Bütün elementi Şəkil ilə doldururuq və yuxarı və aşağıya bir haşiyə əlavə edirik.

Qeyd:Bu nöqtədə maddə üçün sabit bir genişlik təyin etmirik. Bunun səbəbi, mövcud ekran ölçüsünə əsaslanaraq simvollarla slot maşınının ümumi ölçüsünü təyin etmək istəyirik. Bunu etmək üçün əvvəlcə maddələr üçün genişlik və yüksəklik göstərmirik. SlotMachine komponenti, elementlərin standart genişliyi və hündürlüyü üçün bəzi xüsusiyyətləri konfiqurasiya etsək, avtomatik olaraq maddə ölçüsünü təyin edir.

İndi modelimiz və nümayəndəmiz hazır olduğu üçün slot maşınını yeni bir qml/slotmachine/FlaskOfRumMachine.qml faylında yarada bilərik.

"../Config" xətti idxalı bu faylda konfiqurasiya obyektimizi istifadə etməyə imkan verir. Ancaq FlaskOfRumMachine komponentimizlə eyni qovluqda yerləşdiyi üçün Symbol QML elementimizi idxal etməyimizə ehtiyac yoxdur. Daha sonra xüsusi slot maşınımızı SlotMachine komponentinə əsaslanaraq üç sıra və beş çarxı göstərmək üçün qurduq. Model üçün, tək konfiqurasiya obyektimizi ötürə bilərik. Slot maşını, modelimizin məlumatları ilə, nümayəndəlik xüsusiyyəti ilə təyin olunan simvol elementləri yaradır. Nümayəndə daxilində, yaratdığınız SlotMachineModel məlumatlarına daxil olmaq üçün bəzi xüsusi xüsusiyyətlərdən istifadə edə bilərsiniz:

  • modelData.type - simvol adını ehtiva edir, məsələn "rom", "tutuquşu", "kapitan",.
  • modelData.frequency - simvolun tezlik dəyərini saxlayır.
  • modelData.data - simvolun xüsusi istifadəçi məlumatlarını ehtiva edir. Bunu simvollarımızın görüntü mənbəyi konfiqurasiyasına daxil olmaq üçün istifadə edə bilərik.

Model və nümayəndəlik təriflərindən sonra iki şəkil də əlavə edirik. Biri slot maşınını arxa plana dolduran, digəri makaralar arasındakı sərhəd kimi ağ xətləri göstərir. Bu şəkil z xüsusiyyətini təyin edərək arxa planın və yaradılan simvolların üstünə qoyulur.

Hər şeyi bir araya gətirmək

Bu slot maşınını səhnəmizə əlavə edərək hər şeyin yaxşı olub olmadığını yoxlaya bilərik:

"Slot maşın" ı idxal etdikdən sonra komponenti əlavə edə bilərik. Səhnənin mərkəzinə bağlayırıq və əşyalar və makaralar üçün standart genişliyi və hündürlüyü təyin edirik. Simvollarımız üçün xüsusi bir yüksəklik təyin etmədiyimiz üçün hamısı üçün standart dəyərlər istifadə olunur. Oyuna girəndə bu artıq çox yaxşı görünür. Ancaq daha yaxından baxdıqda, sabit hündürlük slot maşınının üstündə və ya altında boş yerlərə icazə verir.

Slot maşını düzgün göstərilir, lakin sabit yüksəklik boş sahələrə səbəb ola bilər.

Bunu düzəldək! Və hazır olduğumuz müddətdə spinEnded siqnalına bir işləyici əlavə edərək startSlotMachine () funksiyasını həyata keçirərək hər şeyi həyata keçirə bilərik.

Bütün slot maşınını yuxarı çubuğun altına hizalamaqla başlayırıq. Ancaq üst çubuğun görüntüsünün altındakı bir kölgə də var. Beləliklə, üst çubuğun və slot maşınının bir az üst -üstə düşməsi üçün slot maşınını 10 piksel yuxarıya doğru hərəkət etdiririk. Üst çubuq slot maşınının üstünə qoyulduğundan, üzərinə kölgə salır. Eyni şey alt çubuğa da aiddir. Yalnız bu vəziyyətdə, slot maşınının hündürlüyü, alt çubuqla üst -üstə düşməsi üçün buna uyğun olaraq təyin olunur.

Mövcud yerə əsaslanaraq slot maşını üçün dinamik bir hündürlük təyin etdikdən sonra simvolların enini və hündürlüyünü də buna uyğun hesablayırıq. Və son addım olaraq, maddə hündürlüyü ilə birlikdə fırlanma sürətini də ölçürük. Dinamik bir hərəkət sürəti təyin etməsəydik, daha kiçik simvolları olan bir slot maşını daha sürətli görünərdi.

StartSlotMachine () funksiyası üçün, oyunçunun kifayət qədər krediti varsa və slot maşını hazırda işləmirsə, yeni bir fırlanma həyata keçiririk. Düymənin şəklini dəyişdirmək və bahis məbləğində dəyişikliklərin qarşısını almaq üçün də bottomBar.startActive = true təyin etdik. Daha sonra oyunçu kreditlərini azaldırıq və yeni bir fırlanma başlayırıq. Slot maşınını dayandırmaq üçün spin () funksiyasına 500 ilə 1000 ms arasında təsadüfi bir interval keçirik. Bu vaxt keçdikdən və spinEnded siqnalı işə salındıqdan sonra slot maşını avtomatik olaraq dayanır.

Hər fırladıqdan sonra start düyməsini yenidən söndürürük və avtomatik oynatırıqsa slot maşınını yenidən işə salırıq.

Oyunu bu nöqtədə idarə etsəniz, simvolların sıralanmasını və hər dönmə üçün kreditlərinizin azalmasını izləyə bilərsiniz. İndi nə düşündüyünü bilirəm: "Nə? Ardıcıl üç kapitan aldım və heç bir şey qazana bilmədim ?!", amma rahatla, indi bunun öhdəsindən gələcəyik!

Bu dəfə qalib olacam!

Oyunçunun qalib olub olmadığını necə yoxlamaq lazım olduğuna dair detallara girməzdən əvvəl, birdən çox qazanan xətt anlayışı ilə tanış olmalısınız. Müasir slot maşınlarında, oyunçunun qazana biləcəyi tək bir xətt yoxdur. Slot maşınının sol tərəfindən sağ tərəfə qədər uzanan bir neçə xəttin olması, bəzi simvolların üç və ya daha çox bir xətt təşkil etmə şansını artırır. Buna görə də, bu oyunda, oyunçunun qazana biləcəyi ümumi 9 xətt var.

Oyunumuzda 9 qazanan xətt istifadə olunur. Hər biri

slot maşınının solundan sağa doğru bir yol çəkir .

Məqsədimiz, qalibiyyət xəttini ümumi səviyyədə tətbiq etmək və sonra slot xəttindəki mövqelərin siyahısı kimi təsvir edilə bilən bu xəttin yolu kimi bəzi dəyişənləri təyin etməklə asanlıqla fərqli xətləri əlavə etməkdir. Hər bir xüsusi xətt nümunəsi, oyunçunun bu xətdə qalib olub olmadığını yoxlamaq üçün bütün məlumatlara və xüsusiyyətlərə malik olmalıdır.

Qazanan Xətti Göstərmək

Qalib xətlərin tətbiqi bu təlimatın ən mürəkkəb hissəsidir, buna görə özünüzə bir az qəhvə içdiyinizə və beyin hüceyrələrinizi aktivləşdirdiyinizə əmin olun! ;-)

Düzünü desəm, xəttin bir hissəsi olan slot maşınlarının mövqelərini təyin etmək və ya bu mövqelərdə uyğun simvolların olub olmadığını yoxlamaq o qədər də çətin deyil. Bir az çətin olan hissə, istifadəçiyə bir xətdə qazandığını, nə qədər qazandığını və bu xəttin hansı simvolların qalibiyyətdən məsul olduğunu göstərməkdir.

Qalib kimi göstərmək üçün slot maşınındakı simvolları dəyişdirmək mümkündür, lakin slot maşındakı bir simvolun bütün dəyişiklikləri slot maşınının özünə də təsir edə bilər. Slot maşınında bir maddənin genişliyini və ya hündürlüyünü dəyişdirsəniz bu xüsusilə problemlidir, çünki bütün animasiyalar və simvolların yerləşdirilməsi bütün əşyaların eyni ölçüdə olduğu fərziyyəsinə əsaslanır. Əlavə olaraq, qalibiyyət xəttini bütün slot maşın komponentinin üstünə çəkmək istəyirik, ancaq xəttin bir hissəsi olaraq qazanan simvolları göstərmək istəyirik.

Hər bir qazanan xətt slot maşınının üstündə göstərilir və qalib simvolları və uduş məbləğini ehtiva edir.

Bu səbəbdən slot maşınında heç bir dəyişiklik etməyəcəyik. Slot maşınının üstündəki xətti göstərəcəyik və hər dəfə qələbə qazandıqda xətti təşkil edən simvolları dinamik şəkildə çəkəcəyik. Və bütün bunları üstələmək üçün, xəttin özü və çəkdiyimiz simvollar, hər bir cihazda fərqli ölçüdə olan slot maşınına mükəmməl uyğun olmalıdır.

Beyniniz artıq ağrıyır? Qorxma, hər şeyi istədiyimiz kimi yerinə yetirənə qədər bütün bunları addım-addım əlavə edəcəyik. Həll edilməli iki əsas problem var:

  • Slot maşınının üstündəki xətləri necə mükəmməl şəkildə göstərə bilərik?
  • Qazanan simvolları dinamik olaraq xəttə necə əlavə edə bilərik?

Birinci suala daha asan cavab vermək mümkün deyildi: Artıq hər sətir üçün şəkilləri slot maşınına mükəmməl uyğun şəkildə yaratmışdıq. Bu, oyunun dizaynı zamanı qayğı göstərdiyimiz bir şeydir. Bir xəttin təsviri slot maşını ilə eyni hündürlüyə malikdirsə, xətt mükəmməl hizalanır və slot maşınının satır və sütunlarına uyğun gəlir.

Hər bir xətt şəkli bütün slot maşın hündürlüyünü əhatə edir.

İkinci suala gəldikdə, qazanan simvolların dinamik yaradılmasını həyata keçirmək üçün bir neçə addım atacağıq:

  1. Oyunçunun xəttin bütün yuva mövqelərini yoxlayaraq qazandığını təsdiqləyirik.
  2. Bu yoxlama zamanı, qalibiyyətdən məsul olan xəttdəki mövqeləri və simvolları yadda saxlayırıq.
  3. Bundan sonra dinamik olaraq əzbərlədiklərimiz əsasında xətt simvolları yaradırıq və xəttin üstünə yerləşdiririk.

Hələlik doğrulama addımını atlayaq və üçüncü addıma diqqət edək. Bir xətti düzgün göstərmək üçün əsas QML quruluşunu yaratmaq üçün qml/slotmachine qovluğumuza yeni WinningLine.qml faylını əlavə edirik.

Qalib bir xətt üçün maddə avtomatik olaraq əsas elementin ölçüsünü doldurmaq üçün qurulmuşdur. Bu quruluşa görə, slot maşın hündürlüyünə uyğun gələn bir konteyner maddəsinə bütün fərqli xətləri əlavə edə bilərik. Hər bir qazanan xətt elementi slot maşınlarının üstünə mükəmməl uyğun gəlir.

Daha sonra hər bir xətti konfiqurasiya etməyə və ya daxili istifadə üçün məlumatları yadda saxlamağa imkan verən bəzi xüsusiyyətləri elan edirik. Daxili xüsusiyyətlərin hamısı anlaşılmazlıqların qarşısını almaq üçün iki alt xəttlə başlayır.

  • Mülkiyyət ləqəbi görüntüsü, hər bir xətt üçün sətir görüntüsünə daxil olmağa imkan verir.
  • Mülkiyyət rəngi, dinamik olaraq yaradılmış xətt simvollarını düzgün rəngləndirmək üçün istifadə olunan xətt rəngini təyin edir. Qırmızı xəttin simvollarının qırmızı fonu və haşiyəsi, yaşıl xəttin simvollarının yaşıl olması və s.
  • Vəzifələr sırası, xəttin yuva mövqelərini makaranı və satır indeksini tutan JavaScript obyektləri olaraq saxlayır.
  • Oyunçu xətdə qalib gəlirsə, qazandığı ümumi kreditlər winAmount mülkündə saxlanılır.
  • __WinningPositions və __winningTypes xüsusiyyətləri xətdə qazanan simvolların mövqelərini və növlərini saxlayır. Bu xüsusiyyətlərin indiyə qədər düzgün mövqelər və növlərlə doldurulduğunu güman edə bilərsiniz. Doğrulama addımını əlavə etdikdə, bu xüsusiyyətləri də düzgün quracağıq.
  • __LineSymbols dizisi dinamik olaraq yaratdığımız xətt simvolu obyektlərini tutacaq.

Sonra xəttimizə yalnız iki element əlavə edirik. Hər bir xətt üçün konfiqurasiya etdiyimiz xətt görüntüsü və yaratdığımız xətt simvolları üçün konteyner elementi olaraq istifadə etdiyimiz xüsusi bir sahə. Bu maddənin səbəbi, slot maşınının ölçüsünə uyğun bir konteyner tələbidir. Satır elementi yalnız slot maşınlarının hündürlüyünə uyğun gəlir, lakin eninə uyğun gəlmir. Qazanma məbləği və xətt simvollarının mətnini slot maşınının üstünə düzgün yerləşdirmək istəyirik, bu səbəbdən bu konteynerə ehtiyacımız var. Qazanma məbləği artıq əvvəldən konteynerin bir hissəsidir. DrawLineSymbols () funksiyası çağırıldıqda simvollar əlavə olunur.

Xətti simvolları slot maşınının ölçüsünə uyğun olan simvol sahəsinə nisbətlə yerləşdiririk.

DrawLineSymbols () funksiyası aşağıdakı vəzifələri yerinə yetirir:

  • Əvvəlcə removeLineSymbols () funksiyası ilə əvvəlki sətir simvollarını silirik.
  • Daha sonra funksiya parametri olaraq əldə etdiyimiz slot maşınına əsaslanaraq simvol konteynerinin ölçüsünü düzgün qururuq.
  • Bundan sonra, __winningPositions xüsusiyyətinə, __winningTypes xüsusiyyətinə və slot maşınlarının faktiki ölçüsünə əsaslanaraq bütün xətt simvollarını yaradırıq.
  • Son addım olaraq, ilk simvolun mövqeyinə əsaslanaraq qalibiyyət mətninin y-mövqeyini düzgün qurduq.

Obyektlərin dinamik yaradılması Qt.createComponent əmri ilə mümkündür. Bu təlimatın növbəti addımında yaradacağımız LineSymbol.qml komponentini yükləmək üçün bu əmri istifadə edirik. Daha sonra yüklədiyimiz komponentin CreateObject metoduna xüsusiyyət konfiqurasiyasını və hədəf konteynerini ötürərək hər bir obyekti yaradırıq. Əlbəttə ki, xətt simvolları üçün təyin etdiyimiz bütün xüsusiyyətlər də LineSymbol QML komponentinin bir hissəsi olacaq. Slot maşın qovluğuna yeni bir LineSymbol.qml faylını əlavə edərək komponenti yarataq.

Xoşbəxtlikdən, bu komponentdə həqiqətən mürəkkəb bir şey olmur. Arxa plan qurmaq və simvol görüntüsünü göstərmək üçün Şəkil əlavə etmək üçün Düzbucaqlı təyin edirik. Şəkildə rəngli bir haşiyə həyata keçirmək üçün Dikdörtgen də var. Rəng xassəsi həm fon, həm də haşiyə düzbucaqlı üçün rəngi müəyyən edir. Doğru görüntünü göstərmək üçün bir növ xüsusiyyət əlavə edirik və sonra simvol konfiqurasiyasından istifadə edərək istədiyiniz simvol növü üçün görüntü mənbəyini əldə edirik. Bütün sehr budur. Bununla, qazanan bir xətti göstərmək üçün kodu bitirdiniz.

Uyğun simvolların yoxlanılması

Növbəti yerdə əvvəldən buraxdığımız hissə var: Uyğun simvollar qrupunun olub olmadığını yoxlamaq üçün xəttin təsdiqlənməsi. Tipik slot oyunları bu yoxlamanı aşağıdakı şəkildə həyata keçirir:

  • Hər bir simvol xətti slot maşınının ilk çarxından başlayır.
  • Aşağıdakı makaralarda eyni tipə malik olan hər bir simvol xətdə sayılır.
  • Joker simvolu, xəttin bir hissəsi olaraq hər hansı digər simvolu əvəz edə bilər.
  • Joker işarəsi olmayan və fərqli bir növü olan bir simvol xətti kəsir.

Mövcud simvolları bu şəkildə yoxladıqdan sonra nəticəni necə idarə edəcəyinizə qərar verə bilərsiniz. Sadə saxlamaq üçün, xətt ən azı üç simvoldan ibarət olduqda oyunçuya yalnız kredit şəklində bir mükafat verəcəyik. Qazanılacaq kredit məbləğini təyin edən qazan faktoru artıq simvol konfiqurasiyamızın bir hissəsidir.

WinningLine.qml komponentinə validate () funksiyasını əlavə edək:

Funksiyanın özündən başqa, simvolik konfiqurasiyamızı bütün qazanma faktorları ilə yükləmək üçün bir idxal da əlavə etdik. Xətt simvollarını yoxladıqdan sonra, funksiya üçdən az uyğun simvol taparsa, saxta qaytarır. Əks təqdirdə, winAmount xüsusiyyətini hesablayır və təyin edir, drawLineSymbols () funksiyasını işə salır və sonra doğru qaytarır. Uyğun simvolların yoxlanılması zamanı, satırın qalib mövqelərini və növlərini __winningPositions və __winningTypes xüsusiyyətlərində saxlayırıq. Bu xüsusiyyətlər drawLineSymbols () funksiyasının simvollarını və mövqelərini təyin edir. Funksiya parametri maşını slot maşını komponentinə istinad edəcək. Slot maşınının hazırda görünən simvollarına daxil olmaq üçün bu istinaddan istifadə edirik. Ayrıca, drawLineSymbols () funksiyasına ötürürük,dinamik olaraq yaradılan simvolları saxlayan konteyner elementinin ölçüsünü düzgün təyin etmək üçün istifadə edildiyi yer.

Bütün xətləri əlavə edin

İndi rahatlaya bilərsiniz! Əvvəlki addımda, hər hansı bir qazanan xətti hesablaya və sonra görüntüləyə bilən ümumi bir komponent hazırladınız. Və bu komponenti yaratmağa sərf etdiyiniz bütün səylər artıq öz bəhrəsini verəcəkdir. Bundan sonra edəcəyimiz şey, oyunda istədiyimiz bütün qalibiyyət xətlərini ehtiva edən yeni bir validator komponenti yaratmaqdır. Və bundan sonra tək bir əmrlə bütün sətirlərin yoxlanmasını tetikleyebilirik. Yaxşı səslənir? Sonra slotmachine qovluğunda yeni bir WinValidator.qml faylı yaradaq. Sonra oyununuzun ilk qalibiyyət xəttini quran aşağıdakı kodu əlavə edin.

Bu bir neçə sətrə baxsanız, qürur duya bilərsiniz. Doğrulayıcı komponentimiz artıq tam istifadə edilə bilən bir qalibiyyət xəttini ehtiva edir. Sadəcə xətt görüntüsünün mənbəyini, xətt üzərində çəkdiyimiz simvolların fon rəngini və xətti təşkil edən yuva mövqelərini təyin edirik. Və validate () funksiyasına sadə bir zəng edərək, xətt yuva mövqelərini yoxlaya, qalibiyyət məbləğini hesablaya və qalibiyyəti təşkil edən simvolları çəkə bilər. Diqqət yetirin ki, sətirləri görünən: saxta ilə gizlədirik. Qazandıqlarını təyin etdikdən sonra onlara göstərəcəyik. İndi eyni şəkildə digər səkkiz qazanan xətti əlavə edə bilərsiniz.

Bu doqquz xətt, oyunun dizaynı zamanı qərar verdiyimiz doqquz sətrin şəkillərini, rənglərini və mövqelərini təsvir edir. Xəttin rəngi və görüntüsü hesablamalar üçün heç bir əhəmiyyət kəsb etmir. Görüntünü asanlıqla dəyişdirə və ya rəngini sonrakı nöqtədə dəyişə bilərsiniz. Ayrıca, 5 makaradan və 3 sıradan başqa ölçüləri istifadə edən bir slot maşını asanlıqla yarada bilərsiniz. Yalnız mövqelərin xüsusiyyətlərini düzgün qurun və hər şey yaxşı olacaq.

Oyunun doqquz xəttini əlavə etdik.

İndi bütün sətirləri yoxlamağa və qalibləri göstərməyə imkan verən kodu əlavə edək.

Funksiyalar bu vəzifələri yerinə yetirir:

  • Validate () funksiyası bütün sətirləri təsdiqləyir və oyunçu qalib gəlsə, xətti yadda saxlayır və ümumi uduş məbləğini xəttin qalibiyyət məbləği ilə artırırıq. Daha sonra həqiqi oyunçu kreditini ümumi qazanma məbləği ilə artırırıq və oyunçu ən azı bir xətt üzərində qazandığı təqdirdə həqiqəti qaytarırıq.
  • Sıfırlama () funksiyası validatoru yeni bir slot maşınında fırlanmağa hazırlayır. Doğrulayıcımız üçün bütün sətirləri gizlətmək və xətləri göstərən Taymeri dayandırmaq kifayətdir.
  • ShowWinningLines () funksiyası ilk qalibiyyət xəttini göstərir və bir müddət keçdikdən sonra digər sətirləri göstərəcək Taymeri işə salır.
  • ShowLine funksiyası (), indeks parametri əsasında qazanan bir xətti göstərir. Ayrıca, hazırda görünən xəttin indeksini əzbərləyirik.
  • HideAllLines () funksiyası sadəcə bütün sətirlərin görünən xüsusiyyətini false olaraq təyin edir.

Hamısını ümumiləşdirmək üçün, qazanan bütün xətlərin ekranını dəyişdirməyə imkan verən bir Taymer və iki xüsusiyyət əlavə etdik. Bu məqsədlə, xətləri təsdiqləyərkən qazanan sətirləri əzbərləyirik. Doğrulama addımından sonra xətləri göstərməyə başlamaq üçün showWinningLines () funksiyasından istifadə edə bilərik. Və yeni bir oyuna başladıqda, reset () funksiyası hər şeyi yenidən gizlətməyə imkan verir. İndi geridə qalan, validatoru səhnəmizə əlavə etmək və bu funksiyaları doğru yerlərə çağırmaqdır.

Səhnənin slot maşın komponentinin altına validator komponentinin kodunu əlavə edirik, beləliklə xətlər slot maşınının üstündə göstərilir. Validator komponentinin ölçüsünü də slot maşınına uyğun olaraq təyin edirik. Validatorun hündürlüyü slot maşın hündürlüyünə uyğun olmalıdır. Daha sonra xətti şəkillərimizin eni/hündürlüyü nisbətinə əsasən genişliyi hesablayırıq. Validatorun bütün xətləri bütün təsdiqləyici ölçüsünü istifadə edir və buna görə də slot maşınına uyğundur. Hər dəfə slot maşınını işə salanda bütün sətirləri gizlətmək üçün validatoru sıfırlayırıq. Bir spin başa çatdıqda, oyunçunun qalib olub olmadığını yoxlamaq üçün validate () funksiyasını çağırırıq. Və qazanırsa, qalib gələn xətləri göstəririk.

Hit oyun və bir böyük qələbələr əldə edə bilərsiniz əgər baxın! Ancaq narahat olmayın, bu demo oyununda heç bir real pul itirməyəcəksiniz! ;-)

Bəzi Kiçik Təkmilləşdirmələr

Gördüyünüz kimi, oyun indiyə qədər olduqca sərindir. Ancaq hələ də üzərində işləyə biləcəyimiz bəzi işlər var. Animasiyalar baxımından, oyunçu kreditlərinin səlis şəkildə artdığını və azaldığını görmək xoş olardı. Bu məqsədlə, səhnəyə hər dəfə dəyişdirildikdə kredit məbləğini canlandıran bir Davranış əlavə edə bilərsiniz.

İndiyə qədər, slot maşınını işə salmaq üçün kredit məbləğini nə vaxt azaltdıqda və ya bir qalibiyyət halında artırdıqda, zamanla məbləğin dəyişməsini izləyə bilərik. Bu animasiyanın müddətini cari bahis məbləğinə əsaslanırıq. Daha yüksək qazanclara səbəb olan daha yüksək bahis üçün animasiyalar daha uzun çəkəcək. Bizim vəziyyətimizdəki animasiya müddəti 4 ilə 20 arasındakı bahis məbləği üçün 200 ms -dən 1000 ms -ə qədərdir.

Başqa bir maraqlı şey, hər bir çarxı dayandırmaq üçün gecikmə müddətini dəyişdirərək əlavə bir təsadüf əlavə etmək olar. Varsayılan olaraq, slot maşını hər silindrini birincisindən 250 ms sonra dayandırır. ReelStopDelay əmlakı bu dəyəri dəyişdirməyimizə imkan verir. Yeni bir fırlanma başladıqda təsadüfi bir dəyər seçsək, slot maşınımız təsadüfi bir gecikmə ilə makaralarını dayandırır.

Hər dəfə slot maşını fırlanmağa başlayanda bir kod yerinə yetirmək istəyirsinizsə, bir ehtimal slot maşınının spinStarted siqnalından istifadə etməkdir. Hər siqnal üçün təsadüfi bir gecikmə təyin etmək üçün bu siqnaldan istifadə edirik. Başqa bir ehtimal, səhnəmizin startSlotMachine () funksiyası daxilində reelStopDelay xüsusiyyətini dəyişdirmək olar.

Bu təlimatda əhatə etdiyimiz son xüsusiyyət idi, ancaq özünüzə bəzi təkmilləşdirmələr əlavə etməkdən çekinmeyin!

Sonrakı Nə Gələcək?

Əlavə xüsusiyyətlər üçün bəzi təkliflərə ehtiyacınız varsa, bunları edə bilərsiniz:

  • BackgroundMusic və SoundEffect komponentləri ilə fon musiqisi və səs effektləri əlavə edin.
  • Oyuna bəzi əyilmələr əlavə edin, məsələn pulsuz fırlatmalar üçün xüsusi simvollar.
  • Oyunçunun oynamaq istədiyi xətləri seçməsinə icazə verin. Doqquz sətrin hamısında və ya yalnız bəzilərində oynaya bilər.
  • Oyunçunun Felgo üçün Soomla Plugin-dən istifadə edərək tətbiqdaxili alış-verişlə real pulu kreditə çevirməsinə icazə verin.

Bu slot oyun dərsliyi ilə bağlı hər hansı bir sualınız varsa, dəstək forumlarını ziyarət etməkdən çəkinməyin.

Felgo ilə oyun yaradılması haqqında daha çox məlumat əldə etmək və tətbiq mağazalarında mövcud tətbiqlərin mənbə kodunu görmək üçün Felgo Oyunları Nümunələri və Demolarını da ziyarət edin.

Bu demo oyunun tam mənbə kodu ilə maraqlanırsınızsa, Flask of Rum - Slot Game -ə baxın.

Təbrik edirik, dərsliyi tamamladınız və öz slot oyununuzu yaratdınız!