Cum de a crea jocuri pentru Android. Eșecul în lungime pe an sau experiența dezvoltării unui joc pentru Android

Mulți oameni care descarcă jocuri pentru platforme mobile, cred că: "De ce nu aduceți visul la realitate? De ce să nu faceți produsul dvs. care să fie mai bun și mai interesant ceea ce oferă deja o industrie interactivă de divertisment?" Dacă nu știți cum să creați jocuri pe Android, dar doriți să învățați, acest articol va spune despre unele dintre capcanele care așteaptă dezvoltatorii novici.

Idee

Primul lucru este necesar pentru a crea jocul - ideea. În prima etapă, poate fi scrisă sub orice formă. Este de dorit ca ea să fie "agățată" și a fost clară. Cel mai probabil, în procesul de realizare, acesta va fi schimbat. Ceva va trebui să adauge și ceva este complet îndepărtat sau eliminat. Nu este nimic ciudat în acest sens - cu o muncă suplimentară de detalii, funcționalitatea nu numai că trebuie să fie descrisă temeinic, ci și să o verifice asupra adecvării.

Nu este necesar să abandonați complet descrierea primară a ideii și să începeți să creați jocuri rusești pe Android, fiind rata această etapă. Colecția de gânduri este punctul principal al pornirii, din care este mai ușor să începeți să vă mișcați. În plus, ideile stabilite pe hârtie vor arunca o privire la obiectivitatea intenționată, ar putea fi posibilă notați în avans și corectați punctele slabe.

Lista de caracteristici

Deoarece crearea de jocuri pe Android este imposibilă fără studiul lor detaliat, în acest stadiu va trebui să continue să lucreze și să descrie caracteristicile care vor fi în joc. Să dăm un exemplu: Dumnezeul serii de război este Slasher. Armele personajului principal - biciul. În timpul bătăliei, puteți face atacuri de combo frumoase. Fiecare nivel este completat cu o luptă de sef.

Această listă este destul de slabă și reflectă numai caracteristicile principale, adică cele care alocă jocul pe fundalul altora. De fapt, sunt mult mai mult, dar alte caracteristici sunt secundare. Când descrieți primele ar trebui să fie cele fără care viitoarea dvs. creație nu va putea exista, iar acestea din urmă sunt mai puțin importante care pot fi sacrificate în favoarea vitezei de dezvoltare.

Diemond.

Deoarece crearea unui nou joc fără acest document este aproape imposibil, va trebui să lucrați la el. Diezok - o reducere de la "document de design", include descrierile cele mai detaliate:

  • Modelul obiectului și funcționalitatea entității.
  • Specificații funcționale.
  • Joc de conținut.
  • Interfață.
  • Dacă este necesar, se poate adăuga baza de cunoștințe.
  • Model de obiect.

Modelul obiectului

Modelul de obiect conține informații despre fiecare entitate de joc: arme, armură, NPC, vrăji, jucător. Este unic pentru fiecare joc.

În cadrul funcționalității trebuie înțelese:

  • Este posibil să purtați \\ pentru a elimina \\ cumpărați \\ vânzare \\ îmbunătățit.
  • Va fi în inventar după moarte.
  • Pierderea dacă puterea va pierde în timp sau cu unele acțiuni.
  • Dacă caracteristicile caracterului sau grupului crește.
  • Proprietățile speciale au set.

Punctele descrise mai sus nu sunt obligatorii, numărul acestora poate fi redus sau crescut pentru fiecare grup de entitate individual.

Specificații funcționale

Pentru a continua răspunsul la întrebarea modului de a crea jocuri pentru Android, ar trebui să vorbiți despre următoarea secțiune a Dzdok. Specificațiile funcționale descriu gameplay-ul piesei. Aici trebuie să împărtășiți exact cât mai mult posibil, care este capabil să facă personajul principal și cum este implementat. Același lucru trebuie făcut pentru fiecare NPC separat. În plus față de caracterele de joc, ar trebui să fie afectate kiturile de prim ajutor, armele, armura, elementele de intrare.

De fapt, această secțiune este o consolidare a regulilor care afectează toate momentele de joc pornind de la meniu și terminând cu deteriorarea impactului. Decât mai mult, veți lucra fiecare element individual, cu atât va fi mai ușor să vă implementați proiectul.

Conţinut

Înainte de a crea un joc bun, este necesar să ne gândim și ce anume va fi în ea. Descrierea specificațiilor, puteți specifica că caracterele vor trage de la arme de foc în care cartușele sunt încărcate cu o deteriorare fixă \u200b\u200brigidă. Dacă intrați în NPC din acest parametru va deduce puterea armurii. De asemenea, va trebui să specificați numele fiecărei arme individuale, armură, NPC. Și, bineînțeles, este necesar să descriem conținutul - acestea sunt cărămizi, din care întregul joc va fi mai târziu construit.

Interfață

Interfața este un set de funcții și butoane, cu care utilizatorul va interacționa cu programul. Principalul lucru este că ar trebui luată în considerare atunci când este creată - comoditate. Pentru a înțelege cum să organizați toate elementele, puteți rula și analiza cele mai bune eșantioane ale genului, au mutat cele mai potrivite soluții la proiectul dvs.

Selectarea motorului sau designerului

Un alt pas care va trebui să-și îndeplinească înainte de a crea jocuri pe Android, - să aleagă vremurile au trecut acele vremuri când totul era necesar să facă de la zero. Astăzi, luând constructorul gata, puteți efectua toate lucrările scriind un cod minim.

Alegerea motorului merită făcută, pe baza unor caracteristici:

  • Termeni de utilizare.
  • Capabilități.
  • Preț.
  • Dezvoltatorii de sprijin.
  • Documentul.
  • Dimensiunea comunității.
  • Simplitate.
  • Extensibilitate.

Termeni de utilizare: Poate că ați cumpărat o dată un constructor, nu veți deveni proprietarul său complet. Se întâmplă că, în succesul comercial al jocului, trebuie să plătiți procentul dezvoltatorilor profitului. Principalul lucru - înainte de a crea jocuri pe Android, verificați produsul selectat pentru implementare.

Capabilități: Trebuie să supraviețuiească complet nevoilor dezvoltatorului. Dacă produsul oferă mai mult decât aveți nevoie, jocul poate fi ușor extins, pentru a utiliza noi funcții ale Dzidok. Dar gândiți-vă la echilibru! Utilizați motorul ireal pentru Tetris este prost.

A sustine: În primul rând, este important să aflați dacă produsul are dezvoltare? Erorile sunt corectate de la versiunea la versiune? Privă cu noi funcționalități și unelte? Motorul care se dezvoltă este rapid, are un avantaj față de motor, înghețat cu câțiva ani în urmă.

Comuniy.: Care este numărul celor care folosesc constructorul? Dacă utilizatorii au un număr mare, găsiți documente, lecții, clase de masterat, exemple nu sunt o problemă. Dacă utilizatorii sunt relativ mici, aceste informații pot fi disponibile în volum care vă vor permite să faceți ceva competitiv.

Extensibilitate: Înainte de a vă crea propriul joc, lucrați pentru a afla dacă modulele inutile pot fi conectate la motorul selectat. Acestea sunt de obicei folosite pentru a exporta sau importa modele tridimensionale, sunete, scripturi, sprite. Dacă există suport pentru astfel de instrumente, constructorul nu se limitează la utilitățile interne pentru crearea conținutului.

Udk.

Kitul de dezvoltare nereal nu este cel mai ușor de stăpânit motorul de joc, dar unul dintre cele mai puternice. Utilizează nu numai dezvoltatorii novici, ci și corporații mari. Dacă sunteți în căutarea unui răspuns la întrebarea: "Cum de a crea un joc 3D și ce motor pentru a face acest lucru pentru asta?" - Ar trebui să explorați posibilitățile UDK.


Pentru a descrie logica programului, limba de scriptură internă este utilizată - nerealiză. Site-ul dezvoltatorului oferă multe lecții, ambele fotografiate pe video și descrise în versiunea textului. În același timp, ele acoperă funcționalitatea maximă - de la editor înainte de a-și scrie scripturile.

Cuplu 2D / 3D

Cuplul este unul dintre cei mai populari designeri de jocuri pentru platforme mobile. Are tot setul de editori și depanare necesar. Când se dezvoltă, programatorii au acordat o mare atenție comodității și au încercat să facă toate utilitățile cele mai simple și accesibile.

Designerul vine cu documentația care descrie majoritatea posibilităților. Pe site-ul oficial, pot fi găsite programe de instruire și surse de mai multe jocuri gata făcute.

Pentru a scrie scripturi în cuplu, limba scriptului de cuplu este încorporată. Proprietățile fiecărui obiect pot fi definite în avans. De asemenea, în designerul construit în setul Box2D, care este angajat în calcule fizice.


Dacă încercați să găsiți răspunsul la întrebarea: "Cum să creați și la ce motor să faceți acest lucru pentru asta?" - Puteți declara în siguranță că cuplul vă va permite să faceți un proiect multiplayer într-un timp scurt. Toate funcționalitățile necesare sunt construite în avans, iar exemplele pe site-ul oficial vor arăta cum să se utilizeze este cel mai rațional.

Studiu

După selectarea motorului de joc, rămâne încă incomprehensibil cum să creați un joc. Va trebui să vă petreceți mult timp în formarea dvs. Deoarece încă nu există comenzi, va trebui să faceți totul: scrieți scripturi, creați texturi, sprite, modele (dacă un joc este tridimensional), scrie script, test. Este ușor de ghicit că un dezvoltator novice va trebui să înțeleagă elementele de bază de la mulți scriitori, tester, artist, designer.

Cel mai bine este să învățați în practică, adică în procesul de lucru la proiectul dvs. O altă modalitate de a explora toate lucrările necesare în compania care dezvoltă jocuri. În același timp, nu este necesar să marcați imediat poziția programatorului principal: chiar dacă sunteți invitat să vă angajați în afacerile de rutină, nu refuzați să vă uitați la jocurile din interior.

