Începeți să scrieți mario

Continuam seria de postari despre igrostroenii ..

Ce facem pentru desen? La început trebuie să luăm pânza pe care vom desena. În DelphiX, pânza noastră este o componentă a TDXDraw (care se află pe fila DelphiX). Facem clic pe componenta TDXDraw cu butonul drept al mouse-ului, apoi apare o fereastră în formă. Acum, să ne uităm la desenul de pe panza noastră. Desenul pe panza este similar cu graficul de desen.







Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

(Îmi pare rău, dar nu sunt un artist :))

Adică, coordonatele minime în x și y sunt 0.

Canvasul poate fi reprezentat ca o masă la coordonatele cărora are culoarea proprie. De exemplu:

Înseamnă. că culoarea coordonatelor (1,1) = $ 0000FF (roșu).

Acum să creăm eroul nostru - mario. După Corzi

procedura DoCollision (Sprite: TSprite; var: Done: Boolean); suprascrie;

procedura DoMove (MoveCount: Integer); suprascrie;

Acum, să încercăm să înțelegem ceea ce este descris în acest cod minunat.

Anunțăm clasa TMarioHero.

"Tatăl" său TImageSprite - aceasta înseamnă că "copilul" său. TMarioHero poate face totul. ceea ce poate face tatal sau.

procedura DoMove (MoveCount: Integer); suprascrie;

Dezasamblam codurile scrise mai sus.

Am descris procedura cu numele DoMove și parametrii de intrare (aproximativ vorbind, ce este în paranteze). Parametrul de intrare are un MoveCount - numărul de mișcări ale eroului nostru. După ":" vom scrie tipul variabilei pe care o avem Integer (număr întreg). Și în cele din urmă cea mai interesantă sursă de cuvinte, mai sus am spus că copilul știe tot ce poate face tatăl său. Tatăl știe, de asemenea, cum să se miște, dar cuvântul rezervat - suprascrie înseamnă că fiul sau eroul nostru o face în felul său.

procedura DoCollision (Sprite: TSprite; var: Done: Boolean); suprascrie;

se ocupă de coliziunile spritelor sau obiectelor de joc pe care le vom descrie în viitor.

Acum să revenim la teorie (dar nu pentru mult timp!). Am menționat deja în postările anterioare că am ales DirectX pentru că știe să lucreze nu numai cu grafica, ci și cu dispozitivele de intrare.

O componentă minunată a TDXInput (care vă permite să lucrați cu mouse-ul și cu joystick-ul, care nu este lipsit de importanță în programare!)

Începem să-l scriem pe Mario.

Începem să-l scriem pe Mario.

(care este, de asemenea, pe fila DelphiX)

ne permite să nu ne descurajăm prin programarea dificilă a dispozitivelor de intrare și să începem imediat activitatea cu privire la sarcina principală.

Deoarece componenta deja știe ce acțiune a fost complet, adică. indiferent dacă ar fi căzut la partea de jos sau în sus, putem regla doar ce chei va fi acțiunea. Dacă faceți clic pe componenta noastră de două ori, vom vedea fereastra

Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

având două file Joystick (Joystick) și tastatură (tastatură).

La prima instalare pentru a lucra cu Joystick-ul. dar la cel de-al doilea eveniment de tastatură.

Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

Cum ar fi. Sus (Sus), Jos (Jos), Dreaptă (Stânga), Stânga (Dreapta) și un set suplimentar de 32 de configurabile.

Acum trebuie să scriem ceea ce va face eroul atunci când se mișcă (care este configurat în DXInput). Găsiți liniile scrise de noi "pro mario":

Începem să-l scriem pe Mario.

Începem să-l scriem pe Mario.

puneți cursorul mouse-ului pe cuvântul DoMove după "clic", astfel încât pointerul de editare este activ pe numele procedurii DoMove. Apăsați combinația de taste Ctrl + Shift + C Delphi va crea procedura și nu va trebui să o descriem (în nici o parte) de noi înșine. Codul Delphi generat:







procedura TMarioHero.DoMove (MoveCount: Integer);

mai sus am discutat deja descrierea procedurii acum sunt linii foarte importante începe (sfârșitul) sfârșitul (sfârșitul) tot ceea ce va fi descris în mijlocul lor va avea loc atunci când procedura este chemat.

Cuvântul rezervat moștenit numește "tata". că ar face totul. că el știe cum, și apoi ajungem la afaceri. Eu personal nu-mi place modul în care Delphi a făcut de data aceasta. Va fi mai clar pentru mine ca un programator și un compilator de înțeles - această linie, dacă o schimbăm:

procedura TMarioHero.DoMove (MoveCount: Integer);

adică, ne amintim că suntem îmbunătățirea abilităților de „Papa“, și de această dată este de înțeles, pentru că noi o numim capacitatea de a trece la papa MoveCount (număr întreg).

