1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Le të ketë fun me pesëmbëdhjetë. 3 00:00:11,332 --> 00:00:15,680 Pesëmbëdhjetë është loja e parë që ju të merrni për të zbatuar dhe është interaktive. 4 00:00:15,680 --> 00:00:16,410 Tani, për të mos u shqetësoni. 5 00:00:16,410 --> 00:00:18,830 Ju nuk keni për të shkruar gjithë gjë veten. 6 00:00:18,830 --> 00:00:22,320 Shikoni në kodin e shpërndarjes sepse një shumë e strukturës lojës është tashmë 7 00:00:22,320 --> 00:00:23,880 ngritur për ju. 8 00:00:23,880 --> 00:00:28,160 Ajo pranon dhe parses një linjë komande Argumenti nga përdoruesit dhe krijon një 9 00:00:28,160 --> 00:00:31,230 Bordi i bazuar në atë të dhëna. 10 00:00:31,230 --> 00:00:35,570 Ajo kontrollon nëse loja është e fituar dhe daljet një herë përdoruesit e fitoi ndeshjen. 11 00:00:35,570 --> 00:00:38,340 Dhe për të fituar ndeshjen, ajo merr të dhëna nga përdoruesit dhe 12 00:00:38,340 --> 00:00:40,610 thërret funksionin Leviz. 13 00:00:40,610 --> 00:00:44,600 >> Pra, ne jemi duke shkuar për të zbatuar katër Funksionet për lojë pesëmbëdhjetë, 14 00:00:44,600 --> 00:00:48,110 init, barazim, veprim, dhe fitoi. 15 00:00:48,110 --> 00:00:50,340 Së pari, le të trajtuar init. 16 00:00:50,340 --> 00:00:55,150 Në init, për të nisja, ne përfaqësojmë bordi në një rrjet 2D numër i plotë. 17 00:00:55,150 --> 00:01:01,070 Dhe kjo është një ndryshore globale të quajtur Bordi me dimensione MAX, dhe MAX, 18 00:01:01,070 --> 00:01:03,880 dimensionet maksimale e bordit. 19 00:01:03,880 --> 00:01:07,310 Tani, dimensioni aktuale e bordit është dhënë nga ana e përdoruesit, të përfaqësuar në 20 00:01:07,310 --> 00:01:10,620 numër i plotë d, e cila mund të jetë më pak se MAX. 21 00:01:10,620 --> 00:01:14,660 Por, në C, ju nuk mund të ndrysho vargjeve, kështu që ju jeni të mbërthyer me 22 00:01:14,660 --> 00:01:16,730 se dimensioni maksimal. 23 00:01:16,730 --> 00:01:19,870 >> Detyra jote në init është që populloj vlerat e bordit 24 00:01:19,870 --> 00:01:21,860 me vlerën e saktë. 25 00:01:21,860 --> 00:01:26,910 Tani, ne kemi parë vargjeve 1D, por si nuk punojnë vargjeve 2D? 26 00:01:26,910 --> 00:01:30,985 Ka një indeks i rreshtit, zero indeksuar si gjithmonë, dhe më pas edhe i 27 00:01:30,985 --> 00:01:32,100 kolona. 28 00:01:32,100 --> 00:01:36,120 Dhe ju do të plotësoni rrjetit tuaj në në zbritur vlerat, ashtu si kjo. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, 0 row, column 0, është 8, grid 0, 1 është 7. 30 00:01:43,260 --> 00:01:48,500 Kjo është për shembull, ku d, pak d, është 3. 31 00:01:48,500 --> 00:01:52,690 >> Tani, bordi në pesëmbëdhjetë duhet gjithashtu përmbajnë një tjegull bosh, në qoftë se ju keni ndonjëherë 32 00:01:52,690 --> 00:01:54,280 luajtur me lojë fizike. 33 00:01:54,280 --> 00:01:59,210 Por, bordi është një grup numër i plotë, në mënyrë të gjitha vlerat duhet të jenë numra të plotë. 34 00:01:59,210 --> 00:02:06,950 Kështu që është e deri tek ju për të vendosur një numër të plotë vlera për të përfaqësuar një tjegull bosh. 35 00:02:06,950 --> 00:02:10,460 Për të nisja bordit tuaj, ju mund të përdorni Strukturat loop të përmbajnë 36 00:02:10,460 --> 00:02:16,440 duke filluar shtet i bordit, ku bordi i j përfaqëson elementin në 37 00:02:16,440 --> 00:02:19,380 i rresht dhe kolonë j. 38 00:02:19,380 --> 00:02:23,035 Ata fillojnë në rend zbritës dhe, mos harroni, se në qoftë se numri i pllakave 39 00:02:23,035 --> 00:02:29,590 është i rastësishëm, atëherë ju jeni do të duhet të bie në ujdi vendin e 2 dhe prej 1. 40 00:02:29,590 --> 00:02:33,790 Pra atje, ne kemi tona bordit niset. 41 00:02:33,790 --> 00:02:37,440 >> Tani, që ne i kemi initialized tonë bordit, është koha për të nxjerrë atë. 42 00:02:37,440 --> 00:02:41,260 Draw do të shtypura gjendjen aktuale të bordit, por ju duhet të bëni të sigurtë 43 00:02:41,260 --> 00:02:44,260 për të shtypur pllaka në të njëjtën mënyrë që e keni nisur ato. 44 00:02:44,260 --> 00:02:47,300 Dhe gjithashtu ju duhet të format numrat tuaj të saktë. 45 00:02:47,300 --> 00:02:51,700 Sepse ne mund të kemi shifra të vetme dhe shifra të dyfishtë, atëherë ju doni të 46 00:02:51,700 --> 00:02:54,540 shkruar një hapësirë ​​bosh para çdo numra njëshifrorë. 47 00:02:54,540 --> 00:03:00,150 Ju përdorni atë duke përdorur placeholder -. 48 00:03:00,150 --> 00:03:02,550 >> Por mos harroni hapësirën tonë bosh. 49 00:03:02,550 --> 00:03:05,970 Ne nuk duam të shtypura numrin aktual që ne kemi zgjedhur për të përfaqësuar 50 00:03:05,970 --> 00:03:10,410 se hapësira bosh në bord, por ne gjithashtu nuk duan të shtypura asgjë në të gjitha. 51 00:03:10,410 --> 00:03:15,310 Pra, çfarë mund të bëni është që të përcaktojë një simbol ose karakter për të përfaqësuar 52 00:03:15,310 --> 00:03:17,050 tjegull bosh. 53 00:03:17,050 --> 00:03:21,030 Në shembujt e mëparshëm unë kam zgjedhur një të theksuar, dhe atëherë ju vetëm të shtypura 54 00:03:21,030 --> 00:03:26,970 që sa herë që ju të arrijnë bosh hapësirë ​​në funksion tuaj barazim. 55 00:03:26,970 --> 00:03:29,850 >> Pra barazim do të ketë mbivendosur për sythe. 56 00:03:29,850 --> 00:03:31,150 Diçka si kjo. 57 00:03:31,150 --> 00:03:35,660 Per çdo rresht, dhe pastaj për secilën vlerë në rresht, ju do të jeni për të shtypur 58 00:03:35,660 --> 00:03:36,940 vlera në këtë hapësirë. 59 00:03:36,940 --> 00:03:39,470 Pasi të keni shtypur të gjitha vlerat në radhë, atëherë ju 60 00:03:39,470 --> 00:03:41,180 mund të shtypura një linjë të re. 61 00:03:41,180 --> 00:03:47,730 Mos harroni se urdhri për barazim tuaj Funksioni duhet të bëjnë jehonë apo pasqyrojnë rendin 62 00:03:47,730 --> 00:03:48,980 në funksion tuaj të niset. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Tani që ju initialized e bordit dhe që e keni tërhequr atë, është koha për të le të 65 00:03:55,160 --> 00:03:58,500 përdorues redaktoj atë dhe të bëjnë lëvizjet e tyre. 66 00:03:58,500 --> 00:04:03,840 Pra, në funksion Fifteen.c, Programi i merr të dhëna nga përdoruesit dhe 67 00:04:03,840 --> 00:04:07,690 pastaj thërret funksionin veprim, duke kaluar në numrin e tjegulles se 68 00:04:07,690 --> 00:04:09,270 përdoruesi dëshiron të lëvizë. 69 00:04:09,270 --> 00:04:10,380 Tani, të jenë të kujdesshëm. 70 00:04:10,380 --> 00:04:14,200 Ky është numri aktual i tjegull dhe jo pozicionin e saj aktual. 71 00:04:14,200 --> 00:04:19,010 Pra, ju do të duhet për të kërkuar për tjegull-së Pozita të dinë se ku është. 72 00:04:19,010 --> 00:04:23,440 >> Tani, ju duhet të lejojë vetëm përdoruesit për të bërë një lëvizje nëse është e ligjshme. 73 00:04:23,440 --> 00:04:27,910 Një veprim ligjor është çdo tjegull se është ngjitur me pllakave bosh. 74 00:04:27,910 --> 00:04:32,020 Që nënkupton, sipër dhe poshtë, për të majtë dhe të djathtë. 75 00:04:32,020 --> 00:04:34,680 Pra, ju do të duhet të dini se ku tjegull bosh është si. 76 00:04:34,680 --> 00:04:39,720 Tani, për çdo veprim që ju jeni në kërkim për tjegull përdoruesit, por kjo është ndoshta 77 00:04:39,720 --> 00:04:43,030 nuk më të mirë për të kërkuar për tjegull bosh çdo herë për shkak se ju jeni duke bërë atë 78 00:04:43,030 --> 00:04:45,270 çdo herë të vetme përdoruesi dëshiron të lëvizë. 79 00:04:45,270 --> 00:04:50,300 Pra, në vend të kësaj, është më mirë të mbani mend se ku tjegull bosh është duke përdorur disa 80 00:04:50,300 --> 00:04:52,650 edhe variabla me emrin. 81 00:04:52,650 --> 00:04:55,970 Pra, sapo ju të lejojë përdoruesin për të bërë të tyre lëviz, ata janë të mirë në e tyre 82 00:04:55,970 --> 00:04:59,700 mënyrë për të fituar ndeshjen e pesëmbëdhjetë. 83 00:04:59,700 --> 00:05:03,940 >> Për të fituar ndeshjen e pesëmbëdhjetë, pllakave duhet të jetë në një mënyrë të caktuar, dhe 84 00:05:03,940 --> 00:05:06,970 funksioni fitoi kontrollon nëse loja është e fituar. 85 00:05:06,970 --> 00:05:10,290 Ajo kthen vërtetë nëse loja është e fituar dhe pllaka janë në mënyrë korrekte, 86 00:05:10,290 --> 00:05:12,210 dhe False ndryshe. 87 00:05:12,210 --> 00:05:15,830 Pra, për të fituar ndeshjen e pesëmbëdhjetë, pllaka kanë për të rritur rendin, me 88 00:05:15,830 --> 00:05:19,230 tjegull bosh në këndin e poshtëm të djathtë. 89 00:05:19,230 --> 00:05:23,630 Pra, si ju kontrolloni nëse përdoruesi ka lëvizur bordit në të djathtë 90 00:05:23,630 --> 00:05:25,010 Orientimi? 91 00:05:25,010 --> 00:05:29,200 >> E pra, ju do të iterate mbi bordit dhe kontrolloni vlerat për të siguruar që 92 00:05:29,200 --> 00:05:30,550 ata janë në vendin e duhur. 93 00:05:30,550 --> 00:05:33,910 Për ta bërë këtë, ju mund të përdorni mbivendosur për sythe ashtu si ju bëri 94 00:05:33,910 --> 00:05:36,520 në barazim dhe në init. 95 00:05:36,520 --> 00:05:40,430 Ka disa mënyra për të kontrolluar dhe vërtetoni nëse bordi është 96 00:05:40,430 --> 00:05:42,860 saktë dhe një fitues formimin, pse. 97 00:05:42,860 --> 00:05:47,330 Nëse ju shkoni nga e majta në të djathtë, duke filluar nga rreshtin e lartë poshtë, atëherë çdo 98 00:05:47,330 --> 00:05:50,590 numër duhet të jetë më i madh se e mëparshmja. 99 00:05:50,590 --> 00:05:54,530 Jini të kujdesshëm në lidhje me atë që ju e vlerësoni keni zgjedhur për tjegull tuaj bosh pse. 100 00:05:54,530 --> 00:05:59,250 >> Ose ju mund të përdorni një ndryshore kundër të të siguruar që çdo vlerë është në vend, në qoftë se 101 00:05:59,250 --> 00:06:03,660 ju të dalë me një lloj të formulë për të përfaqësuar këtë. 102 00:06:03,660 --> 00:06:06,250 Pra, have fun eksperimente me matematikë. 103 00:06:06,250 --> 00:06:10,930 Pasi të keni dalë me një mënyrë, kthim Vërtetë një herë përdorues ka fituar ndeshjen. 104 00:06:10,930 --> 00:06:15,950 Por në qoftë se çdo vlerë është i pasaktë, kthimi False, përdoruesi duhet të vazhdojë të lëvizur 105 00:06:15,950 --> 00:06:18,440 sepse ata nuk e kanë fituar ndeshjen. 106 00:06:18,440 --> 00:06:23,030 Pasi të zbatojë këtë kontroll dhe, së bashku me nisja, barazim, dhe për të shkuar, 107 00:06:23,030 --> 00:06:25,110 të keni përfunduar lojën e pesëmbëdhjetë. 108 00:06:25,110 --> 00:06:27,620 Urime dhe kanë luajtur fun. 109 00:06:27,620 --> 00:06:30,600 Emri im është Zamyla dhe kjo është CS50. 110 00:06:30,600 --> 00:06:37,632