Qanday qilib Felgo bilan uyasi o'yini qilish mumkin - Slot o'yini uchun qo'llanma

Ushbu qo'llanma sizga Rum Flask uyasi o'yinini yaratish yo'lida bosqichma-bosqich ko'rsatma beradi.

Slot o'yini?

Qachonki siz kazinolar olamiga kirsangiz va mavjud o'yinlarni ko'rib chiqsangiz, eng mashhur turlaridan biri bu uyasi o'yinlari. Hatto Internet orqali yoki mobil ilovalar orqali kirishingiz mumkin bo'lgan onlayn kazinolarda ham, bu o'yinlar, albatta, tepaga tegishli. Slotomania, Slotpark yoki Greentube kabi taniqli uyin ishlab chiqaruvchilarini ko'rib chiqing, ularni amalda ko'ring!

O'yin mashinasining odatiy dizayni. The Book of Ra - bu klassik

uyalar o'yini, ammo har xil turdagi o'yinlar mavjud.

Garchi uyali o'yinlar soni aql bovar qilmas darajada bo'lsa -da, ularning ko'pchiligi bir xil asosiy o'yin mexanikasiga ega:

  • O'yinning asosiy oynasi ramzlarni o'z ichiga olgan bir nechta ustunlardan iborat. Mexanik slot mashinalarining tarixiy kelib chiqishi tufayli, bu ustunlar g'altak deb ham ataladi.
  • O'yinchi pul tikmoqchi bo'lgan summani tanlaydi va o'yin mashinasini ishga tushiradi.
  • Har safar slot mashinasi ishga tushsa, o'yinchilarning krediti garov miqdoriga kamayadi.
  • Agar mashina to'xtaganda, xuddi shu belgilar ketma -ket ketsa, o'yinchi avval pul tikgan miqdoriga qarab kredit oladi.
  • O'yinchi aslida qancha kredit yutadi, bu avtomat o'yin turiga, mavjud belgilarga va har bir belgi uchun yutuq omillari qanday tuzilganiga bog'liq.

Bu allaqachon kulgili tuyuladi, to'g'rimi? Ammo ko'pchilik o'yinlarda ularni yanada qiziqarli qiladigan o'ziga xos xususiyatlari bor: Masalan, Ra kitobi nafaqat o'yinning sarlavhasi, balki g'ildiraklardagi o'ziga xos kuchga ega ramzdir. U mos keladigan belgilar qatorini yaratish uchun o'yindagi boshqa har qanday belgining o'rnini egallashi mumkin. Bunday joker belgilar allaqachon g'alaba qozonish imkoniyatini oshiradi, lekin bu hammasi emas. Agar o'yinchi uchta yoki undan ko'p kitobni bitta qatorga yig'a olsa, u g'alaba qozonish imkoniyatini yanada oshiradigan o'nlab bepul o'yinlarni oladi. Shunday qilib, Misr zindonlarining haqiqiy tadqiqotchilari singari, Ra kitobini topgan o'yinchilar ham juda omadli va katta yutuqlarni kutishlari mumkin.

Ko'pgina o'yin mashinalarida g'alaba qozonish imkoniyatini oshiradigan maxsus belgilar mavjud.

Joker belgilar, bepul aylanishni ta'minlaydigan belgilar yoki hatto mini-o'yinlarni boshlaydigan ramzlar katta o'yin-kulgi omili bo'lib, ko'pchilik zamonaviy slot o'yinlarida uchraydi. Ushbu qo'llanmada biz xuddi shunday o'yinlarga o'xshash qaroqchilarga mo'ljallangan uyasi o'yinini yaratamiz! Ishonchim komilki, siz qaroqchilarning eng katta boyligi nima ekanligini bilasiz. To'g'ri, Rum shishasi! Oxirgi versiya shunday bo'ladi, yarrrrr!

Siz bu ajoyib slot mashinasini yasaysiz.

O'quv qo'llanma doirasi

Ushbu qo'llanmani tugatganingizdan so'ng, siz Felgo bilan rekord vaqt ichida o'z o'yin mashinangizni yaratishga yaxshi tayyorgarlik ko'rishingiz kerak. Bu darslik quyidagilarni o'z ichiga oladi:

  • Maxsus slot mashinasini yaratish uchun SlotMachine komponentidan foydalanish.
  • O'yin mashinasi g'altaklarini tasodifiy buyurtma qilingan belgilar bilan maxsus SlotMachineModel bilan to'ldirish.
  • 9 xil yutuqli chiziqlar bo'yicha mos keladigan belgilarni aniqlash.
  • Boshqa har qanday ramz o'rnini bosishi mumkin bo'lgan maxsus ramka sifatida Rum idishini ishlatish.
  • O'yin uchun konfiguratsiya ma'lumotlarini saqlash uchun yakka ob'ektni aniqlash. (masalan, mavjud belgilar, yutuq omillari,)
  • Voqealar haqida signal yordamida xabar berish.

Ammo, agar siz Felgo -ni endigina boshlagan bo'lsangiz va Qt Creator yoki QML bilan qanday ishlashni bilmasangiz, iltimos, quyidagi qo'llanmani ko'rib chiqing.

  • Felgo va Qt Creator bilan ishlashni boshlash

Bundan tashqari, bu o'yinni soddalashtirish va yaxshilanish uchun bir oz joy qoldirish uchun, biz uchta yoki undan ortiq rom kolbasi chiziq hosil qilganda, o'nta bepul o'yinni yutib olish xususiyatini qo'shmaganmiz. Bu namunali o'yinning avtomatini sizning ehtiyojlaringizga to'liq mos keladigan to'la huquqli slot mashinasiga aylantirish sizga bog'liq.

Agar siz Flask of Rum demo o'yinining manba kodiga to'g'ridan -to'g'ri qarashni xohlasangiz, uni Felgo SDK -ning boshqa demolari bilan birga topishingiz mumkin. Bu erda SDK katalogidagi demoni qaerdan topish mumkin.

O'yin xususiyatlari haqida umumiy ma'lumot olish uchun Rum shishasi - Slot o'yiniga qarang.

Resurslar

Bu darslik uchun sizga kerak bo'lgan yagona qo'shimcha manbalar - bu ba'zi rasmlar. Ular siz yaratmoqchi bo'lgan Qt Creator loyihasining aktivlar katalogiga joylashtirilishi kerak. Rasmlarni bu yerdan yuklab olishingiz mumkin.

Loyihani sozlash

Birinchi qadam - Qt Creator -da yangi bo'sh loyihani yaratish. Biz o'yinni landshaft yo'nalishida bo'lishini xohlaymiz, shuning uchun loyihani o'rnatish paytida ushbu rejimni tanlashga ishonch hosil qiling. Ishingiz tugagach, yuklab olingan rasmlarni loyihangiz aktivlari papkasiga qo'shing. Ular, shuningdek, Qt Creator loyiha daraxtining Boshqa fayllar \ aktivlari katalogida paydo bo'lishi kerak. Iltimos, resurslar arxivini ochganingizda yaratilishi mumkin bo'lgan qo'shimcha katalog qo'shmaslikka harakat qiling.

Sizning loyiha daraxti shunday ko'rinishi kerak.

Agar hamma narsa tayyor bo'lsa, biz nihoyat kod qo'shishni boshlashimiz mumkin!

