ROB BOWDEN: Hei. Jeg er Rob. Lurer på hvordan å gjennomføre dette spillet? Vel, la oss bryte ut de ansatte løsning. Så, la oss først ta ned til init funksjoner som vi fortalte deg til gjennomføre første. Første vi vil ta en titt på det er init padle. Greit, så husk at vi vil at padle å være nøyaktig sentrert i x-aksen. Så vi må finne ut der som bør gå. På grunn av bredden av brettet - hvilken er også hash definert opp toppen - vi trenger å trekke ut padle bredde og dele på to, slik at midten av åren er i midten av brettet. Husk at den x-koordinaten gjelder øverste venstre hjørne av åren, og så dette er akkurat der vi ønsker den skal være. Den y-koordinat spiller ingen rolle så mye fordi vi kan plassere den hvor vi vil. Så vi Instantiating padle, setter vi fargen svart, satt vi fylle til True så det er en fylt i rektangel, og vi deretter legge den til vinduet og retur padle. Og det er det for initialisering padle. Det kommer til å være lik for init resultattavle. Så vi kommer til å initialisere etiketten, vi kommer til å sette farge på lys grå - du kan velge hva du ønsker - vi kommer til å sette skriften til sans serif 48 - kan også velge hva du vil - vi vil legge det til vinduet. Nå er dette lengst bak er egentlig ikke nødvendig, det er bare i tilfelle noe annet skjer for å overlappe etiketten. Så når vi bruker Detect Kollisjon, Detect Kollisjon vil oppdage den andre ting før den oppdager etiketten. Men det burde ikke påvirke oss i dette programmet. Endelig har vi denne Oppdater Scoreboard funksjon som vi skrev. Så la oss ta en titt på det. Nå, her ser vi noe som er nesten identisk med hva vi så i label.c. Så vi har en etikett - et tegn buffer på 12 tegn, som er akkurat nok til å håndtere alle heltall, negativ eller positiv. Så bruker vi sprintf å kopiere peker inn som buffer. Så er dette inneholder en streng som representerer antall poeng. Til slutt satt vi etiketten til strengen. Og da trenger vi å sentrere etiketten i tilfelle har vi gått fra ni til 10 peker og vi har flyttet det. Så vi beregne x-og y-koordinater av etiketten som skal får bredden og høyden av vinduet. Selv om vi kunne også bare bruke konstanter Bredde og Høyde hash definert opp toppen. Vi får også bredden og høyden av etiketten og dividere at ved 2 til sentrum. Og så bruker vi Angi posisjon for å faktisk sette den i den posisjonen. Så det er det for init resultattavle. OK. Så init ballen kommer til å være svært lik til init padleåre også. Vi ser her at vi bruker newgoval for å instantiate en ny ball. Og her er vi ved hjelp av to ganger radius som bredden av ballen, og 2 ganger den radius som den høyden på ballen. Nå, også for newgoval, x og y-koordinat at vi passerer i går å referere til den øverst til venstre på ball, som faktisk er utenfor ballen selv. Så for å få ballen akkurat sentrert i styret, må vi passere bredde dividert med 2 for midten, og deretter trekke ut radius å presse selve sentrum av ballen i midten av brettet. Og vi gjør akkurat det samme for Y-aksen, med unntak av å bruke høyde i stedet for bredden. Så som plasserer ballen i midten. Og dette instantiates ballen, sette farge til svart, fyll i ballen, så til slutt legge den til vindu og returnere den. Og det er det for initialisering ballen. Så nå la oss ta en titt på init klosser som er litt mer komplisert, men det er ganske lik init padle. Nå, først må vi finne ut bredden av hver murstein. Husk at vi har en konstant kalt samtaler som spesifiserer antall kolonner med murstein som vi har. Så vi kommer til å bestemme bredden av en enkelt mur ved å ta bredden av hele brettet, å subtrahere ut størrelsen av vår gap - som er hash definert opp toppen og henviser til antall piksler som bør være mellom hver mursten - og så skal vi ha et totalt gap ganger kaller tomme piksler i en enkelt rad. Og det vil også referere til noen blank piksler til venstre og høyre for høyre kolonne murstein kolonne og venstre. Så trekker ut de tomme piksler etterlater oss med et antall piksler som murstein faktisk bruker. Og da vi deler av samtaler for å få antall piksler per murstein. Så her vi definerer en matrise som bare spesifiserer fargene vi ønsker for hver rad med murstein. Hvis vi hadde flere rader med murstein enn farger som vi angitt, vil vi se at vi vil bare sløyfe tilbake rundt og bruke rødt igjen, og deretter oransje og gult og så videre. Så, som p-set spec hint, er vi kommer til løkken over alle radene og kolonner av mursteinene. Men før vi løkken over kolonnene, vi ser her at vi spesifiserer y-posisjonen av hver murstein i den aktuelle raden. Vi kan også bevege dette inn i den andre for loop, men da ville vi bare være gjør beregningen om og om igjen igjen når vi ikke trenger det. Så y-posisjonen av murstein går være margin, som er hash definert opp toppen og bare refererer til mellomrommet mellom toppen av brettet og starten av alle mursteinene. Og vi kommer til å legge til at rad at vi er på ganger høyden av en individuelle murstein pluss gapet som er mellom hver murstein. Dette gjør også en vertikal gap mellom hver murstein. Så det gir oss y-koordinat av murstein. Så her kommer vi til å beregne x-koordinat av murstein. Nå har vi gap delt på to siden, husker før, jeg sa at på venstre side av brettet, skal vi å legge igjen en liten plass. Så gap dividert med 2, er at plassen. Og så skal vi legge til at kolonnen at vi er på tider bredden pluss gap, hvor bredden er mye plass at en enkelt mur tar opp og deretter gap er rommet mellom hver murstein. Så som beregner x-koordinaten av murstein. Nå trenger vi bare på å bruke den murstein gitt at x-og y-koordinat ved hjelp av bredde som vi beregnes for hvert murstein, og pause høyde som er hash definert opp toppen. Vi setter fargen på murstein. Legg merke til at vi bruker vår farger array og vi passerer i raden som var på mod num farger som kommer til å gjøre oss vikle tilbake rundt til rødt hvis vi har flere rader enn farger. Til slutt vil vi fylle i murstein farge og legge den til vinduet. Og det er det. Så, det er det for alle våre initialisering metoder. Nå trenger vi å se på at mens løkke som du måtte fylle i. Så her ser vi at dette er vår mens loop som kommer til å fortsette inntil spillet er over, noe som betyr enten vi går tom for liv eller vi kjører ut av murstein. Så første vi må er et Vent på Klikk. Så spillet venter for oss å faktisk Klikk før ballen begynner å bevege seg. Og så skal vi å minske liv. Så hvis vi hadde tre liv, nå er vi ned til to liv, bruker vi vår tredje levetid. Vi kommer til å sentrere ballen. Så nå, dette er egentlig ikke kommer til å hjelpe oss på den aller første livet vi spiller ettersom ballen er allerede kommer til å har vært sentrert fra når vi instansiert det. Men vi ser når vi ender opp med å miste den livet og sløyfe tilbake rundt, så vi er kommer til å ønske å recenter ballen fra bunnen av brettet tilbake til midten. Så nå her trenger vi å generere x hastighet omgangen. Og, som per spec, bruker vi d rand 48 for å generere noen tilfeldige tall for å angi hastigheten. Vi legger en til at siden vi bare vil hastigheten i størrelsesorden ett til to i stedet for null til en. Til slutt bruker vi d rand 48 igjen i For å avgjøre om ballen kommer til å flytte til venstre eller rett til å starte. Så d rand 48 returnerer et tilfeldig tall mellom null og en, og så ved å spørre hvis det er mindre enn 0,5, har vi en 50 50 muligheten for å bytte hastigheten av ballen for å være negativ. Til slutt satt vi den vertikale hastighet på ballen å bare være noen konstant. Vi velger tre. Og nå har vi en annen sløyfe. Så dette indre løkken er kommer til å fortsette. Legg merke til her, mens murstein er større enn null - så hvis vi går tom for stein, vi har vant kampen, og vi kan bryte ut av denne sløyfen - og alle Get y Ball mindre enn høyde minus to ganger radius. Så hva dette er erkjennelsen er hvis ball tilfeldigvis gå forbi padle, i hvilket tilfelle du har mistet et liv. Ser inne i dette for loop vi har den sjekker for en mus hendelsen. Derfor, hvis det er en mus arrangement, at betyr at vi ønsker å sjekke for å se om musen ble flyttet, og dersom mus ble flyttet, vi ønsker å ha det padle holde tritt med musen. Så, for å gjøre det, regner vi det nye stilling av åren, som kommer å ta posisjonen til musen - som griper posisjon ved hjelp av hendelse som vi ble vedtatt - og deretter skal vi trekke ut paddle bredde dividert med 2, slik at padle opphold sentrert på musen i stedet for venstre side av padle bor sentrert. Så nå ønsker vi også å være sikker på at vi ikke gå over til venstre eller høyre side av brettet. Og så her er vi bare sjekke om padle ville være av venstre side av styret, bare stokk den til venstre side. Og her er vi sjekke om padle vil være over den høyre side av bord, bare holde det på den høyre siden. Og til slutt, vi faktisk satt plasseringen av padle. Nå, hvis det ikke var en musebevegelse, det betyr at vi kommer til å ønsker å flytte ballen. Og så vi allerede har x og y hastighet av ballen og så flytter vi det. Men nå ønsker vi å oppdage et par ting. Så her er vi oppdage hvis vi treffer enten venstre eller høyre side av styret, vil vi ballen til å sprette. Og så, i så fall setter vi x hastighet til negative x hastighet. Hvis ballen treffer toppen av brettet, Da ønsker vi også ballen sprette. Men nå ønsker vi å endre y hastighet. Legg merke til at vi ikke har en forutsetning for ballen treffer bunnen av styret siden det allerede var fanget opp her i denne stund loop. Til slutt ønsker vi å påvise noen kollisjoner der hvis ballen hit enten padle eller murstein, vi ønsker å gjøre noen spesielle tilfelle ting. Så hvis det var en kollisjon, der case objekter vil ikke være null, da, hvis objektet treffer racketen, ville vi bare ønsker å sprette ballen. Og her, også, vi angi plasseringen av ballen like over padle. Legg merke til at vi tar den x stilling ballen og bare gjenbruk av det. Men her vi får den y posisjon av padle og flytte ballen ovenfor padle. Dette er et spesielt tilfelle, slik at ballen ikke treffer padle og deretter, før det er i stand til å bevege seg utenfor padle, en annen sløyfe går rundt og den tror den er fortsatt på panelet og så y hastighet blir satt tilbake til negativ og deretter ballen bare slags av pinner spretter på padle. Så, hvis vi ikke treffer racketen, da vi også ønsker å sjekke hvis vi treffer murstein. Og så dette er hvordan vi kan sjekke for å se om vi treffer en murstein. Vi trenger å se etter dette fordi vi kan har faktisk truffet etiketten og vi ønsker ikke å fjerne etiketten. Så hvis vi treffer en murstein, kan vi fjerne det murstein fra vinduet, minsk vår telling av mursteinene, øke vår antall poeng, og nå trenger vi å oppdatere resultattavle som er nøyaktig det samme som vi så før da vi så init resultattavle. Men nå er vi bare oppdaterer resultattavle siden vi har endret antall poeng. Og det bør nå vise at vi traff en mer pause. Og til slutt, hvis vi treffer en murstein vi ønsker også å sprette. Så til slutt, vi pause bare slik at Ballen går ikke superrask og vi faktisk kan slå det med vår padle. Og det er ganske mye det. Så nå ville vi sløyfe tilbake til toppen av dette mens løkke og fortsetter til enten vi mister et liv eller vi kjører ut av murstein. Hva skjer hvis vi mister et liv? Så får vi kommer til å gå ut av dette mens loop, og vi vil se vilje sløyfe sikkerhetskopiere til toppen av den ytre, mens sløyfen. I så fall, skal vi Utfør dette satt opp igjen. Og dette satt opp kommer til å ha oss vente for et klikk, dekrementere vår nummer av liv, recenter ballen, omberegne en x-og y-hastighet, og deretter gjenoppta spillet. Og så, som vil fortsette inntil enten murstein ender opp med å bli mindre enn eller lik null - i hvilket tilfelle vi vant kampen - eller bor er mindre enn null, i hvilket sak vi har tapt spillet. Så, når det er tilfelle, kan vi bryte ut av at mens loop, og vi kommer her hvor vi kommer til å vente på klikk før går ut av spillet, slik at Spillet gjør ikke bare umiddelbart tett på oss. Og til slutt vil vi lukke vindu og det er det. Mitt navn er Rob, og dette var Breakout.