1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Să Distreaza-te cu Cincisprezece. 3 00:00:11,332 --> 00:00:15,680 Cincisprezece este primul joc pe care îl obțineți să pună în aplicare și este interactiv. 4 00:00:15,680 --> 00:00:16,410 Acum, să nu vă faceți griji. 5 00:00:16,410 --> 00:00:18,830 Nu trebuie să scrie Toată treaba asta te. 6 00:00:18,830 --> 00:00:22,320 Uită-te la codul de distribuție, deoarece un mulțime de structura de joc este deja 7 00:00:22,320 --> 00:00:23,880 creat pentru tine. 8 00:00:23,880 --> 00:00:28,160 Se acceptă și analizează o linie de comandă argument de utilizator și creează un 9 00:00:28,160 --> 00:00:31,230 bord bazate pe acea intrare. 10 00:00:31,230 --> 00:00:35,570 Se verifică dacă jocul este câștigat și ieșirile Odată ce utilizatorul a câștigat jocul. 11 00:00:35,570 --> 00:00:38,340 Și pentru a câștiga jocul, acesta devine intrare de la utilizator și 12 00:00:38,340 --> 00:00:40,610 apeleaza functia Mutare. 13 00:00:40,610 --> 00:00:44,600 >> Așa că am de gând să fie punerea în aplicare a patru Funcțiile pentru jocul de cincisprezece ani, 14 00:00:44,600 --> 00:00:48,110 init, trage, mișcare, și a câștigat. 15 00:00:48,110 --> 00:00:50,340 În primul rând, haideți să abordeze de inițializare. 16 00:00:50,340 --> 00:00:55,150 În inițializare, pentru Initialize, ne reprezintă bord într-o gamă întreg 2D. 17 00:00:55,150 --> 00:01:01,070 Și aceasta este o variabilă globală numită bord cu dimensiuni MAX, și MAX, 18 00:01:01,070 --> 00:01:03,880 dimensiunile maxime ale consiliului. 19 00:01:03,880 --> 00:01:07,310 Acum, dimensiunea reală a consiliului este dată de către utilizator, reprezentată în 20 00:01:07,310 --> 00:01:10,620 număr întreg d, care ar putea să fie mai mică MAX. 21 00:01:10,620 --> 00:01:14,660 Dar, în C, nu poți redimensiona tablouri, așa că te-ai blocat cu 22 00:01:14,660 --> 00:01:16,730 că dimensiunea maximă. 23 00:01:16,730 --> 00:01:19,870 >> De locuri de muncă în inițializare este de a popula valorile de bord 24 00:01:19,870 --> 00:01:21,860 cu valoarea corectă. 25 00:01:21,860 --> 00:01:26,910 Acum, am văzut tablouri 1D, dar cum matrice 2D funcționează? 26 00:01:26,910 --> 00:01:30,985 Există un indice de rând, la zero indexate ca întotdeauna, și apoi, de asemenea, de 27 00:01:30,985 --> 00:01:32,100 coloana. 28 00:01:32,100 --> 00:01:36,120 Și veți umple grila dvs. în valori descrescătoare, la fel ca aceasta. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, 0 rând, coloană 0, este de 8, grila 0, 1 este de 7. 30 00:01:43,260 --> 00:01:48,500 Acesta este un exemplu de unde d, mic d, este de 3. 31 00:01:48,500 --> 00:01:52,690 >> Acum, placa în cincisprezece trebuie, de asemenea, conțin o țiglă gol, dacă ai vreodată 32 00:01:52,690 --> 00:01:54,280 a jucat cu jocul fizic. 33 00:01:54,280 --> 00:01:59,210 Dar, de bord este un tablou întreg, așa toate valorile trebuie să fie numere întregi. 34 00:01:59,210 --> 00:02:06,950 Deci, este de până la tine pentru a decide un întreg valoare să reprezinte o piesă goală. 35 00:02:06,950 --> 00:02:10,460 Pentru a inițializa placa dvs., puteți utiliza structurile bucla pentru conțin 36 00:02:10,460 --> 00:02:16,440 de stat începând de bord, unde bord i j reprezintă elementul de la 37 00:02:16,440 --> 00:02:19,380 rândul i și coloana j. 38 00:02:19,380 --> 00:02:23,035 Ei încep în ordine descrescătoare și, amintiți-vă, că în cazul în care numărul de plăci 39 00:02:23,035 --> 00:02:29,590 este impar, atunci ai de gând să trebuie să schimba locația 2 și de 1. 40 00:02:29,590 --> 00:02:33,790 Deci nu, ne-am nostru bord inițializat. 41 00:02:33,790 --> 00:02:37,440 >> Acum, că ne-am initializat nostru bord, e timpul să-l atragă. 42 00:02:37,440 --> 00:02:41,260 Remiză va imprima starea actuală a bord, dar trebuie să vă asigurați 43 00:02:41,260 --> 00:02:44,260 pentru a imprima gresie în aceeași ordine pe care le-ați inițializat. 44 00:02:44,260 --> 00:02:47,300 Și tu, de asemenea, nevoie pentru a formata numerele corect. 45 00:02:47,300 --> 00:02:51,700 Pentru că am putea avea o singură cifră și de două cifre, apoi pe care doriți să 46 00:02:51,700 --> 00:02:54,540 imprima un spațiu gol, înainte de orice numere de o singură cifră. 47 00:02:54,540 --> 00:03:00,150 Puteți utiliza că, prin utilizarea substituentul -. 48 00:03:00,150 --> 00:03:02,550 >> Dar amintiți-vă spațiul nostru gol. 49 00:03:02,550 --> 00:03:05,970 Noi nu vrem să imprimați numărul real pe care le-am ales pentru a reprezenta 50 00:03:05,970 --> 00:03:10,410 ca spațiu gol în bord, dar am, de asemenea, Nu doriți să imprimați nimic. 51 00:03:10,410 --> 00:03:15,310 Deci, ce puteți face este de a defini un simbol sau caracter pentru a reprezenta 52 00:03:15,310 --> 00:03:17,050 Placi de gol. 53 00:03:17,050 --> 00:03:21,030 În exemplele anterioare, am ales un subliniere, și apoi doar să imprimați 54 00:03:21,030 --> 00:03:26,970 că ori de câte ori ajunge la martor spațiu în funcția draw. 55 00:03:26,970 --> 00:03:29,850 >> Deci, trage va fi imbricate pentru bucle. 56 00:03:29,850 --> 00:03:31,150 Ceva de genul asta. 57 00:03:31,150 --> 00:03:35,660 Pentru fiecare rând, și apoi pentru fiecare valoare rând, ai de gând să imprima 58 00:03:35,660 --> 00:03:36,940 valoare în acest spațiu. 59 00:03:36,940 --> 00:03:39,470 După ce ați imprimat toate valorile în rândul, apoi 60 00:03:39,470 --> 00:03:41,180 poate imprima o nouă linie. 61 00:03:41,180 --> 00:03:47,730 Amintiți-vă că ordinul de tragere dvs. funcție trebuie să ecou sau oglinda ordinea 62 00:03:47,730 --> 00:03:48,980 în funcția inițializat. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Acum, că ați inițializat bord și pe care l-ai desenat, e timpul să lase 65 00:03:55,160 --> 00:03:58,500 utilizatorul edita și de a face miscarile lor. 66 00:03:58,500 --> 00:04:03,840 Deci, în funcție Fifteen.c, Programul ia de intrare de la utilizator și 67 00:04:03,840 --> 00:04:07,690 apoi solicită funcția mișcare, trecând a numărului de țiglă care 68 00:04:07,690 --> 00:04:09,270 utilizator dorește să se mute. 69 00:04:09,270 --> 00:04:10,380 Acum, fii atent. 70 00:04:10,380 --> 00:04:14,200 Acesta este numărul real de tigla și nu poziția sa actuală. 71 00:04:14,200 --> 00:04:19,010 Deci, veți avea nevoie pentru a căuta țiglă lui măsură să știu unde este. 72 00:04:19,010 --> 00:04:23,440 >> Acum, ar trebui să permită numai utilizatorului pentru a face o mutare, dacă e legal. 73 00:04:23,440 --> 00:04:27,910 O mutare este nici o țiglă care este adiacent la țiglă gol. 74 00:04:27,910 --> 00:04:32,020 Asta înseamnă că, de mai sus și mai jos, pentru a stânga și la dreapta. 75 00:04:32,020 --> 00:04:34,680 Deci, va trebui să știe unde tigla gol este la fel de bine. 76 00:04:34,680 --> 00:04:39,720 Acum, pentru fiecare mișcare pe care o căutați tigla de utilizatori, dar este, probabil, 77 00:04:39,720 --> 00:04:43,030 nu cel mai bun pentru a căuta țiglă gol de fiecare dată pentru că o faci 78 00:04:43,030 --> 00:04:45,270 fiecare dată utilizator dorește să se mute. 79 00:04:45,270 --> 00:04:50,300 Deci, în schimb, cel mai bine este să vă amintiți unde tigla gol este utilizarea unor 80 00:04:50,300 --> 00:04:52,650 bine numit variabile. 81 00:04:52,650 --> 00:04:55,970 Deci, odată ce permite utilizatorului să-și facă mișcări, ele sunt bine în lor 82 00:04:55,970 --> 00:04:59,700 mod de a câștiga jocul de cincisprezece. 83 00:04:59,700 --> 00:05:03,940 >> Pentru a câștiga jocul de cincisprezece, gresie trebuie să fie într-o anumită ordine, și 84 00:05:03,940 --> 00:05:06,970 funcția câștigat verifică dacă jocul este câștigat. 85 00:05:06,970 --> 00:05:10,290 Se returnează Adevărat dacă jocul este câștigat și gresie sunt în ordinea corectă, 86 00:05:10,290 --> 00:05:12,210 și false în caz contrar. 87 00:05:12,210 --> 00:05:15,830 Deci, pentru a câștiga jocul de cincisprezece ani, gresie trebuie să fie crescătoare, cu 88 00:05:15,830 --> 00:05:19,230 Placi de gol la colțul din dreapta jos. 89 00:05:19,230 --> 00:05:23,630 Deci, cum a face tu a verifica dacă utilizatorul sa mutat placa în dreapta 90 00:05:23,630 --> 00:05:25,010 orientare? 91 00:05:25,010 --> 00:05:29,200 >> Ei bine, veți repeta peste bord și verifica valorile pentru a vă asigura că 92 00:05:29,200 --> 00:05:30,550 acestea sunt în locul potrivit. 93 00:05:30,550 --> 00:05:33,910 Pentru a face acest lucru, aveți posibilitatea să utilizați imbricate pentru bucle la fel ca le-ai făcut 94 00:05:33,910 --> 00:05:36,520 la egalitate și în init. 95 00:05:36,520 --> 00:05:40,430 Există câteva moduri de a verifica și valida dacă placa este 96 00:05:40,430 --> 00:05:42,860 corectă și un câștig formarea, deși. 97 00:05:42,860 --> 00:05:47,330 Dacă te duci la stânga la dreapta, începând cu din rândul de sus în jos, apoi fiecare 98 00:05:47,330 --> 00:05:50,590 număr trebuie să fie mai mare decât cel anterior. 99 00:05:50,590 --> 00:05:54,530 Fii atent la ceea ce valoare ai ales pentru țiglă dvs. gol, deși. 100 00:05:54,530 --> 00:05:59,250 >> Sau ai putea folosi o variabilă contor de asigure că fiecare valoare este în loc, dacă 101 00:05:59,250 --> 00:06:03,660 ți-a venit cu un fel de formulă pentru a reprezenta aceasta. 102 00:06:03,660 --> 00:06:06,250 Astfel încât să se distreze experimenteze cu matematica. 103 00:06:06,250 --> 00:06:10,930 Odată ce ați venit cu un mod, revenire Adevărat odată ce utilizatorul a câștigat jocul. 104 00:06:10,930 --> 00:06:15,950 Dar, în cazul în care orice valoare este incorectă, revenire Fals, utilizatorul trebuie să continue să acționeze 105 00:06:15,950 --> 00:06:18,440 pentru că ei nu au câștigat jocul. 106 00:06:18,440 --> 00:06:23,030 Odată ce ați pune în aplicare această verificare și, de-a lungul cu Initialize, desena, și pentru a muta, 107 00:06:23,030 --> 00:06:25,110 ați terminat jocul de cincisprezece. 108 00:06:25,110 --> 00:06:27,620 Felicitări și au joc distractiv. 109 00:06:27,620 --> 00:06:30,600 Numele meu este Zamyla și acest lucru este CS50. 110 00:06:30,600 --> 00:06:37,632