O'yinning asosiy tartibi

Birinchidan, biz ekranning o'rtasida haqiqiy o'yin mashinasi atrofidagi bo'shliqni to'ldiradigan asosiy o'yin tartibini yaratmoqchimiz. U quyidagilarni o'z ichiga oladi:

  • O'yinning asosiy sahnasining oddiy versiyasi. O'yinda ko'rgan barcha elementlar shu erda joylashtiriladi.
  • Rum shishasi logotipi va o'yin uchun jami kreditlar. O'yin oynasining yuqori qismidagi chiziq bu elementlarni ushlab turadi.
  • Slot mashinasini ishga tushirish yoki garov miqdorini o'zgartirish tugmalari. Bu tugmalar o'yin oynasining pastki qismidagi barga joylashtiriladi.

O'yinning asosiy tartibi yuqori qismidagi bardan, pastda va chiroyli quyuq qizil fondan iborat.

Oddiy sahna

Qizil fonimiz uchun bir nechta xususiyatlar va rangli to'rtburchaklar belgilaydigan oddiy o'yin sahnasidan boshlaylik. Qml papkasidagi joriy Main.qml faylini quyidagi dastur bilan almashtiring.

Bu bir nechta satrlar yordamida biz o'z o'yin oynamizni 960 x 640 pikselli qilib o'rnatdik. Bu kompyuterda o'yin o'ynaganingizda oynaning standart o'lchami. Mobil qurilmalarda o'yin oynasining o'lchami har bir qurilma uchun farq qiladi.

Keyin biz o'yin oynasiga Sahna qo'shamiz va uni faol sahna sifatida sozlaymiz: activeScene: sahna. Bu ifoda qiymat sahnasi biz sahna elementi uchun o'rnatgan idni bildiradi. Bu misoldagi manzara 480x320 pikselli mantiqiy o'lchamga ega. Sahna ichidagi barcha elementlar sahna bilan birga o'yin oynasining o'lchamiga mos ravishda kattalashtiriladi. Bu yuqori aniqlikdagi displeylarda kichikroq bo'lishidan xavotirlanmasdan, joylashuvi va o'lchamlari aniq bo'lgan elementlarni qo'shishni juda osonlashtiradi.

Eslatma:Felgo -da har xil o'lchov usullari mavjud. Odatiy rejim sahnani o'yin oynasiga mos keladi, bu ekranning yonida bo'sh joylarni qoldirishi mumkin. O'lchov rejimlari haqida ko'proq bilib olish uchun ekranning o'lchamlari va o'lchamlari har xil bo'lgan mobil o'yinlarni qanday yaratish bo'yicha ko'rsatmaga tashrif buyuring.

BetAmount va creditAmount ikkita xususiyati - bu o'yinning hozirgi miqdori va umumiy kredit miqdorini boshqarish uchun global xususiyatlar. Biz allaqachon 4 va 400 boshlang'ich qiymatlarini o'rnatdik, shuning uchun slot mashinasining har bir aylanishi dastlabki kredit miqdorini 4 kreditga kamaytiradi. Sahnaning oxirgi elementi - bu bizning fon rangimizni belgilaydigan to'rtburchaklar. Biz to'rtburchakni nafaqat sahnani, balki butun o'yin oynasini to'ldirish uchun sozlaymiz. Bu fon har bir qurilmaning butun ekranini qamrab olishini ta'minlaydi.

Yuqori chiziq yaratish

Yuqori satr - bu o'yin logotipi va kredit summasi kabi qo'shimcha elementlarni o'z ichiga olgan sahnaning alohida elementi. Kodingiz toza va yaxshi tuzilgan bo'lishi uchun bunday elementlar uchun alohida QML elementini yaratish yaxshi bo'ladi. Qml papkasida yangi TopBar.qml faylini yarating va uni shu kod bilan to'ldiring:

Yuqori panelning balandligi 50 piksel bo'lib, u fon tasvirining balandligiga mos keladi. Lekin biz bu vaqtda yuqori chiziq uchun belgilangan kenglikni o'rnatmaymiz. Buning o'rniga, biz fon tasvirini yuqori panelni to'liq to'ldirish uchun sozlaymiz, shuning uchun yuqori paneldagi istalgan kenglikni keyinroq belgilash mumkin va fon tasviri har doim hammasini qamrab oladi. Biz bu xatti -harakatni barning kengligi bilan o'yin ekranining kengligiga moslashtirish uchun ishlatamiz.

Yuqori barning boshqa elementlari belgilangan o'lchamlarga ega, lekin barning belgilangan joyiga joylashtirilmagan. Buning o'rniga, biz elementlarni yuqori panelda yoki bir -biriga nisbatan mahkamlaymiz. Bu har qanday qurilma kengligida bir xil nisbiy pozitsiyalarni ta'minlaydi. Masalan, logotip har doim vertikal va gorizontal ravishda markazlashtirilgan.

Kreditlar belgisi - bu oltin tanga, biz chapdan 4 piksel va barning yuqori qismidan 8 piksel. Keyin biz kredit summasi matnini to'g'ridan -to'g'ri oltin tangalarning chap tomoniga joylashtiramiz va uni vertikal ravishda markazlashtiramiz. Sahna.creditAmount -dan matn qiymati sifatida foydalanib, biz sahnamizning tegishli xususiyatini ko'rsatamiz. Bundan tashqari, creditAmount xususiyatida yuz beradigan har qanday o'zgarishlar avtomatik ravishda matnga qo'llaniladi. Bu mulkni majburlash tushunchasi tufayli mumkin va matnni va haqiqiy kredit miqdorini sinxronlashtirishda bo'lgan xavotirlarni yo'q qiladi.

Va bu bolalar, siz yuqori chiziqni qanday yaratasiz. ;-)

Tugmalar, signallar va pastki chiziq

Elementlarni tekislash va o'lchashning asosiy tamoyillari bo'yicha pastki chiziq yuqori chiziqqa juda o'xshaydi. Ammo yuqori paneldan farqli o'laroq, bir nechta qo'shimcha funktsiyalar kerak:

  • Pastki satr asosan bosiladigan tasvirlar ko'rinishidagi tugmalardan iborat. Bu tugmalarning barchasi uchun biz ular bosilganda signallarni belgilaymiz. Boshqa har qanday komponent bu signallar uchun ishlov berish funktsiyalarini qo'shishi va bosish hodisasi sodir bo'lganda kodni bajarishi mumkin.
  • Rasmlardagi bosish hodisalarini tinglash uchun biz barcha tugmalarga MouseArea qo'shmoqchimiz.
  • Boshlash va avtomatik tugma- bu maxsus tugmalar, chunki ular ikkita holatga ega: Ular faol yoki harakatsiz bo'lishi mumkin. Bu holatlarning har biri uchun biz tugmani oddiy yoki bosilgan holatda ko'rsatadigan boshqa tasvirni ko'rsatamiz. Keyin biz pastki satr uchun ikkita qo'shimcha xususiyatni taqdim etamiz, bu esa foydalanuvchiga shtatlar qachon o'zgartirilishi kerakligini hal qiladi.

Endi BottomBar.qml faylini qml papkamizga qo'shamiz va uni kod bilan to'ldiramiz.

