>> ROB BOWDEN: Hi.
Ik ben Rob.
Vraagt ​​u zich af hoe dit spel te implementeren?
Nou, laten we breken het personeel oplossing.
>> Dus, laten we eerst het hoofd naar beneden naar de init functies die we u verteld om
eerst implementeren.
Eerste zullen we een kijkje nemen op het init peddel.
Oke, dus denk dat we willen dat de peddelen precies worden gecentreerd in
de x-as.
Dus moeten we uitzoeken waar dat moet gaan.
>> Gezien de breedte van de raad - die Ook hash gedefinieerd up top -
we nodig hebben om af te trekken uit de peddel breedte en delen door 2, zodat de
centrum van de peddel is in het midden van het bord.
Vergeet niet dat de x-coördinaat verwijst naar de linkerbovenhoek van de peddel,
en dus dit is precies waar we willen dat het is.
De y-coördinaat geeft niet zo veel, want we kunnen plaatsen
het overal waar we willen.
Dus instantiëren we de peddel, zetten we de kleur zwart, zetten we vullen op True
dus het is een ingevuld rechthoek, en we voeg deze vervolgens naar het raam en rendement
de peddel.
En dat is het voor het initialiseren de peddel.
>> Het zal vergelijkbaar zijn voor init scorebord.
Dus we gaan om het label te initialiseren, we gaan naar de kleur in te stellen naar
lichtgrijs - je kunt kiezen wat je willen - we gaan het lettertype ingesteld op
schreefloos 48 -
kon ook kiezen wat je wilt -
we zullen het toevoegen aan het venster.
Nu deze Naar de achtergrond is niet echt nodig, het is gewoon het geval er iets
anders gebeurt het label overlappen.
Toen we waarnemen Collision, Detect Collision zal de andere sporen
ding voordat het detecteert het etiket.
Maar dat is echt geen invloed mag hebben ons in dit programma.
>> Tot slot hebben we deze update scorebord functie die we schreven.
Dus laten we eens kijken naar dat.
Nu, hier zien we iets dat vrijwel identiek aan
we zagen in de label.c.
Dus hebben we een label -
een karakter buffer van 12 karakters, dat is net genoeg om een ​​te behandelen
integer, negatief of positief.
Dan gebruiken we sprintf kopiëren de wijst in die buffer.
Dus is dit bevat een tekenreeks die het aantal punten.
>> Tot slot zetten we het label die snaar.
En dan moeten we het label te centreren voor het geval dat we weg zijn van negen tot 10
punten en we hebben het verschoven.
Zo berekenen we de x-en y-coördinaten van het etiket dat zal
krijgen de breedte en de hoogte van het venster.
Hoewel, kunnen we ook gewoon gebruik maken van de constanten Breedte en Hoogte hash
gedefinieerd boven.
We krijgen ook de breedte en hoogte van het etiket en de kloof
die van 2 tot centrum.
En dan gebruiken we Stel locatie in om daadwerkelijk zet het op die locatie.
Dus dat is het voor init scorebord.
>> OK.
Dus init bal gaat zeer vergelijkbaar zijn om peddels init ook.
We zien hier dat we gebruiken newgoval om instantiëren een nieuwe bal.
En hier gebruiken we 2 maal de straal als de breedte van de bal, en 2
maal de straal als hoogte van de bal.
Nu ook newgoval de x en y-coördinaat die we passeren in gaat
te verwijzen naar de linkerbovenhoek van het bal, die eigenlijk
buiten de bal zelf.
Dus om de bal precies krijgen gecentreerd in het bestuur, we moeten passeren
breedte gedeeld door 2 voor het centrum, en dan trek je de straal te duwen
het huidige centrum van de bal in het midden van het bord.
En dat doen we precies hetzelfde de y-as, behalve dat
hoogte plaats van breedte.
>> Zodat legt de bal in het midden.
En dit instantieert de bal, zet de kleur naar zwart, in de bal te vullen,
en ten slotte aan de raam en terug te sturen.
En dat is het voor het initialiseren de bal.
>> Dus laten we nu eens een kijkje nemen op init bakstenen die is iets meer
ingewikkeld, maar het is vrij Soortgelijke init peddel.
Nu, eerst moeten we uitzoeken de breedte van elke steen.
Vergeet niet dat we een constante genoemd gesprekken die specificeert de
aantal kolommen bakstenen die we hebben.
Dus gaan we de breedte te bepalen van een enkele baksteen door het nemen van de breedte
van het hele bord, aftrekken de grootte van onze gap -
die hash wordt gedefinieerd up top en verwijst het aantal pixels
moet tussen elke steen -
en zo gaan we een totaal hebben gap tijden noemt lege pixels in een
enkele rij.
En dat zal ook verwijzen naar een aantal lege pixels links en rechts van de
linkerkolom en rechter kolom baksteen.
>> Dus trek je die lege pixels laat ons achter met een aantal pixels dat
bakstenen zijn daadwerkelijk gebruik.
En dan delen we door gesprekken te krijgen het aantal pixels per steen.
Dus hier zijn we een array definiëren die net specificeert de kleuren die we willen voor elk
rij stenen.
Als we meer rijen stenen dan kleuren die we opgegeven, we zullen zien
dat we gewoon lus terug rond en gebruik weer rood, en vervolgens oranje en
gele enzovoort.
>> Dus, als de-p set spec hints, we zijn gaat lus over alle rijen en
kolommen van de stenen.
Maar voordat we lus over de kolommen, we zien hier dat we het opgeven van de
y-positie van elke steen in die bepaalde rij.
We kunnen dit ook verplaatsen naar de tweede lus, maar dan zouden we gewoon
het doen van de berekening over en opnieuw toen we hoeven niet te.
>> Dus de y-positie van de baksteen zal marge, dat is hash
gedefinieerd up top en alleen verwijst naar de ruimte tussen de bovenkant van het bord en
het begin van alle stenen.
En we gaan toe te voegen aan dat de rij dat we op keer de hoogte van een
individuele baksteen plus de kloof dat tussen elke steen.
Dus dit is een verticale tussen elke steen.
Dus dat geeft ons de y-coördinaat van de bakstenen.
>> Dus hier gaan we berekenen de x-coördinaat van de bakstenen.
Nu hebben we verschil gedeeld door 2 aangezien onthouden voor, zei ik dat bij de
linkerkant van het bord, we gaan om een ​​beetje ruimte te laten.
Dus spleet gedeeld door 2 is die ruimte.
En dan zijn we toe te voegen aan dat de kolom dat we op keer breedte plus
spleet, waarbij de breedte ruimte dat een enkele steen neemt en
dan kloof is de ruimte tussen elke steen.
Zodat berekent de x-coordinaat van de bakstenen.
>> Nu hoeven we alleen maar te instantiëren de baksteen aangezien x en y-coordinaat
met breedte die wij berekend voor elke baksteen, en break hoogte welke
hash gedefinieerd boven.
Wij stellen de kleur van de bakstenen.
Merken we gebruiken onze kleuren array en we passeren in de rij die waren
op mod num kleuren die gaat maken ons inpakken terug rond naar rood als we
hebben meer rijen dan kleuren.
Tot slot zullen we in de bakstenen te vullen kleur toevoegen aan het venster.
>> En dat is het.
Dus, dat is het voor al onze initialisatiemethoden.
Nu moeten we kijken naar dat terwijl lus die je had om in te vullen
Dus hier zien we dat dit onze terwijl lus die gaat door tot
spel is voorbij, die ofwel middelen we opraken van leven of
we opraken van bakstenen.
>> Dus eerste wat we hebben is een wachttijd voor Click.
Dus het spel op ons wacht om daadwerkelijk Klik voordat de bal begint te bewegen.
En dan gaan we om levens te verlagen.
Dus als we drie levens gehad, nu zijn we neer op twee levens, gebruiken we onze
derde leven.
We gaan de bal naar het centrum.
Dus nu, dit is niet echt gaat helpen ons op de allereerste leven we spelen
aangezien de bal al gaat zijn gecentreerd van toen we
geïnstantieerd is.
Maar we zien als we uiteindelijk verliezen de leven en loop terug rond, dan zijn we
gaat te willen om de bal te kadreren van de onderkant van het bord terug naar
het centrum.
>> Zo, nu hier moeten we genereren de x-snelheid van de bal.
En, volgens de specificatie, gebruiken we d rand 48 om wat willekeurig getal te genereren
de Velocity.
We zijn het toevoegen van een tot dat omdat we net dat de snelheid in het bereik van een
twee in plaats van nul tot een.
Tot slot gebruiken we d rand 48 weer in Om te bepalen of de bal
gaat verhuizen naar links of het recht om te starten.
>> Dus d rand 48 geeft een willekeurig getal tussen nul en een, en zo door te vragen
als dat is minder dan 0,5, we hebben een 50 50 kans van het schakelen van de snelheid van
de bal te negatief zijn.
Tot slot zetten we de verticale snelheid van de bal naar slechts enkele constant zijn.
We kiezen drie.
En nu hebben we nog een lus.
>> Dus dit binnenste lus is zal voortzetten.
Let hier op, terwijl bakstenen groter dan nul -
dus als we van steen lopen, we hebben won de wedstrijd en we kunnen
breken van deze lus -
en al Get y Ball minder dan de hoogte minus 2 maal de straal.
Dus wat deze erkenning is als de bal toevallig voorbij de peddel, in
welk geval je een leven kwijt.
>> Zoek in deze lus hebben we het controleren op een muis evenement.
Dus, als er een muisgebeurtenis, dat betekent dat we willen controleren
of de muis werd bewogen, en indien de muis werd bewogen, wij willen de
peddel houden met de muis.
Dus, om dat te doen, berekenen we de nieuwe positie van de peddel, die gaat
om de positie van de muis te grijpen - die grijpt de positie met behulp van de
geval dat we werden doorgegeven -
en dan gaan we aftrekken uit peddel breedte gedeeld door 2, zodat de
peddel blijft gericht op de muis in plaats van de linkerzijde van de peddel
verblijft gecentreerd.
>> Dus nu willen we ook zeker zijn dat we ga niet over de linkerkant of rechts
kant van het bord.
En dus hier zijn we even kijken of de peddel zou uit de linkerkant van zijn
het bord, gewoon vasthouden het aan de linkerkant.
En hier zijn we controleren of de peddel over de rechterkant van het zou
raad, gewoon het naar rechts.
En tot slot, we eigenlijk stellen de locatie van de peddel.
>> Nu, als er niet een beweging van de muis, dat betekent dat we gaan
willen de bal te bewegen.
En dus hebben we al de x en y snelheid van de bal
en zo gaan we het.
Maar nu willen we detecteren een paar dingen.
Dus hier zijn we detecteren als we raken ofwel de linker-of rechterkant van de
raad, willen we de bal te stuiteren.
En zo, in dat geval zetten we x snelheid negatieve x snelheid.
>> Als de bal raakte de bovenkant van het bord, dan willen we ook de bal stuiteren.
Maar nu willen we veranderen de y snelheid.
Merken we hebben niet een voorwaarde voor de bal tegen de onderzijde van de
raad sinds dat werd al gevangen hier in dit while lus.
>> Tot slot willen we een aantal sporen botsingen waar als de bal hit
ofwel de peddel of de bakstenen, we willen een aantal speciale geval dingen doen.
Dus als er een botsing, waarbij Bij objecten zal niet nul zijn, dan,
als het object raakte de peddel, zouden we wil gewoon de bal stuiteren.
En hier, ook, zetten we de locatie van de bal tot net boven de peddel.
Merk op dat we de x-positie van het nemen de bal en gewoon hergebruiken dat.
Maar hier krijgen we de y-positie van de peddel en de bal bewegen
boven de peddel.
>> Dit is een speciaal geval, zodat de bal niet de peddel geraakt en vervolgens,
voordat het in staat de peddel uit om te bewegen, een andere lus gaat rond en
hij denkt dat het is nog steeds op het paneel en dus de y snelheid wordt ingesteld naar
negatief en dan is de bal gewoon een soort stokken stuiteren op de peddel.
Dus, als we de peddel niet geraakt, dan willen we ook controleren
als we raken de bakstenen.
En dus dit is hoe we kunnen controleren om te zien of we een baksteen te raken.
>> We moeten controleren op dit omdat we mogen daadwerkelijk raakte de label en we
willen niet het etiket te verwijderen.
Dus als we een baksteen slaan, kunnen we verwijderen dat baksteen uit het raam, verlagen
onze telling van de bakstenen, verhogen onze aantal punten, en nu moeten we
het actualiseren van de scorebord en dat is precies hetzelfde als we eerder toen we zagen zagen
init scorebord.
Maar nu zijn we gewoon het bijwerken van de scorebord sinds we veranderden de
aantal punten.
En het moet nu tonen dat raken we nog een pauze.
>> En tenslotte, als we een baksteen hit we willen ook stuiteren.
Dus eindelijk, we pauzeren gewoon zo dat de bal beweegt niet super snel en we
daadwerkelijk kan raken met onze peddel.
En dat is het zowat.
Dus nu zouden we loop terug naar de top van dit terwijl de lus en doorgaan tot
ofwel we verliezen een leven of we opraken van bakstenen.
>> Wat gebeurt er als we een leven te verliezen?
Dan gaan we dit tijdens het verlaten lus, en we zullen zien wil lus back-up
boven de buitenste while.
In dat geval gaan we Voer deze opstelling weer.
En deze set-up zal hebben we afwachten voor een klik, verlagen onze nummer
levens, kadreren de bal, herberekenen een x en y snelheid en
hervat dan het spel.
>> En ja, dat zal doorgaan totdat bakstenen eindigt in minder dan
of gelijk aan nul -
in welk geval we het spel gewonnen -
of levens is dan nul, waarbij geval hebben we het spel verloren.
Dus, zodra dat het geval is, breken we uit van die while loop, en we bereiken hier
waar we heen gaan om te wachten voor click voordat het spel verlaten, zodat de
spel doet niet alleen onmiddellijk sluiten op ons.
En tenslotte zullen we sluiten de raam en dat is het.
Mijn naam is Rob, en dit was Breakout.