>> ROB BOWDEN: Hi.
Ek is Rob.
Wonder hoe om hierdie spel te implementeer?
Wel, laat ons breek uit die personeel oplossing.
>> So, laat ons eers kop af na die init funksies wat ons vertel om jou te
implementeer eerste.
Eerste een wat ons sal 'n blik te neem na dit is init paddle.
Alle reg, so onthou dat ons wil hê dat die roei presies in die middel van
die x-as.
Dus moet ons om uit te vind waar daardie moet gaan.
>> Gegewe die breedte van die bord - wat ook hash gedefinieer up top -
ons nodig het om te trek uit die paddle wydte en verdeel deur 2, sodat die
sentrum van die paddle is in die middel van die bord.
Onthou dat die x-koördinaat verwys na die boonste linker hoek van die paddle,
en so is dit presies waar ons wil dit te wees.
Die y-koördinaat maak nie saak soveel, want ons kan plaas
dit waar ons wil hê.
So het ons die instantiëren die paddle, het ons die kleur swart, het ons vul True
so dit is 'n gevul in reghoek, en ons voeg dit dan by die venster uit en terugkeer
die paddle.
En dit is dit vir initializing die paddle.
>> Dit gaan dieselfde wees vir init telbord.
So ons gaan die etiket inisialiseer, ons gaan die kleur te stel om
ligte grys - jy kan kies wat jy wil - ons gaan die skrif te stel om
sans serif 48 -
kan ook kies wat jy wil -
ons sal dit by die venster uit.
Nou, stuur na is terug nie regtig nodig, is dit net in geval daar iets
anders gebeur om die etiket te oorvleuel.
Toe ons gebruik spoor botsing Spoor botsing sal die ander spoor
ding voor dit ontdek die etiket.
Maar wat werklik moet raak nie ons in hierdie program.
>> Ten slotte, ons het hierdie Update Scoreboard funksie wat ons geskryf het.
So kom ons neem 'n blik op dit.
Nou, hier sien ons iets wat byna identies aan wat
Ons het in die label.c.
So het ons 'n etiket -
'n karakter buffer van 12 karakters, wat net genoeg om enige te hanteer
integer, positief of negatief is.
Dan gebruik ons ​​sprintf kopieer die wys in daardie buffer.
So is dit bevat 'n string wat die aantal punte.
>> Ten slotte, ons het die etiket aan daardie string.
En dan moet ons die etiket na die sentrum in die geval ons het gegaan van nege tot 10
wys en ons het dit verskuif.
So het ons bereken die x en y-koördinate van die etiket wat sal
kry breedte en die hoogte van die venster.
Alhoewel, ons kan dit ook net gebruik om die konstantes hoogte en breedte van hash
gedefinieer up top.
Ons kry ook die hoogte en breedte van die etiket en deel
wat deur 2 tot sentrum.
En dan gebruik ons ​​'Plek om werklik sit dit in die plek.
So dit is dit vir init telbord.
>> OK.
So init bal gaan baie soortgelyk spane te init as well.
Ons sien hier dat ons met behulp van newgoval ten einde 'n nuwe bal te instansieer.
En hier is ons met behulp van 2 keer die radius as die wydte van die bal, en 2
keer die radius as die hoogte van die bal.
Nou, ook vir newgoval, die x en y-koördinaat dat ons slaag in gaan
om te verwys na die top linkerkant van die bal, wat eintlik
buite die bal self.
So om die bal presies te kry gesentreer in die raad, moet ons om te slaag
breedte gedeel deur 2 vir die sentrum, en dan trek uit die radius te stoot
die werklike sentrum van die bal in die middel van die bord.
En ons doen presies dieselfde ding vir die y-as, behalwe die gebruik van
hoogte in plaas van die breedte.
>> Sodat plaas die bal in die sentrum.
En dit Instansieer die bal, stel die kleur swart, vul die bal,
dan uiteindelik voeg dit by die venster en stuur dit terug.
En dit is dit vir initializing die bal.
>> So nou, laat ons 'n blik op init stene wat effens meer
ingewikkeld, maar dit is redelik soortgelyk aan init paddle.
Nou, moet ons eers om uit te vind die breedte van elke baksteen.
Onthou dat ons 'n konstante genoem oproepe wat bepaal die
aantal kolomme van stene wat ons het.
So, ons gaan die wydte te bepaal van 'n enkele baksteen deur die neem van die wydte
van die hele raad, af te trek die grootte van ons gaping -
wat hash gedefinieer up top en verwys om die aantal pixels dat
moet tussen elke baksteen -
en so gaan ons 'n totaal van te hê gaping keer roep leë pixels in 'n
enkele ry.
En dit sal ook verwys na 'n paar leë pixels aan die links en regs van die
linker kolom en regter kolom baksteen.
>> So trek uit die leë pixels laat ons met 'n aantal pixels wat
stene is eintlik gebruik.
En dan deel ons deur oproepe te kry die aantal pixels per baksteen.
So hier het ons 'n skikking te definieer wat net spesifiseer die kleure wat ons wil hê vir elke
ry stene.
As ons meer rye stene as kleure wat ons verskaf, sal ons sien
dat ons sal net lus terug rond en rooi gebruik weer, en dan oranje en
geel en so aan.
>> So, as die p-stel spec wenke, ons is gaan loop oor al die rye en
kolomme van die stene.
Maar voordat ons lus oor die kolomme, ons sien hier dat ons spesifiseer
y posisie van elke baksteen in daardie spesifieke ry.
Ons kan ook skuif dit in die tweede lus, maar dan moet ons net wil wees
doen die berekening oor en oor weer wanneer ons nie nodig het om te.
>> So het die y posisie van die baksteen gaan marge, wat hash te wees
gedefinieer up top en net verwys na die spasie tussen die bokant van die direksie en
die begin van al die stene.
En ons gaan om by te voeg by dat die ry dat ons op keer die hoogte van 'n
individuele baksteen plus die gaping wat tussen elke baksteen.
So is dit ook 'n vertikale gaping tussen elke baksteen.
So wat gee ons die y-koördinaat van die baksteen.
>> So hier gaan ons te bereken die x-koördinaat van die baksteen.
Nou, ons het gaping gedeel deur 2 aangesien, onthou voordat ek het gesê dat by die
linkerkant van die raad, ons gaan 'n bietjie ruimte te verlaat.
So gaping gedeel deur 2 is dat die ruimte.
En dan is ons toe te voeg tot die kolom dat ons op keer breedte plus
gaping, waar breedte is die bedrag van die ruimte dat 'n enkele baksteen neem en
dan gaping is die ruimte tussen elke baksteen.
Sodat bereken die x-koördinaat van die baksteen.
>> Nou het ons net nodig het om te instansieer die baksteen gegee dat x en y-koördinaat
gebruik wydte dat ons bereken vir elke baksteen, en breek hoogte wat
hash gedefinieer up top.
Ons stel die kleur van die baksteen.
Let ons met behulp van ons kleure verskeidenheid en ons verby in die ry wat
op mod num kleure wat gaan maak ons draai terug om te red as ons
meer rye as kleure.
Ten slotte, sal ons in die baksteen vul kleur en voeg dit by die venster uit.
>> En dit is dit.
So, wat is dit vir almal van ons inisialisering metodes.
Nou het ons nodig het om te kyk na dat terwyl lus wat jy het om te vul in
So hier sien ons dat dit is ons, terwyl lus wat gaan om voort te gaan totdat
spel is verby, wat óf middel ons hardloop uit lewens of
ons hardloop uit bakstene.
>> So die eerste ding wat ons moet is 'n wag vir Click.
So het die spel wag vir ons om werklik kliek voordat die bal begin beweeg.
En dan gaan ons lewens te Trek '.
So as ons het drie lewens, nou is ons neer op twee lewens, is ons met behulp van ons
Derde lewe.
Ons gaan die bal na die sentrum.
So nou, dit is nie regtig gaan help ons op die heel eerste lewe wat ons speel
Aangesien die bal is reeds gaan het gesentreer uit wanneer ons
aangehaal het.
Maar ons sien wanneer ons uiteindelik verloor die lewe en lus terug rond, dan is ons
gaan wil om die bal te kadreren uit die onderkant van die raad terug te
die sentrum.
>> So, nou hier het ons nodig het om te genereer die x snelheid van die bal.
En, soos per die spec, is ons met behulp van d rand 48 'n ewekansige getal te genereer
die snelheid te spesifiseer.
Ons een is toe te voeg tot dat, aangesien ons net die snelheid in die reeks van een
twee in plaas van nul tot een.
Ten slotte, ons gebruik d rand 48 weer in Om die vraag of die bal te bepaal
gaan om te skuif na links of die reg om te begin.
>> So d rand 48 gee 'n ewekansige getal tussen nul en een, en so deur te vra
As dit is minder as 0.5, het ons 'n 50 50 kans skakel die snelheid van
die bal negatiewe te wees.
Ten slotte, ons het die vertikale snelheid van die bal net 'n paar konstante.
Ons kies drie.
En nou het ons 'n ander loop.
>> So hierdie innerlike lus is gaan om voort te gaan.
Let hier, terwyl bakstene groter as nul is -
So, as ons hardloop uit bakstene, het ons het die wedstryd gewen en ons kan
breek uit hierdie lus -
en al Kry y Ball minder as hoogte minus 2 keer die radius.
So, wat is dit te erken, is as die bal gebeur te gaan verby die paddle, in
wat die geval dat jy 'n lewe verloor het.
>> Om binne hierdie lus vir ons 'n die nagaan vir 'n muis gebeurtenis.
En so, indien daar is 'n muis geval, wat beteken dat ons wil om te kyk na
kyk of die muis is verskuif, en indien die muis is verskuif, ons wil hê die
paddle tred te hou met die muis.
So, wat om te doen, bereken ons die nuwe posisie van die paddle, wat gaan
die posisie van die muis te gryp - wat gryp die posisie met behulp van die
Indien ons geslaag -
en dan gaan ons af te trek uit paddle breedte gedeel deur 2, so die
paddle bly gesentreer op die muis in plaas van die linkerkant van die paddle
bly gesentreer.
>> So nou het ons ook wil seker wees dat ons gaan nie oor die linkerkant of die regterkant
kant van die raad.
En so hier het ons net seker te maak dat die paddle sou wees van die linkerkant van
die direksie, net vashou dit aan die linkerkant.
En hier is ons seker te maak dat die paddle sou oor die regterkant van die wees
raad, hou dit net na die regterkant.
En uiteindelik, ons eintlik stel die ligging van die paddle.
>> Nou, as daar nie 'n muis beweging, dit beteken dat ons gaan
wil om die bal te skuif.
En so het ons reeds die x en y snelheid van die bal
en so het ons dit verskuif.
Maar nou wil ons op te spoor 'n paar dinge.
So hier is ons opsporing as ons getref óf die linker-of die regterkant van die
raad, ons wil om die bal te hop.
En so, in daardie geval, het ons x snelheid negatiewe x snelheid.
>> As die bal aan die bokant van die raad, dan wil ons ook die bal weiering.
Maar nou is ons wil verander die y snelheid.
Sien ons het nie 'n voorwaarde vir die bal tref die onderkant van die
raad sedert wat reeds gevang hier in hierdie lus.
>> Ten slotte, ons wil 'n paar op te spoor botsings waar as die bal
óf die paddle of die baksteen, ons wil 'n spesiale geval dinge te doen.
So as daar 'n botsing, waarin geval voorwerpe sal nie nul wees nie, dan
As die voorwerp tref die paddle, sou ons wil net die bal te hop.
En hier, ook, ons het die plek van die bal tot net bo die paddle.
Let ons neem die posisie van x die bal en net hergebruik nie.
Maar hier is ons om die y posisie van die paddle en beweeg die bal
bo die paddle.
>> Dit is 'n spesiale geval, sodat die bal tref nie die paddle en dan,
voordat dit in staat is om die paddle om weg te trek, 'n ander loop gaan rond en
dit dink dit is nog steeds op die paneel en sodat die y snelheid kry stel terug na
negatiewe en dan die bal net soort stokke weerkaats op die paddle.
So, as ons nie die paddle getref, dan wil ons ook om seker te maak
As ons in die baksteen.
En so dit is hoe ons kan kyk om te sien of ons tref 'n baksteen.
>> Ons moet kyk vir hierdie, want ons kan eintlik getref die etiket en ons
wil nie die etiket te verwyder.
So as ons 'n baksteen getref is, kan ons verwyder dat baksteen uit die venster, decrement
ons telling van die bakstene, inkrementeer ons aantal punte, en nou moet ons
werk om die telbord wat presies dieselfde as wat ons gesien het voor toe ons sien
init telbord.
Maar nou is ons net besig om die telbord sedert ons het verander die
aantal punte.
En dit moet nou wys dat tref ons een pouse.
>> En uiteindelik, as ons 'n baksteen getref Ons wil ook hop.
So uiteindelik, ons breek net so dat die bal is nie super vinnig en ons beweeg
eintlik kan druk dit met ons roei.
En dit is dit pretty much.
So nou sal ons lus terug na die top van dit terwyl lus en ry tot
óf ons verloor 'n lewe of ons hardloop uit bakstene.
>> Wat gebeur as ons 'n lewe verloor?
Dan gaan ons dit terwyl te verlaat lus, en ons sal sien, sal loop back-up
aan die bokant van die buitenste lus.
In so 'n geval, gaan ons voer slegs die opstel van die weer.
En die opstel van gaan hê ons moet wag vir 'n kliek, decrement ons nommer
lewens, kadreren die bal, herbereken 'n x en y snelheid en
dan weer die spel.
>> En so, dit sal voortgaan totdat óf stene eindig minder as
of gelyk aan nul -
in welke geval ons het die spel -
of lewens is minder as nul is, waarin geval het ons verloor die spel.
Dus, sodra dit die geval is, ons breek van dat, terwyl loop, en ons hier bereik
waar ons gaan om te wag vir kliek voor die verlaat van die spel, sodat die
spel nie net onmiddellik sluit op ons.
En uiteindelik sal ons sluit die venster en dit is dit.
My naam is Rob, en dit was tempo.