Rob Bowden: Hi. Mən Rob Ben və mən ümid edirəm sizin 15 oyun. İndi sizə lazım dörd funksiyaları var Bu proqram həyata keçirmək - init, , çəkmək hərəkət və qazandı. Belə ki, init baxaq. Burada, biz istəyirik ilk şey görmək edəcəyimiz bir dəyişən elan edir counter çağırıb. Bu başlatılmış olacaq d dəfə d mənfi 1. D ölçüsü olduğunu unutmayın Bizim board. Necə init iş gedir gedir edir bütün board üzərində təkrarlamaq və biz başlamaq olacaq sol üst. Və deyək biz 4 4 board var. Belə ki, üst biz istəyirik sol deməyəcək 15-dir. Və sonra biz yalnız saymaq olacaq lövhələri vasitəsilə, 15, 14, 13 söyləyərək 12, 11, 10, 9, 8, 7, 6, 5, 4, və s. Belə ki, sol üst, biz d dəfə ola gözləyirik d minus 1, 4 4 olan halda 16 minus olacaq 1, düzgün 15 edir. Biz niyyətində olduğunuz və indi burada bütün board üzərində təkrarlamaq. Və biz hər mövqe müəyyən olacaq cari dəyəri board bizim counter, və sonra counter gedir azalma, ki, növbəti biz çatmaq mövqeyi gedir counter çox az olacaq əvvəlki mövqe. Belə ki, biz əvvəlcə 15 idi və counter azalma. Beləliklə biz üçün 14 təyin etmək olacaq Növbəti mövqeyi, azalma counter, və biz təyin olacaq 13, və s. Nəhayət, biz ki, künc idarə etmək lazımdır halda, burada board daha var ölçüsü, sonra yalnız 15, 14, 13 bunu 12, bütün yol aşağı 3, 2, 1, ilə bizi tərk gedir bir həll board. Və biz 1 və 2 dəyişdirmək lazımdır. D mod 2 0 bərabərdir Belə ki, ki, biz yoxlamaq olacaq necə hətta əgər görmək üçün. D mod 2 0, sonra sıra d minus bərabər əgər 1, alt sıra və mövqeyi d minus 2, və ya sütun d minus 2, biz 2-müəyyən gedir, və edirik sütun d minus 3 biz istəyirik 1 qurmaq niyyətindədir. Belə ki, yalnız geri yerdə 1 və 2 yerləşirsiniz. Nəhayət, biz çox müəyyən olacaq alt sağ boş bərabər, harada boş hash müəyyən edilmişdir 0 kimi üst. Belə ki, ciddi lazım deyil loop üçün bu üçün gedir ildən 0 sağ alt, çünki müəyyən counter təbii 0 çatacaq. Amma bilmədən bizə güvənir boş bir 0 tapmaq üçün hashed edilib. Mən bu proqram daxil və əgər , 100 üst boş dəyişdirmək hələ işləmək lazımdır. Belə ki, bu, yalnız əmin edilməsi edir sağ alt həqiqətən bərabərdir bizim boş dəyər. Nəhayət, biz iki qlobal dəyişənlər var belə i və boş j boş, və biz görmək üst o elan etdi. Və biz bu iki qlobal istifadə etmək olacaq Bu takip dəyişənlər boş mövqeyi, biz nə qədər ki, bütün, vasitəsilə baxmaq lazımdır boş hər bir tapmaq üçün board biz bir hərəkət etmək üçün cəhd zaman. Belə ki, boş mövqeyi həmişə sağ alt başlamaq niyyətindədir. Belə ki, sağ alt tərəfindən verilir indeksləri d minus 1, d minus 1. Belə ki, init var. İndi biz çəkmək üçün hərəkət. Belə ki, heç-heçə oxşar olacaq biz təkrarlamaq niyyətində olduğunuz bütün board üzərində. Və biz yalnız dəyəri çap etmək istəyirəm ki board hər mövqe. Belə ki, burada, biz ki, dəyəri çap edirik İdarə Heyətinin hər bir vəziyyətdə. Və biz bunu edirik ki, qeyd -. Və yalnız printf izah edir ki, asılı olmayaraq bir rəqəmli və ya var əgər iki rəqəmli nömrəsi, biz hələ istəyirik , çap həyata iki sütun qədər belə ki, biz iki rəqəmli və bir varsa eyni board rəqəmli ədəd, bizim board hələ gözəl və kvadrat görünür. Yəni, biz hər dəyər üçün bunu istəyirəm board, boş istisna olmaqla. Belə ki, əgər board mövqeyi bərabərdir boş, sonra biz xüsusi yalnız vurğulayır çap etmək istəyirəm Bu boş təmsil, əvəzinə nın nə dəyəri boş əslində. Nəhayət, biz çap etmək istəyirəm yeni xətt həyata. Bu hələ içəridə edək ki, kənarda loop üçün xarici, lakin loop üçün daxili. Loop üçün bu xarici iterating olduğundan bütün satır üzərində, və bu printf edir yalnız bir yeni çap, belə ki, biz növbəti sıra çap keçin. Və heç-heçə üçün var. Belə ki, indi hərəkət etmək hərəkət edək. İndi biz, kafel hərəkət keçir ki, İstifadəçi oyun daxil edilir - onlar onlar hərəkət etmək istəyirəm kafel daxil edin - və Bir bool qayıtmaq idi, belə edirik doğru və ya yalan, asılı olaraq ki, hərəkət həqiqətən olub etibarlı - ki, kafel ola bilər olub boş məkana köçürülüb. Odur ki, biz yerli dəyişən elan, tile_1 və niyyətində olan tile_j, blank_i və blank_j oxşar ola, Bu takip olacaq istisna olmaqla kafel mövqeyi. İndi burada, biz blank_i istifadə etmək olacaq və blank_j və, belə ki, bütün sağ demək burada board boş var. İndi boş yuxarıda kafel edir? Boş sol kafel edir? Boş sağ üçün kafel edir? Boş aşağıdakı kafel edir? Belə ki, kafel o heç əgər vəzifələri, biz bilirik ki, kafel boş spot daxil köçürülüb edilə bilər boş köçürülüb bilərsiniz kafel hazırda. Odur ki, biz demək əgər mövqe board blank_i minus 1 blank_j. Belə ki, bu deyərək kafel edir Cari boş yuxarıda? Və əgər, biz yadda olacaq ki kafel mövqeyidir. Kafel mövqeyi blank_i edir minus 1 və blank_j. indi ilk, biz də bu çek burada, belə blank_i edir 0 daha çox. Niyə biz bunu istəyirsiniz? Yaxşı, boş üst sırada əgər heyəti, sonra biz istəmirik ildən kafel üçün boş yuxarıda baxmaq üst yuxarıda heç bir şey yoxdur heyəti satır. Bu əldə son bilər necə bir seqmentasiya günah və ya kimi bir şey Proqram yalnız iş ola bilər gözlənilməz yollarla. Belə ki, bu biz bunu əmin edir etibarlı deyil ki, yerlərdə baxmaq. İndi biz eyni şey olacaq bütün digər mümkün birləşməsi. Odur ki, biz boş aşağıda arıyorsanız ki, kafel var görmek üçün. Və biz də əmin biz istəyirik etmək deyil, alt sırada, və ya başqa biz kafel üçün baxmaq lazım deyil. Burada biz sol baxmaq olacaq Bu kafel, əgər boş görmək. Və biz sola baxmaq lazım deyil biz leftmost sütun əgər. Və burada biz baxmaq olacaq sağ boş, və biz olmalıdır biz əgər sağ baxmaq rightmost sütun. Belə ki, o şeyi heç doğru olsaydı, ki, kafel bitişik deyil deməkdir boş və biz yalan ola bilər. Hərəkət qüvvədə idi. Amma, o biri doğru olsaydı, sonra Bu baxımdan, biz tile_i bilirik və tile_j də bərabər kafel mövqeyi. Və belə ki, biz board təkmilləşdirə bilər vəzifələrin tile_i və tile_j. Biz yeni dəyər boş olacaq bilirik və mövqeyi blank_i blank_j, orijinal idi boş - biz kafel gedir bilirəm orada hərəkət. Biz, həqiqətən, nə yoxdur fark bir burada real svop, biz bilirik ildən daxil etmək lazımdır ki, dəyərlər həmin vəzifələrdə daxil. Biz müvəqqəti ehtiyac yoxdur ətrafında dəyişən. Nəhayət, biz ki, biz xatırlamaq lazımdır ki, bizim qlobal dəyişənlər var mövqeyi takip saxlanılması boş. Beləliklə, biz mövqeyini yeniləmək istəyirəm burada kafel olmaq boş idi. Nəhayət, biz ildən doğru qayıtmaq hərəkət müvəffəqiyyətli oldu. Biz uğurla dəyişdirmək kafel boş. Bütün hüquqlar, belə ki, ötən biz qazandınız yoxlamaq lazımdır. Belə ki, qalib eyni bir bool qaytarır doğru göstərir gedir ki, istifadəçi oyun qazandı. Və yalan ifadə olunur ki, oyun hələ də davam edir. Istifadəçi qazandı. Belə ki, bu olduqca çox olacaq init qarşı, harada init, biz board başlamaq, xatırlayıram belə 15, 14, 13, 12, üçün. Qalib Halbuki, biz yoxlamaq istəyirsinizsə board belə 1, 2, 3, 4, 5, və. Belə ki, biz başlamaq olacaq bizim ki, nə top var-ci ildən 1 counter board sol olmalıdır. Və sonra biz loop olacaq bütün board üzərində. Bu vəziyyəti görməməzlikdən edək ikinci. Və bu vəziyyət yalnız gedir check bu mövqeyi board edir Cari sayar bərabərdir? Əgər belədirsə, sayı arttırmayı ki baxdığımız növbəti mövqeyi bir daha yüksəkdir biz indi var mövqeyi daha. Belə ki, biz almaq necə var sol üst 1 olmalıdır. 2 count arttırmayı. Növbəti mövqeyi baxın. Bu 2? Əgər, 3 count arttırmayı. Next mövqeyi, bu 3? Əgər belədirsə, sayı arttırmayı 4, və s. Belə ki, hər hansı bir mövqe varsa Bizim count bərabər deyil ki, board, onda biz bəri saxta qayıtmaq istəyirəm ki, bəzi kafel var deməkdir deyil düzgün mövqe. Belə ki, burada, bu vəziyyət nə edir? Yaxşı, boş olduğunu unutmayın sağ alt getmək lazım idi. Və boş dəyəri ola bilər mütləq dəyəri bərabər ki, əldə olacaq counter sağ alt. Belə ki, biz xüsusi yoxlamaq istəyirsinizsə i bərabərdir d minus 1 və j bərabərdir bərabərdir d minus 1 bərabərdir - deyə olan halda biz alt hüququnun baxırıq board - sonra biz yalnız davam etmək istəyirik. Biz bu xüsusi keçmək istəyirəm üçün loop iteration. Və belə ki, biz bu vasitəsilə almaq üçün idarə əgər loop üçün iç-içə, o deməkdir ki, idi ki, heç bir kafel var idi yanlış mövqe. Və biz loop çıxmaq və gələcək burada, biz doğru qayıtmaq bilər. Bütün plitələr doğru vəzifələrdə idi və istifadəçi var deməkdir Oyun qazandı. Və bu. My name Rob Bowden və bu 15 idi.