Biz yana faqat belgilangan balandlikni o'rnatdik va butun chiziqni to'ldiradigan fon tasvirini qo'shamiz. Boshlash va avtomatik tugmalar bir-biriga juda o'xshash. Ular chiziqning o'ng yoki chap tomoniga moslashtirilgan tasvirni aniqlaydi va ba'zi qo'shimcha funktsiyalarni o'z ichiga oladi. Chiziq manbasi bilan: bottomBar.startActive? "../assets/ButtonStartActive.png": "../assets/ButtonStart.png", boshlash tugmasi startActive xususiyatiga asoslangan boshqa tasvirni ko'rsatadi. Bundan tashqari, MouseArea chertishni aniqlaganda, biz mos keladigan signalni ishga tushiramiz. Avtomatik tugma uchun biz mos keladigan xususiyatlar va signallardan xuddi shu tarzda foydalanamiz.

Garov miqdorini nazorat qilish tugmalari gorizontal ravishda pastki satrda markazlashtirilgan va bir -birining yonida joylashgan. Buning uchun biz barcha elementlarni gorizontal qatorga joylashtiradigan Row komponentidan foydalanamiz. Biz tugmachalarning gorizontal hizalanishidan xavotir olmasdan satr ichidagi qator komponentining o'rnini belgilashimiz mumkin. Tugmalar uchun biz faqat vertikal markazlashtirilgan va to'g'ri signalni ishga soladigan MouseArea tasvirini aniqlaymiz.

Bu juda ko'p kodga o'xshaydi, lekin u asosan barcha elementlarni to'g'ri ko'rsatish va hodisalarni tinglash va signallarni ishga tushirish uchun.

Sahnaga barlarni qo'shish

Ishonchim komilki, bu vaqtda siz tepada ham, pastda ham harakatda bo'lishni xohlaysiz. Faqat ikkalasini asosiy sahnaga qo'shing va biz uning qanday ko'rinishini ko'ramiz.

Ikkita chiziq tezda bir necha qator bilan qo'shiladi. Biz barlarni xohlagan kenglik bilan ishlashga tayyorlaganimiz uchun, biz kenglikni o'yin oynasining haqiqiy kengligiga o'rnatishimiz mumkin. Keyin ular har bir qurilmada butun ekran kengligidan foydalanadilar. Pastki satr uchun biz signallarni o'z sahnamizga qo'shgan ishlovchilar funktsiyalari bilan bog'laymiz. Ko'p funktsiyalar allaqachon bajarilishi mumkin:

  • boostBetAmount () - garov miqdorini o'yinchi joriy kredit miqdori bilan to'laydigan keyingi bosqichga ko'taradi. Mumkin bo'lgan qadamlar - 4, 5, 8, 10, 15 va 20 kreditlar.
  • kamaytirishBetAmount () - garov miqdorini o'yinchi hozirgi kredit summasiga ega bo'ladigan keyingi bosqichga kamaytiradi.
  • maxBetAmount () - o'yinchi to'lashi mumkin bo'lgan maksimal garov miqdorini belgilaydi.
  • autoPlaySlotMachine () - avtomatik tugmani faollashtiradi yoki o'chiradi. Tugmani faollashtirganingizda, o'yin avtomatik ravishda slot mashinasini ishga tushiradi. Agar tugma faol bo'lmasa, o'yinchi har bir aylanishni qo'lda boshlashi mumkin. O'yinchi avtomatik tugmachani faollashtirganda, biz ham to'g'ridan-to'g'ri slot mashinasini ishga tushiramiz. Bunday holda, ishga tushirish tugmachasini qo'shimcha bosish shart emas.
  • startSlotMachine () - Hozircha biz bu erda hech narsa qilmaymiz. O'yin mashinamizni o'yinga qo'shgandan so'ng, biz uni shu funktsiyadan boshlaymiz.

Garov miqdorini o'zgartiradigan barcha funktsiyalar hozirda slot mashinasi ishlayotgan vaqtda qaytadi. Sababi, biz slot mashinasi ishlayotgan vaqtda garov miqdorining o'zgarishini oldini olishni xohlaymiz. Biz bu tekshirish uchun pastki satrning startActive xususiyatidan foydalanamiz. O'yin mashinasini ishga tushirganimizda, biz start tugmachasini faollashtiramiz va shu bilan garov o'zgarishlarini o'chirib qo'yamiz.

Hozircha hammasi shu! Siz yugurishni bosishingiz, tugmalar bilan o'ynashingiz va har doim ekranga mos keladigan ajoyib barlarni ko'rishingiz mumkin!

Bizga o'yin mashinasi kerak

Biz nihoyat qiziqarli qismga kelishimiz mumkin: haqiqiy slot mashinasi! Felgo maxsus SlotMachine komponentini taklif qiladi, bu bizga asosiy vazifalarni bajarishga yordam beradi. Biz ramzlarni bir nechta g'altaklarga joylashtirish, g'altaklarni aylantirish yoki birin -ketin to'xtatish haqida g'amxo'rlik qilishimiz shart emas. Biz shunday qilamiz:

  • Biz ko'rsatmoqchi bo'lgan narsalar uchun ma'lumotlar modelini o'rnating. Bizning holatda, biz g'altaklarimiz uchun turli xil belgilarni o'rnatamiz.
  • Ma'lumotlar konfiguratsiyasiga asoslanib, ushbu elementlarning ko'rinishini aniqlang.
  • O'yin mashinasini oynaning barcha balandligini ishlatish uchun sozlang va mos ravishda barcha elementlarni o'lchab qo'ying.

Men ramzlarning ta'rifidan boshlashni taklif qilaman. Bizning o'yinimizda o'nta ramz ishlatiladi:

Chapdan: Rum shishasi, 10, J, Q, K va A poker kartalari, to'tiqush, bosh suyagi, xazina va kapitan.

Ushbu belgilarning har biri uchun biz uning g'altaklardagi chastotasini aniqlamoqchimiz. Malika belgisi har bir g'altakda besh marta paydo bo'lishi kerak. Kapitan faqat bir marta mavjud. Shu sababli, o'yinchi avtomatda sardorlar qatori paydo bo'lganda katta g'alaba qozonadi. Biz slot mashinamiz beshta g'altakka ega bo'lishini xohlaymiz va agar uch yoki undan ko'p ramzlar aylananing oxirida chiziq hosil qilsa, o'yinchi o'zi qo'ygan pul miqdoriga qarab kredit oladi. Bu jadvalda har bir belgining 3, 4 yoki 5 ta belgidan iborat chiziqni qaytarish omillari ko'rsatilgan.

belgilar 3x 4x 5x
10, J, Q 1: 1 1: 5 1:20
K, A. 1: 1 1: 8 1:30
to'tiqush, bosh suyagi 1: 6 1:20 1: 150
ROM 1: 1 1:20 1: 200
xazina 1: 8 1:80 1: 400
kapitan 1:20 1: 200 1: 1000

