>> ROB BOWDEN: Hi.
Sunt Rob.
Vă întrebați cum să pună în aplicare acest joc?
Ei bine, hai să izbucni soluția de personal.
>> Deci, hai prima lui capul în jos pentru a init funcții pe care le-am spus să
să pună în aplicare în primul rând.
În primul rând o vom arunca o privire la ea este de inițializare zbaturi.
În regulă, astfel amintiți-vă că ne-o dorim zbaturi să fie centrat exact în
axa x.
Deci, avem nevoie să ne dăm seama în cazul în care ar trebui să meargă.
>> Având în vedere lățimea de bord - care este hash, de asemenea, de sus definit în sus -
avem nevoie pentru a scădea din lățimea zbaturi și se împarte la 2, astfel încât
Centrul paletei este în centrul de bord.
Amintiți-vă că x-coordonate se referă la colțul din stânga sus al paletei,
și așa mai departe acest lucru este exact acolo unde vrem să fie.
Y-și coordoneze nu conteaza la fel de mult pentru că putem plasa
ea ori de câte ori ne-o dorim.
Așa că am instantierea zbaturi, ne-am stabilit culoarea neagră, ne-am stabilit umple la True
așa că este o completat dreptunghi, și ne-am apoi adăugați-l la fereastra și întoarce-
zbaturi.
Și asta e tot pentru inițializarea zbaturi.
>> O să fie similare pentru inițializare tablou de bord.
Așa că am de gând pentru a inițializa eticheta, vom seta culoarea la
gri deschis - puteți alege orice Vreau - vom seta fontul pentru
sans serif 48 -
ar putea alege, de asemenea, tot ce vrei -
vom adauga la fereastra.
Acum, aceasta trimite în spate nu este cu adevărat necesar, este doar în cazul în care ceva
altfel se întâmplă să se suprapună eticheta.
Apoi, atunci când vom folosi de detectare a coliziunilor, Detectare Coliziunea va detecta alta
lucru înainte de a se detectează eticheta.
Dar că într-adevăr nu ar trebui să afecteze ne în acest program.
>> În cele din urmă, ne-am acest tablou de bord actualizare Funcția pe care am scris.
Deci, haideți să aruncăm o privire la asta.
Acum, aici vom vedea ceva care este aproape identice cu ceea
am văzut în label.c.
Deci, avem o etichetă -
un tampon caracter de 12 caractere, care este suficient doar să se ocupe de orice
întreg, negativ sau pozitiv.
Apoi, vom folosi sprintf pentru a copia subliniază în care tampon.
Deci, s aceasta conține un șir de caractere care reprezintă numărul de puncte.
>> În cele din urmă, ne-am stabilit eticheta pentru că șir.
Și atunci avem nevoie pentru a centra eticheta în cazul în care am trecut de la nouă la 10
punctele și l-am schimbat.
Așa că am calcula y coordonatele x și etichetei care va
obține lățimea și înălțimea a ferestrei.
Deși, am putea, de asemenea, pur și simplu utilizați constante Lățime și Înălțime hash
definit sus.
Am obține, de asemenea, lățimea și înălțimea etichetei și decalajul
care de la 2 la centru.
Și apoi vom folosi Set Locație a efectiv pune-l în acea locație.
Deci, asta e pentru inițializare tablou de bord.
>> OK.
Bilă astfel de inițializare va fi foarte asemănător a init padelele, de asemenea.
Vedem aici că suntem folosind newgoval în scopul de a instantia o nouă minge.
Și aici vom folosi de 2 ori raza ca lățimea balonului, și două
ori raza ca înălțimea mingea.
Acum, de asemenea, pentru newgoval, x și y-și coordoneze care trecem în va
să se refere la partea din stânga sus bile, care este de fapt
în afara mingea în sine.
Deci, în scopul de a obține mingea exact centrat în bord, avem nevoie pentru a trece
Lățimea împărțit la 2 pentru centru, și apoi scade în raza a împinge
centrul real al mingea în centrul de bord.
Și vom face exact același lucru pentru axa y, cu excepția utilizării
înălțimea în loc de lățime.
>> Astfel că pune mingea în centru.
Și acest instanțiază mingea, setați culoare la negru, completați mingea,
apoi în cele din urmă se adaugă la fereastra și întoarce-l.
Și asta e tot pentru inițializarea mingea.
>> Deci, acum, haideți să aruncăm o privire la inițializare cărămizi, care este puțin mai mult
complicat, dar e destul de similar cu init zbaturi.
Acum, în primul rând trebuie să ne dăm seama lățimea fiecărei cărămizi.
Amintiți-vă că avem o constantă numită apeluri care specifică
Numărul de coloane din cărămizi pe care le avem.
Deci, vom determina lățimea unui singur cărămidă prin luarea lățimea
din întreaga tablă, scăzând din mărimea gap noastre -
care este hash definit până sus și se referă cu numărul de pixeli care
trebuie să fie între fiecare cărămidă -
și astfel vom avea un total de ori decalaj invită pixeli goale într-un
un singur rând.
Și care se vor referi, de asemenea, la unele gol pixeli la stânga și la dreapta a
coloana din stânga și dreapta cărămidă coloană.
>> Astfel scade acele pixeli goale ne lasă cu un număr de pixeli, care
cărămizi sunt de fapt, folosind.
Și apoi vom împărți prin apeluri pentru a obține numărul de pixeli per cărămidă.
Deci, aici vom defini o matrice care doar specifică culorile pe care le doresc pentru fiecare
rând de cărămizi.
Dacă am fi avut mai multe rânduri de cărămizi decât Culorile pe care le specificați, vom vedea
că vom doar buclă înapoi în jurul și folosesc roșu din nou, iar apoi portocaliu și
galben și așa mai departe.
>> Astfel, ca indicii spec. set-p, suntem va bucla peste toate rândurile și
coloane din cărămizi.
Dar, înainte de buclă ne pe coloane, ne-am a se vedea aici că suntem Specificarea
poziția y a fiecărei cărămizi în acel rând special.
Am putea muta, de asemenea, acest lucru în a doua pentru bucla, dar apoi ne-ar fi doar
face calculul de peste si peste din nou, atunci când nu avem nevoie să.
>> Astfel poziția y de caramida se întâmplă să fie marja, care este hash
definit până sus și doar se referă la spațiu între partea de sus a consiliului de administrație și
începerea toate cărămizi.
Și vom adăuga la faptul că rândul că suntem pe ori înălțimea de un
caramida individ plus diferența adică între fiecare cărămidă.
Deci, acest lucru este, de asemenea, un vertical decalaj între fiecare cărămidă.
Astfel că ne dă y-coordonata din caramida.
>> Deci, aici vom calcula x-coordonata de cărămidă.
Acum, avem decalaj împărțit la 2, deoarece, amintiți-vă înainte, i-am spus că la
partea stângă a consiliului, vom pentru a lăsa un spațiu mic.
Deci, diferența de împărțit la 2 este acel spațiu.
Și apoi vom adăuga la faptul că coloana că suntem pe vremuri lățime plus
decalaj, în cazul în care lățimea este cantitatea de spațiu ca o singură cărămidă preia și
atunci decalaj este spațiul între fiecare cărămidă.
Astfel că calculează x-coordonate din caramida.
>> Acum, avem nevoie doar pentru a instantia cărămidă având în vedere că x și y-coordonata
folosind lățime care am calculat pentru fiecare înălțime cărămidă, iar pauza de care este
hash top definit în sus.
Ne-am stabilit culoarea de caramida.
Observați ne folosind culori nostru matrice și vom trece în rândul care au fost
pe culori Num mod care va face ne înfășurați în jurul înapoi la roșu dacă am
au mai multe rânduri decât culori.
În cele din urmă, vom umple din caramida culoare și adăugați-l la fereastra.
>> Și asta e tot.
Deci, asta este pentru toate noastre Metode de inițializare.
Acum, avem nevoie să te uiți la asta în timp ce buclă pe care a trebuit să umple inch
Deci, aici vom vedea că acest lucru este în timp ce noastre buclă, care va continua până la
jocul este de peste, care fie mijloace ne-am alerga afară de vieți sau
ne-am alerga afară de cărămizi.
>> Deci, primul lucru pe care trebuie este un Așteptați pentru clic.
Deci, jocul ne așteaptă pentru a efectiv faceți clic inainte ca mingea incepe sa se miste.
Și apoi vom merge pentru a decrementa vieți.
Deci, dacă am avut trei vieți, acum suntem până la două vieți, suntem cu ajutorul nostru
a treia de viata.
Mergem la centrul mingea.
Deci, acum, acest lucru nu este cu adevărat de gând să ajute ne pe prima viața pe care o juca
deoarece mingea este deja de gând să s-au centrat de când ne-am
instanțiată-l.
Dar vom vedea când vom termina prin a pierde de viață și buclă înapoi în jurul, atunci suntem
de gând să doriți să recentra mingea de la partea de jos a plăcii înapoi la
centru.
>> Deci, acum aici avem nevoie pentru a genera x viteza de minge.
Și, ca pe spec., suntem folosind d rand 48 pentru a genera un numar aleator
pentru a specifica viteza.
Suntem adăugând unul pentru că de când ne-am doresc viteza în intervalul de unul
a doua în loc de zero la unu.
În cele din urmă, suntem cu ajutorul d rand 48 din nou în Pentru a determina dacă mingea
se va muta la stânga sau dreptul de a începe.
>> Deci, d rand 48 returnează un număr aleator între zero și unu, și deci de a cere
în cazul în care este mai mic de 0,5, avem un 50 50 șansă de a schimba viteza de
mingea să fie negativ.
În final, am stabilit viteza verticală mingea a fi doar o constantă.
Am ales trei.
Și acum avem o altă buclă.
>> Deci, aceasta bucla interioară este va continua.
Observați aici, în timp ce cărămizi este mai mare decât zero -
așa că, dacă am alerga afară de cărămizi, ne-am a câștigat jocul și putem
izbucni din această buclă -
și toate Ia y Ball mai puțin decât înălțimea minus 2 ori raza.
Deci, despre ce este recunoașterea este în cazul în care mingea se intampla sa dribleze pe paleta, în
caz în care ați pierdut o viață.
>> Privind în interiorul acest lucru pentru bucla avem de verificare pentru un eveniment de mouse.
Și astfel, dacă există un eveniment șoarece, care înseamnă că vrem să verificați la
vedea dacă mouse-ul a fost mutat, și dacă mouse-ul a fost mutat, vrem să avem
zbaturi ține pasul cu mouse-ul.
Deci, pentru a face acest lucru, va calcula noua Poziția de zbaturi, care se va
pentru a apuca poziția mouse-ului - care prinde poziția utilizând
eveniment pe care ne-au fost trecute -
și apoi vom scădea în Lățimea pale împărțit la 2, așa
sejururi cu zbaturi centrate pe mouse-ul în loc de partea stângă a paletei
stau centrat.
>> Deci, acum avem, de asemenea, doresc să fie siguri că ne-am nu merg pe partea stanga sau dreapta
parte a consiliului.
Și așa că aici suntem doar a verifica dacă paletă ar fi de pe partea stângă a
bord, doar stick l în partea stângă.
Și aici vom verifica dacă zbaturi ar fi pe partea dreaptă a
bord, doar stick- pentru partea dreaptă.
Și, în sfârșit, ne-am stabilit de fapt locația zbaturi.
>> Acum, dacă nu a fost o mișcare mouse-ului, asta înseamnă că vom
doriți să mutați mingea.
Și așa avem deja x și viteza y a balonului
și așa ne-am muta.
Dar acum ne-o dorim pentru a detecta câteva lucruri.
Deci, aici suntem detectarea dacă am lovit, fie în partea stângă sau dreaptă a
bord, vrem mingea pentru a sări.
Și astfel, în acest caz, ne-am stabilit x viteza la x viteza negativ.
>> În cazul în care mingea a lovit partea de sus a consiliului, apoi ne-am dori, de asemenea saritura mingea.
Dar acum vrem să se schimbe viteza y.
Observați că nu avem o condiție pentru mingea a lovit partea de jos a
bord de la care a fost deja capturat aici, în această buclă în timp.
>> În cele din urmă, ne-o dorim pentru a detecta unele coliziuni în care în cazul în care a lovit mingea
fie zbaturi sau caramida, ne-o dorim de a face unele lucruri speciale de caz.
Deci, dacă a existat o coliziune, în care obiecte de caz nu va fi nulă, apoi,
dacă obiectul lovit cu zbaturi, ne-ar Vreau doar pentru a sări mingea.
Și aici, de asemenea, ne-am stabilit locul de mingea deasupra zbaturi.
Observați că luăm poziția x de mingea și doar reutilizarea că.
Dar aici ne apropiem poziția y de zbaturi și mutarea mingea
deasupra paletei.
>> Acesta este un caz special, astfel încât mingea nu a lovit cu zbaturi și apoi,
înainte de a fi capabil să se miște de pe paleta, o altă buclă merge în jurul și
ea crede că e încă pe panoul și astfel încât viteza y devine setat înapoi la
negativ, iar apoi mingea doar un fel bastoane de viguros pe paleta.
Deci, dacă nu ne-am lovit cu zbaturi, apoi ne-am dori, de asemenea pentru a verifica
dacă ne-am lovit de caramida.
Și astfel încât acesta este modul în care putem verifica pentru a vedea dacă ne-am lovit o caramida.
>> Avem nevoie pentru a verifica acest lucru, deoarece ne-am putea s-au lovit de fapt, eticheta și noi
Nu doriți să eliminați eticheta.
Deci, dacă ne-am lovit o caramida, putem elimina că caramida de la fereastra, descreșterea
numărul nostru de cărămizi, incrementa nostru număr de puncte, iar acum trebuie să
actualizeze tabloul de bord, care este exact la fel cum am văzut mai înainte, când am văzut
init tablou de bord.
Dar acum suntem doar actualizarea tablou de bord de când ne-am schimbat
număr de puncte.
Și ar trebui să afișeze acum că ne-am lovit unul mai mult pauză.
>> Și, în sfârșit, în cazul în care ne-am lovit o caramida De asemenea, ne-o dorim pentru a sări.
Deci, în final, ne oprim doar pentru ca mingea nu se mișcă foarte repede și ne-am
se poate lovi de fapt, cu zbaturi nostru.
Și asta e destul de mult.
Deci, acum ne-ar buclă înapoi la partea de sus a această buclă în timp și va continua până
fie vom pierde o viață sau ne-am alerga afară de cărămizi.
>> Ce se întâmplă dacă am pierde o viață?
Apoi, vom ieși din acest timp buclă, și vom vedea voința buclă copie de rezervă
în partea de sus a buclei timp exterior.
În cazul în care, vom executa acest înființat din nou.
Și acest lucru înființat va trebui să așteptăm pentru un clic, decrement numărul nostru
de vieți, recentra mingea, recalcula o viteză x și y, și
apoi reia jocul.
>> Și astfel, care va continua până fie cărămizi sfârșește prin a fi mai puțin
sau egal cu zero -
în cazul în care ne-am castigat jocul pe care -
sau viața este mai mică decât zero, în care caz ne-am pierdut jocul.
Deci, odată ce acesta este cazul, ne-am izbucni de care buclă în timp ce, și ajungem aici
unde am de gând să aștepte pentru clic înainte de a ieși de joc, astfel încât
joc nu doar imediat închide pe noi.
Și, în sfârșit, vom închide fereastră și că este.
Numele meu este Rob, iar acest lucru a fost Breakout.