>> ROB BOWDEN: Sveiki.
Aš Robas, ir aš tikiuosi, kad jūsų žaidimas žaidimas 15.
Dabar yra keturios funkcijos jums reikia įgyvendinti šią programą - paleidimo,
piešti, perkelti, ir laimėjo.
Taigi, pažvelkime init.
>> Čia mes matome, kad pirmasis dalykas, mes ruošiuosi padaryti tai paskelbti kintamąjį
vadinamas skaitiklis.
Tai bus inicializuoti D karto r minus 1.
Atminkite, kad d yra dimensija Mūsų valdyba.
Kaip init ketina dirbti tai, kas vyksta kad paeiliui valdžia visoje diskusijų lentoje
ir mes ketiname pradėti viršuje kairėje.
>> Ir tegul tiesiog pasakyti, kad mes turi 4 4 lenta.
Taigi viršutiniame kairiajame mes ketina pasakyti 15.
Ir tada mes tik ketina skaičiuoti per lentas, sakydamas: 15, 14, 13,
12, 11, 10, 9, 8, 7, 6, 5, 4, ir tt.
Taigi viršutinis kairysis, mes tikimės, kad d laikai r minus 1, ty į 4 iš 4
atveju bus 16 minus 1, tai yra teisingai 15.
>> Ir dabar čia, kur mes einame pakartoti valdžia visoje diskusijų lentoje.
Ir mes ketiname nustatyti kiekvieno poziciją dabartinės vertės lenta
mūsų skaitiklis, tada kovos vyksta į Mažėja, kad kitą
pozicija pasiekiame teks skaitiklis yra vienas mažesnis nei
ankstesnė pozicija.
Taigi mes iš pradžių turėjo 15 ir Mažėja skaitiklis.
Taigi mes ketiname priskirti 14 į kitą padėtį, Mažėja skaitiklis
ir mes ketiname priskirti 13, ir taip toliau.
>> Galiausiai, mes turime dirbti, kad kampe tuo atveju, kai, jei laive yra net
dimensija, tada tiesiog daro 15, 14, 13, 12, visą kelią iki 3, 2, 1, yra
ketina palikti mums neišsprendžiamos lenta.
Ir mes turime apsikeitimo 1 ir 2.
Taigi, jei d mod 2 lygi 0, tai kaip mes ketiname patikrinti
pamatyti, jei ji dar.
Jei d mod 2 yra lygus 0, tada eilutėje d minuso 1, kuris yra apatinėje eilutėje, ir
pozicija d atėmus 2 arba stulpelis d atėmus 2, mes ketiname nustatyti, kad iki 2, ir
stulpelis r minus 3 mes ketina nustatyti, kad 1.
Taigi, tai tik atbuline eiga, kai 1 ir 2 metu.
>> Galiausiai, mes ketiname nustatyti labai apačioje dešinėje lygi Blankas, kur
Blankas buvo maišos apibrėžta viršuje, kaip 0.
Taigi, tai nebuvo būtina, nes tai už linijos teks
nustatyti apatinę teisę į 0, nes skaitiklis natūraliai pasiekti 0.
Bet tai priklauso nuo mūsų, žinant, kad Blankas buvo maiša rasti 0.
Jei aš einu į šią programą, ir vėliau pakeisti tuščią viršuje su 100, tai
vis tiek turėtų dirbti.
>> Taigi tai yra tiesiog įsitikinkite, kad apačioje dešinėje yra iš tikrųjų prilygsta mūsų
tuščią reikšmę.
Galiausiai, mes turime dvi globalių kintamųjų, taip tuščia aš ir tuščia j, duomenis ir matome
deklaruotas viršuje.
Ir mes ketiname naudoti šiuos du pasaulio kintamieji sekti
pozicija Blankas, kad mes ne reikia ieškoti per visą
lenta rasti tuščią kiekvieną laiko mes stengiamės padaryti žingsnį.
Taigi, iš tuščios vietos visada yra ketina pradėti apačioje dešinėje.
Taigi apačioje dešinėje yra pateiktas indeksai d atėmus 1 d atėmus 1.
Taigi, tai paleidimo.
>> Dabar mes pereiti prie piešti.
Taigi, lygiosiomis bus panašus kur mes ketiname pakartoti
valdžia visoje diskusijų lentoje.
Ir mes tiesiog norime spausdinti vertę tai kiekvienos lentos vietoje.
Taigi čia mes spausdinimo vertę, kad yra kiekvienos lentos vietoje.
Ir pastebėsite, kad mes darome -.
Ir tai tik sakau printf kad nepriklausomai nuo to, ar tai vienas skaitmuo arba
dviejų skaitmenų numeris, mes vis tiek norime, kad ji užima du stulpelius išspausdina,
taip, kad jei mes turime dvi skaitmuo ir vienas skaitmenų numeriai tame pačiame laive, mūsų
lenta vis dar atrodo gražus ir kvadratas.
>> Taigi, mes norime padaryti, kad už kiekvieną vertę valdyboje, išskyrus tuščias.
Taigi, jei yra valdybos pozicija Lygu Blankas, tada mes specialiai
norite spausdinti tik pabraukimo vietoj atstovauti tuščią,
nepriklausomai nuo vertės Blankas iš tikrųjų yra.
>> Galiausiai, mes norime spausdinti iš naujos eilutės.
Atkreipkite dėmesį, kad tai yra dar viduje išorinė už linijos, bet ne
vidinis už linijos.
Kadangi tai išorinė for ciklas Iteracja per visas eilutes ir todėl tai printf yra
vyksta tiesiog atsispausdinti naują liniją, todėl mes pereiti prie atspausdinti kitą eilutę.
Štai ir viskas už lygiosiomis.
>> Taigi, dabar galime pereiti judėti.
Dabar mes pereiname perkelti, plytelių, kad vartotojo įrašytas į žaidimą - jie
įveskite plytelių jie nori judėti - ir jums turėtų grįžti bool, todėl
arba true arba false, priklausomai nuo ar tas žingsnis buvo iš tikrųjų
galioja - ar kad plytelės gali būti persikėlė į tuščią erdvę.
>> Taigi čia mes pareiškiame vietinį kintamąjį, tile_1 ir tile_j, kurie ketina
būti panašus į blank_i ir blank_j, , išskyrus tai, kas vyksta sekti
pozicija plytelių.
Dabar čia mes ketiname naudoti blank_i ir blank_j ir sako viskas gerai, todėl
čia ant lentos tuščias.
>> Dabar yra didesnis tuščias plytelių?
Ar į tuščią kairėje plytelių?
Ar į tuščią dešinę plytelių?
Ar žemiau tuščias plytelių?
Taigi, jei plytelės yra bet kuri iš šių pozicijos, tada mes žinome, kad plytelių
galima perkelti į tuščią vietoje ir Blankas gali būti perkeltas į kur
plytelių metu.
>> Taigi čia mes sakome, jei valdyba padėtyje blank_i atėmus 1 blank_j.
Taigi, tai sakau, plytelių virš dabartinio tuščią?
Ir jei taip, mes ketiname prisiminti tai plytelių pozicija.
Plytelių padėtyje blank_i minus 1 ir blank_j.
dabar pirma, mes taip pat turime šį patikrinimą čia, todėl blank_i yra
didesnis nei 0.
>> Kodėl mes norime padaryti?
Na, jei Blankas yra viršutinėje eilutėje valdybos, tada mes nenorime
žiūrėti aukščiau tuščią plytelių nuo nėra nieko aukščiau viršų
eilė lentos.
Tai kaip galite baigti gauti kažkas panašaus į segmentavimo kaltės ar
jūsų programa gali tiesiog dirbti netikėtų būdų.
Taigi, tai yra užtikrinti, kad mes ne ieškoti vietų, kurios yra neteisingas.
>> Dabar mes ketiname daryti tą patį visi kiti galimi deriniai.
Taigi čia mes ieškome žemiau tuščias pamatyti, jei tai plytelių.
Ir mes taip pat turite įsitikinti, kad mes ne apatinėje eilutėje, kitaip mes
neturėtų ieškoti plytelių.
Čia mes ketiname pažvelgti į kairę Blankas pamatyti, jei ji yra plytelės.
Ir mes neturėtume žiūrėti į kairę jei mes į kairiausias skiltyje.
Ir čia mes ketiname ieškoti teisė Blankas, ir mes neturėtume
žiūrėti į dešinę, jei mes į dešinę nutolusį skiltyje.
>> Taigi, jei nė vienas iš tų dalykų, buvo tiesa, tai reiškia, kad plytelių nebuvo šalia
į tuščias ir galime grįžti klaidinga.
Žingsnis buvo neteisingas.
Tačiau, jei viena iš jų buvo tiesa, tai bent Šiuo metu, mes žinome, kad tile_i ir
tile_j yra lygūs pozicija plytelių.
Ir taip, mes galime atnaujinti lenta pozicijos tile_i ir tile_j.
Mes žinome, nauja reikšmė bus tuščia ir kad padėtis blank_i
blank_j, kuris buvo originalas tuščias - mes žinome, plytelių ketina
perkelti ten.
>> Atkreipkite dėmesį, mes ne iš tikrųjų turi daryti nekilnojamojo apsikeitimo čia, nes mes žinome,
vertės, kurios turi būti įtrauktas į šias pareigas.
Mums nereikia laikinas kintamasis aplink.
>> Galiausiai, mes turime prisiminti, kad mes turime globalių kintamųjų, kurie
sekti padėtį ruošinio.
Taigi, mes norime atnaujinti poziciją Blankas būti ten, kur plytelės
iš pradžių buvo.
Galiausiai, mes grąžina true, nes žingsnis buvo sėkmingas.
Mes sėkmingai sukeisti Blankas su plytelių.
>> Viskas gerai, taip pagaliau mes reikia patikrinti vonų.
Taigi, juodieji panašiai grąžina bool kur tiesa ketina rodo, kad
vartotojas laimėjo žaidimą.
Ir neteisinga yra tai rodo, kad Žaidimas vis dar vyksta.
Vartotojas dar laimėjo.
Taigi, tai bus gana daug iš init priešais, kur init
atminkite, kad mes inicijuoti lenta 15, 14, 13, 12, kt.
Kadangi laimėjo, mes norime patikrinti, ar taryba yra 1, 2, 3, 4, 5, ir taip toliau.
>> Taigi, mes ketiname inicijuoti mūsų kovoti su 1, nes tai, ką viršuje
kairėje valdybos turėtų būti.
Ir tada mes ketiname kilpa valdžia visoje diskusijų lentoje.
Leiskite ignoruoti šią sąlygą sekundę.
Ir ši sąlyga yra tik ketina patikrinimas yra šioje padėtyje lenta
lygi dabartinei skaičiaus?
Jei taip, prieaugio skaičius, kad kitą padėtį pažvelgtume vienas didesnis
nei padėtyje esame dabar.
>> Štai kaip mes viršuje, kairėje turėtų būti 1.
Prieaugio skaičiavimą iki 2.
Pažvelkite į kitą poziciją.
Ar tai 2?
Jei taip, prieaugio skaičiavimą iki 3.
Kitas pozicija, tai yra 3?
Jei taip, prieaugio skaičiavimą 4, ir pan.
Taigi, jei yra bet kokia padėtis valdyba, kuri nėra lygi mūsų skaičius,
tada mes norime return false, nes, kad tai ten kai plytelių, kad yra
ne teisingoje padėtyje.
>> Taigi čia, kas yra ši sąlyga darai?
Na, atminkite, kad tuščias yra turėtų eiti į apačioje dešinėje.
Ir tuščiasis vert gali ne nebūtinai yra lygūs vertę
kovoti, kad bus pasiektas apačioje dešinėje.
Taigi, mes specialiai norite patikrinti, jei aš Lygu lygu r minus 1 ir j lygu
Lygu r atėmus 1 - kuris sako, jei mes žiūrite į apatiniame dešiniajame
lenta - tada mes tiesiog norite tęsti.
Mes norime, kad praleisti tai ypač pasikartojančių už kilpos.
>> Ir taip, jei mums pavyks gauti per šį įdėtos už kilpos, tai reiškia, kad
nebuvo plytelių, kad buvo neteisinga pozicija.
Ir mes išeiti iš kilpos ir ateiti čia, kur mes galime grįžti tiesa.
Visos plytelės buvo teisingas pozicijas ir tai reiškia, kad vartotojas turi
laimėjo žaidimą.
Štai ir viskas.
Mano vardas yra Rob Bowden, ir tai buvo 15.