Kompyuter o'yinlarini qanday dasturlash kerak (rasmlar bilan)

Mundarija:

Kompyuter o'yinlarini qanday dasturlash kerak (rasmlar bilan)
Kompyuter o'yinlarini qanday dasturlash kerak (rasmlar bilan)
Anonim

Sizda kompyuter o'yini haqida fikr bormi va uni haqiqatga aylantirmoqchimisiz? Yoki kompyuter o'yinlari qanday yozilganligi haqida hech o'ylab ko'rganmisiz? Bu wikiHow sizga Python -da uchta asosiy kompyuter o'yinlarini yozishni o'rgatadi. Birinchi o'yinni ishlab chiqish uchun sizga Python va umumiy dasturlash tushunchalari haqida asosiy tushuncha kerak bo'ladi.

Qadamlar

3dan 1 qism: Matnga asoslangan o'yin yaratish

5692759 1
5692759 1

Qadam 1. Dasturlash tilini tanlang

Barcha dasturlash tillari turlicha, shuning uchun siz o'yinni yozish uchun qaysi birini ishlatishni hal qilishingiz kerak bo'ladi. Har bir asosiy dasturlash tili matn kiritish, matn chiqarish va if-konstruksiyalarni qo'llab-quvvatlaydi (matnga asoslangan oddiy o'yin uchun sizga kerak bo'lgan asosiy narsalar), shuning uchun variantlarni o'rganing va qaysi biri o'zingizni eng qulay va o'rganishga bag'ishlaganingizni hal qiling. Bu erda e'tiborga olish kerak bo'lgan ba'zi omillar:

  • Qaysi til asosan ishlatiladi?

    JavaScript kabi ba'zi dasturlash tillari Internetda foydalanish uchun mo'ljallangan, boshqalar Python, C yoki C ++ kabi kompyuter dasturlarini ishga tushirish uchun mo'ljallangan. O'yiningiz uchun Python, C, C ++ kabi kengroq qo'llaniladigan tilni tanlang. JavaScript.

  • O'rganish qanchalik qiyin?

    Har qanday oddiy dasturlash tilida (masalan, Malbolge kabi chalkashtirib yuborish uchun maxsus ishlab chiqilmagan) amaliyotdan so'ng dastur yozish oson bo'lishi kerak bo'lsa -da, ba'zilari boshqalarga qaraganda yangi boshlanuvchilar bilan do'stroq. Java va C, masalan, Python kabi dasturlashdan ko'ra chuqurroq dasturlash tushunchalarini tushunishni talab qiladi.

  • Qayerdan foydalanishim mumkin?

    Siz, ehtimol, Linux, Mac yoki Windows kabi har xil tizimdagi odamlar sizning o'yiningizni o'ynashini xohlaysiz. Shunday qilib, faqat Windows -da qo'llab -quvvatlanadigan Visual Basic kabi bir nechta tizimlarda qo'llab -quvvatlanadigan tilni ishlatmaslik kerak.

Ushbu maqolada Python matnli o'yin misollari uchun ishlatiladi, lekin siz boshqa dasturlash tillarida kontseptsiyalar qanday bajarilishini ko'rib chiqishingiz mumkin.

5692759 2
5692759 2

Qadam 2. Kompyuteringizni tayyorlang

Sizga kerak bo'lgan ikkita asosiy komponent - bu sizning kodingizni yozadigan matn muharriri va uni o'yinga aylantirish uchun ishlatadigan kompilyator. Agar siz ushbu maqoladagi misolga amal qilmoqchi bo'lsangiz, Python -ni o'rnatishingiz va dasturlarni ishga tushirishni o'rganishingiz kerak. Agar xohlasangiz, IDE (Integraded Desktop Environment) ni sozlashingiz mumkin, u tahrirlash, kompilyatsiya qilish va disk raskadrovka qilishni bitta dasturga birlashtiradi. Python IDE IDLE deb nomlanadi. Siz oddiy matnni qo'llab -quvvatlaydigan har qanday matn muharriridan foydalanishingiz mumkin, masalan, Windows uchun Notepad, macOS uchun TextEdit yoki Linux uchun Vim.

5692759 3
5692759 3

3 -qadam. O'yinchini kutib olish uchun kod yozing

O'yinchi nima bo'layotganini va nima qilish kerakligini bilishni xohlaydi, shuning uchun siz ular uchun matnni chop etishingiz kerak.

  • Bu Pythonda print () funktsiyasi yordamida amalga oshiriladi. Buni sinab ko'rish uchun.py kengaytmasi bo'lgan yangi faylni oching, unga quyidagi kodni kiriting, saqlang va ishga tushiring:

    print ("Raqamlarni aniqlash o'yiniga xush kelibsiz!") print ("1 dan 1000 gacha butun sonni kiriting:")

5692759 4
5692759 4

4 -qadam. Tasodifiy son hosil qiling

Keling, o'yinchidan to'g'ri raqamni topishni so'raydigan matnga asoslangan o'yin yarataylik. Biz qilishimiz kerak bo'lgan birinchi narsa - o'yin boshida tasodifiy sonni yaratish, shuning uchun o'yinchi har doim ham bir xil raqamni topa olmaydi. Raqam dastur davomida o'zgarmasligi uchun siz tasodifiy sonni o'zgaruvchiga saqlashni xohlaysiz.

  • Python-da tasodifiy sonlar funktsiyasi mavjud emas, lekin u standart kutubxonaga ega (bu foydalanuvchiga qo'shimcha hech narsa o'rnatishi shart emas). Shunday qilib, kodingizning boshiga o'ting (print () funktsiyalaridan oldin) va tasodifiy qatorni kiriting.
  • Tasodifiy funktsiyadan foydalaning. U randint () deb nomlangan, siz hozirgina import qilgan tasodifiy kutubxonada joylashgan va bu raqam argument sifatida bo'lishi mumkin bo'lgan minimal va maksimal qiymatni oladi. Shunday qilib, kodingizning oxiriga qayting va quyidagi qatorni kiriting:

    rightNum = random.randint (0, 1000)

5692759 5
5692759 5

5 -qadam. Pleyerdan ma'lumot oling

O'yinda o'yinchi biror narsa qilishni yoki biror narsa bilan muloqot qilishni xohlaydi. Matnga asoslangan o'yinda bu matn kiritish orqali mumkin. Endi biz tasodifiy raqamga ega bo'lsak, keyingi kod satrlarimiz o'yinchidan o'z taxminlarini kiritishini so'rashi kerak.

  • Siz kiritgan kod pleyerga raqam kiritish buyrug'ini bosib chiqargani uchun, u kiritgan raqamni ham o'qishi kerak. Bu Python 3 da input () va Python 2 da raw_input () yordamida amalga oshiriladi. Siz Python 3 da yozishingiz kerak, chunki Python 2 tez orada eskiradi. O'yinchining kiritilishini raqam deb nomlangan o'zgaruvchiga saqlash uchun kodingizga quyidagi qatorni qo'shing:

    userNum = input ()