Lucrul în orice companie începe mai jos, acest lucru este normal. Da, și abilitățile scriptului, designerul de nivel, echilibrarea, testerul va fi foarte util, iar acestea sunt tocmai acele industrii în care majoritatea juniori funcționează. După câțiva ani de astfel de clase, va fi posibil să învățați cum să creați Dzeski și sarcini tehnice, să aflați despre Bagtrakera și să formați baza de contact. După lucrarea făcută, pentru a crea jocuri rusești pe Android, va dura pentru a petrece mai puține forțe, pentru că sunteți prin toate abilitățile și abilitățile necesare.

Este posibil ca, oferind competența sa în probleme de dezvoltare, nu va trebui să părăsiți vechea echipă, în plus, în el veți lua o poziție de lider cu proiectul dvs.

Cum de a crea un joc pentru Android?











Crearea unui joc pentru orice sistem de operare implică cunoașterea programării. Chiar și pentru cele mai simple jocuri precum Bird Bird, este necesar să-și cunoască fundațiile. Să ne uităm la modul în care jocul este creat de exemplul sistemului de operare Android.

Motor

Prima etapă în scris jocul este de a instala motorul. Rețeaua are numeroase motoare scrise în diferite limbi de programare. Desigur, motoarele plătite au mai multe funcții, ele diferă în operațiuni mai stabile și deschid oportunități excelente. Cu toate acestea, costul lor poate fi foarte mare. Prin urmare, ca exemplu, vom lua un motor libgdx gratuit.

Acest motor are oportunități destul de mari și are instrucțiuni de utilizare în limba rusă. Motorul este multiplatform, și, prin urmare, jocul care va fi scris pe acesta va putea fi instalat pe alte platforme.

Mediu de programare

De asemenea, foarte un punct important este utilizarea mediului de programare. Sub acest termen implică un instrument în care va apărea piesa. În cazul motorului Libgdx, mediul de programare va fi exlipce. Deoarece motorul de joc a fost scris în limba de programare Java, atunci pentru a utiliza mediul de programare, va trebui să utilizați abilitățile de bază și cunoștințele de programare în această limbă. Prin urmare, dacă nu cunoașteți Azov, va trebui să le studiați.

Crearea de proiect

Pentru a scrie un joc pe Android, precum și pe orice altă platformă, trebuie mai întâi să creați un proiect. Fa-o usor. În cazul libgdx, este suficient să prindeți motorul în dosar și să găsiți același fișier în el. Apoi, va trebui să faceți clic pe butonul "Project" și vă veți găsi deja într-un pas de la crearea proiectului. Apoi, va fi necesar doar să alegeți o platformă pentru joc și să specificați numele proiectului. În configurația trebuie să specificați unde va fi postat jocul în mediul de programare. Motorul în sine va crea un proiect și spune-mi dacă ați făcut ceva greșit. Apoi, puteți merge la mediul de programare și începeți să scrieți jocul.

După cum puteți vedea, crearea unui joc pentru Android și orice alt sistem de operare este pur și simplu imposibil fără cunoașterea elementelor de bază ale limbajelor de programare. Cu toate acestea, acum motoarele devin mai bune și mai convenabile pentru cei care încep doar calea lor în această chestiune. Un exemplu al acestui motor este, de asemenea, un producător de jocuri. Despre acest motor și despre crearea unui joc pe el puteți citi în articol.

Elimată: 13378.

Pe Habré, există multe posturi despre diferite aspecte ale Gamedeva sub Android, dar nu am întâlnit o singură istorie și eliberare suficientă și am decis să o rezolvăm. În acest articol, voi vorbi despre calea pe care eu și partenerii mei am trecut de la dorința de a crea un joc bun la eliberarea însăși.
Cine se întreba ce lecții am învățat și ce experiență câștigată, bun venit la pisică.

1) Crearea de gameplay și dezvoltare prototip

Tot jocul jocului nostru a fost de realizare a ideilor prezentate în articolul meu anterior. Dacă scurt, un joc bun sub Android este extrem de simplu, monoton, cu un control unic de argint, fără pedeapsă pentru moarte, încurajare și sunete de miere și o grafică minimalistă frumoasă.
Și odată ce ideea interesantă a jocului a venit la capul meu, care ar combina toate proprietățile de mai sus. Esența, așa cum spun ei, este: două gondole pereche zboară în spațiu, iar obstacolele cu găuri simetrice vin în ele, prin care este necesar să zboare.
Ceva, ideea reamintește Joyride JetPack și vechiul joc bun în care vă grăbiți prin tunel, alunecându-vă în găurile din cercurile rotative.

Ei bine, din moment ce ideea este, trebuie să faceți un prototip. În prototip, nimic nu ar trebui să fie în exces. Nu este nevoie de meniu, butoane, grafice, prototipul este un concentrat pur de viteze. Am arătat astfel: (aceasta este deja una dintre versiunile ulterioare, a pierdut devreme în secole)

Este că vom fi onorați, modificați, îmbunătățiți.

2) Gamela de joc și testele beta

În toate etapele de dezvoltare, trebuie să vă gândiți la utilizatorul final, să efectuați teste pentru prieteni, cunoștințe și rude. Din moment ce faceți jocul, personal și știți totul despre ea, atunci o mare șansă de a pierde obiectivitatea. Pentru aceste, sunt necesare teste alfa și beta. Când urmăriți o altă persoană care utilizează cererea dvs., vedeți cum se comportă că pare nelocuită în interfață, unde este dificil pentru el. Este extrem de important să luați în considerare acest fidbeck și să nu scoateți dispozitivul din mână cu un strigăt: "Vedeți cum este necesar."
De exemplu, în jocul nostru, oamenii nu și-au plăcut de mare viteză Gondola de zbor și lungime. Prin urmare, a trebuit să reduc viteza și să scurtăm gondolele.
Nu vă fie frică de modificările globale dacă beneficiază. Deci, în jocul nostru a schimbat orientarea zborului, gondolele navei cosmice au devenit viermi, iar monedele pentru colectarea monedei în joc au devenit vedete recrutate să părăsească urzeală.

3) interfață, sunet, grafică

În paralel cu gameplay-ul epuizant, merită să faceți interfața. Pare o afacere ușoară, dar lucrarea de pe ferestrele de nituri și meniu merge mult mai mult decât pe mecanica jocului în sine. Interfața trebuie să fie extrem de simplă, frumoasă și convenabilă. Butoanele fac mari, astfel încât să fie la fel de confortabile pe telefoanele mici ca pe o tabletă imensă. Frumusețea interfeței este, de asemenea, importantă. Noi, de exemplu, am creat clapete excelente la închiderea scenelor și meniurilor.

O altă parte extrem de importantă a jocului este un tutorial simplu și ușor de înțeles. Iată cum am realizat-o:

Așa cum am descris în joc ar trebui să fie vina pentru eșec și încurajând bonusurile și alte bune acțiuni de sunete. Pentru jocul nostru sunt luate de pe site acolo, am găsit sunetul de monede și fanfar trist plâns la moartea viermilor. Cel mai probabil va trebui să cumpărați, dar ar trebui să fie ieftin.
Grafica trebuie să fie minimalistă și desen animat. Personajele principale frumoase și nu atrage fundalul - aici este depozitul de securitate.

4) Magazinul și bunurile în joc

Magazinul este foarte important în joc, ceea ce face ca jucătorul să rămână și să-l transmită. Magazinul ar trebui să aibă o interfață simplă și ușor de înțeles că nu am reușit să realizăm pe deplin.
Puteți vinde în magazin orice lucruri. Noi, de exemplu, am vândut viermi, medii și bonusuri. Vânzarea de bonusuri, este important să ne amintim că ar trebui să afecteze considerabil ușurința de trecere, dar să nu schimbe mecanica jocului.
Cel mai important, în opinia mea, partea din interfața magazinului este incompletă. Aceasta este, dacă nu toate achiziționate, interfața ar trebui să fie clar în mod clar. Oamenii urăsc incompletența și se străduiesc să o elimine (acesta este secretul succesului sistemului de trei sisteme de păsări furioase). În jocul nostru, am implementat bule incomplete cu numărul de achiziții posibile lângă partițiile magazinului.

Încă mai spun ceva despre prețul magazinului.
Printr-un cuplu de runde și GOC, se scufundă deja ceva de cumpărat ceva și trebuie să arate clar că ceva poate fi deja cumpărat. Dar cele mai scumpe bunuri trebuie să fie prescrise prețul astfel încât jucătorul să joace de 20-30 ori destul de cu succes pentru a le cumpăra. Aici, de exemplu, prețurile pentru viermii noștri, consideră că un jucător cu experiență pentru rundă câștigă de la 2000 la 6000 și un nou venit de la 300 la 1000 de puncte.

5) Monetizarea

Totul este simplu aici. Pentru jocurile din Android, alegerea merită între două opțiuni pentru câștiguri. Sau publicitate sau cumpărături în joc, pentru că jocuri plătite în Google Play. Nu este deosebit de popular. Am decis să combinăm ambele opțiuni. Publicitate în meniu, posibilitatea de a plătit oprirea, Posibilitatea de a cumpăra valută în joc pentru bani reali.

6) Înregistrarea paginii în Google Play

Pagina din GP este fața jocului tău. Este pe faptul că oamenii decid să descarce aplicația sau nu.

  • a) pictograma. Cea mai importantă parte a paginii. Privind la ea, utilizatorul vă va întreba pagina. Ar trebui să fie simplu, minimalist și lins pentru perfecțiune. Este recomandabil să vă prezentați personajul principal al jocului. Consider că pictograma noastră este perfectă


  • b) numele. Scurt și atrăgător. Este de dorit din două cuvinte care exprimă toată esența jocului. Am sunat pe flyer rapid. Pe scurt, sună clar.

  • c) capturi de ecran. Pentru a înțelege ce este jocul, utilizatorul va viziona capturi de ecran. Acestea ar trebui să fie mai puțin bune decât pictograma - luminoasă, de preferință cu dispozitive post-procesare și apelare pe ele. De exemplu, aici sunt imaginile noastre bune


  • d) banner în partea de sus a paginii. Opțional, dar partea dorită a feței jocului. Un bun banner atașat la pagina atmosferă pe Google Play

  • e) video. Video este ca ecranul de ecran. O persoană îl arată să vadă gameplay-ul. Mai bine să comandați, pentru role realizate manual, arată glumă.

  • e) evaluări. Utilizatorul va examina cu siguranță evaluarea înainte de a descărca jocul. Acestea depind doar de calitatea aplicației.

  • g) Descriere. Consider că descrierea cea mai neimportantă parte a paginii. Aproape nimeni nu citește. Dar dacă tot doriți să scrieți o descriere bună, citiți Dan Kennedy, cum ar fi cartea sa "Vânzarea unei scrisori"

7) Primul Fidbeck și prima actualizare

Am decis mai întâi să nu începem o campanie de publicitate largă, ci mai întâi să experimentați jocul pe o audiență mică și să obțineți Fidbeck. Mecanica jocului îi plăcea oamenilor, dar au fost găsite deficiențele. De exemplu, jocul este prea Nedynamic, există puține vopsele și bonusuri în ea. Prin urmare, pregătim deja prima actualizare în care corectați aceste deficiențe. Este important să eliberați o actualizare în prima săptămână.
Noi, de exemplu, facem acest lucru:

  • a) noi obstacole mobile și rotative care vor crește dinamica jocului

  • b) viteza puțin redusă, deoarece jocul pare a fi prea rapid

  • c) Executarea curcubeului pe întregul ecran când se ocupă într-o urzeală. Aceasta va adăuga frumusețea

  • d) noi planete și viermi. Este necesar ca jocul trecut returnat, iar noii jucători au fost acolo unde să se străduiască

  • e) încă multe fluiere

Consider că fibeckul inițial de la testul beta deschis la o audiență mică înainte ca promovarea să înceapă un lucru extrem de important.
De asemenea, nu vă fie frică dacă ceva nu va funcționa la unele suturi. Aceasta este o lipsă înnăscută de Android, cu aceasta trebuie să trăiți și cu puterea de a elimina problemele.

8) Ediția

Publicăm jocul Suntem împreună cu Habrayuser. Multe dintre sfaturile sale ne-au ajutat să îmbunătățim foarte mult jocul și, de asemenea, a fost de acord să o relaxeze. Iată povestea gurii lui:

"Mi-a plăcut editura pentru a face față întregului. Este foarte interesant să-i ajuți pe Novice, să le dea sfaturi. Simțiți-vă un mic profesor. Dacă altcineva dorește să elibereze jocul - scrie. Poate că poți ajuta.

Deci, nu vă rupeți visele și faceți jocuri răcoritoare.

P.S.:
P.P.S.: Pentru Habrabaragacy vă amintesc: trimiteți mesaje despre erorile gramaticale într-un personal și nu în comentarii.

Bună, Comunitatea Hubrasom!

În acest articol, aș dori să spun despre experiența mea (nu mai este prima) de a dezvolta jocuri sub platforme mobile, istoria creării unui joc și a rezultatelor obținute. Ca și în mod clar din titlul articolului, această experiență poate fi considerată eșec, dar apoi cum să vedeți ce se va spune mai jos.

Preistorie
De ceva timp în urmă timp de doi ani am dezvoltat jocuri sub Windows Phone. În acest timp, au fost eliberate 6 jocuri, doar 2 dintre ele au fost plătite + proces și au adus doar câțiva dolari, restul au fost libere fără publicitate. Jocuri dezvoltate pentru această platformă, pentru că a fost XNA + C #, mi-a plăcut cu adevărat acest pachet, dar apoi zvonuri au mers, și apoi realitățile pe care XNA îl stabilește. Căutarea altor motoare a început, printre care unitatea mi-a plăcut. Imediat spun că nu vreau să mă cert despre fezabilitatea utilizării sale pentru jocuri mici, totul se potrivește cu mine aici, chiar dacă există un editor în alte motoare, C #, Platform, etc. În acel moment suportă ferestrele Telefonul în unitate nu era încă, dar nu ma deranjat, pentru că Nu mai am vrut să mă dezvolt sub această platformă, cel puțin atâta timp cât (așa cum a spus un prieten, de ce să conduci un cal mort). Vorbind sincer, jocurile mele erau slabe, dar alegerea a fost făcută. Abonamentul Windows Phone Developer a fost închis, a început un nou studiu de studiu, trecerea tutorialelor și, de fapt, dezvoltarea de jocuri.
Alegerea unui joc, începeți
După cum știți, este imposibil să începeți complicat. Din acest motiv, ideea că am început deja să implementez sub Windows Phone a fost aleasă pentru un joc de încercare, și anume puzzle-ul în stilul piloților de frați (screenshot), dar cu o mecanică ușor diferită. În jocul meu, când faceți clic pe obiect, starea nu este comutată în întregul rând și întreaga coloană, ci numai obiectul selectat și în obiectele vecine (în partea superioară de mai jos, în partea stângă, dreapta). Pentru a afișa vizual efectul de comutare, sa decis să se utilizeze în mod direct includerea sau aprinderea și ce ar putea arde? Stele! Prin urmare, numele stelelor strălucitoare au fost alese destul de repede. Dezvoltarea a început.

Merită să spuneți că bugetul nu a fost un cont neted. Prin urmare, totul trebuia să facă pe propria lor programare, grafică, promovare etc.

Dezvoltare
Nu existau practic probleme aici. Funcționalitatea și mecanica sunt destul de simple, pentru că am făcut fundația foarte repede și ușor. A trebuit să fac față numai cu efecte diferite sub formă de rotație, dealare, alunecare etc.

Rotație - În unitate există metode pentru rotirea obiectelor. Dar sincer, ei lucrează pentru mine. Uneori ciudat, prin urmare, în parte, tocmai am purtat la întâmplare și am căutat o opțiune pe care o voi aranja.

Alunecare a fost implementată pe un ecran de selectare a nivelului. Numai o parte din pictogramele cu nivelurile au fost afișate pe ecran (dimensiunea părții depinde de dimensiunea ecranului), restul sunt afișate atunci când comutați la butoanele "stânga" și "dreapta".

Saltingul sa dovedit a fi destul de simplu de îndată ce mi-am dat seama. Ideea principală - jocul ar trebui să arate bine pe toate dimensiunile ecranelor. Rețeaua nu are o mulțime de lecții pe acest subiect, practic a trebuit să studiez forumurile. Apropo, vreau imediat să sfătuiesc utilizatorii de novici ai unității să meargă la forumul lor englez, el este foarte viu, oamenii întotdeauna încearcă să ajute, spre deosebire de cele mai multe forumuri de limbă rusească de diferite subiecte. Ca rezultat, a ajuns la o opțiune, în care este selectată o anumită dimensiune a ecranului, atunci coeficientul este relativ la dimensiunea reală a ecranului sau a ecranului tabletei. Toate obiectele de jocuri schimbă scala și poziția în funcție de acest coeficient. Personal, coeficientul meu nu era singur, pentru că Diferitele tipuri de obiecte de joc au trebuit să scară diferit datorită faptului că au fost percepute diferit pe ecrane diferite. Unele obiecte pe ecrane mici ar putea fi lăsate ca standard, altele trebuiau să fie ușor crescute în raport cu primul.

Niveluri
În prima versiune a jocului, am vrut să fac 20 de nivele. Hmm, ar fi un joc interesant. Prin sfat înțelept, acest număr a fost extins la ~ 100 (în planuri). Desigur, inventați nivelurile de dvs. și verificați dacă sunt rezolvate, nu am vrut deloc. Sunt un programator, deci de ce te bateți! După ceva timp, generatorul a fost gata, care a emis toate combinațiile posibile ale nivelurilor dimensiunii specificate, apoi a verificat dacă nivelul decide și a detectat-o fisier text. Aceasta a fost cea mai mare problemă din acest joc. Dacă, cu dimensiunea câmpului de joc 4 * 4, numărul de nivele a fost măsurat cu zeci de mii, apoi pentru câmpul de 5 * 5 au fost deja milioane pentru câmpul 6 * 6 ... Ei bine, ați înțeles. Da, sunt un programator, pot scrie un generator, o pot învăța pentru a rezolva nivelurile, dar nu pot să-l învăț să aleagă ce nivel este frumos și va intra în joc și ce va fi selectat. Deoarece toate aceste milioane au fost necesare pentru a vizualiza manual cele dorite. Am încercat chiar mai întâi, dar apoi mi-am dat seama de scara acțiunii (și am vrut să fac un teren de joc de jur de 10 * 10) și am devenit rău.

Nu contează cât de cool, dar trebuia să mă întorc la desenul manual al diferitelor modele. Aceste modele au fost făcute la joc, au fost rezolvate personal în persoană pe telefonul meu (verificând în același timp soliditatea + plăcerea estetică din soluția de nivel). Nivelurile nerezolvate au fost rafinate, neinteresarea au fost aruncate. Și după o vreme am fost gata pentru 120 de nivele situate în ordinea ascendentă a dimensiunii și complexității lor în dimensiune.

Un exemplu de creare a unui nivel

Acesta este modul în care arată procesul de creare a unui nivel. Grila este marcată cu tot câmpul, celulele galbene ale locului în care există stele, alb - unde nu sunt. În colțul din stânga sus al codului de nivel, sub forma căreia sunt stocate și procesate în joc. În colțul din dreapta sus al figurii în culoarea verde deschis înseamnă că nivelul este rezolvat de mine pentru un astfel de pași (există încă pătrate roșii în nivele nerezolvate); semn de exclamare Înseamnă că nivelul este selectat pentru a intra în joc.

Numărul 120 a fost ales non-aleatoriu. Pe diferite dimensiuni ale telefoanelor de pe ecranul de selecție a nivelului, puteți găzdui un număr diferit de icoane ale acestor nivele. Cu un număr de 120, aș putea împărți pictogramele pe grupuri cu același număr de icoane în fiecare, ceea ce este important. Nu am vrut să fiu pe primele pagini să fie 12 icoane, iar în ultimul drept, de exemplu, 10.

