>> ROB BOWDEN: Hi.
Olen Rob ja ma loodan, et teie mäng mängu 15.
Nüüd on neli funktsiooni, mida vajate rakendada selle programmi - init,
joonistada, liikuda, ja võitis.
Nii, vaatame init.
>> Siin näeme, et esimene asi, me oleme teha, on kuulutada muutuja
nimetatakse counter.
See saab initsialiseerida d korda d miinus 1.
Pea meeles, et d on mõõde meie pardal.
Kuidas init läheb tööle on see läheb itereerima kogu pardal
ja me ei kavatse hakata ülaosas vasakul.
>> Ja ütleme, et me on 4 4 pardal.
Nii top vasakule oleme kavatse öelda 15.
Ja siis me lihtsalt loen läbi lauad, öeldes 15, 14, 13,
12, 11, 10, 9, 8, 7, 6, 5, 4, ja nii edasi.
Nii top vasakule, me eeldame, et d korda d miinus 1, mis 4 4
juhul saab olema 16 miinus 1, mis on õigesti 15.
>> Ja nüüd siin, kus me Käi kogu pardal.
Ja me ei kavatse seada iga positsiooni Juhatuse praeguse väärtuse
meie counter, ja siis counter läheb ainult kahandab, et järgmine
positsioon jõuame läheb on counter üks alla
varasemat seisukohta.
Nii et meil oli algselt 15 ja aland counter.
Nii siis me määrata 14 Järgmise seisukoha aland loendur
ja me määratud 13, ja nii edasi.
>> Lõpuks peame hakkama nurgas sellisel juhul, kui pardal on ka
mõõde, siis lihtsalt teeme 15, 14, 13, 12, kõik viis kuni 3, 2, 1, on
jäta meid lahendamatu pardal.
Ja meil on vahetada 1 ja 2.
Niisiis, kui d mod 2 võrdub 0, see on kuidas me ei kavatse vaadata
et näha, kas see on isegi.
Kui d mod 2 võrdub 0, siis rida d miinus 1, mis on alumises reas ning
positsioon d miinus 2, või veerg d miinus 2, me seada, et 2 ja
veerus d miinus 3 me läheb seatud 1.
Nii et lihtsalt tagurdab kus 1 ja 2 on hetkel.
>> Lõpuks me seada väga all paremal võrdne tühjaks, kus
tühi on hash määratletud tipus kui 0.
Nii, et ei ole tingimata vajalik, kuna see silmus läheb on
seada alt paremale 0, sest counter loomulikult jõuda 0.
Aga see sõltub meist, teades, et tühi oli räsitud leida 0.
Kui ma lähen seda programmi ja hiljem muuta tühi ülaosas 100, see
tuleb veel palju tööd.
>> Nii et see on lihtsalt tagada, et all paremal on tegelikult võrdne meie
tühi väärtus.
Lõpuks on meil kaks globaalsed muutujad, nii tühi i ja tühi j ja näeme
deklareeritud ülaosas.
Ja me ei kavatse kasutada nende kahe globaalse muutujaid jälgida
positsiooni tühjaks, nii et meil ei ole vaja vaadata läbi kogu
pardal, et leida tühi iga aeg püüame liikuda.
Nii positsiooni tühi alati on hakkan allosas paremal.
Nii põhjas õigus on antud indeksid d miinus 1, d miinus 1.
Nii, et init.
>> Nüüd liigume edasi juhtida.
Niisiis, draw saab olema sarnane kus me kinnitada,
kogu pardal.
Ja me lihtsalt tahame trükkida raha see on igas asendis pardal.
Nii et siin me oleme trükkimise raha, mis on igas asendis pardal.
Ja teate, mis me teeme -.
Ja see on just öelnud printf et olenemata sellest, kas see on üks number või
kahekohaline number, et me ikka tahame seda kuluda kaks veergu välja printida,
nii et kui meil on kahekohaline ja üks numbrini sama lauaga, meie
juhatuse ikkagi vaadata kena ja kandiline.
>> Nii et me tahame seda teha, et iga väärtus juhatuses, välja arvatud tühi.
Niisiis, kui positsioon pardal võrdub tühjaks, siis me konkreetselt
soovite printida ainult alakriips esindada tühi asemel
mis iganes väärtus tühi tegelikult on.
>> Lõpuks me tahame prindi välja uus liin.
Pange tähele, et see on ikka sees välimine silmus, kuid väljaspool
sisemine silmus.
Kuna see välimine kontuur iterating üle kõigi ridade, ja nii see printf on
läheb lihtsalt printida uus liin, nii et me liikuda välja trükkida järgmisel real.
Ja see on see viik.
>> Nii, nüüd liigume edasi liikuda.
Nüüd võtame liikuda, kivimaja, et kasutaja on kantud mäng - nad
sisestage plaat nad tahavad liikuda - ja sa peaksid tagasi bool, nii
kas on õige või vale, sõltuvalt kas see samm oli tegelikult
Kehtiv - kas see plaat võib olla kolis tühja ruumi.
>> Nii et siin me tunnistada kohaliku muutuja, tile_1 ja tile_j, mis hakkavad
sarnaneks blank_i ja blank_j, välja arvatud, et see saab jälgida
asend plaat.
Nüüd me ei kavatse kasutada blank_i ja blank_j ja öelda, olgu, nii
siin on tühi laual.
>> Nüüd on plaat üle tühja?
Kas plaat vasakul tühi?
Kas plaat paremal tühi?
Kas plaat alla tühi?
Niisiis, kui plaat on kõik need positsioone, siis me teame, et plaat
saab kolis tühi koht ja tühjaks saab liigutada, kui
plaat praegu on.
>> Nii et siin me ütleme, kui juhatus positsioonis blank_i miinus 1 blank_j.
Nii et see on selge, on plaat üle praeguse tühi?
Ja kui on, siis me meeles mis on seisukoht plaat.
Plaat on asendis blank_i miinus 1 ja blank_j.
nüüd esimene, meil on ka see kontroll siin, nii blank_i on
suurem kui 0.
>> Miks me tahame seda teha?
Noh, kui tühi on ülemises reas pardal, siis me ei taha
vaata üle tühjaks plaat alates miski kõrgemale
rida pardal.
See, kuidas sa võiksid lõpuks saada midagi sellist killustatust süü või
Teie programm võib lihtsalt töö ettearvamatult.
Niisiis, see on tagada, et me ei vaata kohtades, mis ei kehti.
>> Nüüd me teeme sama asja kõik muud võimalikud kombinatsioonid.
Nii et siin, me otsime alla tühi et näha, kas see plaat.
Ja meil on ka veenduda, et me oleme ei alumisel real, või siis me
ei peaks otsima plaat.
Siin me läheme vaatama vasakule tühi, et näha, kas see on plaat.
Ja me ei peaks otsima vasakule kui me oleme vasakpoolses veerus.
Ja siin me läheme vaatama õigust tühjaks ning me ei tohiks
vaata paremale, kui me oleme parempoolses veerus.
>> Seega, kui ükski nendest asjadest on tõsi, see tähendab, et plaat ei külgnevate
tühja ja me saame tagasi false.
Liikuda ei olnud kehtiv.
Aga kui üks neist oli tõsi, siis Siinkohal me teame, et tile_i ja
tile_j on võrdne asend plaat.
Ja nii saame uuendada pardal seisukohti tile_i ja tile_j.
Me teame, et uus raha on tühi ja mis asendis blank_i
blank_j, mis oli algne tühi - me teame plaat läheb
liikuda seal.
>> Pange tähele, et me tegelikult ei pea tegema tõeline swap siin, sest me teame,
väärtused, mis tuleb lisada viiakse need positsioonid.
Meil ei ole vaja ajutiselt muutuja ümber.
>> Lõpuks peame meeles pidama, et me on meie globaalsed muutujad, mis on
jälgida seisukoht tooriku.
Nii et me tahame uuendada positsiooni tühi olema, kui plaat
algselt oli.
Lõpuks oleme tagasi true alates liikuda oli edukas.
Oleme edukalt vahetada tooriku plaat.
>> Olgu, viimane oleme vaja kontrollida võidetud.
Nii võitis sarnaselt naaseb bool kus tõsi saab näidata, et
kasutaja on võitnud mängu.
Ja vale on, mis näitab, et mäng veel kestab.
Kasutaja pole võitnud.
Nii, et see saab olema päris palju vastand init, kus init,
mäletan, me initsialiseerida pardal 15, 14, 13, 12, jne.
Arvestades võitnud, me tahame, et kontrollida, kas Laud on 1, 2, 3, 4, 5, ja nii edasi.
>> Niisiis, me initsialiseerida meie vastuollu 1 sest see on, mida top
vasakul pardal olema.
Ja siis me loop kogu pardal.
Olgem ignoreerida seda tingimust teine.
Ja see tingimus on lihtsalt läheb kontroll on laual selles asendis
võrdne praeguse loeb?
Kui nii, juurdekasvu loota, et Järgmisele kohale me pilk on üks kõrgemaid
kui positsioon oleme praegu.
>> Nii et see, kuidas me saame üleval vasakul peaks olema 1.
Kasvatab arv 2.
Vaata järgmist seisukohta.
Kas see 2?
Kui jah, siis juurdekasvu loota, et 3.
Järgmine seisukoht, on see 3?
Kui jah, siis juurdekasvu loota 4, ja nii edasi.
Niisiis, kui on olemas mingi seisukoht pardal, mis ei ole võrdne meie loota,
siis me tahame tagasi false sest et tähendab, et seal on mingi plaat, mis on
pole õiges asendis.
>> Nii et siin, mida see seisund läheb?
Noh, mäletan, et pimekatse on peaks minema all paremal.
Ja tühi väärtus ei pruugi tingimata võrduma väärtus
võidelda, et läheb saavutata allosas paremal.
Nii me konkreetselt soovite vaadata, kui ma võrdub võrdub d miinus 1 ja j võrdsete
võrdub d miinus 1 - see on juba siis, kui me otsivad allosas paremal
pardal - siis me lihtsalt soovivad jätkata.
Me tahame, et jäta see eriti iteratsiooni loop.
>> Ja nii, kui meil õnnestub saada selle kaudu nested loop, mis tähendab, et
ei olnud plaat, mis oli vales kohas.
Ja me murrame läbi silmuse ja tulla siin, kus me saame naasta tõsi.
Kõik plaadid olid õiged seisukohad ja see tähendab, et kui kasutaja on
mängu võitnud.
Ja ongi kõik.
Minu nimi on Rob Bowden, ja see oli 15.