Yuav Ua Li Cas Khoos Phis Tawj Ua Si (nrog Duab)

Cov txheej txheem:

Yuav Ua Li Cas Khoos Phis Tawj Ua Si (nrog Duab)
Yuav Ua Li Cas Khoos Phis Tawj Ua Si (nrog Duab)
Anonim

Koj puas muaj lub tswv yim rau kev ua si hauv computer thiab xav ua nws tiag? Lossis koj puas tau xav tias yuav sau computer games li cas? Qhov wikiHow no qhia koj li cas los sau peb qho kev ua si hauv computer hauv Python. Koj yuav xav tau kev nkag siab yooj yim ntawm nab hab sej thiab cov tswv yim dav dav los txhim kho koj thawj qhov kev ua si.

Cov kauj ruam

Ntu 1 ntawm 3: Ua Game-Based Game

5692759 1
5692759 1

Kauj Ruam 1. Xaiv hom lus programming

Txhua hom lus programming sib txawv, yog li koj yuav tsum txiav txim siab qhov twg los siv los sau koj cov game. Txhua qhov lus programming tseem ceeb txhawb nqa cov ntawv nkag, cov ntawv xa tawm thiab yog tsim tawm (yam tseem ceeb uas koj xav tau rau cov ntawv yooj yim raws li kev ua si), yog li tshawb xyuas cov kev xaiv thiab txiav txim siab uas koj nyiam tshaj plaws nrog thiab mob siab rau kawm. Nov yog qee yam los xav txog:

  • Hom lus twg feem ntau siv rau?

    Qee cov lus programming, zoo li JavaScript, tau tsim los siv rau lub vev xaib, thaum lwm tus, zoo li Python, C, lossis C ++, tau tsim los khiav cov haujlwm hauv computer. Rau koj qhov kev ua si, tsom rau hom lus nrog kev siv dav, xws li Python, C, C ++, lossis JavaScript.

  • Nws nyuaj npaum li cas los kawm?

    Txawm hais tias sau ib txoj haujlwm yuav tsum yooj yim txaus tom qab qee qhov kev xyaum ua hauv ib hom lus programming ib txwm muaj (piv txwv li, tsis yog ib qho tshwj xeeb tsim los kom tsis meej pem zoo li Malbolge), qee qhov yog phooj ywg rau cov pib dua lwm tus. Piv txwv li Java thiab C, yuav xav kom koj nkag siab lub tswv yim lub tswv yim ntau dua li ib yam li Python, uas paub txog nws nkag tau yooj yim dua thiab ncaj nraim rau cov syntax.

  • Kuv tuaj yeem siv nws nyob qhov twg?

    Tej zaum koj xav tau tib neeg ntawm cov kab ke sib txawv, xws li Linux, Mac lossis Windows, kom txhua tus tuaj yeem ua si koj cov game. Yog li koj yuav tsum tsis txhob siv hom lus uas tsuas yog txhawb nqa ntawm ob peb lub system, zoo li Visual Basic, uas tsuas yog txhawb nqa ntawm Windows.

Kab lus no yuav siv Python rau qhov piv txwv ntawm kev ua si raws cov ntawv, tab sis koj tuaj yeem saib seb cov ntsiab lus ua tiav hauv lwm yam lus programming li cas.

5692759 2
5692759 2

Kauj Ruam 2. Npaj koj lub khoos phis tawj

Ob lub hauv paus tseem ceeb koj yuav xav tau yog cov ntawv sau, uas koj yuav sau koj tus lej, thiab tus sau, uas koj yuav siv los hloov nws mus rau hauv kev ua si. Yog tias koj xav ua raws li tus piv txwv hauv kab lus no, koj yuav tsum teeb tsa Python thiab kawm paub yuav ua haujlwm li cas. Yog tias koj xav tau, koj tuaj yeem teeb tsa IDE (Integraded Desktop Environment), uas suav nrog kev kho, suav ua ke, thiab debugging rau hauv ib qho program. Python's IDE hu ua IDLE. Tab sis koj tseem tuaj yeem tsuas yog siv cov ntawv sau uas txhawb cov ntawv yooj yim, xws li Notepad rau Windows, TextEdit rau macOS, lossis Vim rau Linux.

5692759 3
5692759 3

Kauj Ruam 3. Sau qee qhov chaws los tos txais tus neeg ua si

Tus neeg ua si yuav xav paub tias muaj dab tsi tshwm sim thiab lawv yuav tsum ua dab tsi, yog li koj yuav tsum luam qee cov ntawv rau lawv.

  • Qhov no ua tiav nrog kev luam () ua haujlwm hauv Python. Txhawm rau sim nws, qhib ib daim ntawv tshiab nrog.py txuas ntxiv, sau cov cai hauv qab no rau hauv nws, txuag thiab khiav nws:

    print ("Txais tos rau tus lej twv twv txiaj!") luam tawm ("Sau tus lej tag nrho ntawm 1 txog 1000:")

5692759 4
5692759 4

Kauj Ruam 4. Tsim tus lej tsis raug

Cia peb ua cov ntawv raws li kev ua si uas nug tus neeg ua si kom kwv yees tus lej raug. Thawj qhov peb yuav tsum tau ua yog tsim tus lej random thaum pib ntawm qhov kev ua si yog li cov neeg uas ua ntawv yuav tsis twv ib tus lej ib txwm. Txij li tus lej yuav nyob zoo ib yam thoob plaws hauv txoj haujlwm, koj yuav xav khaws tus lej tsis raug hauv qhov sib txawv.

  • Nab hab sej tsis muaj tus lej lej ua haujlwm, tab sis nws muaj lub tsev qiv ntawv txheem (qhov no txhais tau tias tus neeg siv yuav tsis tau teeb tsa ib qho ntxiv) uas ua. Yog li mus rau qhov pib ntawm koj cov cai (ua ntej luam tawm () ua haujlwm) thiab ntaus kab kab ntawv ntshuam.
  • Siv qhov ua haujlwm tsis zoo. Nws yog hu ua randint (), yog nyob rau hauv lub tsev qiv ntawv tsis xwm yeem uas koj nyuam qhuav tuaj txawv teb chaws, thiab siv tus nqi tsawg kawg thiab siab tshaj tus lej tuaj yeem muaj kev sib cav. Yog li rov qab mus rau qhov kawg ntawm koj cov cai thiab nkag mus rau kab hauv qab no:

    rightNum = random.randint (0, 1000)

5692759 5
5692759 5

Kauj Ruam 5. Tau txais cov tswv yim los ntawm tus neeg ua si

Hauv kev ua si, tus neeg ua si xav ua qee yam lossis cuam tshuam nrog qee yam. Hauv kev ua si raws cov ntawv, qhov no tuaj yeem ua tau los ntawm kev nkag mus rau kab ntawv. Tam sim no peb muaj tus lej tsis raug, peb cov kab tom ntej ntawm tus lej yuav tsum nug tus neeg ua si kom nkag mus rau lawv qhov kev kwv yees zoo tshaj plaws.

  • Txij li cov lej koj tau nkag mus luam cov ntawv qhia kom nkag mus rau tus lej rau tus neeg ua si, nws tseem yuav tsum nyeem tus lej uas lawv nkag mus. Qhov no ua tiav nrog kev nkag () hauv Python 3, thiab raw_input () hauv Python 2. Koj yuav tsum sau hauv Python 3, vim Python 2 yuav dhau los sai sai. Ntxiv cov kab hauv qab no rau koj cov cai txhawm rau khaws cov neeg siv khoom nkag mus rau hauv qhov sib txawv hu ua tus lej:

    userNum = cov ntaub ntawv ()

5692759 6
5692759 6

Kauj Ruam 6. Tig tus neeg uas ua ntawv nkag mus rau hauv cov ntaub ntawv siv tau

Tus neeg uas ua ntawv tau nkag mus rau tus lej-tam sim no yog dab tsi?

  • Ua tus neeg ntaus ntawv cov lej nkag mus. Tam sim no, qhov no yuav zoo li tsis meej pem vim tias lawv nyuam qhuav nkag mus rau tus lej. Tab sis muaj qhov laj thawj zoo: Python kwv yees tias txhua qhov kev nkag mus yog kab ntawv, lossis "hlua", raws li nws tau hu ua hauv kev sau ntawv. Cov ntawv no muaj tus lej koj xav tau. Nab hab sej muaj nuj nqi uas hloov cov hlua uas tsuas muaj tus lej rau tus lej sab hauv. Hom:

    userNum = int (userNum)

5692759 7
5692759 7

Kauj Ruam 7. Sib piv tus lej ntawm tus neeg ua si kom raug tus lej

Thaum cov neeg ua si nkag mus rau lawv tus lej, koj yuav tsum sib piv nws mus rau qhov uas tau tsim tawm los ntawm qhov xwm txheej. Yog tias cov lej tsis zoo ib yam, koj qhov kev ua si tuaj yeem ua rau tus neeg siv sim lwm tus lej. Yog tias cov lej sib phim, koj tuaj yeem qhia tus neeg uas ua ntawv lawv twv tau raug, thiab tawm ntawm txoj haujlwm. Qhov no ua tiav nrog cov cai hauv qab no:

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

5692759 8
5692759 8

Kauj Ruam 8. Muab tus neeg uas ua ntawv tawm tswv yim

Thaum koj twb tau ua tiav lawv cov tswv yim, cov neeg ua si yuav tsis pom qhov no. Koj yuav tsum tau luam tawm cov txiaj ntsig rau tus neeg ua si kom lawv nkag siab tias muaj dab tsi tshwm sim.

  • Muaj tseeb, koj tuaj yeem tsuas qhia tus neeg ua si seb lawv tus lej raug lossis tsis raug. Tab sis nrog txoj hauv kev ntawd, tus neeg ua si yuav tsum kwv yees 1000 zaug hauv qhov xwm txheej tsis zoo, uas yuav yog qhov txaus ntshai heev.
  • Yog li qhia rau tus neeg ua si seb lawv tus lej tsawg dhau lossis loj dhau. Qhov no yuav txo lawv cov lej kwv yees ntau. Yog tias, piv txwv li, tus neeg uas ua ntawv kwv yees 500 thawj zaug, thiab qhov kev ua si teb "Loj heev. Sim dua," yuav tsuas yog 500 tus lej uas yuav hloov tau 1000. Qhov no ua tiav nrog yog tsim, yog li hloov cov ntawv luam ("Tsis yog. Sim dua. ") Nrog ib qho.
  • Nco ntsoov tias kev tshuaj xyuas seb ob tus lej zoo ib yam nrog ==, tsis nrog =. = muab tus nqi txoj cai ntawm nws rau qhov sib txawv ntawm nws!
  • yog userNum <rightNum: print ("Me me. Sim dua:") yog userNum> rightNum: print ("loj dhau. Sim dua:")

5692759 9
5692759 9

Kauj Ruam 9. Ntsuas koj cov cai

Ua tus programmer, koj yuav tsum paub tseeb tias koj cov cai ua haujlwm ua ntej txiav txim siab nws ua tiav.

  • Thaum ua haujlwm hauv nab hab sej, nco ntsoov tias koj tau txais qhov kev nkag ncaj qha. Koj tus lej yuav tsum zoo li no:

    ntshuam luam tawm tsis raug ("Txais tos rau tus lej twv twv txiaj!") luam tawm ("Sau tus lej tag nrho ntawm 1 txog 1000:") rightNum = random.randint (0, 1000) userNum = input () userNum = int (userNum) thaum userNum! = rightNum: yog userNum <rightNum: print ("Me dhau. Sim dua:") yog userNum> rightNum: print ("Loj heev. Sim dua:") userNum = int (input ()) print ("Koj twv tau raug. ")

5692759 10
5692759 10

Kauj Ruam 10. Txheeb xyuas qhov nkag

Tus neeg uas ua ntawv yuav tsum tsis tuaj yeem tsoo koj qhov kev ua si los ntawm kev nkag mus rau qhov tsis raug. "Txheeb xyuas qhov nkag mus" txhais tau tias ua kom tus neeg siv nkag mus rau qhov raug ua ntej ua nws.

  • Qhib qhov kev ua si dua thiab sim nkag mus rau txhua yam uas tsis yog tus lej. Qhov kev ua si yuav tawm nrog ValueError. Txhawm rau zam qhov no, koj tuaj yeem siv txoj hauv kev los tshuaj xyuas seb cov tswv yim yog tus lej.
  • Txhais muaj nuj nqi. Txij li kev txheeb xyuas qhov kev tawm tswv yim yog ntev heev, thiab koj yuav tsum ua nws ntau zaus, koj yuav tsum txhais lub luag haujlwm. Nws yuav siv tsis muaj kev sib cav thiab xa tus lej. Ua ntej tshaj, sau def numInput (): nyob rau sab saum toj ntawm koj cov cai, ncaj qha nyob rau hauv ntshuam ntshuam.
  • Tau txais tus neeg ua si cov tswv yim ib zaug. Siv cov tswv yim () ua haujlwm thiab muab cov txiaj ntsig rau qhov sib txawv inp.
  • Thaum tus neeg uas ua ntawv nkag mus tsis yog tus lej, thov kom lawv nkag mus rau tus lej. Txhawm rau txheeb xyuas seb txoj hlua puas yog tus lej, siv isdigit () cov haujlwm, uas tsuas yog tso cai tag nrho tus lej, yog li koj yuav tsis tau txheeb xyuas qhov ntawd cais.
  • Yog tias cov tswv yim yog tus lej, hloov nws los ntawm txoj hlua rau tus lej thiab xa rov qab. Siv qhov int () ua haujlwm rau hloov txoj hlua mus rau ib qho lej. Qhov no yuav ua rau kev hloov pauv hauv cov cai tseem ceeb tsis tsim nyog, thiab koj yuav tsum tshem nws los ntawm qhov ntawd.
  • Hloov txhua qhov kev hu xov tooj rau nkag () hauv tus lej tseem ceeb nrog hu rau numInput ().
  • Txoj cai ntawm numInput () muaj nuj nqi yuav zoo li no:
  • def numInput (): inp = input () thaum tsis inp.isdigit (): print ("Koj tau hais kom nkag mus rau tus lej tag nrho! Sau tus lej tag nrho:") inp = input () rov qab int (inp)

5692759 11
5692759 11

Kauj Ruam 11. Kuaj qhov game dua

Nkag mus rau qhov tsis raug ntawm lub hom phiaj kom pom tias muaj dab tsi tshwm sim, thiab tom qab ntawd kho qhov yuam kev thaum lawv los.

Sim nkag mus qee cov ntawv thaum lub program nug koj kom muaj tus lej. Tam sim no, tsis txhob tawm nrog cov lus yuam kev, txoj haujlwm yuav nug koj tus lej ntxiv

5692759 12
5692759 12

Kauj Ruam 12. Hais kom rov pib qhov kev ua si thaum nws ua tiav