În timp ce părăsim - aceste proceduri și mergeți la "warm-up".

Am uitat să vă avertizez despre tonul (sau stilul) programării. Fiecare componentă creată nu trebuie să-și lase numele standard, este mai bine să o redenumiți după tipul său de activitate. De exemplu, avem deja două componente - DXInput1 și DXDraw1, dar ar fi fost bine să lăsăm numele, dar să eliminăm numărul. Și apoi vom obține DXInput și DXDraw. Bineînțeles - aceasta nu este o regulă aspru, dar în primul rând pentru tine, va fi mai convenabil.

De ce ar trebui să își schimbe numele?

Pentru ceea ce ar fi mai ușor de înțeles scopul principal al componentei.

Acum să trecem la imagini. În pachetul DelphiX, toate imaginile sunt utilizate cu componenta TDXImageList.

Începem să-l scriem pe Mario.

Începem să-l scriem pe Mario.

DXImageList este doar o listă de imagini. Acesta acceptă aceste tipuri de fișiere:

și alte formate mai puțin obișnuite. Pentru a lucra cu lista, componenta are elementele "elemente".

Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

Dând clic pe valoarea sa, vom trece la lista de mai sus. Pentru a adăuga un element în listă, faceți clic pe butonul Adăugați un element nou (element)

Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

Când creați un nume (nume) este gol, de ex. nimic nu a fost atribuit. Cum încadram imaginea fără un nume? Redenumiți-o! Îți sugerez un nume - fundal. Dar se pare că am sunat doar la lista fără a-i da o fotografie. Încărcați-l foarte ușor! Dacă faceți clic pe valoarea imaginii, imaginea va "arunca" forma ferestrei editorului de imagini.

Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

Dacă faceți clic pe butonul Încărcare, se deschid dialogurile familiare de deschidere a fișierului.

Acum trebuie să "spunem" componenta despre ce ar trebui să facă. Asta e tot. ceea ce ar trebui să facem înainte de a crea formularul apare când apare evenimentul OnCreate. Pentru aceasta, selectați formularul. că inspectorul de obiecte (Object Inspecter) ar arăta formularele. În clauza Evenimente trebuie să găsiți evenimentul OnCreate și faceți clic pe valoarea acestuia. Delphi va crea procedura în sine.

procedura TMainForm.FormCreate (Expeditor: TObject);

// Aici descriem acțiunile la pornire.

Acum. Ce ar trebui să facem în "lecția" de astăzi?

* Mutarea lui Mario (El nu va mai funcționa fără probleme)

Înainte de toate, trebuie să explicăm că pânza noastră trebuie să extragă tot ce îi spunem.

Pentru aceasta, adăugați componenta TDXTimer. Să creăm un eveniment OnTimer:

procedura TMainForm.DXTimerTimer (Expeditor: TObject; LagCount: Integer);

Acum, în viitor, se va actualiza panza la fiecare n-secunde, care sunt configurate în Inspectorul de obiecte.

Enabled și ActiveOnly trebuie să fie True.

Valoarea optimă a intervalului este de 33g.

1.) Creați un fundal.

Componentele DelphiX sunt foarte convenabile, am spus deja de mai multe ori. Și acum vom crea o clasă care „Papa“ este - DXSpriteEngine.Engine (sprite mai specific decât cel utilizat anterior de noi) și apoi „fiul“ va fi capabil să tot ceea ce tatăl său.

Acum voi da explicații după fiecare linie după semne //

După toate modificările, codul procedurii OnCreate va fi:

procedura TMainForm.FormCreate (Expeditor: TObject);

// Aici descriem acțiunile la pornire.

cu TBackgroundSprite.Create (DXSpriteEngine.Engine) do // all. care vor fi descrise mai departe în paranteze de programe vor fi proprietăți din TBackgroundSprite.Create (DXSpriteEngine.Engine)

imagine: = ImageList.Items.Find ('fundal'); // imaginea va fi elementul nostru din lista de fundal încărcată în componenta ImageList

Image.Transparent: = false; // elimina transparența

SetMapSize (800,640); // setați lățimea fundalului la întreaga pânză, deoarece nu se va schimba

Placă: = falsă; // nu setați un fundal de țiglă (nu constă din bucăți de imagini)

Dacă începem acum, obținem acest rezultat. Fundalul solid.

Începem să-l scriem pe Mario.

Începeți să scrieți mario
Începem să-l scriem pe Mario.

Cu prima noastră sarcină am reușit!

Acum să ne ocupăm de eroul nostru. Trebuie să găsiți secțiunea var.

Dacă ați făcut lucrul corect de mai sus, secțiunea dvs. ar trebui să aibă despre acest cod







Articole similare

Trimiteți-le prietenilor: