1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Ni havas amuzo kun Dek kvin. 3 00:00:11,332 --> 00:00:15,680 Dek kvin estas la unua ludo, kiun vi ricevas apliki kaj ĝi estas interaktiva. 4 00:00:15,680 --> 00:00:16,410 Nun, ne maltrankviliĝu. 5 00:00:16,410 --> 00:00:18,830 Vi ne devas skribi la tuta aĵo mem. 6 00:00:18,830 --> 00:00:22,320 Rigardu la dissendo kodo ĉar loto de la ludo strukturo estas jam 7 00:00:22,320 --> 00:00:23,880 starigis por vi. 8 00:00:23,880 --> 00:00:28,160 Ĝi akceptas kaj parses a komandlinia argumento de la uzanto kaj kreas 9 00:00:28,160 --> 00:00:31,230 tabulo bazita sur tiu enigo. 10 00:00:31,230 --> 00:00:35,570 Ĝi kontrolas se la ludo estas gajnita kaj elirojn Tuj la uzanto gajnas la ludon. 11 00:00:35,570 --> 00:00:38,340 Kaj por gajni la ludon, gxi ricevas enigo de la uzanto kaj 12 00:00:38,340 --> 00:00:40,610 nomas la Move funkcio. 13 00:00:40,610 --> 00:00:44,600 >> Do ni iras al efektivigo kvar funkcioj por la partio de Dek kvin, 14 00:00:44,600 --> 00:00:48,110 init, desegni, movado, kaj gajnis. 15 00:00:48,110 --> 00:00:50,340 Unue, ni pritrakti init. 16 00:00:50,340 --> 00:00:55,150 En init, por pravalorizi, ni reprezentas la estraro en 2D entjero tabelo. 17 00:00:55,150 --> 00:01:01,070 Kaj tio estas globala variablo nomata tabulo kun dimensioj MAX, kaj MAX, 18 00:01:01,070 --> 00:01:03,880 la maksimumaj dimensioj de la tabulo. 19 00:01:03,880 --> 00:01:07,310 Nu, la reala dimensio de la estraro estas donita per la uzanton, reprezentita en 20 00:01:07,310 --> 00:01:10,620 la entjera d, kiu povus esti malpli ol MAX. 21 00:01:10,620 --> 00:01:14,660 Sed, en C, oni ne povas regrandigi sensilo, tial vi estas hokita kun 22 00:01:14,660 --> 00:01:16,730 ke maksimuma dimensio. 23 00:01:16,730 --> 00:01:19,870 >> Via laboro en init estas popoli la valoroj de la estraro 24 00:01:19,870 --> 00:01:21,860 kun la korekta valoro. 25 00:01:21,860 --> 00:01:26,910 Nun, ni vidis 1D sensilo, sed how do 2D arrays labori? 26 00:01:26,910 --> 00:01:30,985 Tie estas indekso de la vico, nulo indeksita kiel ĉiam, kaj tiam ankaŭ de 27 00:01:30,985 --> 00:01:32,100 la kolumno. 28 00:01:32,100 --> 00:01:36,120 Kaj vi plenigu viajn grid in en malsuprenirantaj valorojn, same kiel ĉi tio. 29 00:01:36,120 --> 00:01:43,260 Krado, 0, 0, vico 0, kolumno 0, estas 8, krado 0, 1 estas 7. 30 00:01:43,260 --> 00:01:48,500 Tio estas por ekzemplo kie d, iom d, estas 3. 31 00:01:48,500 --> 00:01:52,690 >> Nun, la estraro en Fifteen devas ankaŭ enhavas malplenan kahelo, se vi iam 32 00:01:52,690 --> 00:01:54,280 ludis kun la fizika ludo. 33 00:01:54,280 --> 00:01:59,210 Sed, tabulo estas entjero tabelo, do ĉiuj valoroj devas esti entjeroj. 34 00:01:59,210 --> 00:02:06,950 Do ĝi estas ĝis vi decidos entjero valoro reprezenti malplenan kahelo. 35 00:02:06,950 --> 00:02:10,460 Por pravalorizi via tabulo, vi povas uzi buklo strukturoj por enhavi la 36 00:02:10,460 --> 00:02:16,440 komencante stato de la tabulo, kie tabulo i j reprezentas la elementon en 37 00:02:16,440 --> 00:02:19,380 vico i kaj kolumno j. 38 00:02:19,380 --> 00:02:23,035 Ili komencas en descendanta ordo kaj, memori, ke se la nombro de kaheloj 39 00:02:23,035 --> 00:02:29,590 estas nepara, tiam vi tuj devas interŝanĝu la situon de 2 kaj de 1. 40 00:02:29,590 --> 00:02:33,790 Do, ni havas niajn pravalorizita tabulo. 41 00:02:33,790 --> 00:02:37,440 >> Nun, ke ni pravalorizita nia estraro, estas tempo por desegni ĝin. 42 00:02:37,440 --> 00:02:41,260 Draw presos la nunan staton de la estraro, sed vi devas certigi 43 00:02:41,260 --> 00:02:44,260 presi kaheloj en la sama ordo ke vi jam pravalorizita ilin. 44 00:02:44,260 --> 00:02:47,300 Kaj vi ankaŭ bezonos formati viaj nombroj korekte. 45 00:02:47,300 --> 00:02:51,700 Ĉar ni havu unuopa ciferoj kaj duobla ciferoj, do vi volas 46 00:02:51,700 --> 00:02:54,540 presi malplenan spacon antaŭ iu unuopa ciferaj nombroj. 47 00:02:54,540 --> 00:03:00,150 Vi uzas tiun uzante la lokokupilo -. 48 00:03:00,150 --> 00:03:02,550 >> Sed memoru niajn malplenan spacon. 49 00:03:02,550 --> 00:03:05,970 Ni ne volas presi la efektiva nombro ke ni jam elektita por reprezenti 50 00:03:05,970 --> 00:03:10,410 ke malplenan spacon en la tabulo, sed ni ankaŭ ne volas presi tute nenion. 51 00:03:10,410 --> 00:03:15,310 Do, kion vi povas fari estas difini simbolo aŭ karaktero por reprezenti la 52 00:03:15,310 --> 00:03:17,050 malplenan kahelo. 53 00:03:17,050 --> 00:03:21,030 En antaŭaj ekzemploj kiujn mi elektis unu substreko, kaj tiam vi simple printi 54 00:03:21,030 --> 00:03:26,970 ke kiam vi atingos la malplenan spaco en via egaleco funkcio. 55 00:03:26,970 --> 00:03:29,850 >> Do cxerpi estos nestitaj por maŝojn. 56 00:03:29,850 --> 00:03:31,150 Io kiel ĉi tio. 57 00:03:31,150 --> 00:03:35,660 Por ĉiu vico, kaj tiam por ĉiu valoro de la vico, vi tuj presi la 58 00:03:35,660 --> 00:03:36,940 valoro en tiu spaco. 59 00:03:36,940 --> 00:03:39,470 Kiam vi presas ĉiujn valorojn en la vico, tiam vi 60 00:03:39,470 --> 00:03:41,180 povas presi novan linion. 61 00:03:41,180 --> 00:03:47,730 Memoru ke la ordo por via egaleco funkcio devas echo aŭ reflekti la ordo 62 00:03:47,730 --> 00:03:48,980 en via pravalorizita funkcio. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Nun ke vi pravalorizita la estraro kaj ke vi jam desegnis ŝin, ke estas tempo por ni 65 00:03:55,160 --> 00:03:58,500 la uzanto redakti ĝin kaj fari liajn movojn. 66 00:03:58,500 --> 00:04:03,840 Do, en la Fifteen.c funkcio, la programo prenas enigon el la uzanto kaj 67 00:04:03,840 --> 00:04:07,690 do nomas la movado funkcion, pasante en la nombro de la kahelo, ke la 68 00:04:07,690 --> 00:04:09,270 uzanto volas movi. 69 00:04:09,270 --> 00:04:10,380 Nun, atentu. 70 00:04:10,380 --> 00:04:14,200 Tiu estas la efektiva nombro de la kahelo kaj ne lia reala pozicio. 71 00:04:14,200 --> 00:04:19,010 Do, vi bezonos serĉi la tile la pozicio por scii kie ĝi estas. 72 00:04:19,010 --> 00:04:23,440 >> Nun, vi devus nur permesi al la uzanto fari movon, se ĝi estas laŭleĝa. 73 00:04:23,440 --> 00:04:27,910 Leĝa movado estas ajna tile ke estas apuda al la malplenan kahelo. 74 00:04:27,910 --> 00:04:32,020 Tio signifas, sur kaj sub, al maldekstren kaj dekstren. 75 00:04:32,020 --> 00:04:34,680 Do vi devos scii kie la malplenan kahelo estas tiel. 76 00:04:34,680 --> 00:04:39,720 Nun, cxar cxiu movas vi serĉado la uzantoj azuleĥo, sed probable 77 00:04:39,720 --> 00:04:43,030 Ne pli bone sercxi la malplenan kahelo ĉiufoje, ĉar vi faras gxin 78 00:04:43,030 --> 00:04:45,270 ĉiun solan fojon la uzanto volas movi. 79 00:04:45,270 --> 00:04:50,300 Do, anstataŭe, ĝi estas plej bone memoras kie la malplenan kahelo estas uzanta kelkajn 80 00:04:50,300 --> 00:04:52,650 bone nomata variabloj. 81 00:04:52,650 --> 00:04:55,970 Do iam vi permesas al la uzanto por fari siajn movas, ili estas bone en siaj 82 00:04:55,970 --> 00:04:59,700 maniero por gajni la ludon de Dek kvin. 83 00:04:59,700 --> 00:05:03,940 >> Por gajni la ludon de Dek kvin, la tegoloj esti en specifa ordo, kaj 84 00:05:03,940 --> 00:05:06,970 la gajnita funkcio kontrolas ĉu La ludo estas gajnita. 85 00:05:06,970 --> 00:05:10,290 Ĝi donas True se la ludo estas gajnita kaj la tegoloj estas en la ĝusta ordo, 86 00:05:10,290 --> 00:05:12,210 kaj Falsa alie. 87 00:05:12,210 --> 00:05:15,830 Do por gajni la ludon de Dek kvin, tegolo devas esti kreskanta ordo, kun la 88 00:05:15,830 --> 00:05:19,230 malplenan kahelo en la dekstra malsupra angulo. 89 00:05:19,230 --> 00:05:23,630 Do kiel vi kontrolu ĉu la uzanto movis la tabulon en la dekstra 90 00:05:23,630 --> 00:05:25,010 orientiĝo? 91 00:05:25,010 --> 00:05:29,200 >> Nu, vi devos persisti pri la estraro kaj kontroli la valorojn por certigi ke 92 00:05:29,200 --> 00:05:30,550 Ili estas en la gxusta loko. 93 00:05:30,550 --> 00:05:33,910 Por fari tion, vi povas uzi ingita por masxojn ĝuste kiel vi faris 94 00:05:33,910 --> 00:05:36,520 en egaleco kaj en init. 95 00:05:36,520 --> 00:05:40,430 Ekzistas kelkaj manieroj por kontroli kaj validigi ĉu la tabulo estas 96 00:05:40,430 --> 00:05:42,860 ĝentila kaj amikema formadon, tamen. 97 00:05:42,860 --> 00:05:47,330 Se vi iras de maldekstre al dekstre, startanta De la supro vico malsupren, tiam ĉiu 98 00:05:47,330 --> 00:05:50,590 numero devas esti pli granda ol la antaŭa. 99 00:05:50,590 --> 00:05:54,530 Estu singarda pri kio taksu vi havas elektita por via blank kahelo kvankam. 100 00:05:54,530 --> 00:05:59,250 >> Aŭ vi povus uzi nombrilo variablo por certigi ke ĉiu valoro estas en loko, se 101 00:05:59,250 --> 00:06:03,660 oni elpensis ian formulo por reprezenti tion. 102 00:06:03,660 --> 00:06:06,250 Do amuzi sperti kun la matematiko. 103 00:06:06,250 --> 00:06:10,930 Kiam vi iros kun maniero, reveno Vera fojon la uzanto gajnis la ludon. 104 00:06:10,930 --> 00:06:15,950 Sed se iu valoro estas malĝusta, reveno Falsa, la uzanto devas sekvi movas 105 00:06:15,950 --> 00:06:18,440 cxar ili ne gajnis la ludon. 106 00:06:18,440 --> 00:06:23,030 Unufoje vi apliki ĉi ĉeko kaj, kune kun pravalorizi, desegni, kaj moviĝas, 107 00:06:23,030 --> 00:06:25,110 vi jam finis la ludon de Dek kvin. 108 00:06:25,110 --> 00:06:27,620 Gratulon kaj amuziĝi ludante. 109 00:06:27,620 --> 00:06:30,600 Mia nomo estas Zamyla kaj ĉi tiu estas CS50. 110 00:06:30,600 --> 00:06:37,632