5692759 6
5692759 6

Qadam 6. Pleyerning kiritilishini foydali ma'lumot turiga aylantiring

O'yinchi raqamni kiritdi-endi nima?

  • O'yinchi kiritgan raqamni kiriting. Endi bu chalkash tuyulishi mumkin, chunki ular faqat raqamni kiritishgan. Lekin buning yaxshi sababi bor: Python dasturlashda hamma narsa matn yoki "satr" deb taxmin qiladi. Bu matn siz olmoqchi bo'lgan raqamni o'z ichiga oladi. Pythonda faqat raqamni o'z ichiga olgan qatorni ichidagi raqamga o'zgartiradigan funksiya mavjud. Turi:

    userNum = int (userNum)

5692759 7
5692759 7

Qadam 7. O'yinchi raqamini to'g'ri raqam bilan solishtiring

O'yinchi o'z raqamini kiritgandan so'ng, siz uni tasodifiy yaratilgan raqam bilan solishtirishingiz kerak bo'ladi. Agar raqamlar bir xil bo'lmasa, sizning o'yiningiz o'yinchini boshqa raqamni sinab ko'rishga majbur qilishi mumkin. Agar raqamlar mos kelsa, o'yinchiga ular to'g'ri taxmin qilganini aytib, dasturdan chiqib ketishingiz mumkin. Bu quyidagi kod yordamida amalga oshiriladi:

userNum! = rightNum: userNum = int (input ())

5692759 8
5692759 8

Qadam 8. O'yinchiga fikr bildiring

Siz ularni kiritgan bo'lsangiz ham, o'yinchi buni ko'rmaydi. O'yinchiga nima bo'layotganini tushunish uchun natijalarni chop etishingiz kerak bo'ladi.

  • Albatta, siz o'yinchiga ularning soni to'g'ri yoki noto'g'ri ekanligini ayta olasiz. Ammo bunday yondashuv bilan, o'yinchi eng yomon holatda 1000 marta taxmin qilishi mumkin, bu juda zerikarli bo'lardi.
  • Shunday qilib, o'yinchiga ularning soni juda kichik yoki juda katta ekanligini ayting. Bu ularning taxminlar sonini sezilarli darajada kamaytiradi. Agar, masalan, o'yinchi birinchi navbatda 500 ni taxmin qilsa va o'yin "Juda katta. Qayta urinib ko'ring" deb javob bersa, 1000 o'rniga faqat 500 ta mumkin bo'lgan raqam bo'ladi. Qayta urinib ko'ring. ") Biri bilan.
  • Bilingki, ikkita raqam bir xilligini tekshirish = bilan emas, balki == bilan amalga oshiriladi. = chapdagi o'zgaruvchiga uning o'ng qiymatini belgilaydi!
  • if userNum <rightNum: print ("Juda kichik. Qayta urinib ko'ring:") if userNum> rightNum: print ("Juda katta. Qayta urinib ko'ring:")

5692759 9
5692759 9

Qadam 9. Kodni sinab ko'ring

Dasturchi sifatida sizning kodingiz tugallanmagan deb hisoblashdan oldin ishlayotganiga amin bo'lishingiz kerak.

  • Python -da dasturlash paytida, chiziqlar to'g'ri kiritilganligiga ishonch hosil qiling. Sizning kodingiz shunday bo'lishi kerak:

    tasodifiy chop etishni import qilish ("Raqamlarni aniqlash o'yiniga xush kelibsiz!") chop etish ("1 dan 1000 gacha butun sonni kiriting:") rightNum = random.randint (0, 1000) userNum = input () userNum = int (userNum) while userNum! = rightNum: agar userNum <rightNum: print ("Juda kichik. Qayta urinib ko'ring:") if userNum> rightNum: print ("Juda katta. Qayta urinib ko'ring:") userNum = int (input ()) print ("Siz taxmin qildingiz to'g'ri. ")

5692759 10
5692759 10

Qadam 10. Kirishni tasdiqlang

O'yinchi noto'g'ri narsani kiritib, sizning o'yiningizni buzolmasligi kerak. "Kirishni tekshirish" - o'yinchi uni qayta ishlashdan oldin to'g'ri narsani kiritganiga ishonch hosil qilishni anglatadi.

  • O'yinni qayta oching va raqam bo'lmagan narsani kiriting. O'yin ValueError bilan chiqadi. Bunga yo'l qo'ymaslik uchun siz kirishni raqam ekanligini tekshirish usulini qo'llashingiz mumkin.
  • Funktsiyani aniqlang. Kirishni tekshirish juda uzoq bo'lgani uchun va siz uni bir necha marta bajarishingiz kerak, siz funktsiyani belgilashingiz kerak. Bu hech qanday dalillarni talab qilmaydi va raqamni qaytaradi. Birinchidan, def numInput () yozing: kodingizning yuqori qismiga, to'g'ridan -to'g'ri import tasodifiy ostida.
  • O'yinchining ma'lumotlarini bir marta oling. Input () funktsiyasidan foydalaning va natijani inp o'zgaruvchiga belgilang.
  • Agar o'yinchi kiritgan raqam raqam bo'lmasa, undan raqamni kiritishni so'rang. Stringning raqam ekanligini tekshirish uchun isdigit () funktsiyalaridan foydalaning, bu faqat butun songa ruxsat beradi, shuning uchun uni alohida tekshirish shart emas.
  • Agar kirish raqam bo'lsa, uni qatordan raqamga o'zgartiring va natijani qaytaring. Satrni butun songa aylantirish uchun int () funktsiyasidan foydalaning. Bu asosiy koddagi konvertatsiyani keraksiz qiladi va siz uni o'sha erdan olib tashlashingiz kerak.
  • Asosiy koddagi input () ga qilingan barcha qo'ng'iroqlarni numInput () ga qo'ng'iroqlar bilan almashtiring.
  • NumInput () funktsiyasining kodi shunday bo'ladi:
  • def numInput (): inp = input () inp.isdigit () bo'lmaganida: chop etish ("Sizga butun sonni kiritish kerak edi! Butun raqamni kiriting:") inp = input () return int (inp)

5692759 11
5692759 11

11 -qadam. O'yinni yana sinab ko'ring

Nima sodir bo'lishini ko'rish uchun ataylab noto'g'ri narsalarni kiriting va ular paydo bo'lganda xatolarni tuzating.