Txoj kev no, tus neeg uas ua ntawv tuaj yeem ua koj qhov kev ua si ntev dua yam tsis tas yuav rov pib dua.

  • Muab tag nrho cov cai tshwj tsis yog ntshuam thiab kev txhais lub luag haujlwm rau hauv ib lub sijhawm. Teem Tseeb raws li qhov xwm txheej: qhov no ib txwm muaj tseeb, yog li lub voj yuav txuas ntxiv mus tas li.
  • Nug tus neeg ua si seb lawv puas xav rov ua si dua tom qab lawv kwv yees tus lej raug. Siv cov ntawv luam () ua haujlwm.
  • Yog tias lawv teb "Tsis yog", tawm ntawm qhov zoo. Yog lawv teb dab tsi ntxiv, mus ntxiv. Kev tawg tawm ntawm lub voj yog ua tiav nrog cov lus tawg.
  • Tsiv lub "Txais tos rau tus lej twv twv txiaj" sab nraum lub voj. Cov neeg uas ua ntawv tej zaum tsis xav tau txais tos txhua lub sijhawm lawv ua si. Txav cov ntawv qhia ("Txais tos rau tus lej twv twv txiaj!" Saum toj no lub sijhawm Tseeb:, yog li nws yuav luam tawm ib zaug, thaum tus neeg siv pib ua si thawj zaug.
5692759 13
5692759 13

Kauj Ruam 13. Kuaj qhov game

Koj yuav tsum tau sim koj cov kev ua si txhua lub sijhawm koj siv tus yam ntxwv tshiab.

  • Nco ntsoov teb ob qho "Yog" thiab "Tsis yog" tsawg kawg ib zaug kom paub tseeb tias ob qho kev xaiv ua haujlwm. Nov yog qhov koj tus lej yuav tsum zoo li:

    import random def numInput (): inp = input () thaum tsis inp.isdigit (): print ("Koj tau hais kom nkag mus rau tus lej tag nrho! Sau tus lej tag nrho:") inp = input () rov qab int (inp) luam tawm ("Txais tos rau tus lej twv twv txiaj!") Thaum muaj tseeb: luam tawm ("Sau tus lej tag nrho ntawm 1 txog 1000:") rightNum = random.randint (0, 1000) userNum = numInput () thaum userNum! = RightNum: yog userNum <rightNum: print ("Me dhau. Sim dua:") yog userNum> rightNum: print ("Loj dhau. Sim dua:") userNum = numInput () print ("Koj twv tau raug.") print ("Koj puas tau xav rov ua si dua? Nkag Tsis tau txiav tawm. ") yog nkag () ==" Tsis yog ": so

5692759 14
5692759 14

Kauj Ruam 14. Sau lwm cov ntawv ua si

Yuav ua li cas sau ntawv taug txuj kev nyuaj tom ntej? Los yog kev ua si xeem ntawv? Muaj tswv yim.

Tswv yim: Nws qee zaum muaj txiaj ntsig zoo los saib hauv cov ntaub ntawv yog tias koj tsis paub meej tias qee yam ua tiav lossis siv lub luag haujlwm li cas. Python 3 cov ntaub ntawv muaj nyob ntawm https://docs.python.org/3/. Qee zaum tshawb nrhiav yam koj xav ua hauv is taws nem kuj tseem ua tiav cov txiaj ntsig zoo.

Ntu 2 ntawm 3: Ua Kev Ua Si nrog 2D Duab

5692759 15
5692759 15

Kauj Ruam 1. Xaiv lub tsev qiv ntawv duab

Ua cov duab nyuaj heev, thiab feem ntau cov lus programming (suav nrog Python, C ++, C, JavaScript) muab tsuas yog tsawg lossis txawm tias tsis muaj kev txhawb nqa cov duab hauv cov tub ntxhais lossis cov tsev qiv ntawv txheem. Yog li koj yuav tsum siv lub tsev qiv ntawv sab nraud kom tuaj yeem tsim duab, piv txwv li Pygame rau Python.

Txawm hais tias muaj lub tsev qiv ntawv duab, koj yuav tsum txhawj xeeb txog yam xws li yuav ua li cas tso saib cov ntawv qhia zaub mov, yuav ua li cas los saib seb tus neeg uas ua ntawv nyem, yuav ua li cas tso saib cov vuas, thiab ntxiv rau. Yog tias koj xav tau txhawm rau txhim kho qhov kev ua si tiag, koj tuaj yeem siv game game lub tsev qiv ntawv zoo li Unity, uas siv cov no yooj yim

Kab lus no yuav siv Python nrog Cocos2D los qhia yuav ua li cas ua kom yooj yim 2D platformer. Qee cov ntsiab lus hais los yuav tsis muaj nyob hauv lwm lub tshuab game. Xa mus rau lawv cov ntaub ntawv kom paub ntau ntxiv.

5692759 16
5692759 16

Kauj Ruam 2. Nruab lub tsev qiv ntawv duab uas koj xaiv

Cocos2D rau Python tau yooj yim rau nruab. Koj tuaj yeem tau txais nws los ntawm https://python.cocos2d.org/index.html, lossis los ntawm kev khiav sudo pip3 nruab cocos2d yog tias koj siv Linux.

5692759 17
5692759 17

Kauj Ruam 3. Ua phau ntawv teev npe tshiab rau koj cov game thiab xov xwm

Koj yuav siv tej yam xws li cov duab thiab suab hauv koj qhov kev ua si. Khaws cov no hauv tib phau ntawv teev npe raws li qhov program. Cov npe no yuav tsum tsis muaj dab tsi ntxiv kom koj tuaj yeem pom yooj yim cov khoom koj muaj hauv qhov kev ua si.

5692759 18
5692759 18

Kauj Ruam 4. Tsim cov ntaub ntawv tus lej tshiab hauv phau ntawv teev npe tshiab

Hu nws lub ntsiab, nrog cov ntawv txuas ntxiv rau koj cov lus programming. Yog tias koj sau cov phiaj xwm loj thiab nyuaj uas nws nkag siab kom muaj ntau cov ntaub ntawv program, qhov no yuav qhia koj uas yog cov ntaub ntawv tseem ceeb.

Hauv qhov piv txwv no, peb yuav tsim cov ntaub ntawv hu ua main.py uas yuav muaj tag nrho peb cov cai

5692759 19
5692759 19

Kauj Ruam 5. Tsim qhov game game window

Qhov no yog qhov yuav tsum tau ua ntej ua ntej rau kev ua si nrog duab.

  • Ntshuam qhov tsim nyog cocos2d sub-modules: cocos.director, cocos.scene thiab cocos.layer. Qhov no ua tiav nrog los ntawm subModuleName ntshuam *, qhov twg sub-Module lub npe yog submodule koj xav import. Qhov sib txawv ntawm los ntawm … ntshuam * thiab ntshuam … yog tias koj tsis tas yuav muab lub npe qauv ua ntej ntawm txhua yam koj siv los ntawm tus qauv ntawd nrog yav dhau los.
  • Txhais cov subclass MainMenuBgr ntawm ColorLayer. Qhov no txhais tau tias txhua lub ntsiab lus tseem ceeb tom qab koj tsim yuav coj zoo li txheej xim nrog qee qhov kev hloov pauv koj ua.
  • Pib tus thawj coj cocos. Qhov no yuav muab lub qhov rai tshiab rau koj. Yog tias koj tsis teeb tsa kab lus, lub qhov rai yuav muaj tib lub npe raws li cov ntaub ntawv npe (main.py), uas yuav tsis zoo li tus kws tshaj lij. Tso cai rau lub qhov rais kom hloov pauv nrog los ntawm kev teeb tsa kom haum rau qhov tseeb.
  • Txheeb xyuas qhov ua haujlwm showMainMenu. Koj yuav tsum tso tus lej txhawm rau qhia cov zaub mov tseem ceeb rau hauv txoj haujlwm vim tias qhov no yuav tso cai rau koj rov qab mus rau cov ntawv qhia zaub mov yooj yim los ntawm kev hu lub luag haujlwm dua.
  • Tsim ib qho chaw. Qhov xwm txheej muaj ib txheej rau tam sim no, uas yog lub hom phiaj ntawm MainMenuBgr chav kawm uas koj tau hais tseg.
  • Khiav qhov xwm txheej no hauv lub qhov rais.
  • los ntawm cocos.director ntshuam * los ntawm cocos.scene ntshuam * los ntawm cocos.layer ntshuam * chav kawm 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 - platformer yooj yim", resizable = True) showMainMenu ()

5692759 20
5692759 20

Kauj Ruam 6. Ntxiv cov ntawv qhia zaub mov tseem ceeb rau lub qhov rais

Dhau li ntawm qhov kev ua si tiag, koj yuav tsum ntxiv cov ntawv qhia zaub mov uas cov neeg siv tuaj yeem siv los kaw lub qhov rais, ntawm lwm cov ntsiab lus koj tuaj yeem ntxiv tom qab.

  • Ntshuam cocos.menu (ntxiv nrog los ntawm kev qhia) thiab pyglet.app (lub sijhawm no nrog ntshuam).
  • Txhais MainMenu ua subclass ntawm Menu.
  • Teem cov ntawv qhia zaub mov tseem ceeb. Koj yuav tsum teeb tsa txoj kab ntsug thiab kab rov tav sib cais.
  • Tsim cov npe khoom ntawm cov ntawv qhia zaub mov thiab ntxiv rau hauv cov ntawv qhia zaub mov. Koj yuav tsum muaj cov ntawv qhia zaub mov "Pib Game" thiab "Quit" tsawg kawg. Txhua qhov khoom noj khoom haus yuav tsum tau muab tso rau sab hauv ntawm cov khoom. Txhua yam khoom yuav tsum muaj daim ntawv lo thiab rov ua haujlwm uas txiav txim siab yuav ua li cas thaum tus neeg uas ua ntawv nyem rau nws. Txog cov khoom "Pib Game", siv qhov pib ua haujlwm (koj yuav sau nws sai), rau "Quit" yam khoom, siv "pyglet.app.exit" (twb muaj lawm). Tsim cov ntawv qhia tseeb los ntawm kev hu rau tus kheej.create_menu (menuItems).
  • Txhais startGame (). Tsuas yog muab tso rau hauv lub ntsiab lus tam sim no, koj yuav hloov qhov ntawd thaum koj sau qhov kev ua si tiag.
  • Mus rau qhov chaw hauv koj cov cai uas koj tau tsim cov menuSc scene, thiab ntxiv cov khoom MainMenu rau nws.
  • Tam sim no koj tag nrho cov cai yuav tsum zoo li hauv qab no:

    los ntawm cocos.director ntshuam * los ntawm cocos.menu ntshuam * los ntawm cocos.scene ntshuam * los ntawm cocos.layer ntshuam * ntshuam pyglet.app chav kawm MainMenuBgr (ColorLayer): def _init _ (tus kheej): super (MainMenuBgr, nws tus kheej)._ init _ (0, 200, 255, 255) chav MainMenu (Menu): def _init _ (self): super (MainMenu, self)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Pib Game ", startGame)), (MenuItem (" Quit ", pyglet.app.exit))] self.create_menu (menuItems) def startGame (): dhau def showMainMenu (): menuSc = Scene (MainMenuBgr ()) menuSc.add (MainMenu ()) director.run (menuSc) director.init (kab lus = "IcyPlat - lub platform yooj yim", resizable = True) showMainMenu ()

5692759 21
5692759 21

Kauj Ruam 7. Kuaj koj cov cai

Kuaj cov cai thaum ntxov, thaum nws tseem luv thiab kuj yooj yim. Tom qab ntawd koj tuaj yeem txheeb xyuas thiab kho ib qho yuam kev hauv cov qauv yooj yim ua ntej txhua yam nyuaj dhau.

Cov cai los ntawm cov lus qhia yuav tsum qhib lub qhov rai sau "IcyPlat - lub platformer yooj yim." Cov keeb kwm yav dhau yog lub teeb xiav thiab koj tuaj yeem hloov kho qhov rai. Thaum koj nyem "Pib Game" ntawm cov ntawv qhia zaub mov, tsis muaj dab tsi yuav tshwm sim (tseem). Thaum koj nyem "Tawm," lub qhov rai yuav kaw

5692759 22
5692759 22

Kauj Ruam 8. Tsim tus sprite

Sprite yog "game game," lossis duab 2-dimensional. Sprites tuaj yeem yog cov khoom ua si, cim, kho kom zoo nkauj tom qab, cim, thiab lwm yam uas koj tuaj yeem sawv cev nrog cov duab hauv qhov kev ua si. Peb yuav pib los ntawm kev tsim tus sprite rau tus ua cim uas tus neeg ua si tuaj yeem cuam tshuam nrog.

  • Ntshuam cocos.sprite submodule nrog los ntawm-ntshuam-qhia tawm.
  • Nrhiav ib daim duab los sawv cev rau tus sprite. Koj tsis tuaj yeem tso saib tus sprite yog tias koj tsis muaj daim duab rau nws. Koj tuaj yeem kos ib qho, lossis koj tuaj yeem tau txais ib qho los ntawm is taws nem (saib xyuas daim ntawv tso cai, txawm hais tias, yog tias koj tab tom npaj tshaj tawm koj qhov kev ua si). Txog qhov ua piv txwv no, mus rau https://opengameart.org/content/tux-classic-hero-style thiab txuag-p.webp" />
  • Tsim ib txheej raws li cov khoom tshiab ntawm chav kawm ScrollableLayer. Tom qab ntawd, tsim cov sprite ua cov khoom Sprite thiab teeb tsa nws txoj haujlwm rau (8, 250). Txog kev siv, lub ntsiab lus (0, 0) nyob hauv qab kaum sab laug. Qhov no yog qhov siab heev, tab sis nws yuav ua kom ntseeg tau tias cov penguin tsis tau daig hauv dej khov.
  • Ntxiv cov sprite rau txheej txheej ntawm sprite.
  • Tsim qhov xwm txheej tshiab tawm ntawm tus txheej txheem txheej txheem thiab khiav nws.
  • def startGame (): figLayer = ScrollableLayer () fig = Sprite ('pingu.png') fig.position = (75, 100) figLayer.add (fig) # gameSc = Scene (figLayer) director.run (gameSc)

  • Khiav cov cai. Koj yuav tsum pom daim duab penguin me me (lossis txhua yam koj kos) ntawm cov keeb kwm dub tom qab koj nyem Pib Game.
5692759 23
5692759 23

Kauj Ruam 9. Npau suav txog koj lub toj roob hauv pes

Hauv ntau qhov kev ua si, koj tus sprites yuav tsum tsis txhob ntab hauv qhov khoob. Lawv yuav tsum sawv ntawm qee qhov chaw, nrog qee yam nyob ib puag ncig lawv. Hauv 2D kev ua si, qhov no feem ntau ua tiav nrog cov nplais teeb thiab daim ntawv qhia pobzeb. Cov pobzeb txheej pib hais tias yam twg ntawm cov xwm txheej saum npoo av thiab cov xwm txheej tom qab muaj nyob, thiab lawv zoo li cas.

  • Tsim cov pobzeb txheej. Cov pobzeb teeb rau qhov kev ua si no yuav yooj yim heev: ib pobzeb rau dej khov thiab ib pobzeb saum ntuj. Cov nplais dej khov siv hauv qhov piv txwv no yog los ntawm no, hauv qab CC-BY-SA 3.0.
  • Tsim cov nplais teeb duab. Qhov ntawd yog daim duab ntawm txhua cov vuas, uas yuav tsum txhua tus muaj qhov loj ib yam (kho lawv yog tias lawv tsis yog) thiab muaj qhov loj me uas koj xav pom hauv qhov kev ua si, nyob ib sab. Txuag koj daim duab ua icyTiles.png.
  • Tsim cov nplais teeb piav qhia. Qhov ntawd yog XML cov ntaub ntawv. Cov ntaub ntawv XML muaj cov ntaub ntawv hais txog cov vuas loj npaum li cas hauv cov nplais teeb duab, daim duab twg siv, thiab nrhiav qhov twg cov nplais nyob ntawd. Tsim XML cov ntaub ntawv npe icyTiles.xml nrog cov cai hauv qab no:

         
    
5692759 24
5692759 24

Kauj Ruam 10. Ua daim ntawv qhia pobzeb rau koj toj roob hauv pes

Daim ntawv qhia pobzeb yog daim duab qhia chaw uas qhia tias cov nplais twg nyob ntawm txoj haujlwm twg hauv koj qib. Hauv qhov piv txwv, koj yuav tsum txhais lub luag haujlwm los tsim cov duab qhia chaw pobzeb vim tias tsim cov ntawv qhia pobzeb los ntawm txhais tes yog qhov txaus siab heev. Kev ua si zoo dua yuav feem ntau muaj qee qib ntawm cov kws kho qib, tab sis kom dhau los paub nrog 2D kev txhim kho game, tus txheej txheem tuaj yeem muab qib zoo txaus.

  • Nrhiav seb pes tsawg kab thiab kab ntawv xav tau. Txog qhov no, faib cov vijtsam loj los ntawm cov nplais loj ob qho tib si kab rov tav (kab) thiab ntsug (kab). Hloov tus lej nce mus; koj xav tau lub luag haujlwm ntawm kev ua lej rau qhov ntawd, yog li ntxiv los ntawm kev ua lej lej nkag mus rau qhov kev xa khoom nyob rau sab saum toj ntawm koj cov cai.
  • Qhib ib daim ntawv rau kev sau ntawv. Qhov no yuav lwv tag nrho cov ntsiab lus yav dhau los ntawm cov ntawv, yog li xaiv lub npe uas tsis muaj cov ntaub ntawv hauv cov npe tseem tsis tau, zoo li levelMap.xml.
  • Sau cov ntawv qhib rau hauv cov ntawv.
  • Tsim daim ntawv qhia pobzeb raws li cov txheej txheem. Koj siv ib tus lej hauv qab no, lossis koj tuaj yeem tsim ib qho ntawm koj tus kheej. Nco ntsoov ntshuam qhov kev ua haujlwm randint los ntawm tus qauv tsis sib xws: nws yuav tsum tau ua rau cov cai hauv qab no los ua haujlwm, thiab txawm li cas los xij koj los nrog tej zaum tseem yuav xav tau cov lej sib xws. Tsis tas li, nco ntsoov muab cov vuas saum ntuj thiab cov vuas dej khov rau hauv ntau txheej: dej khov khov, ntuj tsis yog.
  • Sau cov ntawv kaw rau hauv cov ntawv thiab kaw cov ntawv.
  • def generateTilemap (): colAmount = ceil (800/16) * 3 # (screen dav / pobzeb loj) * 3 rowAmount = ceil (600/16) # screen height / tile size tileFile = open ("levelMap.xml", " w ") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) rau kuv hauv thaj tsam (0, colAmount): tileFile.write ('') makeHole = Tsis raug yog tias siv randint (0, 50) == 10 thiab kuv! = 0: # tsis txhob tso qhov ntawm qhov spawnpoint makeHole = Muaj tseeb rau j hauv ntau (0, rowAmount): yog tias ua rau Hole: tileFile.write ('\ n') ntxiv: yog j <= iceHeight: tileFile.write ('\ n') else: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) yog iceHeight <0: # txwv cov vuas luaj los ntawm qhov qis heev iceHeight = randint (1, 5) yog iceHeight> rowAmount: # txwv cov vuas los ntawm cov dej khov siab dhau = randint (int (rowAmount/2) -5, int (rowAmount/2) +5) tileFile.write ('\ n') tileFile.write ('\ n / n') rau kuv hauv kab (0, colAmount): tileFile.write ('') rau j hauv kab (0, rowAmount): tileFile.write ('\ n') tileFile.write ('\ n ') tileFile.write (' / n / n ') tileFile.close ()

5692759 25
5692759 25

Kauj Ruam 11. Muab daim duab qhia chaw nplais

Ntshuam txhua yam los ntawm cocos.tiles thiab tom qab ntawd nkag mus rau qhov pib ua haujlwm rau qhov ntawd.

  • Thaum pib ntawm koj txoj haujlwm startGame, tsim daim ntawv qhia pobzeb siv cov haujlwm koj tau txhais rau qhov ntawd.
  • Tsim tus thawj tswj tshiab scrolling. Ua qhov no ncaj qha hauv kab uas koj ntxiv cov sprite rau nws txheej.
  • Tsim ib txheej tshiab uas muaj cov vuas, uas yuav raug thauj los ntawm levelMap.xml pobzeb daim ntawv qhia koj generateTilemap muaj nuj nqi tsim tawm.
  • Ntxiv cov txheej txheem tsis-txheej txheej, txheej txheej txheej thiab txheej txheej txheej txheej rau tus thawj tswj kev nqes, raws nraim qhov kev txiav txim no. Koj tuaj yeem ntxiv z-txoj haujlwm yog tias koj xav tau.
  • Hloov chaw ntawm kev tsim cov xwm txheej los ntawm txheej txheej txheej, tsim nws los ntawm tus thawj tswj kev nqes.
  • Koj qhov startGame muaj nuj nqi yuav tsum zoo li no:

    def startGame (): generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 500) figLayer = ScrollableLayer () figLayer.add (daim duab) # tileLayer = load ('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) director.run (gameSc)

5692759 26
5692759 26

Kauj Ruam 12. Ntsuas koj cov cai

Koj yuav tsum sim koj cov cai ntau zaus kom ntseeg tau tias cov yam ntxwv tshiab uas koj tau ua haujlwm tiag tiag.

Cov cai hauv qhov piv txwv tam sim no yuav tsum qhia qee qhov dej khov tom qab penguin. Yog tias tus penguin zoo li nws tau ya hla dej khov, koj tsis tau ua dab tsi tsis raug, thiab nws yuav raug kho nyob rau theem tom ntej

5692759 27
5692759 27

Kauj Ruam 13. Ntxiv cov tswj

Tus neeg ua si muaj ntau txoj hauv kev los cuam tshuam nrog cov haujlwm hauv 2D kev ua si ntau dua hauv kev ua si raws cov ntawv. Ib qho ib txwm suav nrog txav lawv daim duab thaum nias lub yuam sij raug.

  • Ntshuam txhua yam los ntawm cocos.mapcolliders thiab los ntawm cocos.actions. Kuj tseem ceeb qhov tseem ceeb los ntawm pyglet.window.
  • "Tshaj tawm" qee qhov kev hloov pauv thoob ntiaj teb. Kev hloov pauv thoob ntiaj teb tau sib koom ntawm cov haujlwm. Koj tsis tuaj yeem tshaj tawm qhov hloov pauv hauv Python, tab sis koj yuav tsum hais tias lub ntiaj teb sib txawv muaj nyob hauv cov cai tseem ceeb ua ntej siv nws. Koj tuaj yeem muab 0 ua tus nqi vim tias lub luag haujlwm yuav saib xyuas kev muab tus nqi raug tom qab. Yog li ntxiv hauv qab kab lus ntshuam:

    # "tshaj tawm" thoob ntiaj teb hloov pauv keyboard = 0 scrMang = 0

  • Kho koj li startGame muaj nuj nqi:

    • Hais tias koj siv lub ntiaj teb hloov pauv cov keyboard thiab scrMang. Ua qhov no los ntawm kev sau cov keyboard thoob ntiaj teb, scrMang nyob rau sab saum toj ntawm txoj haujlwm.
    • Ua kom lub qhov rais mloog cov txheej xwm keyboard.
    • Qhia tus lej kom ua raws li PlatformerController. Koj yuav siv qhov PlatformerController sai sai no.
    • Tsim daim ntawv qhia kev sib tsoo los tswj kev sib tsoo ntawm cov vuas khov thiab daim duab.

    def startGame (): keyboard thoob ntiaj teb, scrMang generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (daim duab) # tileLayer = load ('levelMap.xml ') solidTiles = tileLayer [' solid '] nsoliTiles = tileLayer [' not_solid '] # keyboard = key. KeyStateHandler () director.window.push_handlers (keyboard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (tshaj tawm_on_bump) = 'swb') 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) director.run (gameSc)

  • Tsim lub platformer maub los. Nov yog qhov uas yuav txav daim duab raws li koj cov ntawv nias.

    • Txhais lub platformer maub los ua subclass of Action.
    • Txheeb xyuas qhov txav mus los, dhia nrawm thiab lub ntiajteb txawj nqus.
    • Txheeb xyuas qhov pib ua haujlwm. Txoj haujlwm no hu ua ib zaug, thaum lub platformer tswj tau txuas nrog daim duab. Nws yuav tsum teeb tsa nws nrawm rau 0 ob qho tib si hauv x thiab hauv y taw qhia.
    • Txheeb xyuas cov theem ua haujlwm. Nws yuav rov ua dua thaum qhov xwm txheej tshwm sim.
    • Qhia cov qib ua haujlwm kom siv cov hloov pauv thoob ntiaj teb keyboard thiab scrMang.
    • Tau thiab hloov qhov nrawm. Txuag tus x thiab y tshaj tawm hauv qhov sib txawv sib txawv. Teem lub x nrawm mus rau 1 lossis -1 (nyob ntawm seb sab laug lossis sab xis tau raug nias) sib npaug nrog kev txav mus los. Ntxiv qhov nqus mus rau y tshaj tawm. Muab nws nrog lub sijhawm poob qis kom nws ua haujlwm zoo ib yam ntawm cov khoom siv qeeb. Yog tias qhov chaw tseem ceeb raug nias thiab daim duab tau sawv hauv av, dhia los ntawm kev hloov y tshaj tawm kom dhia nrawm.
    • Xam mus rau qhov twg daim duab yuav tsum txav mus. Tom qab ntawd cia tus neeg tuav haujlwm sib tsoo kho txoj haujlwm ntawd yog tias nws sab hauv ntawm cov pobzeb tawv. Thaum kawg, txav daim duab mus rau txoj haujlwm hloov kho tshiab.
    • Teem lub hom phiaj ntawm tus thawj coj scrolling ntawm daim duab. Qhov no ua rau lub koob yees duab txav mus raws qhov tsim nyog thaum daim duab txav mus.

    chav kawm PlatformerController (Ua): thoob ntiaj teb keyboard, scrMang on_ground = Tseeb MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def pib (tus kheej): self.target.velocity = (0, 0) def step (self, dt): keyboard thoob ntiaj teb, scroller yog dt> 0.1: # tsis txhob ua dab tsi thaum lub sijhawm poob mus rau qhov loj vx, vy = self.target.velocity vx = (keyboard [key. RIGHT] - keyboard [key. LEFT]) * self. MOVE_SPEED vy + = self. GRAVITY * dt yog self.on_ground thiab keyboard [key. SPACE]: vy = self. JUMP_SPEED dx = vx * dt dy = vy * dt kawg = self.target.get_rect () tshiab = last.copy () tshiab.x += dx new.y += dy self.target.velocity = self.target.collision_handler (kawg, tshiab, vx, vy) self.on_ground = (new.y == last.y) self.target.position = new.center scrMang.set_focus (*tshiab.center)

5692759 28
5692759 28

Kauj Ruam 14. Ntsuam xyuas koj cov cai

Yog tias koj ua raws tus piv txwv, tam sim no koj tuaj yeem txav lub penguin nrog cov xub xub thiab dhia los ntawm nias qhov chaw bar. Tsis tas li, tus penguin yuav tsum tam sim no poob qis dua li hovering hauv av.

5692759 29
5692759 29

Kauj Ruam 15. Tsim qhov xaus rau qhov kev ua si

Txawm tias cov kev ua si uas tuaj yeem mus tas li yuav tsum muaj peev xwm poob. Txij li qib koj tau ua piv txwv nrog kev ua haujlwm muaj qhov kawg, koj kuj tseem yuav tsum ua kom nws muaj peev xwm yeej los ntawm qhov kawg. Txwv tsis pub, tus neeg uas ua ntawv tsuas yog dhia ib ncig ntawm cov dej khov khov nyob ntawd, uas yuav ua rau tsis txaus siab.

  • Sab hauv tus tswj hwm lub platformer, tom qab ua kom pom tseeb, tau txais daim duab x thiab y txoj haujlwm. Yog tias txoj haujlwm y tsawg dua 0, hu rau kev ua haujlwm finishGame () (koj yuav sau nws tom qab) nrog "Game Over" raws li kev sib cav. Yog tias x txoj haujlwm loj dua qhov loj ntawm lub vijtsam sib npaug nrog 3 (koj tau teeb tsa ntawd raws qib qib ua ntej).

    posX, posY = self.target.position yog posY <0: finishGame ("Game Over") rov qab yog posX> 800*3: # qib loj finishGame ("Qib Ua tiav") rov qab

  • Txheeb xyuas chav kawm tiavMenu. Nws yuav tsum zoo li cov ntawv qhia zaub mov tseem ceeb hauv chav kawm uas koj tau hais ua ntej, tab sis tsis txhob muaj cov hlua khoob raws li lub npe, nws yuav tsum siv cov ntawv sib txawv uas _init_ ua haujlwm siv raws li kev sib cav. Cov ntawv qhia zaub mov yuav tsum tau sau tias "Sim dua" thiab "Tawm" tam sim no, tab sis cov haujlwm uas lawv hu ua nyob li qub.

    chav FinishMenu (Ntawv qhia zaub mov): def _init _ (tus kheej, ntawv nyeem): super (FinishMenu, tus kheej)._ init _ (text) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Sim dua", startGame)), (MenuItem ("Tawm", pyglet.app.exit))] self.create_menu (menuItems)

  • Txheeb xyuas qhov ua tiav finishGame (). Nws yuav tsum coj cov ntawv raws li kev sib cav. Nws yuav tsum ua qhov tshwm sim ntawm cov ntawv qhia zaub mov tseem ceeb tom qab, FinishMenu nrog cov lus sib cav tau raug xa mus rau cov ntawv qhia zaub mov no. Tom qab ntawd nws yuav tsum khiav qhov xwm txheej no.

    def finishGame (ntawv nyeem): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (text)) director.run (menuSc)

5692759 30
5692759 30

Kauj Ruam 16. Ntxiv cov qhab nia

Nov yog qhov uas koj tau txais credit rau koj tus lej txaus, nrog rau muab credit rau lwm tus neeg uas tau pab koj raws txoj kev. Yog tias koj siv daim duab los ntawm lwm lub vev xaib (nrog kev tso cai), nco ntsoov ua tus cwj pwm ntawd rau nws tus tsim.

  • Tsim cov ntaub ntawv CREDITS thiab sau tag nrho koj cov qhab nia nyob ntawd, zoo li no:

    Penguin: Kelvin Shadewing, hauv CC0 Ice block: Michał Banas digit1024 ntawm opengameart.org hauv qab CC-BY-SA 3.0

  • Rov qab mus rau koj tus lej nab npawb Python thiab import Label los ntawm cocos.text.
  • Txhais cov subclass Khab nias ntawm Txheej. Hauv nws _init_ muaj nuj nqi, nyeem CREDITS cov ntawv thiab ua cov ntawv lo ntawm qhov chaw raug ntawm txhua kab hauv nws.

    chav Khab nias (Txheej): def _init _ (tus kheej): super (Credits, tus kheej)._ init _ () credFile = qhib ("CREDITS", "r") creds = credFile.read () creds = creds.split ("\ n ") rau kuv hauv ntau (0, len (creds)): credLabel = Label (creds , font_size = 32, anchor_x =" left ", anchor_y =" top ") credLabel.position = 25, 500- (i +1)*40 self.add (creditLabel)

  • Mus rau koj chav kawm ntawv tseem ceeb thiab ntxiv cov ntawv qhia zaub mov sau tias "Credits" uas hu rau qhov ua haujlwm showCredits thaum nyem.
  • Txhais cov subclass BackToMainMenuButton ntawm Cov Ntawv Qhia. Ua qhov no cov ntawv qhia zaub mov nrog ib yam khoom, sau tias "Rov Qab", uas hu rau showMainMenu ua haujlwm. Qhov "ntawv qhia zaub mov" no, uas zoo li lub pob, yuav tsum tau ua raws kab rov tav mus rau hauv qab thiab kab rov tav mus rau saum.

    chav BackToMainMenuButton (Ntawv qhia zaub mov): def _init _ (tus kheej): super (BackToMainMenuButton, tus kheej)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMu) create_menu (menuItems)

  • Txheeb xyuas qhov ua haujlwm showCredits. Nws yuav tsum ua qhov tshwm sim tawm ntawm MainMenuBgr txheej thiab Credits txheej thiab khiav qhov xwm txheej ntawd.

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

5692759 31
5692759 31

Kauj Ruam 17. Txheeb xyuas koj cov cai

Thaum koj xav tias koj ua tiav koj cov cai, koj yuav tsum saib txhua qhov nws dua. Qhov no tuaj yeem pab koj ceeb toom yog tias qee yam tuaj yeem ua kom zoo dua, lossis seb puas muaj qee cov kab tsis tsim nyog uas koj tsis nco qab tshem tawm. Yog tias koj ua raws li qhov piv txwv, koj tag nrho cov cai yuav tsum tam sim no zoo li hauv qab no:

    los ntawm cocos.director ntshuam * los ntawm cocos.menu ntshuam * los ntawm cocos.scene ntshuam * los ntawm cocos.layer ntshuam * los ntawm cocos.sprite ntshuam * los ntawm cocos.tiles ntshuam * los ntawm cocos.mapcolliders ntshuam * los ntawm cocos.actions ntshuam * los ntawm cocos.text ntshuam Label ntshuam pyglet.app los ntawm pyglet.window ntshuam qhov tseem ceeb los ntawm cov lej ntsais ntsais los ntawm random import randint # "tshaj tawm" thoob ntiaj teb hloov pauv keyboard = 0 scrMang = 0 chav kawm MainMenuBgr (ColorLayer): def _init _ (tus kheej): super (MainMenuBgr, self)._ init _ (0, 200, 255, 255) class MainMenu (Menu): def _init _ (self): super (MainMenu, self)._ init _ ("") self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Start Game", startGame)), (MenuItem ("Credits", showCredits)), (MenuItem ("Quit", pyglet.app.exit))] self.create_menu (menuItems) chav Khab nias (Txheej): def _init _ (self): super (Credits, self)._ init _ () credFile = open ("CREDITS", "r") creds = credFile.read () creds = creds.split ("\ n") rau kuv hauv ntau yam (0, len (creds)): credLabel = Label (creds [kuv], font_size = 32, anchor_x = "left", anchor_y = "top") credLabel.position = 25, 500- (i+1)*40 self.add (creditLabel) chav kawm BackToMainMenuButton (Ntawv qhia zaub mov): def _init _ (self): super (BackToMainMenuButton, tus kheej)._ init _ ("") self.menu_valign = BOTTOM self.menu_halign = LEFT menuItems = [(MenuItem ("Back", showMainMenu))] self.create_menu (menuItems) chav FinishMenu (Menu): def_ self, text): super (FinishMenu, self)._ init _ (text) self.menu_valign = CENTER self.menu_halign = CENTER menuItems = [(MenuItem ("Sim dua", startGame)), (MenuItem ("Quit", pyglet. app.exit))] self.create_menu (menuItems) class PlatformerController (Action): keyboard thoob ntiaj teb, scrMang on_ground = True MOVE_SPEED = 300 JUMP_SPEED = 500 GRAVITY = -1200 def start (self): self.target.velocity = (0, 0) def step (tus kheej, dt): thoob ntiaj teb keyboard, scroller yog dt> 0.1: # tsis txhob ua dab tsi thaum lub sijhawm poob haujlwm loj dhau vx, vy = self.target.velocity vx = (keyboard [key. RIGHT] - keyboard [key. LEFT]) * self. MOVE_SPEED vy += self. GRAVITY * dt yog self.on _ground thiab keyboard [key. SPACE]: vy = self. JUMP_SPEED dx = vx * dt dy = vy * dt kawg = self.target.get_rect () tshiab = last.copy () new.x += dx new.y + = dy self.target.velocity = self.target.collision_handler (kawg, tshiab, vx, vy) self.on_ground = (new.y == last.y) self.target.position = new.center scrMang.set_focus (* new.center) posX, posY = self.target.position yog posY <0: finishGame ("Game Over") rov qab yog posX> 800*3: # qib loj finishGame ("Qib Ua tiav") rov def defGame (ntawv): menuSc = Scene (MainMenuBgr ()) menuSc.add (FinishMenu (text)) director.run (menuSc) def showCredits (): credSc = Scene (MainMenuBgr ()) credSc.add (Credits ()) credSc.add (BackToMainMenuButton))) director.run (credSc) def generateTilemap (): colAmount = ceil (800 /16) * 3 # (screen dav / pobzeb loj) * 3 rowAmount = ceil (600 /16) # screen height / tile size tileFile = qhib ("levelMap.xml", "w") tileFile.write ('\ n / n / n') iceHeight = randint (1, 10) rau kuv hauv ntau (0, colAmount): tileFile.write ('') makeHole = Yog tsis tseeb yog rand int (0, 50) == 10 thiab kuv! = 0: # tsis txhob tso qhov ntawm qhov taw tes ua makeHole = Tseeb rau j hauv ntau (0, rowAmount): yog ua kom qhov: tileFile.write ('\ n') lwm: yog j <= iceHeight: tileFile.write ('\ n') lwm tus: tileFile.write ('\ n') iceHeight = randint (iceHeight-5, iceHeight+5) yog iceHeight <0: # txwv cov vuas los ntawm kev mus ib yam nkaus low iceHeight = randint (1, 5) yog iceHeight> rowAmount: # txwv cov vuas los ntawm kev mus rau dej khov siab Height = randint (int (rowAmount/2) -5, int (rowAmount/2) +5) tileFile.write ('\ n ') tileFile.write (' / n / n ') rau kuv hauv kab (0, colAmount): tileFile.write (' ') rau j hauv kab (0, rowAmount): tileFile.write (' / n ') tileFile.write ('\ n') tileFile.write ('\ n / n') tileFile.close () def startGame (): thoob ntiaj teb keyboard, scrMang generateTilemap () # fig = Sprite ('pingu.png') fig.position = (8, 250) figLayer = ScrollableLayer () figLayer.add (daim duab) # tileLayer = load ('levelMap.xml') solidTiles = tileLayer ['solid'] nsoliTiles = tileLayer ['not_solid'] # keyboard = key. KeyStateHandler () director.window.push_handlers (keybo ard) # fig.do (PlatformerController ()) mapcollider = RectMapCollider (tshaj tawm_on_bump = 'swb') fig.collision_handler = make_collision_handler (mapcollider, solidTiles) # scrMang = ScrollingManager () scrMang.add (nsoliTiles), z ntxiv (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 - a platformer simple", resizable = True) showMainMenu ()

  • Qhov ntawd yog 168 kab tag nrho, thiab 152 kab yog tias koj tsuas suav tus lej xwb. Qhov no ua rau zoo li ntau, tab sis rau qhov kev ua si nyuaj, qhov no yog qhov me me.
5692759 32
5692759 32

Kauj Ruam 18. Tiav lawm

Tam sim no sim qhov kev ua si. Thaum koj ua haujlwm qee yam, koj yuav tsum txheeb xyuas seb nws puas ua haujlwm thaum twg koj tau siv qee yam tshiab. Tsis tas li, koj yuav nyiam ua qhov game uas koj sau rau qee lub sijhawm.

Ntu 3 ntawm 3: Tshaj Tawm Game

5692759 52
5692759 52

Kauj Ruam 1. Sau qhov kev cia siab

Txhua tus neeg uas siv lwm lub khoos phis tawj yuav tsis muaj software zoo ib yam thiab cov tsev qiv ntawv teeb tsa ib yam li koj. Yog li, koj yuav tsum tau ua kom ntseeg tau tias txhua tus neeg uas teeb tsa koj cov game paub qhov tseeb lawv yuav xav kom nws ua dab tsi. Koj tsis tas yuav sau txhua qhov kev vam khom ntawm txhua qhov kev vam khom ntawm txhua qhov kev vam khom thiab ntxiv rau, tab sis koj yuav tsum tsawg kawg sau qhov kev vam khom ntawm koj pob khoom thiab lawv cov kev vam khom.

5692759 53
5692759 53

Kauj Ruam 2. Nco ntsoov tias koj tau tso cai siv tag nrho cov xov xwm

Qhov no siv rau txhua daim duab, suav nrog 3D qauv, suab paj nruag, sib tham, suab paj nruag, tsev qiv ntawv, thiab cov txheej txheem uas koj siv rau koj qhov kev ua si. Txhua yam koj tsis tau sau koj tus kheej.

  • Feem ntau muaj qee qhov xwm txheej, xws li yuav tsum tau credit rau tus sau lossis faib cov kev hloov kho ntawm cov xov xwm nyob hauv tib daim ntawv tso cai. Qee zaum koj yuav tuaj yeem siv cov duab tsis suav nrog tus tsim khoom ntev li koj tsis tau them nqi rau qhov kev ua si. Yog tias koj yuav tsum tau qiv tus sau, ua nws hauv qhov chaw pom zoo, zoo li "Credits" tab hauv koj qhov kev ua si.
  • Kuj tseem muaj kev tshaj xov xwm nrog kev thov cai thiab tsis muaj daim ntawv tso cai teev tseg, qee zaum nrog qee cov ntawv zoo li "Txhua txoj cai khaws tseg". Yog tias qhov xwm txheej ntawd, koj yuav tsum tau txais kev tso cai pom zoo los ntawm tus sau ua ntej suav nrog nws hauv koj qhov kev ua si.
  • Cov tsev qiv ntawv feem ntau tso tawm raws li ntawv tso cai uas tso cai rau lawv siv ua lub tsev qiv ntawv. Ib qho kev zam tshwj xeeb yog GPL yam tsis txuas qhov kev zam: Xws li daim ntawv tso cai tsuas yog tso cai siv nws hauv txoj haujlwm nrog qee yam ntawv tso cai. Thiab koj yuav tsum ib txwm nyeem tsawg kawg cov ntsiab lus tseem ceeb ntawm daim ntawv tso cai kom paub tseeb tias txhua yam koj ua nrog rau kev tshaj xov xwm lossis tsev qiv ntawv raug tso cai.

Ceeb toom: Siv xov xwm lossis tsev qiv ntawv nyob rau hauv ib txoj kev uas daim ntawv tso cai tsis tso cai hauv kev ua si uas koj tshaj tawm tuaj yeem ua rau koj raug teeb meem raug cai loj. Yog li thov nug tus sau lossis zam qhov tshaj tawm tag nrho yog tias koj tsis paub meej tias koj qhov kev tso cai raug tso cai.

5692759 54
5692759 54

Kauj Ruam 3. Txiav txim siab rau cov xwm txheej uas koj xav tshaj tawm koj cov game ntawm

Koj puas yuav muag koj cov game? Koj puas xav tso cai rau lwm tus siv koj cov duab thiab cov tswv yim? Thaum koj yuav tsum tau ceev faj txog kev tshaj xov xwm uas koj siv hauv koj txoj haujlwm, feem ntau koj tuaj yeem txiav txim siab seb koj xav tso cai rau lwm tus siv koj li game li cas. Koj tuaj yeem siv Daim Ntawv Pom Zoo CC0 daim ntawv tso cai tso koj cov game hauv qhov chaw pej xeem.. Txhawm rau tso cai faib thiab hloov kho raws qee qhov xwm txheej thaum khaws qee txoj cai, sim Gnu General Public License (GPL) lossis Berkeley Software Distribution (BSD) daim ntawv tso cai. Lossis, koj tuaj yeem ua rau koj li software muaj tswv, txhais tau tias tsis muaj leej twg raug tso cai faib lossis hloov kho nws yam tsis tau kev tso cai los ntawm koj.

Txawm hais tias nws muaj peev xwm ua kom tau nyiaj los ntawm kev muag kev ua si, nws tsis zoo li tib neeg yuav yuav koj thawj qhov kev ua si uas feem ntau tsis muaj qhov tshwj xeeb thiab tsis muaj dab tsi tshwj xeeb. Tsis tas li, yog tias txoj haujlwm pub dawb tsis ua haujlwm, cov neeg rub tawm nws yuav tsuas yog poob siab. Yog tias lawv tau them rau nws, txawm li cas los xij, lawv yuav thov kom lawv cov nyiaj rov qab, ua rau muaj teeb meem ntau ntxiv rau koj thiab cov neeg siv. Yog li txiav txim siab ua koj thawj ob peb txoj haujlwm muaj pub dawb

5692759 55
5692759 55

Kauj Ruam 4. Txiav txim siab seb koj xav tshaj tawm koj li game li cas

Txhua txoj hauv kev muaj qee qhov zoo thiab qhov tsis zoo, yog li koj yuav tsum txiav txim siab koj tus kheej.

  • Tshaj tawm nws ntawm lub vev xaib:

    Yog tias koj muaj lub vev xaib, koj tuaj yeem tso koj cov game kom nws muaj rau rub tawm. Nco ntsoov muab cov lus qhia meej txog yuav ua li cas rau nruab software, nrog rau txhua qhov yuav tsum tau muaj kev vam khom. Qhov tsis zoo ntawm qhov no yog cov players yuav tsum teeb tsa kev vam khom tus kheej, uas yuav nyuaj rau qee tus neeg.

  • Ua pob rau tus tswj hwm pob:

    Muaj cov tswj hwm pob sib txawv, zoo li apt, Yum, thiab Homebrew, uas ua rau nws yooj yim rau tib neeg los teeb tsa cov apps hauv Linux thiab Linux ib puag ncig. Lawv txhua tus muaj cov pob sib txawv. Qhov zoo ntawm pob khoom yog tias lawv tau nruab txhua qhov kev cia siab (yog tias koj teeb tsa lawv kom raug). Yog li cov neeg uas ua ntawv tsuas yog yuav tsum nruab koj pob thiab tuaj yeem ua si qhov game. Qhov teeb meem yog tias muaj ntau tus tswj hwm pob sib txawv ntawm cov platform sib txawv, yog li koj yuav tsum tso qee txoj haujlwm los muab pob khoom rau txhua qhov uas nquag siv.

5692759 56
5692759 56

Kauj Ruam 5. Ncaj nraim rau koj qhov program

Xav txog kev xa koj cov program mus rau lub pob ntim khoom loj, zoo li cov Ubuntu thiab Debian tswj hwm, kom tso cai rau yooj yim teeb tsa. Tsis tas li, tshaj tawm hauv cov rooj sib tham tsim nyog, zoo li cov phiaj xwm ntu ntawm GameDev lossis ib feem ntawm tigSource. Tab sis tsis txhob poob siab yog tias koj thawj zaug kev ua si tsis dhau los ua neeg nto npe. Yog tias koj muaj lub tswv yim tias ntau tus neeg nyiam nws, koj qhov kev ua si tuaj yeem dhau los ua neeg paub zoo.

Lub tswv yim

  • Ua siab ntev thiab txaus siab kawm. Lub cajmeem tuaj yeem ua rau muaj kev ntxhov siab rau lub sijhawm!
  • Yog tias koj xav paub yuav ua li cas qee yam ua tiav hauv lwm qhov kev ua si, thiab qhov kev ua si yog qhib-qhov, koj tuaj yeem saib ntawm nws qhov chaws.
  • Thaum nrhiav kev tshaj xov xwm, sim nrhiav cov ntsiab lus uas nyob hauv zej tsoom. Tshawb nrhiav "Creative Commons" lossis "Public Domain" cov duab thiab nkauj, thiab siv cov vev xaib zoo li https://opengameart.org lossis
  • Tsis txhob theej cov ntawv loj ntawm cov cai yam tsis tau tshawb xyuas daim ntawv tso cai. Nws tau txwv ntau zaus, thiab yog tias tsis yog, feem ntau yuav tsum muaj qhov tshwj xeeb.
  • Tsis txhob ua spam lossis tshaj tawm hauv qhov chaw tsis tsim nyog thaum txhawb nqa koj qhov kev ua si. Qhov no yuav ua rau koj raug thaiv los ntawm nplooj ntawv, tsuas yog thab plaub, thiab yuav ua rau koj lub koob npe nrov puas.

Pom zoo: