ROB BOWDEN: Hej. Jeg er Rob. Spekulerer hvordan man gennemfører dette spil? Nå, lad os bryde ud personalet løsning. Så lad os først hoved ned til init funktioner, som vi fortalte dig at gennemføre først. Først den ene, vi vil tage et kig på det er init pagaj. Okay, så husk, at vi ønsker padle til at blive præcis centreret i x-aksen. Så vi er nødt til at regne ud hvor der skal gå. I betragtning af bredden af ​​bestyrelsen - som også hash defineres op top - vi nødt til at trække ud pagajen bredde og dividere med 2, således at midten af ​​skovlen er i midten af ​​brættet. Husk, at x-koordinat henviser til øverste venstre hjørne af pagaj, og så dette er præcis, hvor vi ønsker det skal være. Y-koordinaten ligegyldigt så meget, fordi vi kan placere det, uanset hvor vi ønsker. Så vi instantiere pagajen, sætter vi farven sort, vi har sat fyld til True så det er en udfyldt firkant, og vi derefter føje den til vinduet og afkast pagajen. Og det er det for initialisering pagajen. Det kommer til at være ens for init resultattavle. Så vi kommer til at initialisere etiketten, vi kommer til at indstille farven til lysegrå - du kan hente, hvad du ønsker - vi kommer til at indstille skriftstørrelsen til sans serif 48 - kunne også vælge hvad du vil - vi vil tilføje det til vinduet. Nu er dette bagest er egentlig ikke nødvendigt, det er bare i tilfælde af noget ellers sker overlapper etiketten. Så når vi bruger Detect Kollision, Detect Collision vil detektere den anden ting, før den opdager etiketten. Men der virkelig ikke bør påvirke os i dette program. Endelig har vi denne opdatering resultattavle funktion, som vi skrev. Så lad os tage et kig på det. Nu, her ser vi noget, der er næsten identisk med det vi så i label.c. Så vi har en etiket - en karakter buffer på 12 tegn, der er lige nok til at håndtere enhver heltal, negativ eller positiv. Så vi bruger sprintf at kopiere peger i denne buffer. Så er dette indeholder en streng, der repræsenterer antallet af punkter. Endelig har vi sat etiketten denne streng. Og så er vi nødt til at centrere etiketten hvis vi er gået fra ni til 10 peger og vi har flyttet den. Så vi beregne x-og y-koordinaterne af etiketten, der vil få bredde og højde af vinduet. Selv kunne vi også bare bruge den konstanter bredde og højde hash defineret op øverst. Vi får også den bredde og højde af etiketten og dividere at ved 2 til centret. Og så bruger vi Indsæt position til rent faktisk at sætte det i denne placering. Så det er det for init resultattavle. OK. Så init bolden kommer til at være meget ens at init padler så godt. Vi ser her, at vi bruger newgoval for at instantiere en ny bold. Og her bruger vi 2 gange radius som bredden af ​​bolden, og 2 gange radius som højden af ​​bolden. Nu også for newgoval x-og y-koordinat, at vi passerer i går at henvise til den øverste venstre side af kugle, som faktisk er uden bolden selv. Så for at få bolden præcist centreret i bestyrelsen, er vi nødt til at passere bredde divideret med 2 for midten, og derefter trække ud radius for at skubbe det faktiske center for den bold ind midten af ​​brættet. Og vi gør præcis det samme til y-aksen, bortset fra anvendelse højde i stedet for bredden. Så der placerer bolden i midten. Og dette instantierer bolden, skal du indstille farve til sort, udfylde bolden, så endelig føje den til vinduet og returnere den. Og det er det for initialisering bolden. Så lad os nu tage et kig på init mursten, som er lidt mere kompliceret, men det er temmelig svarende til init pagaj. Nu, vi først nødt til at finde ud af bredden af ​​hver mursten. Husk, at vi har en konstant kaldet opkald, som specificerer Antallet af kolonner af mursten , vi har. Så vi kommer til at bestemme bredden af en enkelt mursten ved at tage bredden af hele brættet, subtraktion ud af størrelsen af ​​vores hul - som hash defineret op øverst og henviser til antallet af pixels, der skal være mellem hver mursten - og så vi kommer til at have en samlet gap tider kalder tomme pixels i et enkelt række. Og der vil også henvise til nogle tomme pixels til venstre og højre for venstre kolonne og højre kolonne mursten. Så trække ud disse tomme pixels efterlader os med et antal pixels, mursten rent faktisk bruger. Og så skal vi dividere med opfordringer til at få antallet af pixels per mursten. Så her er vi definere et array, der bare angiver de farver, vi ønsker for hver række mursten. Hvis vi havde flere rækker af mursten end farver, som vi specificerede, vil vi se at vi bare løkke tilbage omkring og bruger rød igen og derefter orange og gul og så videre. Så, som p-sæt spec hints, er vi vil sløjfe over alle rækker, og kolonner af mursten. Men før vi løkken over kolonnerne, vi se her, at vi er med angivelse af y position for hver mursten i den pågældende række. Vi kunne også flytte denne i den anden for-løkke, men så ville vi bare være gøre beregningen igen og igen igen, når vi ikke behøver at. Så y position mursten går være margin, som er hash defineret op øverst og blot refererer til plads mellem toppen af ​​brættet og starten af ​​alle de mursten. Og vi kommer til at føje til, at rækken at vi er på gange højden af ​​en individuel mursten plus kløften der er mellem hver mursten. Så dette er også en lodret kløften mellem de enkelte mursten. Så det giver os y-koordinat af mursten. Så her vi kommer til at beregne x-koordinaten for mursten. Nu har vi hul divideret med 2, da, huske før, sagde jeg, at der ved venstre side af brættet, vil vi at efterlade en lille plads. Så hul divideret med 2 er, at rummet. Og så er vi tilføjer til, at kolonnen at vi er på tider bredde plus hul, hvor bredden er den mængde plads at en enkelt mursten fylder og så kløften er den plads mellem hver mursten. Så beregner x-koordinat af mursten. Nu er vi bare nødt til at instantiere mursten, idet x-og y-koordinat hjælp bredde, vi beregnet for hver mursten, og pause højde, som er hash defineres op øverst. Vi sætter farven på mursten. Bemærk vi bruger vores farver array og vi passerer i den række, der var på mod num farver, som vil gøre os wrap tilbage rundt til rød, hvis vi har flere rækker end farver. Endelig vil vi udfylde mursten farve og føje det til vinduet. Og det er det. Så det er det for alle vores initialisering metoder. Nu er vi nødt til at se på, at mens løkke, som du havde fylde i. Så her ser vi, at det er vores, mens løkke, der vil fortsætte, indtil spillet er slut, som enten midler vi løber tør for liv eller vi løber tør for mursten. Så første ting, vi har er en Vent Click. Så spillet venter os faktisk klik før bolden begynder at bevæge sig. Og så vil vi at formindske liv. Så hvis vi havde tre liv, nu er vi ned til to liv, bruger vi vores tredje liv. Vi kommer til at centrere bolden. Så nu, er dette ikke rigtig kommer til at hjælpe os på den allerførste liv vi spiller idet bolden allerede kommer til at er blevet centreret fra når vi instantieres det. Men vi ser, når vi ender med at miste den liv og løkke tilbage omkring, så er vi vil ønsker at centrere bolden fra bunden af ​​brættet tilbage til midten. Så, nu her er vi nødt til at generere x hastigheden af ​​bolden. Og, som pr spec bruger vi d rand 48 at generere nogle tilfældige tal til at angive hastighed. Vi tilføjer en til, at da vi bare vil hastigheden i området fra en til to i stedet for nul til én. Endelig bruger vi d rand 48 igen i For at afgøre, om bolden kommer til at flytte til venstre eller retten til at starte. Så d rand 48 returnerer et tilfældigt tal mellem nul og én, og så ved at spørge hvis der er mindre end 0,5, har vi en 50 50 mulighed for at skifte hastighed bolden til at være negativ. Endelig sætter vi den vertikale hastighed bolden til bare at være nogle konstant. Vi vælger tre. Og nu har vi en anden løkke. Så denne indre løkke er vil fortsætte. Bemærk her, mens teglsten er større end nul - så hvis vi løber tør for mursten, vi har vandt spillet, og vi kan bryde ud af denne løkke - og alle får y Ball mindre end højden minus 2 gange radius. Så hvad det er at anerkende, er, hvis den bold sker for at gå forbi pagaj, i hvilket tilfælde du har mistet et liv. Leder inde i denne for-løkke, vi har den kontrol for en mus begivenhed. Og så, hvis der er en mus begivenhed, at betyder, at vi ønsker at kontrollere se om musen blev flyttet, og hvis mus blev flyttet, vi ønsker at have det padle holde op med musen. Så for at gøre det, beregner vi den nye position pagaj, som vil at fange den holdning af musen - som griber position ved hjælp af tilfælde af, at vi var gået - og så vil vi trække ud padle bredde divideret med 2, så padle ophold centreret på musen i stedet for den venstre side af pagaj opholder centreret. Så nu er vi også ønsker at være sikker på, at vi ikke går over i venstre side eller højre side af brættet. Og så her vi bare kontrollere, om padle ville være slukket i venstre side af bestyrelsen, bare holde det til venstre side. Og her er vi tjekker, om pagajen ville være over den højre side af bord, bare holde det til den højre side. Og endelig, vi faktisk indstillet placeringen af ​​pagaj. Nu, hvis der ikke var en mus bevægelse, det betyder, at vi kommer til at ønsker at flytte bolden. Og så har vi allerede den x og y hastigheden af ​​bolden og så vi flytter den. Men nu vil vi til at opdage et par ting. Så her er vi detektere hvis vi rammer enten venstre eller højre side af bord, vi vil have bolden til at hoppe. Og så, i dette tilfælde, vi har sat x hastighed negativ x hastighed. Hvis bolden ramte toppen af ​​brættet, så ønsker vi også bolden hoppe. Men nu er vi ønsker at ændre y hastighed. Bemærk vi har ikke en betingelse for bolden rammer bunden af bord, da der allerede var taget til fange heroppe i dette, mens løkke. Endelig ønsker vi at opdage nogle kollisioner, hvor, hvis bolden hit enten padle eller mursten, vi ønsker at gøre nogle særlige tilfælde ting. Så hvis der var en kollision, hvor case objekter vil ikke være nul, så hvis objektet ramte padle, vi ville blot ønsker at hoppe bolden. Og her også, vi indstille placeringen af bolden til lige over pagajen. Bemærk vi tager x position bolden og bare genbruge det. Men her vi får y position af pagaj og flytte bolden over pagaj. Dette er et særligt tilfælde, så bolden ikke rammer pagaj og derefter før det er i stand til at flytte væk fra pagajen, en anden løkke går rundt og det mener det er stadig på panelet og så y hastighed bliver sat tilbage til negativ og derefter bolden lige slags af pinde hoppe på pagajen. Så hvis vi ikke ramte battet så vi også ønsker at kontrollere hvis vi ramte mursten. Og så dette er, hvordan vi kan kontrollere at se, om vi ramte en mursten. Vi er nødt til at tjekke for dette, fordi vi kan har faktisk ramt etiketten og vi ikke ønsker at fjerne etiketten. Så hvis vi ramte en mursten, kan vi fjerne det mursten fra vinduet, decrement vores optælling af mursten, forøge vores antal point, og nu er vi nødt til at opdatere resultattavlen, som er præcis det samme som vi så før, da vi så init resultattavle. Men nu er vi bare opdatere resultattavle da vi har ændret antal point. Og det skal nu vise, at vi ramte en mere pause. Og endelig, hvis vi ramte en mursten vi ønsker også at hoppe. Så til sidst, pause vi lige så Bolden bevæger sig ikke super hurtig og vi kan faktisk ramte den med vores pagaj. Og det er temmelig meget det. Så nu ville vi løkke tilbage til toppen af dette, mens løkke og fortsætter indtil enten vi mister et liv eller vi løber tør for mursten. Hvad sker der, hvis vi mister et liv? Så vi kommer til at afslutte dette, mens loop, og vi vil se vilje loop sikkerhedskopiere til toppen af ​​den ydre, mens løkken. I så fald vil vi udføre denne sat op igen. Og denne opsætning vil have os til at vente for et klik, formindske vores nummer af liv, centrerer bolden genberegne en x-og y-hastighed og derefter genoptage spillet. Og så vil denne fortsætte indtil enten mursten ender er mindre end eller lig med nul - i hvilket tilfælde vi vundet spillet - eller liv er mindre end nul, i hvilket Hvis vi skulle have tabt spillet. Så når det er tilfældet, kan vi bryde ud af, at mens loop, og vi nå her hvor vi kommer til at vente på klik før du afslutter spillet, så det spil gør ikke bare det samme tæt på os. Og endelig vil vi lukke vindue og det er det. Mit navn er Rob, og dette var Breakout.