Programarea Jocurilor Pentru Adolescenti

10
7/24/2019 Programarea Jocurilor Pentru Adolescenti http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 1/10 IV DIN PARTEA AUTORULUI M ãiculiþã, da’ la mulþi trebuie sã le mai mulþumesc… Parcã aº fi la discursul de acceptare al premiului Oscar: mi-e fricã sã nu înceapã orchestra sã cânte ºi sã fiu invitat afarã de pe scenã. Oricum, în primul rând îi mulþumesc lui André LaMothe fiindcã mi-a dat o ºansã ºi fiindcã m-a invitat la prânz. Am sã mã revanºez pentru asta într-o zi. Le mulþumesc tuturor celor de la Premier Press: editorului de producþie Jenny Davidson, redactorului Kezia Endsley, editorului de achiziþii Emi Smith ºi editorului CD-ului, Brandon Penticuff. Mulþumiri ºi lui Adam Hepworth, care ºi-a petrecut o mare parte din „ocupata” lui zi citindu-mi textul ºi corectând o mulþime de greºeli. Tuturor fraþilor ºi surorilor mele, lui Rachi, care s-a oferit sã mã ajute, deºi era la un ocean distanþã, Nagina, al cãrei ajutor ºi susþinere (ºi numeroase telefoane) m-au ajutat sã o scot la capãt, ºi lui Ramit, care mi-a oferit un mode ºi care m-a ajutat la greu (ºi care mi-a dat ºansa sã folosesc cuvântul „suspensie“ într-o propoziþie). Vã mulþumesc cã aþi fost aici ºi m-aþi ajutat când am avut nevoie. Mamei ºi tatãlui meu: n-aº fi reuºit asta fãrã voi. Vã iubesc foarte mult. În final, mulþumiri lui Edgar L. Ibarra (Feo) pentru desenele sale ºi lui Thomas Stenbäck pentru munca lui la muzica de pe acest CD. De asemenea, lui Ari Feldman, fiindcã mi-a permis sã-i folosesc biblioteca de sprite-uri pe CD. De asemenea, pentru crearea unui program demo al cãrþii, mulþumesc lui Jason Brasier ºi lui Edgar Ibarra pentru  Rockfall , precum ºi lui Marcus „Eikon“ Smith pentru Galaxiga. ªi tuturor ale cãror nume le-am uitat, se ºtiu ei cine sunt. Mulþumesc!

Transcript of Programarea Jocurilor Pentru Adolescenti

Page 1: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 1/10

IV

DIN PARTEA AUTORULUI

Mãiculiþã, da’ la mulþi trebuie sã le mai mulþumesc… Parcã aº fi la discursulde acceptare al premiului Oscar: mi-e fricã sã nu înceapã orchestra sã cânteºi sã fiu invitat afarã de pe scenã. Oricum, în primul rând îi mulþumesc lui

André LaMothe fiindcã mi-a dat o ºansã ºi fiindcã m-a invitat la prânz. Am sã mã revanºezpentru asta într-o zi. Le mulþumesc tuturor celor de la Premier Press: editorului de producþieJenny Davidson, redactorului Kezia Endsley, editorului de achiziþii Emi Smith ºi editoruluiCD-ului, Brandon Penticuff.

Mulþumiri ºi lui Adam Hepworth, care ºi-a petrecut o mare parte din „ocupata” lui zicitindu-mi textul ºi corectând o mulþime de greºeli. Tuturor fraþilor ºi surorilor mele, luiRachi, care s-a oferit sã mã ajute, deºi era la un ocean distanþã, Nagina, al cãrei ajutor ºi

susþinere (ºi numeroase telefoane) m-au ajutat sã o scot la capãt, ºi lui Ramit, care mi-aoferit un mode ºi care m-a ajutat la greu (ºi care mi-a dat ºansa sã folosesc cuvântul„suspensie“ într-o propoziþie). Vã mulþumesc cã aþi fost aici ºi m-aþi ajutat când am avutnevoie. Mamei ºi tatãlui meu: n-aº fi reuºit asta fãrã voi. Vã iubesc foarte mult.

În final, mulþumiri lui Edgar L. Ibarra (Feo) pentru desenele sale ºi lui Thomas Stenbäckpentru munca lui la muzica de pe acest CD. De asemenea, lui Ari Feldman, fiindcã mi-apermis sã-i folosesc biblioteca de sprite-uri pe CD.

De asemenea, pentru crearea unui program demo al cãrþii, mulþumesc lui Jason Brasierºi lui Edgar Ibarra pentru Rockfall, precum ºi lui Marcus „Eikon“ Smith pentru Galaxiga.

ªi tuturor ale cãror nume le-am uitat, se ºtiu ei cine sunt. Mulþumesc!

Page 2: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 2/10

Page 3: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 3/10

VI

CUPRINS

Introducere ................................................................... XI

PARTEA  I: BAZELE LIMBAJULUI BASIC ............................ 1

Capitolul 1 Primii paºi .......................................................................3Un scurt istoric al limbajului BASIC ................................................... 3

Instalarea programului BlitzPlus .............................................. 4Ferestre ºi panouri ................................................................... 5Bare cu instrumente ................................................................ 6

Meniuri ..................................................................................... 7Primul joc: KONG .............................................................................. 7Compilarea codului ................................................................ 16

Rezumat ........................................................................................... 18

Capitolul 2 Primele noþiuni de BASIC............................................19Salut, lume! ...................................................................................... 19Variabile ........................................................................................... 23

Declararea variabilelor........................................................... 23Utilizarea variabilelor ............................................................. 24

Date de intrare ................................................................................. 26Condiþionalele .................................................................................. 28

Adevãrat ºi fals ...................................................................... 28If…Then (dacã…atunci) ........................................................ 29

Page 4: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 4/10

Cuprins

If…Then…Else (dacã…atunci…altfel) .................................. 30Select…Case ......................................................................... 32

Operatori logici ................................................................................. 33Operatorul NOT ..................................................................... 35

Comanda Goto ................................................................................. 35

Un joc de ghicit cu interfaþã text ....................................................... 37Rezumat ........................................................................................... 39

Capitolul 3 Bucle, funcþii, tablouri ºi tipuri ...................................41Noþiunea de buclã ............................................................................ 41

For…Next .............................................................................. 42While…Wend......................................................................... 46Repeat…Until ........................................................................ 48

Funcþii .............................................................................................. 51

Consideraþii privind domeniul de vizibilitate .......................... 53Când se folosesc funcþiile ...................................................... 57Tablourile ......................................................................................... 58

Tablouri multidimensionale .................................................... 64Utilizarea tipurilor ............................................................................. 67

Sisteme de coordonate .......................................................... 75For…Each…Next .................................................................. 77

Totul la un loc: Textanoid! ................................................................ 79Rezumat ........................................................................................... 93

Capitolul 4 Factorul stil ...................................................................95Dezvoltarea stilului ........................................................................... 95

Spaþiul liber ºi indentarea ...................................................... 96Comentarii ........................................................................................ 97

Comentarii anterioare programului ........................................ 99Comentarii în programul principal........................................ 100Comentarii de funcþie ........................................................... 100

Nume de funcþii ºi de variabile ....................................................... 101Nume ................................................................................... 101

Format de nume .................................................................. 101Rezumat ......................................................................................... 103

Page 5: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 5/10

CuprinsVIII

PARTEA  A II-A: ΠN FINE, GRAFICÃ!................................ 105

Capitolul 5 Primele noþiuni de graficã .........................................107Crearea ferestrei grafice ................................................................ 107

Lãþime ºi înãlþime ................................................................. 108

Adâncimea de culoare ......................................................... 109[Mode] .................................................................................. 110

Imagini............................................................................................ 114LoadImage ........................................................................... 114DrawImage .......................................................................... 116CreateImage ........................................................................ 118MaskImage .......................................................................... 122

Culori .............................................................................................. 125RGB ..................................................................................... 126

Color .................................................................................... 128Cls ºi ClsColor ..................................................................... 130

Rezumat ......................................................................................... 131

Capitolul 6 Rãsfoirea paginilor ºi reprezentarea pixelilor.........133Rãsfoirea paginilor ......................................................................... 133

Buffere ................................................................................. 136SetBuffer .............................................................................. 137CreateImage ........................................................................ 143

Blocarea ºi deblocarea bufferelor .................................................. 156

Lock/Unlock ......................................................................... 156ReadPixel()/ReadPixelFast() ............................................... 157WritePixel/WritePixelFast .................................................... 161

Utilizarea bufferelor: un program de desenare .............................. 166Iniþializare ............................................................................ 168Bucla principalã ................................................................... 170Funcþii .................................................................................. 172

Rezumat ......................................................................................... 180

Page 6: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 6/10

Cuprins

Capitolul 7 Primele noþiuni de programare a imaginilor ...........181Transformãri................................................................................... 181

Translaþia ............................................................................. 181Scalarea............................................................................... 186Rotaþia ................................................................................. 209

Paralacticã ..................................................................................... 217TileBlock ºi TileImage ......................................................... 218

Rezumat ......................................................................................... 225

Capitolul 8 Animaþie ......................................................................227Utilizarea bitmap-urilor la animaþii ................................................. 227

Realizarea bitmap-urilor ...................................................... 234Afiºarea miºcãrii .................................................................. 239

Rezumat ......................................................................................... 247

Capitolul 9 Detecþia coliziunilor ...................................................249Coliziuni de bazã ............................................................................ 249Cercuri de delimitare ...................................................................... 253

Distanþa dintre puncte .......................................................... 253Raze .................................................................................... 255

Casete de delimitare ...................................................................... 260Coliziuni pixel-imperfecte ............................................................... 268Coliziuni pixel-perfecte ................................................................... 272Rezumat ......................................................................................... 274

PARTEA A III-A: ULTIMELE PIESE DIN PUZZLE .................. 275

Capitolul 10 Manipularea datelor de intrare .................................277Manipularea tastaturii ..................................................................... 277

KeyDown() ........................................................................... 278KeyHit() ................................................................................ 285

Maparea mouse-ului pe ecran ....................................................... 294Afiºarea cursorului mouse-ului ............................................ 295

Ce-ai spus? Tratarea apãsãrilor pe butoanele mouse-ului . 298Rotiþa mouse-ului ................................................................. 306Tratarea datelor introduse de la joystick ........................................ 310Rezumat ......................................................................................... 312

Page 7: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 7/10

CuprinsX

Capitolul 11 Sunete ºi muzicã ........................................................313Sunete ............................................................................................ 313

 Încãrcarea sunetelor ............................................................ 314Ascultã cu atenþie - redarea sunetelor ................................. 316

Muzicã ............................................................................................ 330Canale ºi PlayMusic() .......................................................... 330Niþicã zãpãcealã dã canale .................................................. 331

Rezumat ......................................................................................... 335

Capitolul 12 Inteligenþa artificialã ..................................................337Numere aleatoare .......................................................................... 337

Crearea unui temporizator cu funcþia MilliSecs() ................ 342Vânãtoarea ºi evitarea ................................................................... 349

Vânãtoarea .......................................................................... 349

Evitarea................................................................................ 354Rezumat ......................................................................................... 356

Capitolul 13 Ultima frontierã: Invaderz!!! ......................................359Sã-i dãm bãtaie: planificarea jocului .............................................. 359Constante, funcþii ºi tipuri ale jocului Invaderz!!!............................ 362Cum se joacã Invaderz!!! ............................................................... 366Epilog ............................................................................................. 368

PARTEA  A IV-A: ANEXE............................................. 371

Anexa A Referinþa codurilor de scanare .................................373

Anexa B Legãturi (link-uri) utile ...............................................379Link-uri pentru BlitzBasic ............................................................... 379Link-uri generale legate de programarea jocurilor ......................... 380

Anexa C Ce se aflã pe CD .........................................................381Source ............................................................................................ 382Art ................................................................................................... 382

Sounds ........................................................................................... 382Games............................................................................................ 382Programs ....................................................................................... 383

Index ............................................................................384

Page 8: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 8/10

INTRODUCERE

Hei, salut, cititorule. Mersi cã mi-ai cumpãrat cartea. Îþi sunt cu adevãratrecunoscãtor pentru asta.

Ce este programarea? Programarea, dupã definiþia din Programming.com, este „un setde instrucþiuni codate care permite unei maºini, mai ales unui calculator, sã efectueze osuccesiune doritã de operaþii“. Cu alte cuvinte, programarea îþi permite sã-þi faci calculatorulsã facã ceea ce vrei tu sã facã. Programarea se foloseºte în toate aspectele legate decalculator, dar existã diferite tipuri de programare. În aceastã carte vom vorbi despre

 programarea jocurilor .Programarea jocurilor este foarte diferitã de toate celelalte tipuri de programare. Când

 îþi porneºti calculatorul, vezi deseori programe statice, care stau locului ºi aºteaptã sã faciceva. Jocurile, nu. Jocurile sunt mereu active ºi n-au nevoie ca jucãtorul sã întreprindãvreo acþiune ca sã le menþinã „în funcþiune“.

Sigur, asta înseamnã cumva cã programarea jocurilor este niþel mai durã decât altestiluri de programare? Da ºi nu. Deºi uneori programarea jocurilor poate fi dificilã, carteade faþã se strãduieºte sã transforme dificultatea în a doua naturã. Vom folosi un limbaj deprogramare numit BASIC, care, aºa cum probabil îþi imaginezi, este destul de… elementar(în limba englezã basic).

Ce conþine cartea?Aceastã carte se doreºte a fi un ghid care sã înveþe pe orice începãtor sã proiecteze ºi

sã dezvolte jocuri. În carte veþi gãsi o sumedenie de informaþii, toate scrise cu scopul de avã ajuta sã vã atingeþi scopul de a crea un joc. Fiecare capitol se bazeazã pe capitoleleanterioare ºi face cartea sã semene cu o scarã - o urci pas cu pas. Ultimul capitol te ajutãsã-þi foloseºti toate cunoºtinþele ajunse la punctul culminant pentru producþia unui jocfinal.

Page 9: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 9/10

IntroducereXII

Partea I discutã despre limbajul BlitzPlus. În acest interval, nu vom vorbi despreprogramele grafice, ci vom folosi texte pentru a scoate în evidenþã punctele de reper alelimbajului.

Partea a II-a  oferã cititorului toate noþiunile privind grafica jocurilor. Gãsiþi aiciinformaþii precum modificarea culorilor, încãrcarea ºi afiºarea imaginilor, crearea de

fundaluri derulante ºi altele asemenea.Partea a III-a examineazã alte aspecte legate de programarea jocurilor. Cititorul poate

 învãþa sã utilizeze datele introduse de la tastaturã, sunetele ºi muzica, dupã cum poate lua în calcul inteligenþa artificialã. De asemenea, aceastã parte conþine jocul final spre a cãruirealizare tinde întreaga carte.

Partea a IV-a conþine toate anexele cãrþii. Vei descoperi toate codurile de scanare(pentru manipularea intrãrilor), o listã a site-urilor Web unde îþi poþi aprofunda cunoºtinþele,precum ºi conþinutul CD-ului.

Cine eºti tu?Cred cã poþi sã rãspunzi la întrebarea asta mai bine decât mine, dar stai sã-þi spun ce

anume caut eu la un cititor. Mai întâi, bãnuiesc cã eºti fie un adolescent interesat înprogramarea jocurilor, fie un pãrinte interesat ca odrasla sã înveþe programarea jocurilor.Cam la asta se reduce totul: interesul. Cartea nu este gânditã sã fie dificilã. Ea îl ajutã pecititor sã pãtrundã în lumea programãrii jocurilor.

Cerinþele sunt literalmente foarte reduse. Tot ce-þi trebuie sunt cunoºtinþe elementarede matematicã, precum adunarea, scãderea, înmulþirea ºi împãrþirea. Dacã stãpâneºti acestetehnici, eºti practic pregãtit! De asemenea, aº sugera cititorului sã cearã ajutorul pãrintelui

ori de câte ori este nevoie. Vom folosi unele noþiuni rudimentare de algebrã, dar cazurilesunt rare ºi reduse ca numãr, deci n-ar trebui sã fie greu de înþeles.

Nu trebuie sã ai alte noþiuni de limbaje de programare. Nu cã nu þi-ar fi de folos dacãle ai, desigur. Dacã ºtii alte limbaje, ai ce învãþa ºi din aceastã carte. DarProgramarea

 jocurilor pentru adolescenþi permite însuºirea noþiunilor de programare a jocurilor, alãturide abilitatea de implementare propriu-zisã a jocurilor.

Dacã eºti pãrintele unui copil care vrea sã înveþe programare, asta este cartea de careai nevoie. Programarea în general este un subiect lung ºi plictisitor, dar programarea jocurilor

 îi permite copilului tãu sã înveþe lucruri distractive. Ajutã-þi copilul la programare în timpce el sau ea parcurge cartea. Nu numai cã veþi învãþa amândoi programare, dar, cine ºtie?poate cã astfel se va întãri legãtura dintre pãrinte ºi copil (asta vine de la psihologul dinmine).

Page 10: Programarea Jocurilor Pentru Adolescenti

7/24/2019 Programarea Jocurilor Pentru Adolescenti

http://slidepdf.com/reader/full/programarea-jocurilor-pentru-adolescenti 10/10

Introducere

Cine sunt eu?

Salut la tot poporul! Eu sunt Maneesh Sethi, sunt student ºi motivul pentru care scriuaceastã carte este fiindcã am convingerea cã, fiind la rândul meu adolescent, aº fi cel maiindicat sã-i ajut pe alþi adolescenþi sã înveþe programare. Am început sã programez în

1999, în C ºi C++. Cu doi ani în urmã am descoperit BlitzPlus ºi de atunci îl studiez.BlitzPlus pare a fi metoda cea mai simplã pentru ca orice începãtor sã înceapã a scrie jocuri, ºi vreau sã-l ajut pe cititor sã avanseze cât mai rapid posibil. Site-ul Web al acesteicãrþi este situat la adresa www.maneeshsethi.com ºi îmi poþi trimite mesaje cu orice întrebãri(înainte sau dupã ce ai cumpãrat cartea) la [email protected]. Îmi place lanebunie sã primesc mesaje de e-mail!

Convenþii folosite în aceastã carte

Notã

Notele furnizeazã informaþii suplimentare referitoare la o caracteristicã, dezvoltã o idee privind cumtrebuie efectuatã o anumitã operaþie sau ilustreazã o chestie haioasã.

Atenþie

Acestea te avertizeazã cu privire la probleme potenþiale ºi-þi aratã ce sã nu  faci.

Sugestie

Sugestiile oferã informaþii pertinente cu privire la o metodã mai bunã, mai rapidã sau mai uºoarã de a

face un anumit lucru.

Sã ne pregãtim de dans…

Dacã tot mai rãsfoieºti cartea aceasta la librãrie, acum e momentul sã o iei acasã. Ceide la librãrie ar mai fericiþi dacã mai întâi ai cumpãra-o (ca ºi mine, de altfel!).

Prima parte îþi prezintã rapid toate detaliile limbajului de programare BlitzPlus.ªi uite-aºa începem…