Dastur sizdan raqam so'raganda, matn kiriting. Endi xato xabari bilan chiqish o'rniga, dastur sizdan yana raqam so'raydi

5692759 12
5692759 12

12 -qadam. O'yin tugagandan so'ng uni qayta ishga tushirishni taklif qiling

Shunday qilib, o'yinchi o'yinni doimiy ravishda qayta boshlamasdan uzoq vaqt o'ynashi mumkin edi.

  • Import va funktsiya ta'rifidan boshqa barcha kodlarni vaqt oralig'iga qo'ying. "True" ni shart sifatida o'rnating: bu har doim to'g'ri bo'ladi, shuning uchun tsikl abadiy davom etadi.
  • O'yinchidan raqamni to'g'ri taxmin qilib, yana o'ynashni xohlashlarini so'rang. Print () funktsiyasidan foydalaning.
  • Agar ular "Yo'q" deb javob bersa, tashqi ko'rinishdan voz keching. Agar ular boshqa biror narsaga javob bersa, davom eting. Loopdan chiqish break buyrug'i bilan amalga oshiriladi.
  • "Raqamlarni aniqlash o'yiniga xush kelibsiz" ni vaqt oralig'idan tashqariga o'tkazing. O'yinchi, ehtimol, har safar o'yin o'ynaganda, uni kutib olishni xohlamaydi. Ko'rsatmani chop eting ("Raqamlarni taxmin qilish o'yiniga xush kelibsiz!") "True:", shuning uchun foydalanuvchi faqat birinchi o'yinni boshlaganda chop etiladi.
5692759 13
5692759 13

13 -qadam O'yinni sinab ko'ring

Siz har safar yangi funktsiyani qo'llaganingizda o'z o'yiningizni sinab ko'rishingiz kerak bo'ladi.

  • Ikkala variant ham ishlayotganiga ishonch hosil qilish uchun kamida bir marta "Ha" va "Yo'q" deb javob berishga ishonch hosil qiling. Sizning kodingiz shunday bo'lishi kerak:

    import tasodifiy def numInput (): inp = input () inp.isdigit () emas: print ("Sizga butun sonni kiritish kerakligi aytildi! Butun sonni kiriting:") inp = input () return int (inp) print ("Raqam taxmin qilish o'yiniga xush kelibsiz!") "True" paytida: chop etish ("1 dan 1000 gacha butun sonni kiriting:") rightNum = random.randint (0, 1000) userNum = numInput () userNum! = RightNum: if userNum <rightNum: print ("Juda kichik. Qayta urinib ko'ring:") agar userNum> rightNum: print ("Juda katta. Qayta urinib ko'ring:") userNum = numInput () print ("Siz to'g'ri taxmin qildingiz.") print ("Siz qayta o'ynashni xohlaysizmi? Chiqish uchun Yo'q kiriting. ") if input () ==" No ": break

5692759 14
5692759 14

Qadam 14. Boshqa matnli o'yinlarni yozing

Keyingi matn sarguzashtini yozishga nima deysiz? Yoki viktorina o'yini? Ijodiy bo'ling.

Maslahat: Agar biror narsa qanday bajarilgani yoki funksiya qanday ishlatilganiga ishonchingiz komil bo'lmasa, hujjatlarni ko'rib chiqish ba'zan foydali bo'ladi. Python 3 hujjatlari https://docs.python.org/3/ saytida joylashgan. Ba'zida Internetda xohlagan narsani qidirish ham yaxshi natijalarni beradi.

3 -qismning 2 -qismi: 2D grafik bilan o'yin yaratish

5692759 15
5692759 15

Qadam 1. Grafik kutubxonasini tanlang

Grafika yaratish juda murakkab va ko'pchilik dasturlash tillari (shu jumladan Python, C ++, C, JavaScript) yadroda yoki standart kutubxonalarda grafiklarni qo'llab -quvvatlamaydi. Shunday qilib, grafikalar yaratish uchun tashqi kutubxonadan foydalanish kerak bo'ladi, masalan Python uchun Pygame.

Grafika kutubxonasi bo'lsa ham, menyuni qanday ko'rsatish, o'yinchining bosganini tekshirish, plitkalarni ko'rsatish va h.k. Agar siz haqiqiy o'yinni rivojlantirishga e'tibor qaratmoqchi bo'lsangiz, Unity kabi o'yin dvigatellari kutubxonasidan foydalanishingiz mumkin

Ushbu maqola Python -dan Cocos2D yordamida oddiy 2D platformerni qanday qilishni ko'rsatib beradi. Yuqorida aytib o'tilgan ba'zi tushunchalar boshqa o'yin dvigatellarida bo'lmasligi mumkin. Qo'shimcha ma'lumot olish uchun ularning hujjatlariga qarang.

5692759 16
5692759 16

Qadam 2. Siz tanlagan grafik kutubxonani o'rnating

Python uchun Cocos2D -ni o'rnatish oson. Siz uni https://python.cocos2d.org/index.html saytidan yoki Linuxdan foydalanayotgan bo'lsangiz, sudo pip3 install cocos2d -ni ishga tushirishingiz mumkin.

5692759 17
5692759 17

Qadam 3. O'yin va ommaviy axborot vositalari uchun yangi katalog yarating

Siz o'yinda tasvir va tovush kabi narsalarni ishlatasiz. Bu narsalarni dastur bilan bir xil katalogda saqlang. Bu katalogda boshqa hech narsa bo'lmasligi kerak, shunda siz o'yinda qanday aktivlar borligini osongina ko'rishingiz mumkin.

5692759 18
5692759 18

Qadam 4. Yangi katalogda yangi kodli fayl yarating

Dasturlash tilingiz uchun fayl kengaytmasi bilan uni asosiy deb nomlang. Agar siz bir nechta dasturli fayllarga ega bo'lishingiz mantiqiy bo'lgan katta va murakkab dastur yozsangiz, bu sizga qaysi asosiy fayl ekanligini ko'rsatadi.

Ushbu misolda biz main.py deb nomlangan faylni yaratamiz, u bizning barcha kodlarimizni o'z ichiga oladi

5692759 19
5692759 19

Qadam 5. O'yin oynasini yarating

Bu grafikali o'yin uchun asosiy shart.

  • Cocos.director, cocos.scene va cocos.layer: zarur cocos2d pastki modullarini import qiling. Bu subModuleName import *yordamida amalga oshiriladi, bu erda pastki modul nomi-siz import qilmoqchi bo'lgan submodul. … Import * va import… dan farqi shundaki, siz modul nomini avvalgi modul bilan ishlatadigan narsalarning oldiga qo'yishingiz shart emas.
  • ColorLayer -ning MainMenuBgr kichik sinfini aniqlang. Bu shuni anglatadiki, siz yaratgan har qanday asosiy menyu fonida siz kiritgan ba'zi o'zgarishlar bilan rang qatlami kabi ish tutiladi.
  • Kokos direktorini ishga tushiring. Bu sizga yangi oyna ochadi. Agar siz sarlavha o'rnatmasangiz, oynada fayl nomi (main.py) bilan bir xil sarlavha bo'ladi, bu professional ko'rinmaydi. O'lchamini Haqiqat qilib sozlash orqali oynaning o'lchamini o'zgartirishga ruxsat bering.
  • ShowMainMenu funktsiyasini aniqlang. Siz asosiy menyuni ko'rsatadigan kodni funktsiyaga kiritishingiz kerak, chunki bu funksiyani qayta chaqirish orqali asosiy menyuga osongina qaytish imkonini beradi.
  • Sahna yarating. Sahna hozircha bitta qatlamdan iborat, bu siz belgilagan MainMenuBgr sinfining ob'ekti.
  • Bu sahnani derazada ishga tushiring.
  • cocos.director importidan * cocos.layer importidan * cocos.layer importidan * sinf MainMenuBgr (ColorLayer): def _init _ (self): super (MainMenu, self)._ init _ (0, 200, 255, 255) def showMainMenu (): menuSc = Scene (MainMenuBgr ()) Director.run (menuSc) Director.init (caption = "IcyPlat - oddiy platformer", hajmini o'zgartirish = True) showMainMenu ()

5692759 20
5692759 20

Qadam 6. Oynaga asosiy menyuni qo'shing

Haqiqiy o'yindan tashqari, o'yinchi oynani yopish uchun ishlatishi mumkin bo'lgan menyuni qo'shishingiz kerak bo'ladi.

  • Cocos.menu (yana ko'rsatma bilan) va pyglet.app (bu safar import bilan) import qiling.
  • MainMenu -ni menyuning kichik klassi sifatida belgilang.
  • Asosiy menyuning hizalanishini o'rnating. Vertikal va gorizontal chiziqlarni alohida o'rnatishingiz kerak.
  • Menyu elementlari ro'yxatini tuzing va ularni menyuga qo'shing. Sizda menyudan "O'yinni boshlash" va "Chiqish" bo'limlari bo'lishi kerak. Har bir menyu bandi qavs ichida joylashtirilishi kerak. Har bir elementda etiketka va qayta qo'ng'iroq qilish funktsiyasi bo'lishi kerak, u o'yinchi uni bosganida nima bo'lishini aniqlaydi. "O'yinni boshlash" bandi uchun startGame funktsiyasidan foydalaning (tez orada yozasiz), "Chiqish" bandi uchun "pyglet.app.exit" dan foydalaning (allaqachon mavjud). Self.create_menu (menuItems) ga qo'ng'iroq qilib haqiqiy menyuni yarating.
  • StartGame () ni aniqlang. Hozircha ta'rifni kiritib qo'ying, haqiqiy o'yinni yozganingizda uning o'rnini bosasiz.
  • MenuSc sahnasini yaratgan kodingizga kiring va unga MainMenu obyektini qo'shing.
  • Sizning butun kodingiz endi quyidagicha ko'rinishi kerak:

    cocos.director import * dan cocos.menu import * cocos.layer import * cocos.layer import * import pyglet.app sinf MainMenuBgr (ColorLayer): def _init _ (o'zini): super (MainMenuBgr, o'zini)._ init _ (0, 200, 255, 255) sinf MainMenu (Menyu): def _init _ (o'zini): super (MainMenu, o'zini)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("O'yinni boshlash") ", startGame))), (MenuItem (" Chiqish ", pyglet.app.exit))] self.create_menu (menuItems) def startGame (): pass def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) Director.run (menuSc) Director.init (taglavha = "IcyPlat - oddiy platformer", hajmini o'zgartirish = True) showMainMenu ()

5692759 21
5692759 21

Qadam 7. Kodingizni sinab ko'ring

Kodni erta sinab ko'ring, lekin u hali qisqa va nisbatan sodda. Shunda siz ishlar murakkablashguncha asosiy tuzilishdagi xatolarni aniqlashingiz va tuzatishingiz mumkin.

Ko'rsatmalardagi kod "IcyPlat - oddiy platformer" deb yozilgan oynani ochishi kerak. Fon ochiq ko'k rangda va siz oynaning o'lchamini o'zgartirishingiz mumkin. Menyuda "O'yinni boshlash" tugmachasini bosganingizda, hech narsa bo'lmasligi kerak (hozircha). "Chiqish" tugmachasini bosganingizda, oyna yopiladi

5692759 22
5692759 22

Qadam 8. Sprite yarating

Sprite-bu "o'yin ob'ekti" yoki 2 o'lchovli tasvir. Sprites-bu o'yin ichidagi ob'ektlar, piktogrammalar, fon bezaklari, belgilar va boshqa narsalar bo'lishi mumkin. Biz o'yinchi bilan muloqot qila oladigan belgi uchun sprite yaratishdan boshlaymiz.

  • Cocos.sprite submodulini import-ifoda-dan import qiling.
  • Spritni tasvirlaydigan tasvirni toping. Agar sizda rasm bo'lmasa, siz sprite ko'rsatolmaysiz. Siz bittasini chizishingiz mumkin, yoki Internetdan olishingiz mumkin (agar siz o'z o'yiningizni nashr qilmoqchi bo'lsangiz, litsenziyalarga e'tibor bering). Bu misol uchun, https://opengameart.org/content/tux-classic-hero-style sahifasiga o'ting va ishlaydigan pingvinlarning-p.webp" />
  • Qatlamni ScrollableLayer sinfining yangi obyekti sifatida yarating. Keyin Sprite obyekti sifatida sprite yarating va uning o'rnini [8, 250] ga o'rnating. Ma'lumot uchun, (0, 0) nuqta chap pastki burchakda. Bu juda baland, lekin pingvin muzga tiqilib qolmasligiga ishonch hosil qiladi.
  • Sprite qatlamiga sprite qo'shing.
  • Sprite qatlamidan yangi sahna yarating va uni ishga tushiring.
  • def startGame (): figLayer = ScrollableLayer () fig = Sprite ('pingu.png') fig.position = (75, 100) figLayer.add (fig) # gameSc = Scene (figLayer) direktori.run (gameSc)

  • Kodni ishga tushiring. Siz bosganingizdan so'ng qora fonda kichkina pingvin figurasini (yoki chizgan narsangizni) ko'rishingiz kerak O'yinni boshlash.
5692759 23
5692759 23

9 -qadam. Manzarangizni tasavvur qiling

Ko'pgina o'yinlarda sizning sprite bo'sh joyida suzmasligi kerak. Ular aslida biron bir sirt ustida turishi kerak, atrofida nimadir bor. 2D o'yinlarda, bu ko'pincha plitkalar to'plami va plitka xaritasi yordamida amalga oshiriladi. Plitkalar to'plami, asosan, qanday sirt kvadratlari va fon kvadratlari borligini va ular nimaga o'xshashligini ko'rsatadi.

  • Plitkalar to'plamini yarating. Bu o'yin uchun plitkalar to'plami juda oddiy bo'ladi: muz uchun bitta kafel va osmon uchun bitta kafel. Bu misolda ishlatilgan muz plitasi bu erdan, CC-BY-SA 3.0 ostida.
  • Plitkalar to'plami rasmini yarating. Bu bir xil o'lchamdagi (agar bo'lmasa, tahrir qiling) va o'yinda ko'rishni xohlagan o'lchamdagi, yonma -yon bo'lishi kerak bo'lgan barcha plitalarning rasmidir. Rasmingizni icyTiles-p.webp" />
  • Plitkalar to'plamining tavsifini yarating. Bu XML fayli. XML fayli plitkalar to'plamining kattaligi, qaysi rasmdan foydalanish va u erda qaysi plitkani qaerdan topish mumkinligi haqidagi ma'lumotlarni o'z ichiga oladi. Quyidagi kod bilan icyTiles.xml nomli XML faylini yarating:

         
    
5692759 24
5692759 24

Qadam 10. Manzarangiz uchun kafel xaritasini tuzing

Plitka xaritasi - bu sizning darajangizda qaysi plitka qaysi pozitsiyada ekanligini aniqlaydigan xarita. Masalan, siz plitka xaritalarini yaratish funktsiyasini belgilashingiz kerak, chunki qo'l xaritalarini loyihalash juda zerikarli. Keyinchalik rivojlangan o'yinda odatda qandaydir darajadagi muharrir bo'ladi, lekin 2D o'yinni ishlab chiqish bilan tanishish uchun algoritm etarlicha yaxshi darajalarni ta'minlay oladi.

  • Qancha qator va ustun kerakligini bilib oling. Buning uchun ekran hajmini gorizontal (ustunlar) va vertikal (satrlar) o'lchamlari bo'yicha bo'linadi. Raqamni yuqoriga aylantiring; Buning uchun sizga matematika modulining funktsiyasi kerak, shuning uchun matematik import tavanidan kodingizning yuqori qismidagi importga qo'shing.
  • Yozish uchun faylni oching. Bu faylning barcha oldingi tarkibini o'chirib tashlaydi, shuning uchun katalogda hech qanday fayl bo'lmagan, masalan levelMap.xml nomini tanlang.
  • Faylga ochiladigan teglarni yozing.
  • Algoritmga muvofiq plitka xaritasini yarating. Siz quyidagi koddagi kodni ishlatasiz, yoki o'zingiz o'ylab topishingiz mumkin. Randint funktsiyasini tasodifiy moduldan import qilganingizga ishonch hosil qiling: bu quyidagi kodning ishlashi uchun kerak va siz o'ylab topgan narsalarga tasodifiy tamsayılar kerak bo'ladi. Bundan tashqari, osmono'par plitalar va muz plitalarini turli qatlamlarga qo'yganingizga ishonch hosil qiling: muz qattiq, osmon emas.
  • Faylga yopish teglarini yozing va faylni yoping.
  • def generateTilemap (): colAmount = tavan (800/16) * 3 # (ekran kengligi / kafel o'lchami) * 3 qatorAmount = tavan (600/16) # ekran balandligi / plitka o'lchami kafelFile = ochiq ("levelMap.xml", " w ") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) i uchun diapazonda (0, colAmount): tileFile.write ('') makeHole = Agar noto'g'ri bo'lsa (0, 50)) == 10 va i! = 0: # ochilish nuqtasida teshiklarga yo'l qo'ymang makeHole = To'g'ri j oralig'ida (0, rowAmount): if makeHole: tileFile.write ('\ n') else: if j <= iceHeight: tileFile.write ('\ n') else: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) if iceHeight <0: # plitalar juda past iceHeight = randint (1, 5) if iceHeight> rowAmount: # plitalar haddan tashqari baland bo'lishidan cheklaydi ('\ n / n') i diapazonidagi (0, colAmount) uchun: n ') tileFile.write (' / n / n ') tileFile.close ()

5692759 25
5692759 25

Qadam 11. Plitka xaritasini ko'rsatish

Hamma narsani cocos.tiles -dan import qiling va buning uchun startGame funktsiyasiga o'ting.

  • StartGame funktsiyasining boshida, siz aniqlagan funktsiyadan foydalanib, xaritani yarating.
  • Yangi aylantirish menejerini yarating. Buni to'g'ridan -to'g'ri qatlamga sprite qo'shadigan chiziq ostida qiling.
  • LevelMap.xml plitasi xaritasidan generateTilemap funktsiyasini yaratadigan plitalarni o'z ichiga olgan yangi qatlam yarating.
  • Qattiq bo'lmagan qatlamni, qattiq qatlamni va sprite qatlamini aylantirish menejeriga aynan shu tartibda qo'shing. Agar xohlasangiz, z-pozitsiyasini qo'shishingiz mumkin.
  • Sahnani sprite qatlamidan yaratish o'rniga, aylantirish menejeridan yarating.
  • Sizning startGame funktsiyangiz endi shunday bo'lishi kerak:

    def startGame (): generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 500) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = yuk ('levelMap.xml') solidTiles = tileLayer ['solid'] nsoliTiles = tileLayer ['not_solid'] # scrMang = ScrollingManager () scrMang.add (nsoliTiles, z = -1) scrMang.add (solidTiles, z = 0) scrMang.add (figLayer, z) = 1) # gameSc = Scene (scrMang) rejissyor.run (gameSc)

5692759 26
5692759 26

12 -qadam. Kodingizni sinab ko'ring

Siz kiritgan yangi funktsiyalar haqiqatan ham ishlayotganiga ishonch hosil qilish uchun kodingizni tez -tez sinab ko'rishingiz kerak.

Misoldagi kod endi pingvin orqasidagi muzli manzarani ko'rsatishi kerak. Agar pingvin muz ustida suzib yurganga o'xshasa, siz hech qanday yomon ish qilmagansiz va u keyingi bosqichda tuzatiladi

5692759 27
5692759 27

13 -qadam. Boshqaruv elementlarini qo'shing

O'yinchining matnli o'yindan ko'ra, 2D o'yinda dastur bilan ishlashning ko'plab usullari mavjud. To'g'ri tugma bosilganda ularning raqamlarini siljitish odatiy holdir.

  • Hamma narsani cocos.mapcolliders va cocos.actions -dan import qiling. Shuningdek, kalitni pyglet.window -dan import qiling.
  • Ba'zi global o'zgaruvchilarni "e'lon qiling". Global o'zgaruvchilar funktsiyalar o'rtasida taqsimlanadi. Siz Python -da o'zgaruvchilarni e'lon qila olmaysiz, lekin shuni aytish kerakki, global o'zgaruvchi uni ishlatishdan oldin asosiy kodda mavjud. Siz qiymatni 0 sifatida belgilashingiz mumkin, chunki funksiya to'g'ri qiymatni keyinroq belgilaydi. Shunday qilib, import ifodalarini qo'shing:

    # global o'zgaruvchilarni "e'lon qilish" klaviaturasi = 0 scrMang = 0

  • StartGame funksiyasini sozlang:

    • Aytaylik, global o'zgaruvchilar klaviaturasi va scrMang -dan foydalanasiz. Buni global klaviatura, funktsiyaning yuqori qismida scrMang yozish orqali qiling.
    • Oynani klaviatura hodisalarini tinglashga majburlang.
    • Rasmga PlatformerController asosida harakat qilishni ayting. Siz tez orada PlatformerController -ni amalga oshirasiz.
    • Qattiq plitkalar va rasm o'rtasidagi to'qnashuvlarni bartaraf etish uchun xarita to'qnashuvini yarating.

    def startGame (): global klaviatura, scrMang generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = yuk ('levelMap).xml ') solidTiles = tileLayer [' qattiq '] nsoliTiles = tileLayer [' not_solid '] # klaviatura = key. KeyStateHandler () Director.window.push_handlers (klaviatura) # fig.do (PlatformerController ()) mapcollider = RectMapCollib (velocity_) = 'slide') fig.collision_handler = make_collision_handler (mapcollider, solidTiles) # scrMang = ScrollingManager () scrMang.add (nsoliTiles, z = -1) scrMang.add (solidTiles, z = 0) scrMang.add (figLayer, z =) 1) # gameSc = Scene (scrMang) direktori. Ishga tushadi (gameSc)

  • Platforma boshqaruvchisini yarating. Bu sizning tugmachangizga qarab raqamni siljitadi.

    • Platforma boshqaruvchisini Action subclass sifatida belgilang.
    • Harakat tezligini, sakrash tezligini va tortish kuchini aniqlang.
    • Boshlash funktsiyasini aniqlang. Bu funksiya platformer tekshirgichi rasmga ulanganda bir marta chaqiriladi. U o'z tezligini x yo'nalishi bo'yicha ham 0 ga o'rnatishi kerak.
    • Bosqich funktsiyasini aniqlang. Bu sahna ishlayotgan paytda takrorlanadi.
    • Bosqich funktsiyasiga global o'zgaruvchilar klaviaturasi va scrMang -dan foydalanishini ayting.
    • Tezlikni oling va o'zgartiring. X va y tezligini alohida o'zgaruvchilarda saqlang. X tezligini 1 yoki -1 ga qo'ying (chap yoki o'ng tugma bosilganiga qarab) harakat tezligiga ko'paytiriladi. Y tezligiga tortish kuchini qo'shing. Uni sekinroq ishlaydigan qurilmalarda ham xuddi shunday ishlashini tanaffus bilan ko'paytiring. Agar bo'sh joy tugmachasi bosilsa va rasm erga tik tursa, tezlikni o'tish uchun y tezligini o'zgartirib sakrab o'ting.
    • Raqam qayerga ko'chishi kerakligini hisoblang. Keyin to'qnashuvni boshqaruvchiga, agar u qattiq kafel ichida bo'lsa, bu holatni o'zgartirsin. Nihoyat, rasmni yangi sozlangan holatga o'tkazing.
    • O'tkazish menejerining diqqatini rasmga o'rnating. Bu raqam harakatlanayotganda kameraning oqilona harakatlanishiga olib keladi.

    sinf PlatformerController (Harakat): global klaviatura, scrMang on_ground = True MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) def step (self, dt): global keyboard, dt> 0.1: scroller, agar katta to'xtash vaqtida hech narsa qilmasangiz vx, vy = self.target.velocity vx = (klaviatura [key. RIGHT] - klaviatura [key. LEFT]) * self. MOVE_SPEED vy + = self. GRAVITY * dt agar self.on_ground va klaviatura [key. SPACE]: vy = self. JUMP_SPEED dx = vx * dt dy = vy * dt last = self.target.get_rect () new = last.copy () new.x += dx new.y += dy self.target.velocity = self.target.collision_handler (last, new, vx, vy) self.on_ground = (new.y == last.y) self.target.position = new.center scrMang.set_focus (*new.center)

5692759 28
5692759 28

Qadam 14. Kodingizni sinab ko'ring

Agar siz misolga amal qilgan bo'lsangiz, endi siz pingvinni o'q tugmachalari bilan harakatlantira olasiz va bo'sh joyni bosib sakrashingiz kerak. Bundan tashqari, pingvin endi yer ustida suzib yurishning o'rniga yiqilib tushishi kerak.

5692759 29
5692759 29

15 -qadam. O'yin uchun tugatish yarating

Hatto cheksiz davom etadigan o'yinlarda ham mag'lubiyat ehtimoli bo'lishi kerak. Siz misolda funktsiyaga ega bo'lgan darajangiz tugaganligi sababli, siz ham shu maqsadga erishish orqali g'alaba qozonishingiz kerak bo'ladi. Aks holda, o'yinchi zerikarli bo'ladigan muz bloklari bo'ylab sakrab o'tardi.

  • Platforma boshqaruvchisi ichida, fokus o'rnatilgandan so'ng, rasmning x va y pozitsiyasini oling. Agar y pozitsiyasi 0 dan past bo'lsa, argument sifatida "O'yin tugadi" bilan FinishGame () (keyinroq yozasiz) funktsiyasini chaqiring. Agar x pozitsiyasi ekranning kattaligidan kattaroq bo'lsa 3 ga ko'paytiriladi (siz buni avval daraja o'lchami sifatida o'rnatgan edingiz).

    posX, posY = self.target.position, agar posY <0: finishGame ("O'yin tugadi"), agar posX> 800*3: # darajali tugatish tugallansa, o'yin qaytadi ("Darajasi tugadi")

  • Sinf tugatish menyusini aniqlang. Bu siz ilgari aniqlagan asosiy menyu sinfiga o'xshash bo'lishi kerak, lekin sarlavha sifatida bo'sh satr o'rniga, _init_ funktsiyasi argument sifatida qabul qilinadigan o'zgaruvchan matndan foydalanishi kerak. Menyu elementlari "Qayta urinish" va "Chiqish" deb belgilanishi kerak, lekin ular chaqirgan vazifalar bir xil.

    sinf FinishMenu (Menyu): def _init _ (o'zini, matn): super (FinishMenu, o'zini)._ _ _ (matn) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Qayta urin", startGame)), (MenuItem ("Chiqish", pyglet.app.exit))] self.create_menu (menuItems)

  • FinishGame () funktsiyasini aniqlang. Matnni argument sifatida qabul qilish kerak. U asosiy menyu fonidan sahna yasashi kerak, bu menyuga matn argumenti yuborilgan FinishMenu. Keyin u bu sahnani boshqarishi kerak.

    def finishGame (matn): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (matn)) Director.run (menuSc)

5692759 30
5692759 30

16 -qadam. Kredit qo'shing

Bu erda siz ajoyib kodingiz uchun kredit olasiz, shuningdek, sizga yordam bergan boshqa odamlarga kredit berasiz. Agar siz boshqa veb -saytdan rasm ishlatgan bo'lsangiz (ruxsat bilan), bu tasvirni yaratuvchisiga havola qiling.

  • CREDITS faylini yarating va u erda barcha kreditlaringizni kiriting, masalan:

    Pingvin: Kelvin Shadewing, CC0 muz bloki ostida: Michał Banas opengameart.org saytida CC-BY-SA 3.0 ostida 1024 raqamli.

  • Python kodingizga qayting va Labelni cocos.text -dan import qiling.
  • Qatlamlar kreditining kichik sinfini aniqlang. _Init_ funktsiyasida CREDITS faylini o'qing va undagi har bir satrdan to'g'ri joyga matn yorlig'ini qo'ying.

    sinf kreditlari (Layer): def _init _ (o'zini): super (Kreditlar, o'zini)._ init _ () credFile = ochiq ("KREDITLAR", "r") creds = credFile.read () creds = creds.split ("\ n ") i uchun diapazonda (0, len (creds)): credLabel = Label (creds , font_size = 32, anchor_x =" left ", anchor_y =" top ") credLabel.position = 25, 500- (i +1)*40 self.add (credLabel)

  • Asosiy menyu sinfiga o'ting va "Kreditlar" deb nomlangan menyu bandini qo'shing, u bosilganda showCredits funktsiyasini chaqiradi.
  • Menyuning BackToMainMenuButton pastki sinfini aniqlang. ShowMainMenu funktsiyasini chaqiradigan "Orqaga" deb nomlangan bitta elementdan iborat menyu yarating. Tugmachaga o'xshash bu "menyu" vertikal ravishda pastga va gorizontal ravishda yuqoriga moslashtirilishi kerak.

    sinf BackToMainMenuButton (Menyu): def _init _ (o'zini): super (BackToMainuButton, o'zini)._ _ _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Orqaga", showMainMenu)) create_menu (menyu elementlari)

  • ShowCredits funktsiyasini aniqlang. U MainMenuBgr qatlami va Credits qatlamidan sahna yasashi va bu sahnani boshqarishi kerak.

    def showCredits (): credSc = Scene (MainMenuBgr ()) credSc.add (Credits ()) credSc.add (BackToMainMenuButton ()) Director.run (credSc)

5692759 31
5692759 31

Qadam 17. Kodingizni tekshiring

Agar siz kodni tugatgan deb o'ylasangiz, barchasini qayta ko'rib chiqishingiz kerak. Bu sizga biror narsani optimallashtirish mumkinligini yoki o'chirishni unutgan keraksiz qatorlar borligini aniqlashga yordam beradi. Agar siz misolni kuzatgan bo'lsangiz, sizning kodingiz endi quyidagicha ko'rinishi kerak:

    cocos.director import * dan cocos.menu import * cocos.scene import * cocos.layer import * cocos.sprite import * cocos.tiles import * cocos.mapcolliders import * cocos.actions import * cocos..text import Yorliq import pyglet.app pyglet.windowdan matematik importdan import kaliti tasodifiy import randintidan # "e'lon qilish" global o'zgaruvchilar klaviaturasi = 0 scrMang = 0 sinf MainMenuBgr (ColorLayer): def _init _ (o'zini): super (MainMenuBgr, o'zini)._ init _ (0, 200, 255, 255) sinf MainMenu (Menyu): def _init _ (o'zini): super (MainMenu, o'zini)._ init _ ("") self.menu_valign = MARKAZ self.menu_halign = CENTER menuItems =

  • Bu jami 168 satr va agar siz faqat kodni hisoblasangiz, 152 qator. Bu juda katta tuyuladi, lekin bunday murakkab o'yin uchun bu aslida kichik miqdor.
5692759 32
5692759 32

18 -qadam Bajarildi

Endi o'yinni sinab ko'ring. Biror narsani dasturlashda, siz har doim yangi narsalarni qo'llaganingizda, u ishlayaptimi yoki yo'qligini tekshirishingiz kerak. Bundan tashqari, siz bir muncha vaqt yozgan o'yinni o'ynashni xohlashingiz mumkin.

3dan 3 qism: O'yinni nashr etish

5692759 52
5692759 52

Qadam 1. Bog'liqliklarni yozing

Boshqa kompyuterdan foydalanadigan har bir kishi siznikiga o'xshash dasturiy ta'minot va kutubxonalarga ega bo'lmaydi. Shunday qilib, sizning o'yiningizni o'rnatgan har bir kishi uni ishlatish uchun nima kerakligini aniq bilishiga ishonch hosil qilishingiz kerak. Siz barcha qaramliklarning barcha bog'liqliklarini yozishingiz shart emas va hokazo, lekin hech bo'lmaganda sizning paketlaringiz va ularning bog'liqliklarini yozishingiz kerak.

5692759 53
5692759 53

Qadam 2. Barcha ommaviy axborot vositalarini ishlatishga ruxsatingiz borligiga ishonch hosil qiling

Bu barcha grafikalar uchun, shu jumladan 3D modellar, musiqa, dialog, musiqa, kutubxonalar va siz o'yin uchun ishlatgan ramkalar uchun amal qiladi. O'zingiz yozmagan narsani.

  • Muallifga kredit berish yoki bir xil litsenziya ostida ommaviy axborot vositalarining modifikatsiyasini ulashish kabi ba'zi shartlar mavjud. Ba'zan, agar siz o'yin uchun haq to'lamasangiz, yaratuvchini ko'rsatmasdan grafikadan foydalanishingiz mumkin. Agar siz muallifni qarzga olishingiz kerak bo'lsa, buni yaxshi ko'rinadigan joyda, masalan, o'yiningizdagi "Kreditlar" yorlig'i kabi qiling.
  • Mualliflik huquqi da'vo qilingan va litsenziya ko'rsatilmagan, ba'zida "Hamma huquqlar himoyalangan" kabi matnli ommaviy axborot vositalari ham bor. Agar shunday bo'lsa, uni o'yiningizga qo'shishdan oldin muallifdan aniq ruxsat olishingiz kerak.
  • Kutubxonalar odatda ularni kutubxona sifatida ishlatishga ruxsat beruvchi litsenziyalar asosida chiqariladi. E'tiborli istisno - bu istisnolarni bog'lamasdan GPL: Bunday litsenziya uni faqat ma'lum litsenziyalarga ega bo'lgan dasturda ishlatishga imkon beradi. Ommaviy axborot vositalari yoki kutubxona bilan nima qilayotganingizga ruxsat berish uchun siz har doim litsenziyaning asosiy bandlarini o'qishingiz kerak.

Ogohlantirish: Ommaviy axborot vositalari yoki kutubxonalardan litsenziya ruxsat bermaydigan tarzda ishlatish siz chop etadigan o'yinda jiddiy huquqiy muammolarga olib kelishi mumkin. Agar muallifdan so'rang yoki undan foydalanishga ruxsat berilganiga ishonchingiz komil bo'lmasa, ommaviy axborot vositalaridan umuman voz keching.

5692759 54
5692759 54

Qadam 3. O'yiningizni nashr qilmoqchi bo'lgan shartlar to'g'risida qaror qabul qiling

O'yiningizni sotasizmi? Boshqalarga sizning rasmlaringiz va g'oyalaringizdan foydalanishga ruxsat berishni xohlaysizmi? Loyihangizda foydalanadigan ommaviy axborot vositalariga ehtiyot bo'lishingiz kerak bo'lsa -da, siz boshqalarga sizning o'yiningizdan qanday foydalanishga ruxsat berishni xohlaysiz. Siz o'z o'yinlaringizni jamoat mulki sifatida tarqatish uchun Creative Commons CC0 litsenziyasidan foydalanishingiz mumkin. Ba'zi huquqlarni saqlab qolgan holda ba'zi sharoitlarda tarqatish va o'zgartirishga ruxsat berish uchun Gnu General Public License (GPL) yoki Berkeley Software Distribution (BSD) litsenziyasini sinab ko'ring. Yoki siz dasturiy ta'minotni mulkiy qilib qo'yishingiz mumkin, ya'ni hech kim sizning ruxsatingizsiz tarqatishga yoki o'zgartirishga ruxsat berilmagan.

Garchi o'yinlarni sotish orqali pul ishlash mumkin bo'lsa -da, odamlar odatda sizning xususiyatlaringizni kam va hech qanday o'ziga xos bo'lmagan birinchi o'yiningizni sotib olishlari dargumon. Bundan tashqari, agar bepul dastur ishlamasa, uni yuklab olgan odamlarning hafsalasi pir bo'ladi. Agar ular buning uchun pul to'lagan bo'lsalar, ular o'z pullarini qaytarib berishadi, bu sizga ham, foydalanuvchilarga ham ko'proq muammo tug'diradi. Shunday qilib, birinchi bir nechta dasturlarni bepul taqdim etishni o'ylab ko'ring

5692759 55
5692759 55

Qadam 4. O'yiningizni qanday nashr qilishni xohlayotganingizni hal qiling

Har bir usulning afzalliklari va kamchiliklari bor, shuning uchun siz o'zingiz qaror qilishingiz kerak.

  • Veb -saytda e'lon qilish:

    Agar sizda veb -sayt bo'lsa, uni yuklab olish uchun o'yinni yuklashingiz mumkin. Dasturiy ta'minotni o'rnatish bo'yicha aniq ko'rsatmalarni, shuningdek, barcha kerakli bog'liqliklarni taqdim etishga ishonch hosil qiling. Buning kamchiligi shundaki, o'yinchilarga qaramlikni qo'lda o'rnatish kerak bo'ladi, bu ba'zi odamlar uchun qiyin bo'lishi mumkin.

  • Paket menejeri uchun paket yaratish:

    Apt, Yum va Homebrew kabi turli xil paket menejerlari mavjud bo'lib, ular odamlarga Linux va Linux asosidagi ilovalarni o'rnatishni osonlashtiradi. Ularning barchasi turli xil paket formatlariga ega. Paketlarning yaxshi tomoni shundaki, ular avtomatik ravishda barcha bog'liqliklarni o'rnatadilar (agar siz ularni to'g'ri sozlasangiz). Shunday qilib, o'yinchi faqat sizning paketingizni o'rnatishi kerak va keyin o'yinni o'ynashi mumkin. Muammo shundaki, har xil platformalarda turli xil paket menejerlari bor, shuning uchun siz eng keng tarqalgan paketlarni taqdim etish ustida ishlashingiz kerak bo'ladi.

5692759 56
5692759 56

Qadam 5. Sizning dasturingizga bevosita e'tibor qarating

O'rnatishni osonlashtirish uchun dasturingizni Ubuntu va Debian kabi yirik paketlar omboriga yuklashni o'ylab ko'ring. Bundan tashqari, GameDev -ning loyihalar bo'limi yoki tigSource -ning bir qismi kabi tegishli forumlarda xabar joylashtiring. Ammo birinchi o'yinlaringiz mashhur bo'lmasa, xafa bo'lmang. Agar sizda ko'pchilik yoqadigan fikr bo'lsa, sizning o'yiningiz mashhur bo'lishi mumkin.

Maslahatlar

  • Sabrli bo'ling va o'rganishga tayyor bo'ling. Ba'zida dasturlash asabiylashishi mumkin!
  • Agar siz boshqa o'yinda nimadir qanday amalga oshirilganiga va o'yin ochiq manba ekanligiga hayron bo'lsangiz, uning manba kodini ko'rishingiz mumkin.
  • Ommaviy axborot vositalarini qidirayotganda, jamoat mulki bo'lgan tarkibni topishga harakat qiling. "Creative Commons" yoki "Public Domain" rasmlari va musiqasini qidiring va https://opengameart.org yoki https://publicdomainpictures.net kabi veb -saytlardan foydalaning.
  • Litsenziyani tekshirmasdan kodning asosiy qismlarini nusxa ko'chirmang. Bu ko'pincha taqiqlanadi va agar bo'lmasa, odatda atributni talab qiladi.
  • O'z o'yiningizni reklama qilayotganda, spam yozmang yoki mos bo'lmagan joylarga joylashtirmang. Bu sizni sahifadan to'sib qo'yishi mumkin, shunchaki bezovta qiladi va obro'ingizga putur etkazadi.

Tavsiya: