Компьютерийн тоглоомыг хэрхэн програмчлах вэ (зурагтай)

Агуулгын хүснэгт:

Компьютерийн тоглоомыг хэрхэн програмчлах вэ (зурагтай)
Компьютерийн тоглоомыг хэрхэн програмчлах вэ (зурагтай)
Anonim

Танд компьютер тоглоом тоглох санаа байна уу, үүнийг бодит болгохыг хүсч байна уу? Эсвэл компьютер тоглоомыг хэрхэн бичдэг талаар та бодож байсан уу? Энэхүү wikiHow нь Python дээр гурван үндсэн компьютер тоглоом бичихийг заадаг. Анхны тоглоомоо хөгжүүлэхийн тулд танд Python болон програмчлалын ерөнхий ойлголтын үндсэн ойлголт хэрэгтэй болно.

Алхам

3-ийн 1-р хэсэг: Текст дээр суурилсан тоглоом хийх

5692759 1
5692759 1

Алхам 1. Програмчлалын хэлийг сонгоно уу

Бүх програмчлалын хэлүүд өөр өөр байдаг тул та тоглоомоо бичихдээ аль хэлийг ашиглахаа шийдэх хэрэгтэй болно. Бүх томоохон програмчлалын хэл нь текст оруулах, текст гаралт, if-builds (текст дээр суурилсан энгийн тоглоомд хэрэгтэй гол зүйлүүд) -ийг дэмждэг тул аль сонголтыг судалж, сурах нь танд илүү тохь тухтай, зориулагдсан болохыг шийдээрэй. Энд анхаарах зарим хүчин зүйлүүд байна.

  • Ямар хэлийг ихэвчлэн ашигладаг вэ?

    JavaScript гэх мэт зарим програмчлалын хэлийг вэбд ашиглахаар бүтээсэн бол Python, C, C ++ гэх мэт бусад нь компьютерийн програм ажиллуулахад зориулагдсан байдаг. Тоглоомын хувьд Python, C, C ++ гэх мэт илүү өргөн хүрээний хэл ашиглахыг зорь. JavaScript.

  • Сурахад хэр хэцүү вэ?

    Хэвийн програмчлалын аль ч хэл дээр дадлага хийсний дараа програм бичих нь маш хялбар байх ёстой (өөрөөр хэлбэл Малболге шиг төөрөгдүүлэх зорилгоор тусгайлан боловсруулаагүй), зарим нь эхлэгчдэд бусдаас илүү найрсаг байдаг. Жишээлбэл, Java, C програмууд нь илүү хүртээмжтэй, шууд синтаксаараа алдартай Python гэхээсээ илүү гүнзгий програмчлалын ойлголтыг ойлгохыг шаардах болно.

  • Би үүнийг хаана ашиглаж болох вэ?

    Линукс, Mac эсвэл Windows гэх мэт өөр өөр системд ажилладаг хүмүүс бүгдээрээ таны тоглоомыг тоглохыг хүсч байгаа байх. Тиймээс та зөвхөн Windows дээр дэмжигддэг Visual Basic гэх мэт цөөн хэдэн систем дээр дэмжигддэг хэлийг ашиглах ёсгүй.

Энэ нийтлэлд Python-ийг текст дээр суурилсан тоглоомын жишээн дээр ашиглах болно, гэхдээ та бусад ямар ч програмчлалын хэл дээр уг ойлголт хэрхэн хийгддэгийг олж мэдэх боломжтой.

5692759 2
5692759 2

Алхам 2. Компьютерээ бэлэн болго

Танд хэрэгтэй хоёр үндсэн бүрэлдэхүүн хэсэг бол кодоо бичих текст засварлагч, үүнийг тоглоом болгон хувиргах хөрвүүлэгч юм. Хэрэв та энэ нийтлэл дэх жишээг дагахыг хүсч байвал Python програмыг суулгаж, програм ажиллуулах талаар сурах хэрэгтэй. Хэрэв та хүсвэл IDE (Integraded Desktop Environment) -ийг тохируулж, засварлах, хөрвүүлэх, дибаг хийхийг нэг програм болгон нэгтгэж болно. Python -ийн IDE -ийг IDLE гэж нэрлэдэг. Гэхдээ та Windows -д зориулсан Notepad, macOS -д TextEdit эсвэл Linux -д зориулсан Vim гэх мэт энгийн текстийг дэмждэг текст засварлагчийг ашиглаж болно.

5692759 3
5692759 3

Алхам 3. Тоглогчтой мэндчилэхийн тулд код бичээрэй

Тоглогч юу болж байгааг, юу хийх ёстойгоо мэдэхийг хүсэх тул та тэдэнд зориулж текст хэвлэх хэрэгтэй.

  • Үүнийг Python дахь print () функцээр гүйцэтгэдэг. Үүнийг туршиж үзэхийн тулд.py өргөтгөлтэй шинэ файл нээгээд дараах кодыг оруулаад хадгалаад ажиллуулна уу.

    хэвлэх ("Тоон таамаглах тоглоомд тавтай морил!") хэвлэх ("1 -ээс 1000 хүртэлх бүхэл тоог оруулна уу:")

5692759 4
5692759 4

Алхам 4. Санамсаргүй тоо үүсгэнэ үү

Тоглогчийг зөв дугаарыг таахыг хүссэн текст дээр суурилсан тоглоом хийцгээе. Бидний хийх ёстой хамгийн эхний зүйл бол тоглолтын эхэнд санамсаргүй тоо үүсгэх явдал юм, тиймээс тоглогч ижил тоог үргэлж таахгүй байх болно. Хөтөлбөрийн туршид тоо ижил хэвээр байх тул та санамсаргүй тоог хувьсагчид хадгалахыг хүсч байна.

  • Python-д санамсаргүй тооны функц байдаггүй боловч стандарт номын сан байдаг (энэ нь хэрэглэгч нэмэлт зүйл суулгах шаардлагагүй болно). Тиймээс кодынхоо эхэнд (print () функцүүдийн өмнө) очоод импортын мөрийг санамсаргүй байдлаар бичнэ үү.
  • Санамсаргүй функцийг ашиглана уу. Үүнийг randint () гэж нэрлэдэг бөгөөд энэ нь таны саяхан оруулж ирсэн санамсаргүй номын санд байгаа бөгөөд тоо нь аргумент байж болох хамгийн бага ба хамгийн их утгыг авдаг. Тиймээс кодын төгсгөл рүү буцаж очоод дараах мөрийг оруулна уу.

    rightNum = random.randint (0, 1000)

5692759 5
5692759 5

Алхам 5. Тоглуулагчаас оролт авах

Тоглоомын хувьд тоглогч ямар нэгэн зүйл хийхийг хүсдэг. Текст дээр суурилсан тоглоомд үүнийг текст оруулах замаар хийх боломжтой. Одоо бидэнд санамсаргүй тоо байгаа тул бидний дараагийн кодын мөрүүд тоглогчоос хамгийн сайн таамаглалаа оруулахыг хүсэх ёстой.

  • Таны оруулсан код тоглогч руу дугаар оруулах зааврыг хэвлэдэг тул тэдний оруулсан дугаарыг бас унших ёстой. Үүнийг Python 3 дахь input (), Python 2 дахь raw_input () ашиглан хийдэг. Python 2 удахгүй хуучирах тул та Python 3 дээр бичих ёстой. Тоглогчийн оруулсан оролтыг тоо гэж нэрлэгддэг хувьсагчид хадгалахын тулд дараах мөрийг код дээрээ нэмнэ үү.

    userNum = оролт ()

5692759 6
5692759 6

Алхам 6. Тоглогчийн оруулсан өгөгдлийг ашиглах боломжтой өгөгдлийн төрөл болгоно

Тоглогч дугаар оруулсан байна, одоо яах вэ?

  • Тоглогчийн оруулсан дугаарыг дугаар болгоно уу. Тэд дөнгөж дугаар оруулсан тул энэ нь ойлгомжгүй сонсогдож магадгүй юм. Гэхдээ сайн шалтгаан бий: Python нь бүх оролтыг програмчлал гэж нэрлэдэг шиг текст эсвэл "мөр" гэж үздэг. Энэ текстэнд таны авахыг хүссэн дугаар орсон байна. Python нь зөвхөн тоо агуулсан мөрийг доторх тоо руу хөрвүүлдэг функцтэй. Төрөл:

    userNum = int (userNum)

5692759 7
5692759 7

Алхам 7. Тоглогчийн дугаарыг зөв дугаартай харьцуулна уу

Тоглогч дугаараа оруулсны дараа та үүнийг санамсаргүй байдлаар үүсгэсэнтэй харьцуулах хэрэгтэй болно. Хэрэв тоонууд ижил биш бол таны тоглоом тоглогчийг өөр дугаар оролдоход хүргэж болзошгүй юм. Хэрэв тоонууд таарч байвал та тоглогчид зөв таасан гэж хэлээд програмаас гарах боломжтой. Үүнийг дараах кодоор гүйцэтгэнэ.

байхад userNum! = rightNum: userNum = int (input ())

5692759 8
5692759 8

Алхам 8. Тоглогчийн санал хүсэлтийг өгнө үү

Та тэдний оролтыг боловсруулж дууссан байхад тоглогч үүнийг харахгүй. Тоглогчид юу болж байгааг ойлгохын тулд та үр дүнг нь хэвлэх хэрэгтэй болно.

  • Мэдээжийн хэрэг та тоглогчид тэдний тоо зөв эсвэл буруу эсэхийг хэлж чадна. Гэхдээ ийм арга барилаар тоглогч хамгийн муу тохиолдолд 1000 удаа таах хэрэгтэй болдог, энэ нь маш уйтгартай байх болно.
  • Тиймээс тоглогчид тэдний тоо хэтэрхий бага эсвэл хэт том байгаа эсэхийг хэлээрэй. Энэ нь тэдний таамаглалын тоог мэдэгдэхүйц бууруулах болно. Жишээлбэл, тоглогч эхлээд 500-г таавал тоглоом "Хэтэрхий том байна. Дахин оролдоно уу" гэж хариулвал 1000-ийн оронд 500 боломжит тоо л байх болно. Үүнийг if-builds ашиглан хийдэг тул хэвлэмэлийг солино уу ("Буруу. Дахин оролдоно уу. ").
  • Хоёр тоо ижил эсэхийг шалгах ажлыг = -аар биш, харин == -ээр хийдэг гэдгийг анхаарна уу. = түүний баруун талд байгаа утгыг зүүн хувьсагч руу оноож өгдөг!
  • if userNum <rightNum: print ("Хэт жижиг. Дахин оролдоно уу:") if userNum> rightNum: print ("Хэт том. Дахин оролдоно уу:")

5692759 9
5692759 9

Алхам 9. Кодыг туршиж үзээрэй

Программистын хувьд та кодоо дууссан гэж үзэхээсээ өмнө ажиллаж байгаа гэдэгт итгэлтэй байх ёстой.

  • Питон програмчлахдаа догол мөрийг зөв авсан эсэхээ шалгаарай. Таны код дараах байдлаар харагдах ёстой.

    санамсаргүй хэвлэх импортлох ("Тоон таамаглах тоглоомд тавтай морил!") хэвлэх ("1 -ээс 1000 хүртэлх бүхэл тоог оруулна уу:") rightNum = random.randint (0, 1000) userNum = input () userNum = int (userNum) while userNum! = rightNum: if userNum <rightNum: print ("Хэт жижиг. Дахин оролдоно уу:") if userNum> rightNum: print ("Хэт том. Дахин оролдоно уу:") userNum = int (input ()) print ("Та таамаглаж байсан зөв. ")

5692759 10
5692759 10

Алхам 10. Оролтыг баталгаажуулна уу

Тоглогч зүгээр л буруу зүйл оруулснаар таны тоглоомыг эвдэж чадахгүй байх ёстой. "Оролтыг баталгаажуулах" гэдэг нь тоглогч үүнийг боловсруулахаасаа өмнө зөв зүйлийг оруулсан эсэхийг шалгахыг хэлнэ.

  • Тоглоомыг дахин нээгээд тоо биш бүх зүйлийг оруулна уу. Тоглоом нь ValueError програмаар гарах болно. Үүнээс зайлсхийхийн тулд оролт нь тоо байсан эсэхийг шалгах аргыг хэрэгжүүлж болно.
  • Функцийг тодорхойлох. Оролтыг баталгаажуулах нь нэлээд урт бөгөөд та үүнийг олон удаа хийх ёстой тул та функцийг тодорхойлох хэрэгтэй. Энэ нь ямар ч маргаан шаардахгүй бөгөөд дугаарыг буцааж өгөх болно. Нэгдүгээрт, кодын дээд хэсэгт, импортлох санамсаргүй хэсэгт def numInput (): гэж бичнэ үү.
  • Тоглогчийн оролтыг нэг удаа аваарай. Input () функцийг ашиглан үр дүнг inp хувьсагчид онооно.
  • Тоглогчийн оруулсан оролт нь тоо биш бол дугаар оруулахыг хүс. Мөр нь тоо мөн эсэхийг шалгахын тулд isdigit () функцийг ашиглаарай, зөвхөн бүхэл тоог зөвшөөрдөг тул үүнийг тусад нь шалгах шаардлагагүй болно.
  • Хэрэв оролт нь тоо бол түүнийг мөрөөс дугаар руу хөрвүүлээд үр дүнг буцаана уу. Мөрийг бүхэл тоо болгон хөрвүүлэхийн тулд int () функцийг ашиглана уу. Энэ нь үндсэн код дахь хөрвүүлэлтийг шаардлагагүй болгож, тэндээс устгах хэрэгтэй.
  • Үндсэн кодын input () руу хийх бүх дуудлагыг numInput () руу хийх дуудлагаар солино.
  • NumInput () функцийн код дараах байдлаар харагдах болно.
  • def numInput (): inp = input () inp.isdigit () биш байхад: print ("Танд бүхэл тоог оруулах ёстой гэж хэлсэн! Бүтэн тоог оруулна уу:") inp = input () буцах int (inp)

5692759 11
5692759 11

Алхам 11. Тоглоомыг дахин туршиж үзээрэй

Буруу зүйлийг санаатайгаар оруулаад юу болж байгааг олж мэдээд дараа нь гарч ирсэн алдаагаа засаарай.

Хөтөлбөр танаас дугаар асуухад текст оруулахыг оролдоорой. Одоо алдааны мессежээр гарахын оронд програм танаас дахин дугаар асуух болно

5692759 12
5692759 12

Алхам 12. Тоглоом дуусмагц дахин эхлүүлэхийг санал болго

