1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Нека да има Забавлявайте се с Fifteen. 3 00:00:11,332 --> 00:00:15,680 Fifteen е първата игра, която можете да получите за изпълнение и това е интерактивен. 4 00:00:15,680 --> 00:00:16,410 Сега, за да не се притеснявате. 5 00:00:16,410 --> 00:00:18,830 Вие не трябва да се напише цялата работа сами. 6 00:00:18,830 --> 00:00:22,320 Вижте кода на разпределение, тъй като много от структурата на играта е вече 7 00:00:22,320 --> 00:00:23,880 създаде за вас. 8 00:00:23,880 --> 00:00:28,160 Той приема и прави разбор на командния ред аргумент от страна на потребителя и създава 9 00:00:28,160 --> 00:00:31,230 борда на базата на този принос. 10 00:00:31,230 --> 00:00:35,570 Тя проверява, ако играта е спечелена и изходи След като потребителят е спечелил играта. 11 00:00:35,570 --> 00:00:38,340 И за да спечели играта, той получава въвеждане от потребителя и 12 00:00:38,340 --> 00:00:40,610 призовава функцията Move. 13 00:00:40,610 --> 00:00:44,600 >> Така че ние ще трябва да се изпълнява четири функции за играта на петнадесетте, 14 00:00:44,600 --> 00:00:48,110 първоначален, рисуват, ход, и спечели. 15 00:00:48,110 --> 00:00:50,340 Първо, нека да се справи с първоначален. 16 00:00:50,340 --> 00:00:55,150 В първоначален, за инициализиране, ние представляваме дъската в 2D число масив. 17 00:00:55,150 --> 00:01:01,070 И това е глобална променлива, наречена дъска с размери MAX и MAX, 18 00:01:01,070 --> 00:01:03,880 максималните размери на дъската. 19 00:01:03,880 --> 00:01:07,310 Сега, действителното измерение на борда е дадено от потребителя, представени в 20 00:01:07,310 --> 00:01:10,620 цялото число г, което би могло да бъде по-малко от MAX. 21 00:01:10,620 --> 00:01:14,660 Но, в C, не можете да промените размера на масиви, така че сте остана с 22 00:01:14,660 --> 00:01:16,730 че максимален размер. 23 00:01:16,730 --> 00:01:19,870 >> Вашата задача в първоначален, е да се пренесат стойностите на борда 24 00:01:19,870 --> 00:01:21,860 с правилната стойност. 25 00:01:21,860 --> 00:01:26,910 Сега, ние сме виждали 1D масиви, но Как се работи с 2D масиви? 26 00:01:26,910 --> 00:01:30,985 Има индекс на реда, нула индексира както винаги, а след това и на 27 00:01:30,985 --> 00:01:32,100 колоната. 28 00:01:32,100 --> 00:01:36,120 И вие ще попълните Вашите решетка в низходящ стойности, точно като тази. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, 0 подред, колона 0, е 8, решетка 0, 1 е седем. 30 00:01:43,260 --> 00:01:48,500 Това е пример, в който г, малко г, е 3. 31 00:01:48,500 --> 00:01:52,690 >> Сега, на борда в Fifteen трябва също съдържа празна плочка, ако някога сте 32 00:01:52,690 --> 00:01:54,280 играе с физическа игра. 33 00:01:54,280 --> 00:01:59,210 Но, борда е цяло число масив, така че всички стойности са целочислени. 34 00:01:59,210 --> 00:02:06,950 Така че това е до вас да решите цяло число стойност да представлява празна плочка. 35 00:02:06,950 --> 00:02:10,460 За да се инициализира борда си, можете да използвате бримкови структури, които да съдържат 36 00:02:10,460 --> 00:02:16,440 началното състояние на дъската, където борда и J представлява елемент на 37 00:02:16,440 --> 00:02:19,380 ред аз и колона к. 38 00:02:19,380 --> 00:02:23,035 Те започват в низходящ ред, и Спомням си, че ако броят на плочки 39 00:02:23,035 --> 00:02:29,590 Странно е, тогава вие ще трябва да сменяте мястото на 2 и 1. 40 00:02:29,590 --> 00:02:33,790 Така че, ние имаме инициализира борда. 41 00:02:33,790 --> 00:02:37,440 >> Сега, че ние сме инициализира ни борда, че е време да го направи. 42 00:02:37,440 --> 00:02:41,260 Draw ще отпечата на текущото състояние на борда, но вие трябва да се уверите, 43 00:02:41,260 --> 00:02:44,260 да отпечатате плочки в същия ред че сте ги инициализира. 44 00:02:44,260 --> 00:02:47,300 И вие също трябва да форматирате номера правилно. 45 00:02:47,300 --> 00:02:51,700 Защото ние може да има единични цифри и двуцифрени стойности, а след това искате да 46 00:02:51,700 --> 00:02:54,540 отпечатате празно място преди всички едноцифрени числа. 47 00:02:54,540 --> 00:03:00,150 Можете да използвате, че с помощта на контейнера -. 48 00:03:00,150 --> 00:03:02,550 >> Но не забравяйте, нашата празно пространство. 49 00:03:02,550 --> 00:03:05,970 Ние не искаме да отпечатате действителния брой , които сме избрали да представляват 50 00:03:05,970 --> 00:03:10,410 че празно място в борда, но ние също не искате да отпечатате нищо. 51 00:03:10,410 --> 00:03:15,310 И така, какво можете да направите, е да се определи символ или характер да представляват 52 00:03:15,310 --> 00:03:17,050 празна плочка. 53 00:03:17,050 --> 00:03:21,030 В предишните примери съм избрал подчертае, и след това просто отпечатате 54 00:03:21,030 --> 00:03:26,970 че всеки път, когато стигнете до заготовката пространство във вашата функция реми. 55 00:03:26,970 --> 00:03:29,850 >> Така ще се направи са вложени за цикли. 56 00:03:29,850 --> 00:03:31,150 Нещо като това. 57 00:03:31,150 --> 00:03:35,660 За всеки ред, а след това за всяка стойност в реда, ти започваш да се отпечата 58 00:03:35,660 --> 00:03:36,940 стойност в това пространство. 59 00:03:36,940 --> 00:03:39,470 След като сте се отпечатва всички стойности в ред, тогава ще 60 00:03:39,470 --> 00:03:41,180 да отпечатате нов ред. 61 00:03:41,180 --> 00:03:47,730 Не забравяйте, че за да може вашия дроу функция трябва да ехо или копирате ред 62 00:03:47,730 --> 00:03:48,980 във вашата инициализира функция. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Сега, когато се инициализира на борда и че сте го привлече, че е време да споделите 65 00:03:55,160 --> 00:03:58,500 потребителят го редактирате и да направи своите ходове. 66 00:03:58,500 --> 00:04:03,840 Така във функцията Fifteen.c, на програма Приема вход от потребителя и 67 00:04:03,840 --> 00:04:07,690 след това извиква функцията ход, минавайки в броя на плочките, че 68 00:04:07,690 --> 00:04:09,270 потребител иска да се движи. 69 00:04:09,270 --> 00:04:10,380 Сега, бъдете внимателни. 70 00:04:10,380 --> 00:04:14,200 Това е действителният брой на плочката а не реалното му положение. 71 00:04:14,200 --> 00:04:19,010 Така че, ще трябва да търсите за плочки позиция да знае къде се намира. 72 00:04:19,010 --> 00:04:23,440 >> Сега, вие трябва да се даде възможност само на потребителя да направи ход, ако това е законно. 73 00:04:23,440 --> 00:04:27,910 A ход е някоя керемида, която е съседен на празен плочката. 74 00:04:27,910 --> 00:04:32,020 Това означава, че по-горе и по-долу, за да наляво и надясно. 75 00:04:32,020 --> 00:04:34,680 Така че ще трябва да се знае къде празната плочката е добре. 76 00:04:34,680 --> 00:04:39,720 Сега, за всеки ход, които търсите плочката на потребителите, но това е може би 77 00:04:39,720 --> 00:04:43,030 не най-добре да потърсите празната плочка всеки път, защото го правиш 78 00:04:43,030 --> 00:04:45,270 всеки път потребител иска да се движи. 79 00:04:45,270 --> 00:04:50,300 Така че, вместо това, че е най-добре да си спомня къде празната плочка е с помощта на някои 80 00:04:50,300 --> 00:04:52,650 добре на име променливи. 81 00:04:52,650 --> 00:04:55,970 Така че, след като се даде възможност на потребителя да направи своята ходове, те са добре на тяхното 82 00:04:55,970 --> 00:04:59,700 начин за спечелване на играта на петнадесетте. 83 00:04:59,700 --> 00:05:03,940 >> За да спечели играта на петнадесетте, плочките трябва да бъде в определен ред, и 84 00:05:03,940 --> 00:05:06,970 спечелената функция проверява дали играта е спечелена. 85 00:05:06,970 --> 00:05:10,290 Тя връща True, ако играта се печели и плочките са в правилния ред, 86 00:05:10,290 --> 00:05:12,210 и False в противен случай. 87 00:05:12,210 --> 00:05:15,830 Така че, за да спечели играта на петнадесетте, керемиди Трябва да бъде възходящ ред, с 88 00:05:15,830 --> 00:05:19,230 празна плочка в долния десен ъгъл. 89 00:05:19,230 --> 00:05:23,630 Е, как да се провери дали потребителят е преместен на борда в правото 90 00:05:23,630 --> 00:05:25,010 ориентация? 91 00:05:25,010 --> 00:05:29,200 >> Е, ще обхождане на борда и проверите стойностите да се уверите, че 92 00:05:29,200 --> 00:05:30,550 те са на правилното място. 93 00:05:30,550 --> 00:05:33,910 За да направите това, можете да използвате вложена за линии точно като теб направиха 94 00:05:33,910 --> 00:05:36,520 в равенство и в първоначален. 95 00:05:36,520 --> 00:05:40,430 Има няколко начина да се провери и валидира дали на борда е 96 00:05:40,430 --> 00:05:42,860 коректен и печеливша формация, че. 97 00:05:42,860 --> 00:05:47,330 Ако отидете от ляво на дясно, като се започне от най-горния ред, после всеки 98 00:05:47,330 --> 00:05:50,590 номер трябва да бъде по-голяма от предишната. 99 00:05:50,590 --> 00:05:54,530 Бъдете внимателни за това, което ценим съм избран за вашата празна плочка все пак. 100 00:05:54,530 --> 00:05:59,250 >> Или можете да използвате брояч променлива да се гарантира, че всяка стойност е на мястото си, ако 101 00:05:59,250 --> 00:06:03,660 можете да излезе с някаква формула, която да представлява това. 102 00:06:03,660 --> 00:06:06,250 Така че да се забавляват експериментират с математиката. 103 00:06:06,250 --> 00:06:10,930 След като излезе с начин, връщане True след като потребителят е спечелил играта. 104 00:06:10,930 --> 00:06:15,950 Но ако някоя стойност е неправилна, връщане False, потребителят трябва да продължи да се движи 105 00:06:15,950 --> 00:06:18,440 защото те не са спечелили мача. 106 00:06:18,440 --> 00:06:23,030 След като решите да реализирате тази проверка и заедно с инициализира, рисуват, и да се премести, 107 00:06:23,030 --> 00:06:25,110 сте готови за игра на петнадесетте. 108 00:06:25,110 --> 00:06:27,620 Поздравления и да се забавляват играят. 109 00:06:27,620 --> 00:06:30,600 Моето име е Zamyla и това е CS50. 110 00:06:30,600 --> 00:06:37,632