Bu qiymatlar faqat siz boshqacha tanlashingiz mumkin bo'lgan konfiguratsiya sozlamasidir. Bu sozlamalarni saqlash uchun konfiguratsion faylga ega bo'lish oqilona bo'lar edi, shuning uchun ramzlarni osongina o'zgartirish va keyinchalik omillarni yutib olish mumkin. Biz faqat ba'zi belgilar sozlamalari o'zgarganda kodni moslashtirishni xohlamaymiz. Bunga erishishning bir necha yo'li mavjud. Masalan, biz global konfiguratsiya xususiyatini qo'shishimiz yoki konfiguratsiya ma'lumotlarini saqlaydigan JavaScript faylini qo'shishimiz mumkin. Biz sizga global sozlamalarni qanday qo'shishning yana bir usulini ko'rsatish uchun konfiguratsiya ob'ektini yakka tartibda ishlatishga qaror qildik.

Siz singlmisiz?

Dasturlash tillarida singletonlar - bu ob'ektni amalga oshirishning juda keng tarqalgan usuli bo'lib, u dasturda yagona bo'lishi kerak. Singleton sinfining faqat bitta misoli bo'lishi mumkin va bo'ladi. Ular turli vazifalarni hal qilish uchun ishlatiladi. Bizning holatda, biz konfiguratsiya ob'ektini singleton sifatida aniqlaymiz. Biz ilovada faqat bitta global konfiguratsiya sozlamasini xohlaymiz. Bundan tashqari, biz singletonni sahnamizga yoki boshqa joyga qo'shishning hojati yo'q. Biz konfiguratsiya ob'ektiga, uning barcha xususiyatlari, signallari va funktsiyalari bilan, to'g'ridan -to'g'ri boshqa fayllarga kira olamiz.

Singleton abadiy yolg'iz qoladi.

QML -da singletonni amalga oshirish uchun ikkita qadam kerak:

  • Yangi QML obyektini yarating va uni singlton sifatida belgilang.
  • Singleton ob'ektining turini e'lon qiladigan "qmldir" faylini qo'shing. Bu singletonni boshqa fayllar turiga to'g'ridan -to'g'ri taqdim etadi.

SlotMachine komponentasini ramz ma'lumotlari bilan ishga tushirish uchun biz SlotMachineModel elementidan foydalanamiz. Bu SlotMachineModel har bir belgi uchun kerak bo'lishi mumkin bo'lgan qo'shimcha konfiguratsiya ma'lumotlarini ham saqlashi mumkin. Xo'sh, biz bundan qanday foydalanamiz va undan konfiguratsiya ob'ektini o'rnatish uchun foydalanamiz? Qml katalogingizda yangi papka konfiguratsiyasini yaratamiz va SymbolConfig.qml faylini qo'shamiz.

Bu sinf xuddi siz belgilagan boshqa QML sinfiga o'xshaydi, uni Singleton pragma liniyasi bundan mustasno, uni yakka ob'ekt sifatida belgilaydi. Bizning ob'ektimiz uchun asosiy sinf - bu SlotMachineModel, shuning uchun biz SlotMachine komponentini ishga tushirish uchun konfiguratsiya ob'ektimizdan ham foydalanishimiz mumkin. Bu ishga tushirish uchun muhim xususiyat - bu belgilar xususiyati. Bu xususiyat barcha ramzlarimizni xususiyatlar sifatida belgilaydigan JavaScript ob'ektiga ega bo'lishi shart, ular o'zlarida ushbu belgining chastota parametrlarini va ba'zi shaxsiy ma'lumotlarni o'z ichiga oladi.

Har bir belgi uchun maxsus ma'lumotlar - bu har bir belgining yutuq omillari kabi qo'shimcha konfiguratsiya ma'lumotlarini qo'shishimiz mumkin bo'lgan joy. Biz nafaqat yutuq omillarini maxsus ma'lumotlar sifatida, balki ramz uchun ko'rsatilishi kerak bo'lgan tasvir manbasini ham qo'shishga qaror qildik. Shunday qilib, siz xohlagan va ramzli tasvir bilan ramzlarni osongina olib tashlashingiz yoki qo'shishingiz va yutuq omillarini olishingiz mumkin. Bundan tashqari, biz o'z sinfimizga konfiguratsiya ma'lumotlariga kirishga yordam beradigan ba'zi funktsiyalarni qo'shishimiz mumkin.

  • GetWinFactor () funktsiyasi ma'lum bir belgi va ma'lum bir chiziq uzunligi uchun yutuq omili konfiguratsiyasini qaytaradi.
  • GetSymbolData () funktsiyasi ma'lum bir belgi uchun maxsus ma'lumotlarga kirish uchun ishlatilishi mumkin.

Bu singlton yaratish uchun birinchi qadam edi. Qolgan narsa - yakka ob'ektimiz uchun QML turini e'lon qilish. Buning uchun biz qml/config katalogimizga yangi qmldir faylini qo'shamiz. Bu faylda *.qml yoki *.txt kabi fayl turidagi kengaytmalar yo'qligiga ishonch hosil qiling.

Bu SymbolConfig.qml faylida 1.0 versiyasi bilan SymbolConfig turi amalga oshirilganligini bildiradi. Buning yordamida biz SlotMachine -ni o'rnatish uchun zarur bo'lgan barcha ma'lumotlarni sozladik.

Model, vakil va o'yin mashinasi

Biz hozirgina qo'shgan konfiguratsiyaga asoslangan maxsus uyasi mashinasini yaratmoqchimiz. Yuqorida aytib o'tilganidek, SlotMachine komponenti bizga slot mashinasini osongina sozlashimizga yordam beradi. SlotMachine -ni ishga olishning asosiy qismi uning modelini ko'rsatish va uning xususiyatlarini ko'rsatishdir.

  • Model slot mashinasining g'altaklarini buyumlar bilan to'ldirish uchun ma'lumotlarni taqdim etish uchun javobgardir. Biz allaqachon ramzlarimizni sozlash uchun SlotMachineModel -dan foydalanganmiz. Agar biz slot mashinasini shu konfiguratsiya bilan oziqlantirsak, g'ildiraklar chastota parametrlariga qarab tasodifiy tartibda ushbu belgilar bilan to'ldiriladi.
  • Vakil g'altakdagi har bir belgining ko'rinishini belgilaydi. Biz har bir belgi uchun tasvirni ko'rsatmoqchimiz, u konfiguratsiya ob'ektida biz o'rnatgan tasvir manbasini ishlatadi.

SlotMachineModel -dan o'yin mashinamiz uchun ma'lumotlarni o'rnatish uchun foydalanganimizda, biz ramzlarimiz ko'rinishini aniqlashga o'tamiz. Qml katalogingizda yangi slotmachine papkasini yarating va quyidagi Symbol.qml ta'rifini qo'shing.

Belgilar elementi juda oddiy: u tasvirni o'z ichiga oladi va tasvir manbasini xususiyat taxallusi yordamida o'rnatishga imkon beradi. Biz butun elementni Rasm bilan to'ldiramiz va yuqoridan va pastdan chegara qo'shamiz.

E'tibor bering:biz hozirda ob'ekt uchun belgilangan kenglikni o'rnatmaymiz. Buning sababi shundaki, biz o'yin mashinasining umumiy hajmini ramzlar bilan ekranning mavjud hajmiga qarab o'rnatmoqchimiz. Buni amalga oshirish uchun biz dastlab elementlar uchun kenglik va balandlikni ko'rsatmaymiz. SlotMachine komponenti, agar biz elementlarning standart kengligi va balandligi uchun ba'zi xususiyatlarni sozlasak, avtomatik ravishda element hajmini o'rnatadi.