Ингэснээр тоглогч таны тоглоомыг байнга дахин эхлүүлэх шаардлагагүйгээр илүү удаан тоглох боломжтой болно.

  • Импорт болон функцын тодорхойлолтоос бусад бүх кодыг цаг хугацааны циклд оруулна уу. True -ийг нөхцөл болгон тохируул: энэ үргэлж үнэн байх тул давталт үүрд үргэлжлэх болно.
  • Тоглогчийг тоог зөв таасан хойноо дахин тоглохыг хүсч байгаа эсэхийг асуу. Print () функцийг ашиглана уу.
  • Хэрэв тэд "Үгүй" гэж хариулвал харцнаасаа сал. Хэрэв тэд өөр зүйлд хариулвал үргэлжлүүлээрэй. Гогцооноос гарах нь break мэдэгдлийн тусламжтайгаар хийгддэг.
  • "Тоон таамаглах тоглоомд тавтай морилно уу" -г түр зуурын хүрдээс холдуул. Тоглогч тоглоом тоглох бүртээ угтан авахыг хүсдэггүй байх. Заавар дээрх "" Тоон таамаглах тоглоомд тавтай морилно уу! "Гэсэн зааврыг зөөнө үү. Энэ нь хэрэглэгч анхны тоглоомыг эхлүүлэхэд ганцхан удаа хэвлэгдэх болно.
5692759 13
5692759 13

Алхам 13. Тоглоомыг туршиж үзээрэй

Та шинэ функцийг хэрэгжүүлэх бүртээ тоглоомоо туршиж үзэх хэрэгтэй болно.

  • Аль аль нь тохирсон эсэхийг шалгахын тулд дор хаяж нэг удаа "Тийм", "Үгүй" гэж хариулна уу. Таны код дараах байдлаар харагдах ёстой.

    санамсаргүй байдлаар оруулж өгөх defInIn (("Тоон таамаглах тоглоомд тавтай морил!") Байхад True: хэвлэх ("1 -ээс 1000 хүртэлх бүхэл тоог оруулна уу:") rightNum = random.randint (0, 1000) userNum = numInput () байхад userNum! = RightNum: if userNum <rightNum: print ("Хэт жижиг. Дахин оролдоно уу:") бол userNum> rightNum: print ("Хэт том. Дахин оролдоно уу:") userNum = numInput () хэвлэх ("Та зөв таасан.") хэвлэх ("Та дахин тоглохыг хүсч байна уу? Үгүй бол гарахын тулд Үгүй оруулна уу. ") if input () ==" No ": break

5692759 14
5692759 14

Алхам 14. Бусад текст дээр суурилсан тоглоом бичих

Дараа нь адал явдалт текст бичвэл ямар вэ? Эсвэл асуулт хариултын тоглоом уу? Бүтээлч байх.

Зөвлөгөө: Хэрэв та ямар нэгэн зүйл хэрхэн хийгдсэн, функцийг хэрхэн ашиглаж байгаа талаар сайн мэдэхгүй байгаа бол баримт бичгийг үзэх нь заримдаа тустай байдаг. Python 3 -ийн баримт бичгийг https://docs.python.org/3/ дээрээс олж болно. Заримдаа интернетээс юу хийхийг хүсч байгаагаа хайж олох нь сайн үр дүнг өгдөг.

3 -ийн 2 -р хэсэг: 2D график ашиглан тоглоом хийх

5692759 15
5692759 15

Алхам 1. График номын санг сонгоно уу

График хийх нь маш төвөгтэй бөгөөд ихэнх програмчлалын хэлүүд (Python, C ++, C, JavaScript гэх мэт) нь үндсэн эсвэл стандарт номын сан дахь графикийг хамгийн бага хэмжээгээр дэмждэг. Тиймээс та график үүсгэхийн тулд гадаад номын сан ашиглах хэрэгтэй болно, жишээлбэл Python -д зориулсан Pygame.

График номын сантай байсан ч гэсэн та цэсийг хэрхэн харуулах, тоглуулагч юу товшсоныг шалгах, хавтанг хэрхэн харуулах гэх мэт зүйлсийн талаар санаа зовох хэрэгтэй болно. Хэрэв та жинхэнэ тоглоомыг хөгжүүлэхэд анхаарлаа төвлөрүүлэхийг хүсч байвал эдгээр зүйлийг хялбархан хэрэгжүүлдэг Unity гэх мэт тоглоомын системийн номын санг ашиглаж болно

Энэхүү нийтлэлд Python -ийг Cocos2D ашиглан энгийн 2D платформер хэрхэн хийхийг харуулах болно. Дээр дурдсан зарим ойлголтууд бусад тоглоомын хөдөлгүүрт байхгүй байж магадгүй юм. Дэлгэрэнгүй мэдээллийг тэдний баримт бичгээс үзнэ үү.

5692759 16
5692759 16

Алхам 2. Сонгосон график номын санг суулгана уу

Python -д зориулсан Cocos2D -ийг суулгахад хялбар байдаг. Та үүнийг https://python.cocos2d.org/index.html хаягаар эсвэл Linux ашиглаж байгаа бол sudo pip3 install cocos2d програмыг ажиллуулах замаар авах боломжтой.

5692759 17
5692759 17

Алхам 3. Тоглоом болон мэдээллийн хэрэгсэлд шинэ лавлах хийх

Та тоглоомондоо дүрс, дуу чимээ гэх мэт зүйлийг ашиглах болно. Эдгээр зүйлсийг програмтай ижил лавлах санд хадгална уу. Энэ лавлахад өөр зүйл агуулаагүй байх ёстой бөгөөд ингэснээр та тоглоомонд байгаа хөрөнгөө хялбархан харах боломжтой болно.

5692759 18
5692759 18

Алхам 4. Шинэ санд шинэ кодын файл үүсгэнэ үү

Програмчлалын хэлнийхээ файлын өргөтгөлийг гол гэж нэрлэнэ үү. Хэрэв та олон програмын файлтай байх нь утга учиртай том, нарийн төвөгтэй програм бичвэл энэ нь үндсэн файлыг харуулах болно.

Энэ жишээнд бид өөрийн бүх кодыг агуулсан main.py нэртэй файл үүсгэх болно

5692759 19
5692759 19

Алхам 5. Тоглоомын цонх үүсгэх

Энэ бол графиктай тоглоомын үндсэн урьдчилсан нөхцөл юм.

  • Шаардлагатай cocos2d дэд модулиудыг импортлох: cocos.director, cocos.scene болон cocos.layer. Үүнийг subModuleName импортлох *ашиглан хийдэг бөгөөд энд дэд модулийн нэр нь импортлохыг хүсдэг дэд модуль юм. … Импортлох * ба импортлох хоёрын хоорондох ялгаа нь модулийн нэрийг өмнөх модулиас ашигладаг бүх зүйлийн өмнө оруулах шаардлагагүй юм.
  • ColorLayer -ийн MainMenuBgr дэд ангиллыг тодорхойлно уу. Энэ нь үндсэндээ таны үүсгэсэн үндсэн цэсийн дэвсгэр хэсэг нь таны хийсэн зарим өөрчлөлтийг агуулсан өнгөний давхарга шиг ажиллах болно гэсэн үг юм.
  • Кокосын захирлыг эхлүүлээрэй. Энэ нь танд шинэ цонх өгөх болно. Хэрэв та тайлбар хийхгүй бол цонх нь мэргэжлийн нэртэй харагдахгүй файлын нэртэй адилхан гарчигтай байх болно (main.py). Хэмжээг үнэн болгож тохируулах замаар цонхны хэмжээг өөрчлөхийг зөвшөөрнө үү.
  • ShowMainMenu функцийг тодорхойлно уу. Та үндсэн цэсийг харуулах кодыг функцэд оруулах ёстой, учир нь энэ нь функцийг дахин дуудах замаар үндсэн цэс рүү амархан буцах боломжийг олгоно.
  • Үзэгдэл үүсгэх. Үзэгдэл нь одоогоор нэг давхаргаас бүрдэх бөгөөд энэ нь таны тодорхойлсон MainMenuBgr ангийн объект юм.
  • Энэ үзэгдлийг цонхонд ажиллуулна уу.
  • cocos.director импортоос * cocos.layen импортоос * cocos.layer импортлох * ангилал MainMenuBgr (ColorLayer): def _init _ (өөрөө): супер (MainMenu, өөрөө)._ init _ (0, 200, 255, 255) def showMainMenu (): menuSc = Scene (MainMenuBgr ()) Director.run (menuSc) Director.init (caption = "IcyPlat - энгийн платформер", хэмжээг өөрчлөх = Үнэн) showMainMenu ()

5692759 20
5692759 20

Алхам 6. Цонхны үндсэн цэсийг нэмнэ үү

Бодит тоглоомоос гадна та тоглогчийн цонхыг хаахад ашиглаж болох цэсийг нэмэх шаардлагатай бөгөөд дараа нь бусад элементүүдийг нэмж болно.

  • Cocos.menu (зааврын дагуу дахин) болон pyglet.app (энэ удаад импортоор оруулах) импортлох.
  • MainMenu -ийг цэсийн дэд анги гэж тодорхойл.
  • Үндсэн цэсийн тохируулгыг тохируулна уу. Та босоо болон хэвтээ чиглэлийг тусад нь тохируулах ёстой.
  • Цэсийн зүйлсийн жагсаалтыг гаргаж, цэсэнд нэмнэ үү. Та хамгийн багадаа "Тоглоомыг эхлүүлэх" ба "Гарах" гэсэн цэсийг агуулсан байх ёстой. Цэсийн зүйл бүрийг хаалтанд байрлуулах ёстой. Зүйл бүр тоглогч үүнийг дарахад юу болохыг тодорхойлдог шошго, буцаах функцтэй байх ёстой. "Тоглоомыг эхлүүлэх" зүйлийн хувьд startGame функцийг ашиглана уу (та үүнийг удахгүй бичих болно), "Гарах" зүйлийн хувьд "pyglet.app.exit" -г ашиглана уу (аль хэдийн байгаа). Self.create_menu (menuItems) руу залгаж жинхэнэ цэсийг үүсгэнэ үү.
  • StartGame () -ийг тодорхойлно уу. Тодорхойлолтонд яг одоо оруулна уу, та жинхэнэ тоглоом бичихдээ үүнийг орлох болно.
  • MenuSc -ийн дүр төрхийг үүсгэсэн код дээрээ очоод MainMenu объект нэмнэ үү.
  • Таны бүх код одоо дараах байдлаар харагдах ёстой.

    cocos.director импортоос * cocos.menu импортоос * cocos.scene импортоос * cocos.layer импортоос * импорт pyglet.app ангилал MainMenuBgr (ColorLayer): def _init _ (өөрөө): супер (MainMenuBgr, өөрөө)._ init _ (0, 200, 255, 255) анги MainMenu (Цэс): def _init _ (өөрөө): супер (MainMenu, өөрөө)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Тоглоом эхлэх") ", startGame))), (MenuItem (" Exit ", pyglet.app.exit))] self.create_menu (menuItems) def startGame (): pass def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) Director.run (menuSc) Director.init (caption = "IcyPlat - энгийн платформер", хэмжээг нь өөрчлөх боломжтой = Үнэн) showMainMenu ()