Grafică
Grafica în jocul meu a trecut, în opinia mea, o întreagă evoluție! Inițial, am vrut să fac jocul foarte repede și să eliberez "Ce este" cu cele 20 de nivele. Și acest "că" mai întâi mi se părea într-adevăr nu rău, dar după ce am primit câteva sfaturi de la alte persoane, m-am întrebat din greu și am început să redresez totul. Baza a fost luată de diferite jocuri celebre, de exemplu, păsări furioase, din care am luat ideea apariției UI, locația icoanelor nivelurilor atunci când sunt selectate.

Versiune grafică veche.

Meniul principal cu două opțiuni pentru butoane. Bineînțeles, după prima secundă părea frumos! Atâta timp cât a fost făcută faringul final.



Informații despre joc despre joc


Fereastra de selecție a nivelului



Pentru a face jocul nu părea mort, ideea părea să facă ceva în el, ceea ce ar da efectul opus. O astfel de idee a fost un fundal de joc de viață - dacă arăți un pic, cerul înstelat pe fundal nu este doar o imagine, există și alte stele de culoare (albastru, galben și galben pal), și chiar periodic muște o stea care se încadrează Fotografiile! Da, acest efect nu trage originalitatea și noutatea, dar cred că sa dovedit bine și a ajutat la crearea atmosferei potrivite în joc.

Versiunea finală a graficelor

Meniul principal cu butoanele de setări deschise (astfel încât să nu se ambreiască ecranul, inițial sunt minimizate și deschise prin apăsarea butonului Setări)


Informații despre joc despre joc


Fereastra de selecție a nivelului


Fereastră cu un nivel în procesul de joc (una dintre opțiunile de fundal; toate acestea 3, sunt alese la întâmplare)



Atenția a fost plătită absolut totul. Obiectele de jocuri s-au îmbunătățit pentru a fi frumoase. Obiectele UI (butoanele, icoanele de nivel) au fost îmbunătățite pentru a fi atât frumoase, cât și intuitive ușor de înțeles numai prin imaginea lor. Chiar și pentru pictograma, au fost dezvoltate mai multe opțiuni, dintre care finală a fost aleasă și ulterior înlocuită de un altul, care mi-a părut mai adecvat. Și de câte ori am redremat toate textele!

Icoane.

Opțiuni inițiale pentru selecție

Opțiunea finală

În aspectul graficei, programul TexturePacker ma ajutat foarte mult, îl recomand cu tărie! A ei funcții gratuite Este suficient pentru scopurile noastre, iar atlasele pe care le colectează într-adevăr nu rău. Am pregătit mai multe atlase - unul pentru butoane și două seturi pentru obiecte de joc (cu localizare în limba rusă și engleză). Adevărat, B. versiune veche Unitatea a trebuit să taie piesele dorite cu coordonatele UV, care sunt oarecum inconveniente. ÎN versiune noua Unitatea Totul se poate face mult mai ușor cu sprite.

Sunete și muzică
Nu există probleme aici. Există multe resurse în care sunetele pot fi cumpărate sau eliberați. pentru că Bugetul nu a fost, am ales câteva sunete și melodii adecvate pe care aceste resurse le permit gratuit, adică. Totul este absolut legitim și fără furt (da, pentru mine este important).
Ideea principală a fost aceea de a crea o atmosferă relaxată în care jucătorul se poate gândi cu muzică liniștită pe fundal. Dar prima actualizare a jocului a schimbat situația - a fost adăugată muzică ritmică cu posibilitatea de a alege melodia dorită (calmă sau rapidă) în setări.
Eliberare, promovare, rezultate
Voi observa că voi elibera jocul numai în Android, pentru că Am un telefon adecvat, dar nu există dispozitive iOS, pe care aș putea testa jocul și nu vreau să mă eliberez fără un test real. Același motiv a fost faptul că înregistrarea în Google Play este o plată unică de 25 de dolari, iar Apple trebuie să plătească 99 de dolari în fiecare an. Poate că voi elibera jocul și sub iOS, dar oarecum mai târziu.

Imediat după eliberare, am scris despre jocul pe un număr de forumuri Android și am început să urmez rezultatele care au apărut în curând, dar pe aceasta a fost oprită practic. Apoi am lansat două actualizări, despre fiecare dintre acestea raportate pe forumuri (cel puțin unele, dar bump). A existat, de asemenea, o opțiune de clase încrucișate (puneți ratingul superior al cuiva și vă cereți să vă apreciați jocul). Dar acest lucru înseamnă că instalarea unei bucăți de alte persoane (nu întotdeauna cel puțin unele bune) la telefon, o posibilă înșelăciune de la alții (la urma urmei, nu este un fapt că ei vor aprecia jocul dvs. ca răspuns), pentru că Am refuzat repede de la această opțiune.

În prezent, numărul de descărcări este foarte mic. Am ghicit că ar exista un anumit eșec, dar deci ... parțial se datorează faptului că eu postez pe forumuri nu numai legătura cu Google Play, dar și eu însumi fișier apk., Judecând de statistici, descărcarea sa depășește descărcarea de jocuri de pe piață.

Jocul este gratuit. Ca o monetizare, a fost aleasă spectacolul de publicitate. În procesul de dezvoltare, am vrut să conectez mai multe module - dacă nu a funcționat unul, arată al doilea, etc. Faimosul ChartBoost a fost conectat, apoi am încercat să mă conectez la Revmob și Playhaven, dar unele hit-uri au ieșit cu ei (sincer, nu au câștigat în joc, nu am aflat motivul, pentru că doar un singur modul a fost lăsat, de la pe care toate veniturile trebuiau să le ducă. Dar dacă luați în considerare cele de mai sus (numărul de descărcări și dorința utilizatorilor faceți clic pe publicitate sau instalați jocuri publicitare), înțelegeți că venitul nu este.

Concluzii
După cum se spune, un rezultat rău este, de asemenea, rezultatul. De la începutul dezvoltării la unitate (nu o considerăm timp pentru Windows Phone), aproximativ 14-15 luni a trecut eliberarea. Într-un mod bun, un astfel de joc este scris pentru o lună de angajare incompletă, și acesta este un stoc. Motivul a fost într-o lipsă de timp. Nu, timpul a fost suficient - câteva ore seara, câteva ore în weekend au fost suficiente pentru a continua să facă jocul fără o pauză lungă. Și m-am lipsit de bunăstarea morală. În această perioadă au existat o mulțime de probleme personale, în timp ce există dorința de a face jocul, au existat idei, dar m-am așezat la un computer, am căutat prost în monitor, apoi am înțeles că nu am avut nici o inspirație pe care aș putea nu realizați absolut nimic și a oprit-o. A zburat în acest an.

Să începem cu puncte negative. Am petrecut mult timp în joc, dar aici circumstanțele nu sunt dependente de mine. Jocul sincer a eșuat, ea nu mi-a adus venituri (bine, nu sunt considerate câțiva dolari). Și din acest punct de vedere, acesta este un eșec complet.

Dar momente pozitive, probabil mai mult. În primul rând, aceasta este o experiență! La acest joc, am aflat principalele posibilități de unitate cu o singură rezervare - jocul a fost dezvoltat pe vechea versiune, unde nu au existat 2D. Acum, jocurile 2D pot fi dezvoltate cu această nouă tehnologie, deoarece majoritatea fluxurilor mele de lucru din joc pot fi deja necesare.

Pe acest joc, mi-am dat seama că grafica este cu adevărat importantă! Nu este nevoie să uitați de asta, niciodată! Dacă am lansat jocul cu primele opțiuni de design, mi-ar fi rușine pentru el. Acum am lansat un joc frumos. Da, ea a eșuat, dar încă mândresc de ea! Dacă există un buget, puteți angaja un designer bun. Dacă nu, redretați totul din nou și din nou până când rezultatul merită într-adevăr.

Cred că singura greșeală majoră pe care am făcut-o aici este alegerea genului de joc. Probabil, majoritatea jucătorilor iubesc acțiunea, arcade, poate altceva, dar nu-i plac prea puzzle-uri de acest tip. Oamenii văd jocul meu, cineva nu-i place grafica, iar cineva o taie din cauza genului. Și dacă vorbim despre următorul joc, pe care mi-aș fi dezvoltat, aș schimba doar genul, totul ar fi făcut același lucru!

Tag-uri: Adăugați etichete

Salutari tuturor.
Această lecție a fost scrisă în martie 2012. Acum am decis să o public pe această resursă. Codul a decis să nu se schimbe, îl întreb foarte mult să nu găsească vina (eu însumi aș spune). Un pic rafinat de textul lecției și comentariilor din cod. Scopul lecției nu este de a învăța jocul că într-o singură lecție este imposibilă în sine, ci pentru a demonstra elementele de bază ale colaborării cu aerul mobil. De ce Android, și nu iOS? Pentru că în momentul scrierii lecției, numai el a fost. Sub IOS, totul se face aproape în același mod, dar există unele diferențe care sunt scrise la sfârșitul celei de-a doua părți a lecției.
Voi fi bucuroasă de comentarii, comentarii, o indicație a erorilor.

Un pic de teorie.

Adobe Air vă permite să creați pe ActionScript 3 și MXML pentru iOS și ANDROID Aplicațiicare pentru utilizator nu va distinge niciun nativ. Ele, ca orice aplicație nativă, pot fi distribuite prin magazine de marcă Apple AppStore și Google Apps Play Store. (fostul Android. Piaţă). Din versiunea Air 3.2, a apărut sprijinul Stage3D. Pentru a lucra aplicațiile de aer pe Android, trebuie să instalați pe dispozitivul de execuție a aerului sau când compilați în timpul de execuție-runtime, mediul de execuție este încorporat în APK. În același timp, instalarea de runtime de aer nu este necesară pentru dispozitiv.

Când lucrați cu dispozitive mobile, ar trebui să se țină cont de faptul că rezoluțiile de afișajele lor de mai jos (deja există deja cele care sunt mai mari) decât monitoarele computerelor și dimensiunile lor fizice sunt, de asemenea, semnificativ mai puțin. Există, de asemenea, astfel de concepte ca "dimensiunea pixelului fizic" și "densitatea pixelilor", deci trebuie să acordați atenție dimensiunii diferitelor elemente grafice (butoane, caractere ale jocului etc.). În general, aceasta este o întreagă știință și nu vom locui în detaliu.
Metoda de introducere - Afișare touchscreen. Pentru a procesa intrarea touch, există un eveniment special de Touchevent, deși evenimentele de șoarece sunt procesate corect. Există, de asemenea, alte caracteristici pe care le voi spune în timpul lecției.
Vom face foarte mult joc simplu. Pentru Android. Va fi posibil să o faceți pe smartphone-uri, tablete și alte dispozitive.
Mediul de implementare a aerului are unele cerințe hardware și software.
Pentru Android, arată astfel:
- Android Version. 2.2 sau mai mare;
- procesor cu arhitectura ARM7 cu o frecvență de cel puțin 550MHz;
- minimum 256 megaocteți de memorie RAM.

Cerințele pentru alte platforme pot fi găsite prin referință.

Pentru a efectua lecția, vom avea nevoie de următoarele:
- FlashDevelop 4.2;
- Flex SDK 4.6;
- Air SDK 3.5;
- Biblioteca din Greensock;
- dispozitiv pe Android. Puteți face și emulatorul, dar nu este atât de interesant;
- instalat pe dispozitivul mobil Air.

Versiunile sunt indicate efective la momentul publicării lecției. Deja există Flex SDK 4.8, dar de fapt este același 4.6. Și de la 4.8 am FlashDevelop începe la Absors absorbi memoria RAM, nu este clar de ce. Este mai bine să utilizați ultima versiune AIR SDK, deoarece se adaugă noi caracteristici cu fiecare versiune și erorile sunt corectate. Air SDK Trebuie doar să despachetați folderul Flex SDK cu înlocuirea fișierului și conectați Flex SDK la FlashDevel.

Ce anume vom face.

Efectuarea noastră vom fi un mic joc. Se pare următoarele: în partea de sus a ecranului. Cifrele se încadrează. Partea inferioară este platforma, pe care trebuie să o prindeți aceste cifre sau să nu prindeți în funcție de tipul lor. Jocul este alcătuit din trei ecrane:
- Meniul principal cu fundal, logo și două butoane. Unul pentru a începe jocul, altul pentru a ieși din aplicație;
- ecranul de joc. Conține o platformă care se încadrează pe cifre, precum și indicatori ai nivelului curent și punctele înscrise. Și butonul de ieșire din meniul principal;
- Ecranul de afișare al numărului de puncte marcate cu butoanele pentru a ieși din meniu și "Redați din nou".

Pereche de capturi de ecran:

Start.

Pentru a începe, asigurați-vă că dispozitivul este instalat pe dispozitiv, dacă nu este instalat, instalați. Instalați, de asemenea, driverul pentru a vă conecta la cablu.

Rulați FlashDevelop și creați un nou proiect de aplicație Mobile Air AS3. Acesta este modul în care arată proiectul creat:

Ceea ce vedem în fața lor:

Dosarul BAT conține mai multe fișiere batch.:
- Creacertificate.bat. Trebuie să genereze un certificat auto-semnat pentru Android. Fără acest certificat nu va fi posibilă colectarea APK;
- Installairruntime.bat. Setează timpul de execuție de aer Dispozitiv Android. De la% Flex_sdk% \\ Runtimes \\ Air \\ Android \\ Dispozitiv \\ Runtime.apk. Este mai bine să instalați cea mai recentă versiune a Android Play. Magazin;
- Packager.bat. Pachete o unitate flash USB în APK (Android) sau IPA (iOS);
- SetupApplication.bat. conține diverși parametri ai aplicației (căi către certificate, parole din acestea, numele aplicației etc.);
- Setupsdk.bat. Conține calea către FlexSdk. Este determinată automat, dacă nu este determinată, trebuie să vă înregistrați manual. Și conține, de asemenea, calea către Androidsdk. De fapt, sunt necesare doar trei fișiere: adb.exe., Adbwinapi.dll. și Adbwinusbapi.dll.. Mai mult, ele sunt deja conținute în distribuția FlashDevelop și calea către ei este, de asemenea, prescrisă automat.

În dosarul cos. Fișierul SWF compilat este plasat.
În dosar cert Certificatele trebuie să mintă.
Pliant icoane. Conține seturi de icoane.
Două foldere standard lib și sRC. Pentru biblioteci și clase, respectiv.

Dosarul rădăcină:
- Standard pentru aplicații de aer aplicație.xml. cu parametri de aplicații diferiți;
- PachetApp.bat. Vă permite să selectați o platformă și un tip de ambalare a aplicațiilor. După selectarea pachetelor. Apare un dosar dist. C APK sau IPA;
- Run.bat. Completează aplicația pe dispozitiv mobil și o lansează acolo;
- Două fișiere Aer_android_readme.txt. și AIR_IOS_REAMME.TTXT. cu instrucțiuni.

Stabilirea proiectului.

Deschideți setările proiectului Proiect / prpeties., Schimbați culoarea fundalului la negru. Rezoluția nu are valoarea. Ne vom adapta la curent.
Versiunea Air expune 3.5. Ca rezultat, parametrii ar trebui să arate astfel:

Deschideți fișierul aplicație.xml.În ea, în a doua linie, schimbați versiunea de aer cu 3.5:

Setări în aer liber - Proprietăți de proiectare / Air App. În fereastra care se deschide, mergeți la fila Fereastră inițială.. În această fereastră, alegeți Platforme non-ferestre.
Schimbați modul de afișare la portret. Și dezactivați Auto Orient, deoarece jocul va fi numai în modul portret. Expunerea modului de redare CPU. sau Direct.. Setările ar trebui să arate astfel:


Apoi, chiar în FlashDeveling Faceți dublu clic pe fișierul deschis Run.bat. Și schimbați șirul goto Desktop. pe goto Android-Debug. Este necesar să se testeze proiectul pe dispozitiv. Dacă pleci goto Desktop.Proiectul va fi lansat pe emulator.

Acum trebuie să generăm un certificat. Fără aceasta, nu va fi posibilă împachetarea aplicației V.Apk. Dacă dosarul cert Nici unul în proiect, să-l creeze manual. Acest lucru este important, deoarece fișierul BAT nu va putea ajunge la folderul inexistent. Rulați fișierul. bat / createcertificate.bat.(Clic / execute dreapta), în dosarul cert Certificatul nostru apare cu o parolă standard "FD". Merită să spuneți că orice aplicație Android trebuie semnată de un certificat. Ceea ce am generat este așa-numitul "certificat de dezvoltare". În acest stadiu este de ajuns.

De la arhivă de la site-ul Greensock.com obțineți fișierul greensock.swc., puneți-l în dosar lib Și conectați-vă la proiect (faceți clic dreapta / adăugați la bibliotecă).

Cu setarea totul. Adăugați programul și pictogramele dorite la proiect. Creeaza dosar active. Și pune grafică de la arhivă acolo, înlocuiește și pictogramele. Sau puteți să vă atrageți propriile analogi.

Ajungeți la cod.

Și acum cel mai important lucru și interesant - scriem codul. Clasele de jocuri arata astfel:

Categorie de obiect. - Tipuri de obiecte. Cele mai multe că cad în partea de sus a ecranului
Constantele pachetului (/ ** * Constanti statice pentru determinarea tipului de obiect * * @Author iluzor * / clasa publică itetaltype (/ ** obiect normal. Adaugă unitate la puncte * / public static const bun: string \u003d "GoodIteM" ; / ** Obiect "foarte bun". Adaugă 5 la puncte * / static public const foarte_good: string \u003d "Foartegooditem"; / ** obiect "furios". Ia o unitate de la ochelari * / public static const rău: string \u003d " răuitem ";))
Screferă. - Tipuri de ecrane. Avem trei dintre ele și sunt descrise mai sus
Constante pachete (/ ** * Constantele statice pentru a determina tipul de ecran * * @Author iluzor * / clasa publică Screrens: (/ ** Meniul principal * / Public Static Const Main_Menu: String \u003d "Mainmenu"; / ** Ecranul jocului * / Public Station Cister Game_Screen: String \u003d "Gamescreen"; / ** ecran cu afișarea rezultatului jocului * / Public Static Const Score_Screen: String \u003d "Scorescreen";))
Gameevent. - Evenimente de joc
Evenimente de pachete (** * * * * * * * * * * @AUTHOR ILLUZOR * / Gameevent de clasă publică extinde evenimentul (/ ** din joc în meniul principal prin intermediul butonului Meniu * / Public Static Const EXIT_GAME: String \u003d "EXITGAME"; / ** Playing * / static public const game_over: String \u003d "Gameover"; Funcție publică Gameevent (tip: șir, bule: boolean \u003d false, anulat: boolean \u003d false) (super (tip, bule, anulare) ;) Clona de funcții publice de suprascriere (): eveniment (returnați noul gameevent (tip, bule, anulare);) Tot de suprascriere publică (): șir ("gameevent", "tip", "bule", "canable" , "Eventphase");))))
Acum luați în considerare pachetul elemente. Acestea sunt diferite elemente grafice care sunt folosite în joc.

Buton. - Clasa butonului. Cuprinde. imagine grafică și text. Are două stări: presate / nerealizate
Elemente de pachete (import com.greensock.thwewewewewewe ites flash.display.bitmap; Import flash.display.sprite; Import flash.events.event; Import flash.events.touchevent; Import flash.text.textfield; Import Tools.Bitmaps; Instrumente de import.Tools; / ** * Clasa butonului, care este utilizată în meniu și în altă parte. * * @Author iluzor * / buton de clasă publică extinde textul sprite (/ ** @Private pentru a afișa pe butonul * / privat Var text : String; / ** @ PRIVATE Bitmap pentru butonul / Buton privat VAR Butonimage: Bitmap; / ** * Designerul ascultă scena. * Aici etapa de care avem nevoie, în cazul în care robinetul de pe buton și deplasați degetul departe de Butonul * * @PARAM Text text pentru a afișa pe butonul * / buton de funcții publice (text: șir) (thistext \u003d text: addeventListener (Event.Added_to_Stage, adăugatTostage);) / ** * @private Adaugă la scenă Adaugă la scenă . * Adăugați butonul grafică și câmpul de text. * * @Param e eveniment Adaugă la scenă * / Funcție privată AdăugatTostage (E: Eveniment): Void (eliminareEventListener (Event.Added_to_Stage, ArodtOstage); Butonimage \u003d bitmaps.buttonbitmap; // Adăugați Bitmap Buttonimage.Smoothing \u003d Adevărat; Addchild (butonimage); Var TextField: TextField \u003d Tools.GenReTextfield (50, Text); // Generați un câmp de text ... TextField.x \u003d (Buttonimage.Width - TextField.Width) / 2; // ... poziționați-l și adăugați la afișaj textfield.y \u003d (butonimage.height - textfield.Height) / 2; AddDhild (TextField); Acest.addeventlistener (touchevent.touch_begin, touchbegin); // atingând butonul AddeventListener (Event.Removed_from_Stage, eliminat defromstage); // eliminarea ascultătorilor din etapă) / ** * Animație Alpha pe jumătate * * @param e deget touch eveniment la butonul * / Private Funcție TouchBegin (E: Touchevent): Void (Tweenlite.to (butonimage, .3, (alfa : .5)); Stage.AdDeventlistener (TOUCHEVENT.Touch_end, Touchend); // Scoateți degetul de pe afișaj după atingerea butonului) / ** * Return Alpha la unitate * * @param eger eveniment de remover * / funcția privată TOUCHEND (E: TOUCHEVENT): Void (Tweenlite.to (butonimaj, Ascultătorii necesari * * @ param e eveniment Ștergerea din scenă * / Funcție privată eliminată (E: Eveniment): VOID (EvenimentEventListener (Event.Removed_from_Stage, LEMATEFROMSTAGE); Acest.RemoveEventListener (TOUCHEVENTSEVENTLISTENER (TOUCHEVENTSEVENTListener. Touch_begin, touchbegin); Stage.RemoveEventListener (Touchevent.Touch_end, Touchend))))
Articol. - Obiectul care scade de sus în timpul jocului. Poate trei tipuri, ele sunt descrise în cod
Elemente de pachete (import Constancios.Display.Shape; Import Flash.Display.Shape; Import Flash.Filters.glowfilter; / ** * Atehama Class (subiect), care scade de mai sus. * * @Author iluzor * / elementul de clasă publică Formă (/ ** ametype tip constante.ItemType * / Public Var Tip: String; / ** AMETHEMA Viteza * / Viteza publică Viteză: UINT; / ** * în designer, grafica element sunt desenate. * * Tipul de tip @param AETEMA * / Public de funcții (tip: șir) (this.type \u003d tip; comutator (tip) (// verificați ce tip este transmis către constructor // și în funcție de aceasta, tragem grafica adecvată. Case itemttype.body: // trageți un pătrat verde this.Grapics.beginfill (0x00A400); the the.graphics.drawrect (0, 0, 14, 14); the.graphics.endfill (); pauză; caz itemttype.file_good: // trage un albastru pătrat cu this.Graphics Glow. Începe (0x01A6FE); the the.grafice.drawrect (0, 0, 14, 14); the.graphics.endfill (); thes.filters \u003d; pauză; caz itemtype.evil: // remiză Krasn. Graphics.Belicfill Circle (0xFF0000); grafică.drawcircle (0, 0, 7); grafică.endfill (); Pauză; )))
Platformă. - Jocurile "personajul principal". O platformă mică care gestionează jucătorul.
Elemente de pachete (import Flash.Display.Shape; Import Flash.Filters.glowfilter; / ** * Platformă pentru pescuit, care este situată în partea de jos a ecranului. * Totul este foarte simplu, un dreptunghi alb este desenat și un filtru de strălucire se aplică. * Clasa separată pentru ca platforma să fie percepută ca o unitate de joc separată. * * @Author iluzor * / platformă de clasă publică () (thethpgraphics.clear (); the.grafii.beginfill (0xfffff) ; aceasta. grafică.Drawrect (0, 0, 110, 24); the the.graphics.endfill (); the the.filters \u003d;))))
Pachet instrumente. cu instrumente.

Clasă Bitmaps. Conține grafice și metode atașate pentru a obține din exterior
Instrumente de pachete (import Flash.Display.Bitmap; / ** * "Generator" de bitmaps din fișiere atașate * * @Author iluzor * / clasa publică Bitmaps (/ ** @Private Fișier grafic atașat * / Private Static VAR BackgroundMapp: Clasa ; / ** @ PRIVATE ATENȚIONATE GRAFICA DE FILE * / PRIVATE STATICA VAR ButonBitMap: clasa; / ** @Private Fișier atașat Logo-ul grafică * / Private Static Var Logobitmap: clasa; / ** Bitmap Fundal * / Funcția statică publică Obțineți BackgroundBemap () : Bitmap (returnați noul fundal () ca bitmap;) / ** Bitul Bitmap * / Funcția statică publică Obțineți butonBitMap (): Bitmap (Return New ButnerBitMap () ca bitmap;) / ** Bitmap logo * / Funcția statică publică Obțineți Logobitmap (): Bitmap (Return New Logobitmap () ca bitmap;))))
Clasă Instrumente. Conține alte instrumente. Până în prezent, doar generatorul de text Philand
Instrumente de pachete (import flash.text.textfield; Import Flash.text.textFormat; / ** * Clasa cu unelte mici. * Până în prezent, numai generatorul de câmp de text conține. * * @Author iluzor * / Instrumente de clasă publică (/ * * * TEXT GENERATOR PHILDO pentru parametrii specificați * * @param Dimensiune dimensiune font * @param Text text pentru a afișa * @param Culoare culoare culoare * @ReTurn Box de text configurat * / Funcție statică publică Generatetextfield (dimensiune: UINT, text: String \u003d " ", Culoare: UINT \u003d 0xFFFFFFFFFFFFFF): TextField (VAR Textformat: TextFormat \u003d New TextFormat (), TextFormat.color \u003d Color, TextFormat.Size \u003d Dimensiune; Var TextField: TextField \u003d New Texturied (); TextField.Seleble \u003d False; TextField .defaulttextformat \u003d TextField.Text \u003d TextField.Width \u003d TextField.Textwidth +4; TextField.height \u003d TextField.TextHeight \u003d TextField.TextHeight +4; Return TextField;))
Aplicații aplicații din pachet ecrane.

Meniu principal. - Meniul principal de joc. Afișează imediat după lansare. Conține butoane, fundal și logo.
Ecrane de pachete (import flash.display.itmmap; Import Flash.display.sprite; Import Flash.events.event; Import Flash.Display.DisplayObject; Import Tools.Bitmaps; Import elemente.button; / ** * Clasa jocului principal Meniu. * Va fi un fundal, logo și două butoane. * * @Author iluzor * / Clasa publică Mainmenu extinde Sprite (/ ** Buton de redare * / Public Var Playbutton: butonul "Ieșire" * / Public " VAI EXITBUTTON: Buton; / ** * în constructor doar ascultați adăugați la scenă * / funcția publică Mainmenu () (AddEventListener (Event.Added_to_Stage, AdddededTostage);) / ** * Creați și adăugați fundal, logo, butoane * * @Param Event Adăugat la scenă * / Funcție privată AdadăTostage (E: Eveniment): VOID (EvenimentEventListener (Event.Added_to_Stage, Addtosage); // Creați un fundal bitmap și adăugați-l la scena var fundal: Bitmap \u003d Bitmaps. backgroundMapp; fundal.smooting \u003d true; addDhild (fundal); locul de plasare (fundal); // fundal de poziționare // creați un bitmap de logo-ul, setați dimensiunea față de lățimea scenei // Setați poziția și adăugați la scena Var Logo: Bitmap \u003d bitmaps.logobitmap; logo.Smoothing \u003d adevărat; logo.width \u003d scena.Stagewidth * .7; logo.scaley \u003d logo.scalex; logo.x \u003d (etapa.stagewidth - logo.width) / 2; logo.Y \u003d Etapa.stageHeight / 5; Addchild (logo); // container pentru butoane pentru poziționarea convenabilă a acestor butoane Var ButtonContainer: sprite \u003d nou sprite (); Addchild (buttoncontainer); // crearea butoanelor "Play" și "Ieșire", se potrivesc cu dimensiunea acestora și se adaugă la Playbutton \u003d butonul nou container ("PLAY"); Buttoncontainer.addhild (Playbutton); PlayButton.Width \u003d Stage.StageWidth / 2; playbutton.scaley \u003d playbutton.scalex; Exitbutton \u003d Buton nou ("Ieșire"); Buttoncontainer.addhild (ieșirebutton); ieșirebutton.y \u003d buttonContainer.hight + 25; ieșirebutton.width \u003d scena.stagewidth / 2; ieșirebutton.scaley \u003d ieșirebutton.scalex; // poziționarea containerului cu butoane butoaneContainer.x \u003d (etapa.stagewidth - buttonContainer.width) / 2; ButtonContainer.y \u003d (Stage.StageHeight - ButtonContainer.Height) / 2 + Stage.Stagewidth / 6; ) / ** * Această caracteristică face ca afișajul să fie transferat la acesta umple întreaga scenă * fără a schimba proporțiile. În cazul nostru, aceasta este o imagine de fundal * * @param SCALIDOBJECT DISPLAYOBJECT pentru fitinguri * / PlaceBook PlaceBook (SCALIDOBJECT: DISPLAYOBJECT): VOID (SCALIDOBJECT.SCALEX \u003d SCALIDOBJECT.Scaley \u003d 1; Var Scala: Număr; dacă (scalateObject.Width / scalateObject. Înălțime\u003e Stage.StageWidth / Stage.StageHeight) (scală \u003d etapă.stageHeight / scaledObject.hight;) altceva (scalateObject.Stagewidth / scalateObject.width; SCALIDOBJECT.ScAlex \u003d SCALIDOBJECT.Scaley \u003d scalatobject.scaley \u003d scară; SCALIDOBJECT.X \u003d (STAGE.STAGEWIDTH - SCALIDOBJECT.Width) / 2; SCALIDOBJECT.Y \u003d (Stage.StageHeight - SCALIDOBJECT.HEight) / 2;)))))
In clasa Gamescreen. Jocul trece. Atemele se încadrează pe partea de sus. În funcție de tipul lor, trebuie să le prindeți sau să evitați. Gestionează ciclul de joc
Ecrane de pachete.Tewewewewewewewewewewewewewewewewewewewewewewewewewewewewenlite.ItemType, import elemente.button; Import elemente.platform; Import Events.Gameevent; Import flash.display.sprite; Import flash.events.event; Import flash.events.mousevent ; Import Flash.events.timerevent; Import Flash.events.touchevent; Import Flash.Text.textfield; Import Flash.Utils.timer; Import Tools.Tools; / ** * Joc de clasă principală. Ce face procesul de joc: * În partea de jos a ecranului este o platformă care poate fi deplasată în stânga / dreapta pentru a deplasa degetul peste ecran în orice parte a ecranului. * Atememele așa-numitele de la deasupra, care pot fi de trei tipuri: * - itemttype.good - element obișnuit. Când colectarea adaugă o unitate la ochelari, atunci când treceți (îngrijire pentru marginea inferioară a ecranului) * ia o unitate de la puncte * - itemttype.fone_good - "armat" ahem. Când colectarea adaugă 5 la ochelari. Când nu se transmite nimic. * - itemtype.evil - Aytem "rău". Când colectați Face o unitate din ochelari. Când nu se întâmplă nimic. * * Când valoarea punctelor este mai mică de cinci, pierderea este numărată, iar rezultatul jocului este considerat numărul maxim de puncte. * Cu fiecare nou nivel de elemente, se mișcă mai repede decât în \u200b\u200bcea anterioară. * * De deasupra din stânga există un idiot de ochelari arsuri, în dreapta deasupra butonului de ieșire din meniul principal. * În partea de jos din centru sub platformă există un indicator al nivelului curent. * * * @ @Author iluzor * / Clasa publică Gamescreen extinde Sprite (/ ** @Private platformă și articole container * / privat var gamecontainer: sprite; / ** @private pentru a ieși din meniul principal * / privat var de menubtton: buton; / ** @ Platformă @private * / Platforma privată VAR: Platformă; / ** @ cronometru de joc înclinat. Nevoia de a adăuga un nou Atema * / Private Var Gametimer: Timer; / ** @Private numărul de nivel curent * / privat varylelllvelvel : UINT; / ** @ PRIVATE Numărul curent de puncte * / Private VAR CurrentScore: INT; / ** @Private caseta de text pentru a afișa numărul de nivel * / Private Var NivelText: TextField; / ** @ PRIVATE caseta de text pentru afișarea punctelor * / Private Var ScoreText: text / ** Numărul maxim de puncte * / Public Vaxscore: UINT; / ** * în constructor, ascultați scena. * / Funcție publică GameScreen () (AddEventListener (Event.Added_to_Stage, Arodtostetage );) / * * * Crea elemente de ecran * * @param e eveniment adăugat Scena * / Funcția privată Adăugată (E: Eveniment): Void (eveniment. Adăugat_to_stage, Arodttaya); Gamecontainer \u003d nou sprite (); // container AddDhild (gamecontainer); Platformă \u003d Noua platformă (); // Creați o platformă care personalizează dimensiunea și poziția și a adăuga platformă.Width \u003d etapă.Stagewidth * .18 la scenă; platforme.scaley \u003d platforme.scalex; platform.x \u003d (etapa.stagewidth - platforme.width) / 2; platforma.y \u003d scena.stageHeight * .88; Addchild (platformă); ScoreText \u003d Tools.GenReTextField (30, "Scor: 0"); // punctele de câmp de text ScoreText.Width \u003d Stage.Stagewidth / 2; ScoreText.x \u003d ScoreText.y \u003d 10; AddDhild (ScoreText); NivelText \u003d Tools.GenReTextfield (30, "Nivel: 1"); // câmp de text NivelText.Width \u003d NivelText.TextWidth + 4; NivelText.x \u003d (Stage.StageWidth - NivelText.Width) / 2; NivelText.y \u003d Stage.StageHeight - NivelText.height - 20; AddDhild (NivelulText); Menubutton \u003d Buton nou ("Meniu"); // pentru a ieși din meniul principal. AddDhild (Menubutton); Menubutton.Width \u003d Stage.Stagewidth / 3.2; Menubutton.scaley \u003d Menubutton.scalex; Menubutton.x \u003d Stage.Stagewidth - Menubutton.Width - 10; Menubutton.y \u003d 10; StartNewLevel (); // rulați un nou nivel menubutton.addeventlistener (touchevent.touch_tap, ieșirea); // Eveniment Apăsarea butonului de ieșire din meniul Stage.AdDeventListener (MouseEvent.Mouse_Move, MovePlatform); // Eveniment de mișcare în stadiu pe ecranul Stage.AddeventListener (MouseEvent.Mouse_UP, MovePlatform); // engering eveniment de la ecranul AddeventListener (Eventter_frame, UpdateGame); // actualizarea stării jocului AddeventListener (Event.Removed_from_Stage, eliminat din partea de evacuare); ) / ** * @private Mutarea platformei în funcție de poziția degetului de pe afișaj. . (X: mousex + -platform.width / 2));) / ** * @ lansare de la un nou nivel. Fiecare nivel este alcătuit din 20 ATEMS * / Funcție privată StartnewLevel (): VOID (VAR Interval: UINT \u003d 2300; // Dacă intervalul de apel al cronometrului (2300 - Currentlevel * 350< 250) { // чем выше уровень, тем меньше интервал interval = 350; } else { interval = 2300 - currentLevel * 350; } gameTimer = new Timer(interval, 20); // создаём и запускаем таймер. gameTimer.start(); gameTimer.addEventListener(TimerEvent.TIMER, addItem); gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, cicleEnd); } /** * @private Создаём новый айтем по таймеру * * @param e событие тика таймера */ private function addItem(e:TimerEvent):void { var randomRange:Number = Math.random(); // случайное значене var itemType:String = ItemType.GOOD; // тип нового айтема. по умолчнанию все айтемы обычные if (randomRange > 0.65 && randomrange.< .95) { // если случайное значение в заданном диапазоне (30%)... itemType = ItemType.EVIL; // айтем злой } else if (randomRange >\u003d .95) (// 5% dintems le-a lăsat să "consolideze" itemtype \u003d imemtype.money_good;) var: element \u003d element nou (itemttype); // creați o nouă aleatorie cu elementul generat.x \u003d etapa.stagewidth * matemath.random (); // Puneți pe elementul Random.X.Y \u003d -Item.Hight; // A p.Y.Speed \u200b\u200b\u003d Currentlevel + 1 Fiți îndepărtați în afara scenei scenei. // viteză de viteză gamecontainer.addhild (element); // și adăugați-l la scenă) / ** * @private atunci când cronometrul a absolvit de la locul de muncă, curățați-l, ceea ce nu este necesar și lansarea unui nou nivel * * @param E eveniment eveniment temporizator * / Cicicleend de funcții private (E: Timerevent): Void (GameTimer.RemoveventListener (Timerevent.TIMER, ADDITEM); GameTimer.RemoveEventListener (Timerevent.Timer_Complete, Cleenend); GameTimer \u003d Null; // Ștergerea a ascultat temporizatorul și link-ul la cronometrul curentului ++ nivelul pe unitate niveltext.text \u003d "nivel:" + șir (currentlevel + 1); // actualizați textul nivelului niveluluiText.width \u003d NivelulText.Textwidth +4; StartnewLevel (); // rulați un nou nivel) / ** * @ Ciclul jocului Private * Actualizăm poziția ATEMS. Dacă au trecut dincolo de scenă, ștergeți. * Întoarceți-le coliziuni cu o platformă * * @param E Enterframe Eveniment * / Funcție privată UpdateGame (E: Eveniment): Void (// în ciclu trece pe tot cuprinsul containerului de joc, cu excepția platformei (I \u003d 1 ) pentru (var i: int \u003d 1; i< gameContainer.numChildren; i++) { var tempItem:Item = gameContainer.getChildAt(i) as Item; // берём айтем tempItem.y += (tempItem.speed * 3) * .8; // увеличиваем его.y координаты в зависимости от его скорости. if (tempItem.y > Stage.stageHeight) (// daca a plecat pe scena ... gamecontainer.removechild (TEMPITEM); // ... eliminați-l ... dacă (tempitem.type \u003d\u003d imemtype.good) CurrentScore -; // .. și dacă sa dovedit a fi obișnuită, scoateți unitatea din ochelari.) Dacă (TEMPITEM.HITTESTOBJECT (Platformă)) (// Dacă ATEP este prins de platformă // În funcție de tipul său, producem acțiuni . // Nu cred că nimic aici nu explică comutatorul (TEMPITEM.TYPE) (CASE ITERMTTYPE.BOOD: CALISTSCORE ++; Break; Case itemttype.food_good: CallingScore + \u003d 5; pauză; Case itemtype.evil: CurrentScore-; Pauză;) // De asemenea, atunci când loviți platforma, nu mai este necesar, îl ștergem din scena Gamecontainer.removechild (Tempitem);)) ScoreText.Text \u003d "Scorul:" + CurrentScore; // actualizați o casetă de text cu ochelari (maxscore< currentScore) maxScore = currentScore; // записываем максимальное количество очков if (currentScore < -5) { // если количество очков меньше, чем -5.. dispatchEvent(new GameEvent(GameEvent.GAME_OVER)); //... генерируем событие проигрыша } } /** * @private генерируем событие выхода из игры * * @param e событие прикосновения к кнопке выхода в меню */ private function exitGame(e:TouchEvent):void { dispatchEvent(new GameEvent(GameEvent.EXIT_GAME)); } /** * @private удаляем все ненужные больше слушатели * * @param e событие удаления со сцены */ private function removedFromStage(e:Event):void { removeEventListener(Event.REMOVED_FROM_STAGE, removedFromStage); removeEventListener(Event.ENTER_FRAME, updateGame); stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveplatform); stage.removeEventListener(MouseEvent.MOUSE_UP, moveplatform); menuButton.removeEventListener(TouchEvent.TOUCH_TAP, exitGame); gameTimer.stop(); gameTimer.removeEventListener(TimerEvent.TIMER, addItem); gameTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, cicleEnd); } } }
Scorscreen. Afișat după pierderea. Afișează o casetă de text cu un rezultat final și butoane pentru a reveni la meniu și repetați jocul
Ecrane de pachete (import elemente.button; Import Flash.Display.sprite; Import Flash.events.event; Import Flash.text.textfield; Import Tools.Tools; / ** * pentru a afișa rezultatul jocului sub formă de Numărul de puncte marcate. * Constă din textul "Scorul dvs.:" și "Meniu" și "din nou" butoane * * @Author iluzor * / clasa publică scorscreen extinde Sprite (/ ** @private număr de puncte pentru afișare * / privat VAR Scor: UINT; / ** Butonul "Meniu" * / Var Public Menubutton: Button; / ** butonul "din nou" * / Public VAR din nou Button: Button; / ** * În constructor așteptăm să adăugăm la scenă. Aici etapa este necesară pentru a poziționa elementele * @param Score Număr de puncte pentru a afișa * / Funcție publică Scorescreen (scor: UINT) (Acest.score \u003d scor; addeventListener (Event.Added_to_Stage, ArodtOstage);) / ** * Creați O casetă de text pentru a afișa puncte și butoane pentru repetarea jocului și a reveni la meniul principal. * * @param e eveniment adăugând la scenă * / Funcție privată AdăugatăTosag E (E: Eveniment): Void (Event.Added_to_Stage, ArodtOstage); // câmp de text va afișa numărul de puncte VAR Doretext formate: TextField \u003d Tools.GenReteTextfield (40, "Scorul dvs.:" Scorul dvs.); Scorext.x \u003d (Stage.StageWidth - ScoreText.Width) / 2; ScoreText.y \u003d (Stage.StageHeight - ScoreText.Height) / 2 - Stage.StageHeight / 6; AddDhild (ScoreText); // butonul pentru a ieși din Menubutton \u003d butonul nou ("Meniu"); AddDhild (Menubutton); Menubutton.Width \u003d Stage.Stagewidth / 2; Menubutton.scaley \u003d Menubutton.scalex; Menubutton.x \u003d (Stage.Stagewidth - Menubutton.Width) / 2; Menubutton.y \u003d ScoreText.y + ScoreText.Aight + 30; // "redați mai mult" din nouButton \u003d butonul nou ("din nou"); AddDhild (din nou Button); din nouButton.Width \u003d Stage.Stagewidth / 2; din nouButton.scaley \u003d din nouButton.scalex; din nouButton.x \u003d (Stage.StageWidth - din nouButton.Width) / 2; din noubutton.y \u003d menubutton.y + menubutton.height + 30; ))
Și ultima clasă Principal. De la rădăcină. Joc de clasă principală. Folosit pentru a schimba ecranele și curățarea cu aceste schimburi. Ascultă butoanele ecranelor pentru a presa și evenimentele de joc. În funcție de ele elimină scena și arată ecranul dorit.
Pachet (import Constants.Screentype; Import Evenimente.Gameevent; Import Flash.Desktop.nativeAplication; Import Flash.display.Sprite; Import Flash.display.Stagealign; Import Flash.Display.StagesCalemode; Import Flash.events.event; Import Flash. Evenimente.Touchevent; Import Flash.ui.Multitouch; Import Flash.ui.mulTouchInputmode; Import Ecrans.Gamescreen; Import ecrane.mainmenu; Import ecrane.Scorescreen; / ** * Clasa de bază de joc. Gestionează afișarea diferitelor ecrane de joc. * Jocul reprezintă următoarele: În partea de jos a ecranului este "platforma", care poate fi mișcată. * De la "obiecte" de trei tipuri: roșu, verde, albastru. Trebuie să vă prindeți platforma. * * Creat folosind FlashDeveling 4.0.1 și Flex SDK 4.6 * cu utilizarea bibliotecii de la Greensock - http://www.greensock.com/v11/ * * @Author iluzor * @version 0.6 * / Clasa publică Main extinde sprite (/ ** @private Ecranul principal al meniului * / Var privat Menuscreen: Mainmenu; / ** @ Private joc ecran * / Gamescreen privat: Gamescreen; . / ** @private această variabilă stochează valorile textului tipului de ecran * de la Constancios.Screentype, care este afișat în acest moment * necesar pentru curățarea de către ascultători și obiecte pe ecran * / private Var curencreen: șir; / * ** * Chief Designer * / Funcție publică principală (): nulă (etapa.scalimode \u003d etagescalemode.no_scale; Etapa.align \u003d Stagealign.top_left; // Dezactivarea evenimentului aplicației. adică ieșirile de la IT sau Pliere (NAG "butonul HOME" "sau" BACK ") STAY.ADDEVENTListener (eveniment.deactivat, dezactivat); // tipul de intrare / Afișați meniul principal.) / ** * @Private Afișați meniul principal * / Funcția privată ShowMenu (): VOID (CurrentScreen \u003d screenype.main_menu; // Aplicați tipul de meniu menuscreen \u003d nou Mainmenu (); // Creați a Meniu și adăugați-l la scena AddDhild (menuscreen); menuscreen.playbutton.addeventlistener (TOUCHEvent.Touch_Tap, StartGame); // Adăugați ascultătorii la butoanele Meniu menuscreen.exitbutton.addeventlistener (TOUCHEvent.Touch_Tap, Dezactivare);) / ** * * @Private arată ecranul de joc * * @param e eveniment atingeți la butonul PLAYB Utton Meniu principal * / Funcție privată StartGame (E: TOUCHEVENT): Void (clar (); // Curățați ecranul curentului \u003d Screeniaype. Game_screen; // aplicați tipul de gamescreen de ecran \u003d noul gamescreen (); // Creați un ecran de joc și Adăugați AddDhild (Gamescreen) pe scenă; Gamescreen.addeventlistener (gameevent.exit_game, ieșirea); // ieșirea evenimentului din joc pe butonul de gamescreen.addeventlistener (gameevent.game_over, gameover); // pierdere eveniment) / ** * @private ieșire din joc apăsând butonul * * @param e eveniment de ieșire din joc * / Funcție privată EvitGame (E: Gameevent): Void (clar (); // curat Showmenu (); MAXCORE; // Numărul de puncte. Ieșiți din ecranul de joc din variabila Clear MaxScore; // Curățați ecranul curentului \u003d SCREENYPE.SCore_screen; // Aplicați scorscreen \u003d tipul de ecran de scor de scor; // Creați și afișați ecranul de rezultate AddDhild ( Scorscreen); scorscreen.menubtton. AddEventListener (TOUCHEvent.Touch_Tap, ExitScore); // ascultători scorscreen.againbutton.Addeventlistener Rezultate Rezultate Butoane de ecran (TOUCHEvent.Touch_Tap, StartGame);) / ** * @ @ ieșire de la ecranul Rezultate pe butonul . * Trebuie să faceți același lucru la fel ca atunci când apăsați butonul de ieșire din joc, așa că apelați la eveniment de ieșire () * * @param E Atingeți butonul de ieșire din ecranul Rezultate * / Funcție privată ExitScore (E: Touchevent): Void (ExitGame (null);) / ** * Curățarea @Private de la ascultători inutili și obiecte pe ecran * În funcție de ecranul curent. * / FUNCTION PRIVAT CLEAR (): VOID (comutator (curentul) (Cazul Screcentype.main_Menu: Menuscreen.playbutton.removeeventlistener (TOUCHEVENT.Touch_tap, StartGame); Menuscreen.exitbutton.removeEventListener (TOUCHEVENT.Touch_tap, Dezactivare); RemoveChild (menuscreen) ; menuscreen \u003d null; pauză; pauză; caz Screferă: GameScreen.RemoveEventListener (gameevent.exit_game, ieșire); Gamescreen.RemoveEventListener (gameevent.game_over, Gameover); RemoveScreen (Gamescreen); Gamescreen \u003d Null; Break; Cazul Screcentype.score_screen: scorscreen.menubutton.removeeventListener (TOUCHEVENT.Touch_tap, ExitScore); Scorescreen.againbutton.removeeventlistener (TOUCHEVENT.Touch_tap, StartGame); RemoveScreen (Scorescreen); Scorescreen \u003d null; Break;)) / ** * Ieșire dintr-o aplicație prin NativeApplication * Dacă faceți clic pe butonul "HOME" sau "BACK" Aplicație închide * * @param e eveniment de dezactivare * / funcția privată Dezactivare (E: Eveniment): Void (NativeApplication.NativApplication.e Xit (); ))

Compilație și lansare.

Proiectul este configurat, grafica este desenată, codul este scris. Totul este. Puteți testa jocul. Luăm un telefon inteligent, du-te la Opțiuni dezvoltator., porniți Modul de depanare USB.. Conectăm cablul la computer.

Acum trebuie să faceți unele acțiuni în FlashDevelop.
- Finalizați proiectul Proiect / BuildProject.(F8). În dosar cos. Va apărea o unitate flash;
- Alerga PachetApp.bat.. Introduceți "2", apăsați ENTER. Așteptăm până când proiectul este în APK și apare în dosar dist.;
- Selectați în meniu Debug / Start Remote sesiune;
- Alerga Run.bat. - Aplicația va completa dispozitivul, începe acolo și se conectează la debugger.

Totul poate fi testat, utilizați debugger și chiar prinde urme direct de pe dispozitiv. Profil, din păcate, nu funcționează.

Toate aceste 4 acțiuni pot fi făcute într-un alt mod. Doar alege Proiect / proiect de testare(F5). Totul va fi executat automat.

Când aplicația este testată și terminată, executați PachetApp.bat.Introduc o unitate. În dosar dist. Eliberarea apk va apărea.

Sfârșitul primei părți.