Biz hozirda o'z modelimiz va delegat tayyor bo'lgach, biz uyasi mashinasini yangi qml/slotmachine/FlaskOfRumMachine.qml faylida yaratishimiz mumkin.

"../Config" qatorini import qilish bizga ushbu fayldagi konfiguratsiya ob'ektidan foydalanish imkonini beradi. Bizga Symbol QML elementini import qilishning hojati yo'q, chunki u bizning FlaskOfRumMachine komponentasi bilan bitta papkada joylashgan. Keyin biz maxsus uyasi mashinasini SlotMachine komponentasiga tayanamiz va uni uchta qator va beshta g'altakni ko'rsatadigan qilib o'rnatamiz. Model uchun biz singleton konfiguratsiya ob'ektini o'tkaza olamiz. O'yin mashinasi, bizning modelimiz ma'lumotlari bilan, vakolatchi tomonidan belgilanadigan ramz elementlarini yaratadi. Vakil ichida siz yaratgan SlotMachineModel ma'lumotlariga kirish uchun ba'zi maxsus xususiyatlardan foydalanishingiz mumkin:

  • modelData.type - ramz nomini o'z ichiga oladi, masalan "rom", "to'tiqush", "kapitan",.
  • modelData.frequency - belgining chastota qiymatini ushlab turadi.
  • modelData.data - belgining foydalanuvchi ma'lumotlarini o'z ichiga oladi. Biz buni ramzlarimizning tasvir manbai konfiguratsiyasiga kirish uchun ishlatishimiz mumkin.

Model va ta'riflardan so'ng biz ikkita rasm qo'shamiz. Slot mashinasini fon bilan to'ldiradigan biri, ikkinchisi oq chiziqlarni makaralar orasidagi chegara sifatida ko'rsatadi. Bu tasvir z xususiyatini o'rnatish orqali fon va yaratilgan belgilar ustida joylashtiriladi.

Hamma narsani bir joyga to'plash

Bu o'yin mashinasini sahnamizga qo'shib, biz hamma narsa yaxshi ko'rinishini tekshirib ko'rishimiz mumkin:

"Slot mashinasi" import qilinganidan so'ng, biz komponentni qo'shishimiz mumkin. Biz uni sahnaning markaziga o'rnatamiz va buyumlar va makaralar uchun standart kenglik va balandlikni belgilaymiz. Biz ramzlarimiz uchun aniq balandlikni o'rnatmaganimiz uchun, ularning barchasi uchun standart qiymatlar ishlatiladi. O'ynaganingizda, bu juda yaxshi ko'rinadi. Yaxshilab qarasak, sobit balandlik slot mashinasining tepasida yoki ostidagi bo'sh joylarga ruxsat beradi.

O'yin mashinasi to'g'ri ko'rsatiladi, lekin balandligi bo'sh joylarga olib kelishi mumkin.

Keling, buni to'g'rilaymiz! Va biz bu erda ekanmiz, biz spinEnded signaliga ishlov beruvchini qo'shish va startSlotMachine () funktsiyasini amalga oshirish orqali hammasini jonlantirishimiz mumkin.

Biz butun uyasi mashinasini yuqori chiziq ostiga tekislashdan boshlaymiz. Ammo yuqori panel tasviri pastki qismidagi soyani ham o'z ichiga oladi. Shunday qilib, biz tepa paneli va slot mashinasi bir -birining ustiga chiqib ketishi uchun slot mashinasini 10 piksel yuqoriga siljitamiz. Yuqori bar uyasi mashinasining tepasiga qo'yilgani uchun, unga o'z soyasini soladi. Xuddi shu narsa pastki chiziq uchun ham amal qiladi. Faqat bu holda, slot mashinasining balandligi, uning pastki chiziq bilan bir -biriga to'g'ri kelishi uchun mos ravishda o'rnatiladi.

Slot mashinasi uchun bo'sh joyni hisobga olgan holda dinamik balandlikni o'rnatgandan so'ng, biz shunga mos ravishda belgilarning kengligi va balandligini hisoblaymiz. Va oxirgi qadam sifatida biz aylanish tezligini element balandligi bilan o'lchaymiz. Agar biz dinamik harakat tezligini o'rnatmagan bo'lsak, kichikroq belgilarga ega bo'lgan slot mashinasi tezroq paydo bo'lardi.

StartSlotMachine () funktsiyasi uchun, agar o'yinchi etarli kreditga ega bo'lsa va hozirda slot mashinasi ishlamayotgan bo'lsa, biz faqat yangi aylanishni amalga oshiramiz. Biz shuningdek, tugmani tasvirini o'zgartirish va garov miqdorining o'zgarishini oldini olish uchun bottomBar.startActive = true ni o'rnatdik. Keyin biz o'yinchi kreditlarini kamaytiramiz va yangi aylanishni boshlaymiz. O'yin mashinasini to'xtatish uchun biz spin () funktsiyasiga 500 va 1000 ms oralig'ida tasodifiy intervalni o'tkazamiz. O'yin mashinasi bu vaqt o'tgandan so'ng avtomatik ravishda to'xtaydi va spinEnded signali o'chadi.

Har bir aylanishdan so'ng, biz yana ishga tushirish tugmachasini o'chirib qo'yamiz va agar biz avtomatik o'yinda bo'lsak, slot mashinasini qayta ishga tushiramiz.

Agar siz o'yinni shu nuqtada boshlasangiz, siz simvollarning ketma -ket ketishini va har bir aylanish uchun sizning kreditlaringiz kamayishini ko'rishingiz mumkin. Men hozir nima deb o'ylayotganingizni bilaman: "Nima? Men ketma -ket uchta sardorni oldim va hech narsa yutmadimmi ?!", lekin dam oling, biz buni hozir hal qilamiz!

Bu safar men g'alaba qozonaman!

O'yinchi g'alaba qozonganligini qanday tekshirish haqida batafsil ma'lumot olishdan oldin, siz bir nechta yutuqli chiziqlar kontseptsiyasi haqida bilishingiz kerak. Zamonaviy avtomat o'yinlarida o'yinchi g'alaba qozonishi mumkin bo'lgan bitta chiziq yo'q. O'yin mashinasining chap tomonidan o'ng tomonga cho'zilgan bir nechta chiziqlar, ba'zi belgilar uch yoki undan ko'p chiziqni yaratish imkoniyatini oshiradi. Shuning uchun ham, bu o'yinda bizda o'yinchi g'alaba qozonishi mumkin bo'lgan 9 ta chiziq bor.

Bizning o'yinda 9 ta yutuqli chiziq ishlatiladi. Ularning har biri o'yin

mashinasining chap tomonidan o'ng tomonga yo'l chizadi .

Bizning maqsadimiz - yutuq chizig'ini umumiy darajada amalga oshirish, so'ngra bu chiziqning yo'li kabi ba'zi bir o'zgaruvchilarni ko'rsatish orqali osonlik bilan turli chiziqlarni qo'shish. Har bir aniq chiziq misolida o'yinchi ushbu chiziqda g'alaba qozonganligini tekshirish uchun barcha ma'lumotlar va xususiyatlar bo'lishi kerak.

Yutuq chizig'ini ko'rsatish

G'olib chiziqlarni amalga oshirish - bu darslikning eng murakkab qismi, shuning uchun o'zingizga qahva olib, miya hujayralarini faollashtirishga ishonch hosil qiling! ;-)

Rostini aytsam, chiziqning bir qismi bo'lgan slot mashinasining pozitsiyalarini aniqlash yoki bu pozitsiyalarda mos belgilar mavjudligini tekshirish unchalik qiyin emas. Biroz murakkab bo'lgan narsa - bu foydalanuvchiga chiziqda qanday g'alaba qozonganligini ko'rsatish, u qancha yutganini va bu chiziqdagi qaysi ramzlar g'alaba uchun javobgarligini ko'rsatish.

O'yin mashinasidagi ramzlarni ularni g'olib sifatida ko'rsatish uchun o'zgartirish mumkin, lekin o'yin mashinasidagi ramzning barcha o'zgarishi ham o'yin mashinasining o'ziga ta'sir qilishi mumkin. Ayniqsa, agar siz slot mashinasi ichidagi narsaning kengligi yoki balandligini o'zgartirsangiz, bu muammoli bo'ladi, chunki barcha animatsiyalar va ramzlarning joylashuvi barcha elementlar bir xil o'lchamdagi farazga asoslangan. Bundan tashqari, biz yutuq chizig'ini butun uyasi mashinasi komponenti ustida chizmoqchimiz, lekin chiziqning bir qismi sifatida yutgan ramzlarni ko'rsatamiz.

Har bir yutuqli chiziq avtomat mashinaning tepasida ko'rsatiladi va unda yutuq ramzlari va yutuq miqdori ko'rsatilgan.

Shuning uchun biz o'yin mashinasining o'ziga hech qanday o'zgartirish kiritmaymiz. Biz avtomat ustidagi chiziqni ko'rsatamiz va g'alaba qozonganimizda chiziqni tashkil etuvchi belgilarni dinamik ravishda chizamiz. Va bularning barchasini bajarish uchun, chiziqning o'zi va biz chizgan ramzlar har bir qurilmada har xil o'lchamdagi uyasi mashinasining tepasiga to'g'ri kelishi kerak.

Miyangiz allaqachon og'riyaptimi? Qo'rqmang, biz hamma narsani biz xohlagandek bosqichma-bosqich qo'shamiz. Yechish kerak bo'lgan ikkita asosiy muammo bor:

  • Qanday qilib biz slot mashinasi ustidagi chiziqlarni mukammal ko'rsatishimiz mumkin?
  • Qanday qilib biz yutuq ramzlarini chiziqqa dinamik ravishda qo'shamiz?

Birinchi savolga osonroq javob berib bo'lmaydi: Biz har bir satr uchun rasmlarni slot mashinasiga to'liq mos keladigan tarzda yaratganmiz. Bu o'yinni loyihalashda biz e'tibor bergan narsadir. Agar chiziq tasviri slot mashinasi bilan bir xil balandlikka ega bo'lsa, chiziq mukammal hizalanadi va slot mashinasining satrlari va ustunlariga mos keladi.

Har bir chiziq tasviri uyasi mashinasining butun balandligini qamrab oladi.

Ikkinchi savolga kelsak, biz g'olib bo'lgan ramzlarning dinamik yaratilishini amalga oshirish uchun bir necha qadamlarni qo'yamiz:

  1. Biz o'yinchi chiziqdagi barcha uyalar pozitsiyalarini tekshirish orqali g'alaba qozonganligini tasdiqlaymiz.
  2. Tekshiruv davomida biz chiziqdagi pozitsiyalar va belgilarni yodlaymiz, ular g'alaba uchun javobgardir.
  3. Shundan so'ng, biz dinamik ravishda eslab qolgan narsalarga asoslanib chiziq belgilarini yaratamiz va ularni satr tepasiga joylashtiramiz.

Keling, tasdiqlash bosqichini o'tkazib yuboramiz va uchinchi bosqichga e'tibor qaratamiz. Chiziqni to'g'ri ko'rsatish uchun asosiy QML tuzilmasini yaratish uchun qml/slotmachine jildimizga WinningLine.qml yangi faylini qo'shamiz.

Yutuqli chiziq uchun element avtomatik ravishda uning asosiy elementining hajmini to'ldirishga mo'ljallangan. Ushbu sozlash tufayli biz har xil satrlarni bitta konteyner elementiga qo'shishimiz mumkin, bu slot mashinasining balandligiga mos keladi. Har bir yutuqli element, shuningdek, slot mashinasining tepasiga juda mos keladi.

Keyin biz har bir satrni sozlash yoki ichki foydalanish uchun ma'lumotlarni eslab qolish imkonini beradigan ba'zi xususiyatlarni e'lon qilamiz. Tushunmovchiliklarga yo'l qo'ymaslik uchun ichki xususiyatlar ikkita pastki chiziqdan boshlanadi.

  • Xususiy taxallus tasviri har bir satr uchun chiziqli tasvirga kirishga imkon beradi.
  • Xususiyat rangi chiziq rangini belgilaydi, u dinamik ravishda yaratilgan chiziq belgilarini to'g'ri ranglantirish uchun ishlatiladi. Qizil chiziq ramzlari qizil fon va chegaraga ega bo'lishi kerak, yashil chiziqdagi belgilar yashil bo'lishi kerak va hokazo.
  • Joylashuvlar qatori chiziqning uyasi pozitsiyalarini g'altak va qator indekslarini ushlab turuvchi JavaScript obyektlari sifatida saqlaydi.
  • Agar o'yinchi chiziqda g'alaba qozonsa, u yutgan jami kreditlar winAmount mulkida saqlanadi.
  • __WinningPositions va __winningTypes xususiyatlari chiziqda g'olib bo'lgan belgilarning pozitsiyalarini va turlarini ushlab turadi. Siz hozircha bu xususiyatlar to'g'ri pozitsiyalar va turlar bilan to'ldirilgan deb taxmin qilishingiz mumkin. Tasdiqlash bosqichini qo'shganimizda, biz ham bu xususiyatlarni to'g'ri o'rnatamiz.
  • __LineSymbols qatori biz yaratgan satr belgisi ob'ektlarini dinamik ravishda ushlab turadi.

Keyin biz qatorimizga faqat ikkita element qo'shamiz. Biz har bir satr uchun konfiguratsiya qiladigan chiziq tasviri va biz yaratgan chiziq belgilarining konteyner elementi sifatida foydalanadigan maxsus maydon. Bu narsaning sababi - slot mashinasining o'lchamiga mos keladigan konteyner talabi. Satr elementining o'zi faqat o'yin mashinalarining balandligiga mos keladi, lekin uning kengligi emas. Biz yutuq miqdori va chiziq belgilarining matnini slot mashinasining tepasiga to'g'ri joylashtirmoqchimiz, shuning uchun bizga bu konteyner kerak. G'alaba miqdori allaqachon konteynerning bir qismidir. DrawLineSymbols () funktsiyasi chaqirilganda, belgilar qo'shiladi.

Biz chiziq belgilarini ramzlar maydoniga nisbatan joylashtiramiz, ular uyasi mashinasining o'lchamiga mos keladi.

DrawLineSymbols () funktsiyasi quyidagi vazifalarni bajaradi:

  • Birinchidan, removeLineSymbols () funktsiyasi yordamida oldingi satr belgilarini olib tashlaymiz.
  • Keyin biz funktsiya parametri sifatida olingan slot mashinasi ma'lumotlariga asoslanib, ramka konteynerining hajmini to'g'ri o'rnatamiz.
  • Shundan so'ng, biz __winningPositions xususiyatiga, __winningTypes xususiyatiga va slot mashinasi elementlarining haqiqiy hajmiga asoslanib, barcha chiziq belgilarini yaratamiz.
  • Oxirgi qadam sifatida, biz birinchi belgining pozitsiyasiga asoslanib, g'alaba matnining y-pozitsiyasini to'g'ri o'rnatdik.

Qt.createComponent buyrug'i yordamida ob'ektlarni dinamik yaratish mumkin. Biz ushbu buyruqning keyingi bosqichida yaratmoqchi bo'lgan LineSymbol.qml komponentini yuklash uchun ushbu buyruqdan foydalanamiz. Keyin biz har bir ob'ektni xususiyat konfiguratsiyasi va maqsadli konteynerni biz yuklagan komponentning createObject usuliga o'tkazib yaratamiz. Albatta, biz chiziq belgilariga o'rnatgan barcha xususiyatlar ham LineSymbol QML komponentining bir qismi bo'ladi. Slot mashinasi papkasiga yangi LineSymbol.qml faylini qo'shib, komponentani yarataylik.

Yaxshiyamki, bu komponentda hech qanday murakkab narsa bo'lmaydi. Biz to'rtburchakni belgilaymiz, fonni o'rnatamiz va tasvirni ko'rsatish uchun tasvir qo'shamiz. Rasmda rangli chegarani aniqlash uchun to'rtburchaklar ham mavjud. Rang xususiyati rangni ham fon, ham chegara to'rtburchagi uchun belgilaydi. To'g'ri tasvirni ko'rsatish uchun biz type xususiyatini qo'shamiz va kerakli belgi turiga rasm manbasini olish uchun ramz konfiguratsiyamizdan foydalanamiz. Hamma sehr shu. Shu bilan siz allaqachon yutuq chizig'ini ko'rsatish uchun kodni tugatgansiz.

Mos keladigan belgilarni tekshirish

Keyingi qatorda biz qoldirgan qism: mos keladigan belgilar guruhi mavjudligini tekshirish uchun chiziqni tekshirish. Oddiy slot o'yinlari ushbu chekni quyidagi tarzda amalga oshiradi:

  • Belgilarning har bir satri slot mashinasining birinchi g'altagidan boshlanadi.
  • Keyingi g'altaklardagi bir xil turdagi har bir belgi qatorga kiradi.
  • Joker belgi chiziqning bir qismi sifatida boshqa har qanday belgining o'rnini bosishi mumkin.
  • Joker belgi bo'lmagan va boshqa turga ega bo'lgan belgi chiziqni to'xtatadi.

Joriy belgilarni shu tarzda tekshirgandan so'ng, natijani qanday hal qilishni hal qilishingiz mumkin. Oddiy qilib aytganda, chiziqda kamida uchta belgi bo'lsa, biz faqat o'yinchi uchun kredit shaklida mukofot beramiz. Yutilgan kredit miqdorini belgilaydigan yutuq omili allaqachon ramziy konfiguratsiyamizning bir qismidir.

WinningLine.qml komponentiga validate () funktsiyasini qo'shamiz:

Funktsiyadan tashqari, biz ramz konfiguratsiyasini barcha yutuq omillari bilan yuklash uchun import qo'shdik. Chiziq belgilarini tekshirgandan so'ng, agar funktsiya uchdan kam mos keladigan belgini topsa, noto'g'ri qaytaradi. Aks holda, u winAmount xususiyatini hisoblab chiqadi va o'rnatadi, drawLineSymbols () funktsiyasini ishga tushiradi va keyin rostni qaytaradi. Belgilangan belgilarni tekshirish vaqtida biz, shuningdek, yutuqli pozitsiyalar va chiziq turlarini __winningPositions va __winningTypes xususiyatlarida saqlaymiz. Bu xususiyatlar drawLineSymbols () funktsiyasi uchun belgilar va pozitsiyalarni belgilaydi. Mashinaning funktsiya parametrlari slot mashinasi komponentiga havola qiladi. Biz ushbu ma'lumotnomadan o'yin mashinasining hozirgi ko'rinadigan belgilariga kirish uchun foydalanamiz. Bundan tashqari, biz uni drawLineSymbols () funktsiyasiga o'tkazamiz,bu erda dinamik ravishda yaratilgan belgilarni saqlaydigan konteyner elementining hajmini to'g'ri sozlash uchun ishlatiladi.

Barcha qatorlarni qo'shish

Endi siz dam olishingiz mumkin! Oldingi bosqichda siz har qanday yutuq chizig'ini hisoblab, keyin tasavvur qila oladigan umumiy komponent tayyorladingiz. Va siz ushbu komponentni yaratishga sarflagan barcha sa'y -harakatlaringiz endi o'z samarasini beradi. Biz bundan keyin nima qilmoqchimiz - bu o'yinda biz xohlagan barcha yutuqli chiziqlarni o'z ichiga oladigan yangi validator komponentini yaratish. Va bundan so'ng, biz bitta buyruq bilan barcha satrlarni tekshirishni boshlashimiz mumkin. Juda yaxshi? Keyin slotmachine papkasida yangi WinValidator.qml faylini yarataylik. Keyin bizning o'yinimizning birinchi g'alaba chizig'ini o'rnatadigan quyidagi kodni qo'shing.

Agar siz bir nechta satrlarga qarasangiz, albatta faxrlanishingiz mumkin. Bizning validator komponentimizda endi to'liq foydalanish mumkin bo'lgan yutuq chizig'i bor. Biz faqat chiziq tasvirining manbasini, biz chizgan ramzlar uchun fon rangini va chiziqni tashkil etuvchi uyasi pozitsiyalarini o'rnatamiz. Va validate () funktsiyasiga oddiy qo'ng'iroq orqali, chiziq uyalar pozitsiyalarini tekshirishi, yutuq miqdorini hisoblab chiqishi va yutuqni tashkil etuvchi ramzlarni chizishi mumkin. E'tibor bering, biz ko'rinadigan chiziqlarni yashiramiz: dastlab noto'g'ri. G'alaba qozonganlarini aniqlagandan so'ng, biz ularga ko'rsatamiz. Endi siz xuddi shu tarzda boshqa sakkizta yutuqli qatorni qo'shishingiz mumkin.

Bu to'qqiz satrda biz o'yinni loyihalashda qaror qilgan to'qqiz qatorning tasvirlari, ranglari va pozitsiyalari tasvirlangan. Chiziqning rangi va tasviri hisoblar uchun ahamiyatsiz. Siz tasvirni osongina o'zgartirishingiz yoki rangni o'zgartirishingiz mumkin. Bundan tashqari, siz 5 g'altak va 3 qatordan boshqa o'lchamlarni ishlatadigan slot mashinasini osongina yaratishingiz mumkin. Faqat pozitsiyalar xususiyatini to'g'ri sozlang va hamma narsa yaxshi bo'ladi.

Biz faqat o'yinning to'qqiz qatorini qo'shdik.

Keling, barcha satrlarni tekshirishga va g'oliblarni ko'rsatishga imkon beradigan kodni qo'shamiz.

Vazifalar quyidagi vazifalarni bajaradi:

  • Validate () funktsiyasi barcha satrlarni tasdiqlaydi va agar o'yinchi g'alaba qozongan bo'lsa, biz chiziqni yodlaymiz va yutuqning umumiy miqdorini chiziqning yutuq miqdori bilan ko'paytiramiz. Biz haqiqiy o'yinchi kreditini yutuqning umumiy miqdoriga ko'paytiramiz va agar o'yinchi hech bo'lmaganda bitta satrda g'alaba qozongan bo'lsa, haqiqatni qaytaramiz.
  • Reset () funktsiyasi validatorni slot mashinasining yangi aylanishiga tayyorlaydi. Bizning validatorimiz uchun barcha satrlarni yashirish va chiziqlarni ko'rsatadigan Taymerni to'xtatish kifoya.
  • ShowWinningLines () funktsiyasi birinchi yutuq chizig'ini ko'rsatadi va taymerni ishga tushiradi, bu vaqt o'tib boshqa chiziqlarni ko'rsatadi.
  • ShowLine funktsiyasi () indeks parametriga ko'ra yutgan chiziqni ko'rsatadi. Shuningdek, biz hozirda ko'rinadigan chiziq indeksini yodlaymiz.
  • HideAllLines () funktsiyasi barcha satrlarning ko'rinadigan xususiyatini noto'g'ri deb belgilaydi.

Xulosa qilib aytganda, biz faqat Taymerni va ikkita xususiyatni qo'shdik, bu bizga g'olib bo'lgan barcha chiziqlarni ko'rsatishni almashtirishga imkon beradi. Shu maqsadda biz chiziqlarni tasdiqlaganimizda yutgan satrlarni yodlaymiz. Tasdiqlash bosqichidan keyin chiziqlarni ko'rsatishni boshlash uchun showWinningLines () funktsiyasidan foydalanishimiz mumkin. Va biz yangi o'yinni boshlaganimizda, reset () funktsiyasi bizga hamma narsani yana yashirish imkonini beradi. Endigina validatorni sahnamizga qo'shish va bu funktsiyalarni kerakli joylarga chaqirishgina qoldi.

Biz sahnaning slot mashinasi komponentining ostiga validator komponentining kodini qo'shamiz, shuning uchun chiziqlar slot mashinasining tepasida ko'rsatilgan. Shuningdek, biz validator komponentining hajmini o'yin mashinasiga mos ravishda o'rnatamiz. Validatorning balandligi o'yin mashinasining balandligiga mos kelishi kerak. Keyin biz chiziqli tasvirlarning kengligi/balandligi nisbati asosida kenglikni hisoblaymiz. Validatorning barcha satrlari validatorning butun hajmini ishlatadi va shuning uchun ham slot mashinasiga mos keladi. Har safar slot mashinasini ishga tushirganimizda, biz barcha satrlarni yashirish uchun validatorni qayta o'rnatamiz. Spin tugagach, biz o'yinchi g'alaba qozonganligini tekshirish uchun validate () funktsiyasini chaqiramiz. Va agar u g'alaba qozonsa, biz g'olib chiziqlarni ko'rsatamiz.

O'ynang va katta g'alabalarga erisha olasizmi? Xavotir olmang, demo o'yinda siz haqiqiy pulni yo'qotmaysiz! ;-)

Ba'zi kichik yaxshilanishlar

Ko'rib turganingizdek, o'yin hozir juda zo'r. Ammo biz hali ham ishlashimiz mumkin bo'lgan narsalar bor. Animatsiya nuqtai nazaridan, o'yinchi krediti ravshan o'sishi va kamayishini ko'rish yaxshi bo'lardi. Shu maqsadda siz sahnaga xatti -harakatni qo'shishingiz mumkin, u har safar kredit miqdorini o'zgartiradi.

Hozircha, biz slot mashinasini ishga tushirish uchun kredit miqdorini kamaytirganimizda yoki g'alaba qozonganimizda uni ko'paytirganimizda, vaqt o'tishi bilan uning o'zgarishini kuzatishimiz mumkin. Biz ushbu animatsiya davomiyligini joriy tikish miqdoriga asoslaymiz. Bundan yuqori yutuqlarga olib keladigan yuqori bahs uchun animatsiyalar uzoq davom etadi. Bizning holatimizda animatsiya davomiyligi 4 dan 20 gacha bo'lgan pul tikish uchun 200 ms dan 1000 msgacha.

Yana bir ajoyib narsa, har bir g'altakni to'xtatish uchun kechikish vaqtini o'zgartirib, qo'shimcha tasodifni qo'shish bo'ladi. Odatiy bo'lib, slot mashinasi har bir rulonini avvalgisidan 250 milodiy keyin to'xtatadi. ReelStopDelay xususiyati bizga bu qiymatni o'zgartirish imkonini beradi. Agar biz yangi aylanish boshlanganda tasodifiy qiymatni tanlasak, bizning slot mashinamiz o'z tasmasini tasodifiy kechiktirish bilan to'xtatadi.

Agar siz slot mashinasi aylanishni har safar boshlaganida kodni bajarishni xohlasangiz, bitta imkoniyat - bu slot mashinasining spinStarted signalidan foydalanish. Biz bu signaldan har bir aylanish uchun tasodifiy kechikishni o'rnatish uchun foydalanamiz. Yana bir imkoniyat - sahnamizning startSlotMachine () funktsiyasida reelStopDelay xususiyatini o'zgartirish.

Bu biz ushbu darslikdagi oxirgi xususiyat edi, lekin o'zingizga ba'zi yaxshilanishlarni qo'shishingiz mumkin!

Keyin nima bo'ladi?

Agar sizga qo'shimcha funktsiyalar bo'yicha ba'zi takliflar kerak bo'lsa, buni qilishingiz mumkin:

  • BackgroundMusic va SoundEffect komponentlari yordamida fon musiqasi va ovoz effektlarini qo'shing.
  • O'yinga biroz burilish qo'shing, masalan, bepul aylantirish uchun maxsus belgilar.
  • O'yinchiga o'zi xohlagan chiziqlarni tanlashiga ruxsat bering. U to'qqiz qatorning barchasida yoki faqat bir nechtasida o'ynashi mumkin.
  • O'yinchiga Felgo uchun Soomla plaginidan foydalanib, ilova ichidagi xaridlar bilan real pulni kreditga aylantirishga ruxsat bering.

Agar sizda ushbu slot o'yinlari bo'yicha qo'llanma haqida savollaringiz bo'lsa, qo'llab -quvvatlash forumlariga tashrif buyuring.

Shuningdek, Felgo bilan o'yin yaratish haqida ko'proq ma'lumot olish va ilovalar do'konlaridagi mavjud ilovalarning manba kodini ko'rish uchun Felgo Games Examples va Demos -ga tashrif buyuring.

Agar siz ushbu demo o'yinning to'liq manba kodi bilan qiziqsangiz, Rum shishasi - Slot o'yiniga qarang.

Tabriklaymiz, siz darslikni yakunladingiz va o'zingiz uchun uyasi o'yinini yaratdingiz!