5692759 21
5692759 21

Алхам 7. Кодоо шалгана уу

Кодыг богино хугацаанд, харьцангуй энгийн байхад эрт туршиж үзээрэй. Дараа нь бүх зүйл хэтэрхий төвөгтэй болохоос өмнө үндсэн бүтцэд гарсан алдааг олж тогтоож, засах боломжтой.

Зааварчилгааны код нь "IcyPlat - энгийн платформ тоглогч" гэсэн гарчигтай цонхыг нээх ёстой. Арын дэвсгэр нь цайвар цэнхэр бөгөөд та цонхны хэмжээг өөрчлөх боломжтой. Та цэснээс "Тоглоомыг эхлүүлэх" дээр дарахад юу ч тохиолдохгүй (хараахан). "Гарах" дээр дарахад цонх хаагдах болно

5692759 22
5692759 22

Алхам 8. Спрайт үүсгэх

Спрайт бол "тоглоомын объект" эсвэл 2 хэмжээст дүрс юм. Спрайт нь тоглоом доторх дүрс, дүрс, дүрс, дэвсгэр чимэглэл, дүр болон бусад дүрс байж болно. Бид тоглогчийн харьцаж болох дүрийн спрайт үүсгэхээс эхэлнэ.

  • Cocos.sprite дэд модулийг импортлох-илэрхийлэлээс импортлох.
  • Спрайтийг дүрслэх дүрсийг олоорой. Хэрэв танд зураг байхгүй бол та спрайт үзүүлэх боломжгүй. Та нэгийг зурж болно, эсвэл интернетээс авах боломжтой (хэрэв та тоглоомоо нийтлэх гэж байгаа бол лицензийг анхаарч үзээрэй). Энэ жишээг авахын тулд https://opengameart.org/content/tux-classic-hero-style хаягаар орж ажиллуулж буй оцон шувууны-p.webp" />
  • Давхаргыг ScrollableLayer ангийн шинэ объект болгон үүсгээрэй. Дараа нь спрайтийг Sprite объект болгон үүсгээд түүний байрлалыг (8, 250) болгож тохируулна уу. Лавлахын тулд (0, 0) цэг нь зүүн доод буланд байна. Энэ нь нэлээд өндөр боловч оцон шувуу мөсөнд гацахгүй байх болно.
  • Спрайтийн давхаргад спрайт нэмнэ.
  • Спрайтийн давхаргаас шинэ үзэгдэл үүсгээд ажиллуулна уу.
  • def startGame (): figLayer = ScrollableLayer () fig = Sprite ('pingu.png') fig.position = (75, 100) figLayer.add (fig) # gameSc = Scene (figLayer) найруулагч.un (gameSc)

  • Кодыг ажиллуулна уу. Та дарсны дараа хар дэвсгэр дээр жижиг оцон шувууны дүрс (эсвэл зурсан зүйлээ) харах ёстой Тоглоом эхлэх.
5692759 23
5692759 23

Алхам 9. Өөрийнхөө ландшафтыг мөрөөд

Ихэнх тоглоомонд таны спрайт хоосон орон зайд зүгээр л хөвж болохгүй. Тэд үнэндээ ямар нэгэн гадаргуу дээр, эргэн тойрондоо ямар нэгэн зүйл байх ёстой. 2D тоглоомд үүнийг ихэвчлэн хавтангийн хавтан, плитаны газрын зураг ашиглан хийдэг. Хавтанцарын иж бүрдэл нь үндсэндээ ямар гадаргуугийн квадратууд болон арын квадратууд байдаг, ямар харагддагийг хэлдэг.

  • Хавтангийн багц үүсгэх. Энэ тоглоомонд зориулсан хавтангийн хавтан нь маш энгийн байх болно: мөсний нэг хавтан, тэнгэрийн нэг хавтан. Энэ жишээн дээр ашигласан мөсөн хавтанг эндээс, CC-BY-SA 3.0 дор байрлуулсан болно.
  • Хавтанцарын зураг үүсгэх. Энэ бол бүх хавтангийн зураг бөгөөд тэдгээр нь бүгд ижил хэмжээтэй байх ёстой (хэрэв байхгүй бол засварлаарай), тоглоомонд харахыг хүссэн хэмжээтэй байх ёстой. Зургаа icyTiles-p.webp" />
  • Хавтангийн багц тайлбарыг үүсгэнэ үү. Энэ бол XML файл юм. XML файл нь хавтангийн хавтан дээрх хичнээн том хэмжээтэй, ямар зураг ашиглах, тэндээс ямар хавтанг олох талаар мэдээлэл агуулдаг. Дараах кодоор icyTiles.xml нэртэй XML файл үүсгэнэ үү.

         
    
5692759 24
5692759 24

Алхам 10. Өөрийн ландшафтын хувьд хавтангийн газрын зураг хийх

Хавтангийн газрын зураг нь таны түвшинд аль хавтан аль байрлалд байгааг тодорхойлсон газрын зураг юм. Жишээн дээр та плитаны газрын зургийг гараар хийх нь маш хэцүү байдаг тул функцийг тодорхойлох хэрэгтэй. Илүү дэвшилтэт тоглоом нь ихэвчлэн ямар нэгэн түвшний редактортой байдаг боловч 2D тоглоомын хөгжүүлэлтийг мэддэг байхын тулд алгоритм нь хангалттай сайн түвшинг хангаж чаддаг.

  • Хэдэн мөр, багана хэрэгтэйг олж мэдээрэй. Үүнийг хийхийн тулд дэлгэцийн хэмжээг хэвтээ (багана) ба босоо (мөр) хавтангийн хэмжээгээр хуваана. Тоог дээш нь дугуйлна уу; Үүний тулд танд математикийн модулийн функц хэрэгтэй тул математикийн импортын таазаас кодынхоо дээд талд байгаа импорт руу нэмнэ үү.
  • Бичих файлыг нээнэ үү. Энэ нь файлын өмнөх бүх агуулгыг устгах болно, тиймээс levelMap.xml гэх мэт лавлахад хараахан байхгүй байгаа нэрийг сонгоно уу.
  • Нээлтийн хаягийг файлд бичнэ үү.
  • Алгоритмын дагуу плитаны зураг үүсгэх. Та доорх кодын кодыг ашиглана уу, эсвэл та өөрөө гаргаж ирж болно. Randint функцийг модулиас санамсаргүй байдлаар оруулж ирсэн эсэхийг шалгаарай: энэ нь доорх кодыг ажиллуулахад шаардлагатай бөгөөд таны бодож олсон зүйлд санамсаргүй бүхэл тоо хэрэгтэй байж магадгүй юм. Түүнчлэн, тэнгэрийн хавтан ба мөсөн хавтанг өөр өөр давхаргад байрлуулахаа мартуузай: мөс хатуу, тэнгэр биш.
  • Файлд хаах хаягийг бичээд файлыг хаа.
  • def generateTilemap (): colAmount = тааз (800/16) * 3 # (дэлгэцийн өргөн / хавтангийн хэмжээ) * 3 эгнээAmount = тааз (600/16) # дэлгэцийн өндөр / хавтангийн хэмжээ хавтанFile = нээлттэй ("levelMap.xml", " w ") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) i -ийн мужид (0, colAmount): tileFile.write ('') makeHole = Хэрэв randint (0, 50)) == 10 ба i! = 0: # дэвсэх цэг дээр нүх гаргахыг зөвшөөрөхгүй makeHole = Хүрээний j -ийн хувьд үнэн (0, rowAmount): if makeHole: tileFile.write ('\ n') өөр: хэрэв j <= iceHeight: tileFile.write ('\ n') өөр: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) if iceHeight <0: # хавтан нь хэт бага мөсөн болохоос хязгаарлагддаг iceHeight = randint (1, 5) хэрэв iceHeight> rowAmount: # хавтанг хэт өндөр мөсөнд оруулахыг хязгаарлахHeight = randint (int (rowAmount/2) -5, int (rowAmount/2) +5) tileFile.write ('\ n') tileFile.write ('\ n / n') i -ийн мужид (0, colAmount): n ') tileFile.write (' / n / n ') tileFile.close ()

5692759 25
5692759 25

Алхам 11. Хавтанцарын зургийг харуулна

Cocos.tiles -ээс бүх зүйлийг оруулж ирээд startGame функц руу орно уу.

  • StartGame функцын эхэнд та үүнийг тодорхойлсон функцийг ашиглан хавтангийн газрын зургийг үүсгэнэ үү.
  • Шинэ гүйлгэх менежер үүсгэнэ үү. Үүнийг давхаргад спрайт нэмж оруулах шугамын доор шууд хий.
  • LevelMap.xml хавтангийн газрын зургаас таны generateTilemap функцийг үүсгэсэн хавтангуудыг агуулсан шинэ давхарга үүсгэнэ үү.
  • Хатуу биш давхарга, хатуу давхарга, спрайт давхаргыг гүйлгэх менежерт яг энэ дарааллаар нэмээрэй. Хэрэв та хүсвэл z байрлалыг нэмж болно.
  • Спрайт давхаргаас үзэгдэл үүсгэхийн оронд гүйлгэх менежерээс үүсгээрэй.
  • Таны startGame функц одоо иймэрхүү харагдах ёстой:

    def startGame (): generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 500) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = ачаалал ('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) захирал. Ажиллуулах (gameSc)

5692759 26
5692759 26

Алхам 12. Кодыг туршиж үзээрэй

Таны хэрэгжүүлсэн шинэ боломжууд үнэхээр ажиллаж байгаа эсэхийг шалгахын тулд та кодоо байнга шалгаж байх ёстой.

Жишээн дээрх код нь оцон шувууны цаана мөстэй газар нутгийг харуулах ёстой. Хэрэв оцон шувуу мөсөн дээгүүр нисч байгаа мэт харагдаж байвал та ямар ч буруу зүйл хийгээгүй бөгөөд үүнийг дараагийн алхамд засах болно

5692759 27
5692759 27

Алхам 13. Хяналтыг нэмнэ үү

Тоглогч нь текст дээр суурилсан тоглоомыг бодвол 2D тоглоомоор програмтай харьцах олон арга замтай. Зөв товчлуур дарагдсан үед тэдний дүрсийг хөдөлгөх нь түгээмэл байдаг.

  • Cocos.mapcolliders болон cocos.actions -аас бүх зүйлийг импортлох. Мөн түлхүүрийг pyglet.window дээрээс импортлох.
  • Зарим дэлхийн хувьсагчдыг "зарлах". Глобал хувьсагчдыг функцүүдийн хооронд хуваалцдаг. Та Python дээр хувьсагчийг үнэхээр зарлаж чадахгүй, гэхдээ үүнийг ашиглахаасаа өмнө үндсэн хувьсагч дээр дэлхийн хувьсагч байдаг гэж хэлэх ёстой. Функц нь дараа нь зөв утгыг өгөхөд анхаарал тавих тул та утгыг 0 болгож өгч болно. Тиймээс импортын илэрхийллийн доор нэмнэ үү.

    # "хувьсагч" глобал хувьсагчдын гар = 0 scrMang = 0

  • StartGame функцийг тохируулна уу:

    • Та дэлхийн хувьсагчийн гар болон scrMang ашигладаг гэж хэлээрэй. Үүнийг функцийн дээд хэсэгт scrMang глобал гар бичээд хий.
    • Цонхыг гарны үйл явдлыг сонсох боломжтой болго.
    • PlatformerController дээр үндэслэн ажиллахыг зурагт хэлээрэй. Та удахгүй PlatformerController -ийг хэрэгжүүлэх болно.
    • Хатуу хавтан ба зургийн хоорондох мөргөлдөөнийг зохицуулахын тулд газрын зургийн коллайдер үүсгэнэ үү.

    def startGame (): дэлхийн гар, scrMang generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = ачаалал ('levelMap).xml ') solidTiles = tileLayer [' solid '] nsoliTiles = tileLayer [' not_solid '] # keyboard = key. KeyStateHandler () Director.window.push_handlers (keyboard) # fig.do (PlatformerController ()) mapcollider = RectMapCollib_ хурд = 'слайд') 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) захирал. Ажиллуулах (gameSc)

  • Платформын хянагч үүсгэх. Энэ бол таны товчлуурын даралтын дагуу дүрсийг хөдөлгөх болно.

    • Платформаторын хянагчийг Үйл ажиллагааны дэд анги гэж тодорхойл.
    • Хөдөлгөөний хурд, үсрэлтийн хурд, таталцлыг тодорхойл.
    • Эхлэх функцийг тодорхойлно уу. Платформер хянагчийг зурагт холбосон үед энэ функцийг нэг удаа дууддаг. Энэ нь x болон y чиглэлд хурдаа 0 болгож тохируулах ёстой.
    • Алхам функцийг тодорхойлно уу. Үзэгдэл ажиллаж байх үед үүнийг давтах болно.
    • Глобал хувьсагчийн гар болон scrMang -ийг ашиглахын тулд алхам функцийг хэлнэ үү.
    • Авах, хурдыг өөрчлөх. X ба y хурдыг тус тусад нь хувьсагчаар хадгална. X хурдыг 1 эсвэл -1 (зүүн эсвэл баруун товчлуур дарагдсан эсэхээс хамаарч) шилжүүлэлтийн хурдаар үржүүлнэ. Y хурданд хүндийн хүчийг нэмнэ. Үүнийг сул зогсолтоор үржүүлээрэй, энэ нь удаан төхөөрөмж дээр ижил аргаар ажилладаг. Хэрэв зайны товчлуур дарагдсан бөгөөд зураг хөрсөн дээр зогсож байвал y -ийн хурдыг үсрэхийн тулд үсрэх хэрэгтэй.
    • Зураг хаашаа шилжих ёстойг тооцоол. Дараа нь мөргөлдөгч нь хатуу хавтангийн дотор байгаа бол энэ байрлалыг тохируулаарай. Эцэст нь зургийг шинэ тохируулсан байрлал руу шилжүүлнэ үү.
    • Гүйлгэх менежерийн анхаарлыг зураг дээр тавь. Энэ нь зураг хөдлөх үед камерыг боломжийн байдлаар хөдөлгөхөд хүргэдэг.

    class PlatformerController (Action): дэлхийн гар, 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, scroller if dt> 0.1: # том буцах vx, vy = self.target.velocity vx = (гар [key. RIGHT] - гар [key. LEFT]) * өөрөө. MOVE_SPEED vy + = self. GRAVITY * dt хэрэв self.on_ground болон keyboard [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

Алхам 14. Кодыг туршиж үзээрэй

Хэрэв та энэ жишээг дагасан бол одоо оцон шувууг сумны товчлуураар хөдөлгөж, зайны товчийг дарж үсрэх боломжтой байх ёстой. Түүнчлэн оцон шувуу одоо газар дээгүүр нисэхийн оронд унах ёстой.

5692759 29
5692759 29

Алхам 15. Тоглоомын төгсгөлийг бий болго

Эцэс төгсгөлгүй үргэлжилж болох тоглоомууд ч гэсэн ялагдах магадлалтай байх ёстой. Функцтэй жишээн дээр хийсэн таны түвшин төгсгөлтэй тул та энэ зорилгодоо хүрэх замаар ялах боломжтой болгох хэрэгтэй. Үгүй бол тоглогч зөвхөн мөсөн блок дээр үсэрч, уйтгартай болох болно.

  • Платформер хянагчийн дотор фокусыг тохируулсны дараа зургийн x ба y байрлалыг авна уу. Хэрэв y байрлал 0 -ээс бага бол "Тоглоом дууссан" гэсэн аргументыг ашиглан finalGame () функцийг (дараа нь бичих болно) дуудна уу. Хэрэв x байрлал нь дэлгэцийн хэмжээнээс 3 -аар үржигдэхээс том бол (та үүнийг өмнө нь түвшний хэмжээгээр тохируулж байсан).

    posX, posY = self.target.position хэрэв posY <0: finishGame ("Тоглолт дууссан"), хэрэв posX> 800*3: # level size finishGame ("Level Completed") буцаж ирвэл

  • Ангийн төгсөлтийг тодорхойлох. Энэ нь таны өмнө нь тодорхойлсон үндсэн цэсийн анги шиг байх ёстой, гэхдээ гарчигт хоосон мөр оруулахын оронд _init_ функцийг аргумент болгон ашигладаг хувьсах текстийг ашиглах ёстой. Цэсийн зүйлүүдийг "Дахин оролдоно уу", "Гарна уу" гэсэн шошготой байх ёстой боловч тэдний дууддаг функцууд хэвээр үлддэг.

    анги FinishMenu (Цэс): def _init _ (өөрөө, текст): супер (FinishMenu, өөрөө)._ init _ (текст) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Дахин оролдох", startGame)), (MenuItem ("Гарах", pyglet.app.exit))] self.create_menu (menuItems)

  • FinishGame () функцийг тодорхойлно уу. Энэ нь текстийг аргумент болгон авах ёстой. Энэ нь үндсэн цэсийн дэвсгэр хэсгээс дүрсийг бүтээх ёстой бөгөөд энэ цэс рүү текстийн аргументыг дамжуулж буй FinishMenu -ийг хийх ёстой. Дараа нь энэ үзэгдлийг ажиллуулах ёстой.

    def finishGame (текст): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (текст)) Director.run (menuSc)

5692759 30
5692759 30

Алхам 16. Кредит нэмэх

Эндээс та гайхалтай кодынхоо ач холбогдлыг хүлээн авахаас гадна замд тань тусалсан бусад хүмүүст талархаж байна. Хэрэв та өөр вэбсайтын зургийг ашигласан бол (зөвшөөрөлтэйгээр) энэ зургийг бүтээгчтэй нь холбож өгөхөө мартуузай.

  • CREDITS файл үүсгээд бүх кредитүүдээ оруулна уу.

    Оцон шувуу: Келвин Шадингинг, CC0 мөсөн блок дор: Michał Banas, opengameart.org дээр CC-BY-SA 3.0 дор 1024 оронтой тоо

  • Python код руугаа буцаж очоод cocos.text -ээс Label импортло.
  • Credits of Layer дэд ангиллыг тодорхойлно уу. _Init_ функц дээр CREDITS файлыг уншаад, текстийн шошгыг зохих байрлалд байгаа мөр бүрээс хий.

    Ангилал Кредит (Давхарга): def _init _ (өөрөө): супер (Зээл, өөрөө)._ init _ () credFile = нээлттэй ("ЗЭЭЛ", "r") creds = credFile.read () creds = creds.split ("\ n ") i-ийн мужид (0, len (creds)): credLabel = Шошго (creds , font_size = 32, anchor_x =" left ", anchor_y =" top ") credLabel.position = 25, 500- (i +1)*40 өөрөө нэмсэн (credLabel)

  • Үндсэн цэс рүүгээ очоод "Credits" гэсэн цэсийн зүйлийг нэмээд showCredits функцийг дарахад дуудна.
  • Цэсийн BackToMainMenuButton дэд ангиллыг тодорхойлно уу. Үүнийг ShowMainMenu функцийг дууддаг "Буцах" гэсэн шошготой нэг зүйл бүхий цэс болгоорой. Энэ товчлууртай илүү төстэй "цэс" -ийг босоо байдлаар доод хэсэгт, хэвтээ байдлаар дээд талд нь байрлуулах ёстой.

    class BackToMainMenuButton (Цэс): def _init _ (өөрөө): супер (BackToMainuButton, өөрөө)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Буцах", showMainMenu)) create_menu (цэсийн зүйлүүд)

  • ShowCredits функцийг тодорхойлно уу. Энэ нь MainMenuBgr давхарга болон Кредитийн давхаргаас үзэгдэл хийж, тэр үзэгдлийг ажиллуулах ёстой.

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

5692759 31
5692759 31

Алхам 17. Кодоо шалгана уу

Та кодоо дуусгасан гэж бодож байгаа бол энэ бүгдийг дахин нэг харах хэрэгтэй. Энэ нь ямар нэг зүйлийг оновчтой болгох боломжтой эсэх, эсвэл устгахаа мартсан шаардлагагүй мөрүүд байгаа эсэхийг танд мэдэгдэх болно. Хэрэв та жишээг дагасан бол таны код бүхэлдээ дараах байдлаар харагдах ёстой.

    cocos.director импортоос * cocos.menu импортоос * cocos.scene импортоос * cocos.layer импортоос * cocos.sprite импортоос * кокосоос..text import Label pyglet.app -аас pyglet.window -оос импортлох түлхүүрийг математикийн импортоос авах түлхүүр санамсаргүй импорт randint -аас # "зарлах" дэлхийн хувьсагчдын гар = 0 scrMang = 0 ангилал MainMenuBgr (ColorLayer): def _init _ (өөрөө): супер (MainMenuBgr, өөрөө)._ init _ (0, 200, 255, 255) анги MainMenu (Цэс): def _init _ (өөрөө): супер (MainMenu, өөрөө)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER цэсItems = [(MenuItem ("Тоглоомыг эхлүүлэх", startGame)), (MenuItem ("Кредитүүд", showCredits)), (MenuItem ("Quit", pyglet.app.exit))] self.create_menu (menuItems) ангийн кредит (Давхарга): def _init _ (өөрөө): супер (Кредит, өөрөө)._ init _ () credFile = нээлттэй ("CREDITS", "r") creds = credFile.read () creds = creds.split ("\ n") (0, len (creds)): credLabel = Шошго (creds , font_size = 32, anchor_x = "left", anchor_y = "top") credLabel.position = 25, 500- (i+1)*40 self.add (credLabel) class BackToMainMenuButton (Цэс): def _init _ (өөрөө): супер (BackToMainMenuButton, self)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMenu))] self.create_menu (menuItems) анги FinishMenu (Цэс): _ өөрөө, текст): супер (FinishMenu, өөрөө)._ init _ (текст) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Дахин оролдох", startGame)), (MenuItem ("Гарах", pyglet. app.exit))] self.create_menu (menuItems) class PlatformerController (Action): global keyboard, scrMang on_ground = True MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) def алхам (өөрөө, dt): дэлхийн гар, dt> 0.1 бол scroller [key. LEFT]) * өөрөө. MOVE_SPEED vy += өөрөө. GRAVITY * dt бол өөрөө.он _ дэвсгэр болон гар [key. SPACE]: vy = өөрөө. 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) posX, posY = self.target.position хэрэв posY <0: finishGame ("Тоглоом дууссан") бол posX> 800*3 бол # буцах: # level size finishGame ("Level Completed") def def finishGame (текст): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (текст)) Director.run (menuSc) def showCredits (): credSc = Scene (MainMenuBgr ()) credSc.add (Credits ()) credSc.add (BackToMainMenuButton ()) Director.run (credSc) def generateTilemap (): colAmount = тааз (800/16) * 3 # (дэлгэцийн өргөн / хавтангийн хэмжээ) * 3 эгнээХэмжээ = тааз (600/16) # дэлгэцийн өндөр / хавтангийн хэмжээ хавтан Файл = нээлттэй ("levelMap.xml", "w") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) i (0, colAmount) -д: = Хэрэв rand бол худал int (0, 50) == 10 ба i! = 0: # үүсэх цэг дээр нүх гаргахыг бүү зөвшөөр: if j <= iceHeight: tileFile.write ('\ n') else: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) if iceHeight <0: # плита хэт явахгүй байх low iceHeight = randint (1, 5) if iceHeight> rowAmount: # хавтанг хэт өндөр болгохоос хязгаарлах iceHeight = randint (int (rowAmount/2) -5, int (rowAmount/2) +5) tileFile.write ('\ n ') tileFile.write (' / n / n ') i мужид (0, colAmount):.write ('\ n') tileFile.write ('\ n / n') tileFile.close () def startGame (): дэлхийн гар, scrMang generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (fig) # tileLayer = load ('levelMap.xml') solidTiles = tileLayer ['solid'] nsoliTiles = tileLayer ['not_solid'] # keyboard = key. KeyStateHandler () захирал.цонхны цонх. түлхэх_хүрэгчид ard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (velocity_on_bump = 'slide') fig.collision_handler = make_collision_handler (mapcollider, solidTiles) # scrMang = ScrollingManager () = scrMang.add (n) add (solidTiles, z = 0) scrMang.add (figLayer, z = 1) # gameSc = Scene (scrMang) Director.run (gameSc) def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) Director.run (menuSc) window = Director.init (caption = "IcyPlat - энгийн платформер", хэмжээг өөрчлөх = Үнэн) showMainMenu ()

  • Энэ нь нийт 168 мөр, хэрэв та зөвхөн кодыг тоолвол 152 мөр байна. Энэ нь их санагдаж байна, гэхдээ ийм нарийн төвөгтэй тоглоомын хувьд энэ нь үнэхээр бага хэмжээ юм.
5692759 32
5692759 32

Алхам 18. Дууссан

Одоо тоглоомыг туршиж үзээрэй. Та ямар нэгэн зүйлийг програмчлахдаа шинэ зүйл хэрэгжүүлж байх үед энэ нь ажилладаг эсэхийг шалгах хэрэгтэй. Түүнчлэн, та хэсэг хугацаанд бичсэн тоглоомоо тоглохыг хүсч магадгүй юм.

3 -ийн 3 -р хэсэг: Тоглоом нийтлэх

5692759 52
5692759 52

Алхам 1. Хараат байдлыг бич

Өөр компьютер ашигладаг хүн тантай адил програм хангамж, номын сан суулгаагүй болно. Тиймээс, таны тоглоомыг суулгаж буй хүн бүр үүнийг ажиллуулахын тулд яг юу хэрэгтэй байгааг мэддэг байх ёстой. Та бүх хамаарлын бүх хамаарлыг бичих шаардлагагүй, гэхдээ та багцынхаа хамаарал, тэдгээрийн хамаарлыг бичих хэрэгтэй.

5692759 53
5692759 53

Алхам 2. Та бүх мэдээллийн хэрэгслийг ашиглах зөвшөөрөлтэй эсэхээ шалгаарай

Энэ нь таны тоглоомд ашигласан 3D загвар, хөгжим, харилцан яриа, хөгжим, номын сан, хүрээ гэх мэт бүх графикт хамаарна. Өөрөө бичээгүй бүх зүйл.

  • Нэг лицензийн дагуу хэвлэл мэдээллийн хэрэгсэлд оруулсан өөрчлөлтийг зохиогчдоо итгэмжлэх, хуваалцах гэх мэт зарим нөхцөлүүд байдаг. Заримдаа та тоглоомыг цэнэглээгүй л бол бүтээгчдийг нэрлэхгүйгээр график ашиглах боломжтой болно. Хэрэв та зохиогчийг үнэлэх шаардлагатай бол үүнийг тоглоомынхоо "Кредитүүд" таб шиг сайн харагдахуйц газар хий.
  • Зохиогчийн эрхийн талаар нэхэмжлэл гаргасан, лиценз заагаагүй, заримдаа "Бүх эрх хуулиар хамгаалагдсан" гэх мэт бичвэр бүхий хэвлэл мэдээллийн хэрэгсэл байдаг. Хэрэв тийм бол та үүнийг тоглоомондоо оруулахаасаа өмнө зохиогчоос тодорхой зөвшөөрөл авах ёстой.
  • Номын санг ихэвчлэн номын сан болгон ашиглах боломжийг олгодог лицензийн дагуу гаргадаг. Үл хамаарах зүйл бол онцгой байдлыг холбоогүй GPL юм: Ийм лиценз нь зөвхөн тодорхой лицензтэй програмд ашиглахыг зөвшөөрдөг. Хэвлэл мэдээллийн хэрэгсэл эсвэл номын сангаар хийж буй бүх зүйлээ зөвшөөрсөн эсэхийг баталгаажуулахын тулд та дор хаяж лицензийн үндсэн зүйлийг унших хэрэгтэй.

Анхааруулга: Хэвлэл мэдээллийн хэрэгсэл эсвэл номын санг таны хэвлүүлсэн тоглоомд лиценз нь зөвшөөрөөгүй байдлаар ашиглах нь таныг хууль эрх зүйн ноцтой асуудалд оруулах болно. Хэрэв та ашиглахыг зөвшөөрсөн эсэхээ мэдэхгүй байгаа бол зохиогчоос асуу эсвэл хэвлэл мэдээллийн хэрэгслээс огт зайлсхий.

5692759 54
5692759 54

Алхам 3. Тоглоомоо ямар нөхцөлд нийтлэхийг хүсч байгаагаа шийдээрэй

Та тоглоомоо зарах уу? Бусдад таны зураг, санааг ашиглахыг зөвшөөрөхийг хүсч байна уу? Төсөлдөө ашиглаж буй хэвлэл мэдээллийн хэрэгслийн талаар болгоомжтой байх ёстой боловч та тоглоомоо бусдад хэрхэн ашиглахыг хүсч байгаагаа ихэвчлэн шийддэг. Та Creative Commons CC0 лицензийг ашиглан тоглоомоо олон нийтийн хүртээл болгох боломжтой. Зарим эрхийг хадгалахын зэрэгцээ зарим нөхцөлд түгээх, өөрчлөхийг зөвшөөрөхийн тулд Gnu General Public License (GPL) эсвэл Berkeley Software Distribution (BSD) лицензийг ашиглаж үзээрэй. Эсвэл та програм хангамжаа өмчлөх боломжтой бөгөөд энэ нь таны зөвшөөрөлгүйгээр хэнд ч тараах, өөрчлөх эрхгүй гэсэн үг юм.

Тоглоом зарж мөнгө олох боломжтой боловч ихэнхдээ онцлог шинж чанар багатай, анхны тоглоомыг хүмүүс худалдаж авах магадлал багатай юм. Түүнчлэн, хэрэв үнэгүй програм ажиллахгүй бол үүнийг татаж авсан хүмүүс сэтгэл дундуур байх болно. Хэрэв тэд үүнийг төлсөн бол мөнгөө буцааж өгөхийг шаардах бөгөөд энэ нь танд болон хэрэглэгчдэд илүү их асуудал үүсгэж болзошгүй юм. Тиймээс эхний хэдэн програмаа үнэгүй ашиглах боломжтой болгох талаар бодож үзээрэй

5692759 55
5692759 55

Алхам 4. Тоглоомоо хэрхэн нийтлэхээ шийдээрэй

Аливаа арга нь давуу болон сул талуудтай тул та өөрөө шийдэх хэрэгтэй.

  • Үүнийг вэбсайт дээр нийтлэх:

    Хэрэв танд вэбсайт байгаа бол тоглоомоо татаж авах боломжтой болгохын тулд байршуулж болно. Програм хангамжийг хэрхэн суулгах талаар шаардлагатай зааварчилгаа, шаардлагатай бүх хамаарлыг зааж өгөх хэрэгтэй. Үүний сул тал нь тоглогчид хамаарлыг бие даан суулгах шаардлагатай болдог бөгөөд энэ нь зарим хүмүүст хэцүү байж магадгүй юм.

  • Багцын менежерт зориулж багц хийх:

    Apt, Yum, Homebrew гэх мэт өөр өөр багц менежерүүд байдаг бөгөөд энэ нь хүмүүсийг Линукс болон Линукс дээр суурилсан орчинд програм суулгахад хялбар болгодог. Тэд бүгд өөр өөр багц форматтай байдаг. Багцуудын сайн тал нь тэд бүх хамаарлыг автоматаар суулгадаг (хэрэв та тэдгээрийг зөв тохируулсан бол). Тиймээс тоглогч зөвхөн таны багцыг суулгах ёстой бөгөөд дараа нь тоглоом тоглох боломжтой болно. Асуудал нь өөр өөр платформ дээр олон янзын багцын менежерүүд байдаг тул та хамгийн нийтлэг бүх багцыг хангахын тулд бага зэрэг хүчин чармайлт гаргах хэрэгтэй болно.

5692759 56
5692759 56

Алхам 5. Анхаарал хандуулж, хөтөлбөртөө анхаарлаа хандуулаарай

Суулгахад хялбар болгохын тулд програмаа Ubuntu, Debian гэх мэт томоохон багцын репозиторт байршуулах талаар бодож үзээрэй. Мөн GameDev -ийн төслийн хэсэг эсвэл tigSource -ийн хэсэг гэх мэт зохих форумд нийтлэл оруулах. Гэхдээ анхны тоглоомууд тань алдартай болоогүй бол сэтгэлээр унах хэрэггүй. Хэрэв танд олон хүнд таалагддаг гэсэн санаа байвал таны тоглоом олонд танигдах болно.

Зөвлөмж

  • Тэвчээртэй байж сурахад бэлэн байгаарай. Програмчлал нь заримдаа урам хугарах болно!
  • Хэрэв та өөр тоглоомонд ямар нэгэн зүйл хийгддэг бөгөөд тоглоом нээлттэй эх сурвалжтай бол та түүний эх кодыг харах боломжтой.
  • Хэвлэл мэдээллийн хэрэгсэл хайж байхдаа олон нийтийн домэйнд байгаа агуулгыг хайж олохыг хичээ. "Creative Commons" эсвэл "Public Domain" зураг, хөгжим хайж, https://opengameart.org эсвэл https://publicdomainpictures.net гэх мэт вэбсайтуудыг ашиглаарай.
  • Лицензийг шалгахгүйгээр кодын томоохон хэсгүүдийг хуулж болохгүй. Үүнийг ихэвчлэн хориглодог бөгөөд хэрэв үгүй бол ихэвчлэн хамаарлыг шаарддаг.
  • Тоглоомоо сурталчлахдаа спам хийх, зохисгүй газар бичих хэрэггүй. Энэ нь таныг хуудаснаас хаах магадлалтай бөгөөд энэ нь зүгээр л ядаргаатай бөгөөд таны нэр хүндэд муугаар нөлөөлнө.

Зөвлөмж болгож буй: