1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Chúng ta hãy vui vẻ với Mười lăm. 3 00:00:11,332 --> 00:00:15,680 Mười lăm là game đầu tiên mà bạn nhận được để thực hiện và nó tương tác. 4 00:00:15,680 --> 00:00:16,410 Bây giờ, không phải lo lắng. 5 00:00:16,410 --> 00:00:18,830 Bạn không phải viết toàn bộ điều mình. 6 00:00:18,830 --> 00:00:22,320 Nhìn vào mã phân phối vì một rất nhiều cấu trúc trò chơi đã 7 00:00:22,320 --> 00:00:23,880 thiết lập cho bạn. 8 00:00:23,880 --> 00:00:28,160 Nó chấp nhận và phân tích một dòng lệnh lập luận từ người sử dụng và tạo ra một 9 00:00:28,160 --> 00:00:31,230 hội đồng quản trị dựa trên đầu vào đó. 10 00:00:31,230 --> 00:00:35,570 Nó sẽ kiểm tra nếu các trò chơi là giành chiến thắng và lối thoát hiểm một khi người dùng của chiến thắng. 11 00:00:35,570 --> 00:00:38,340 Và giành chiến thắng trong trò chơi, nó được đầu vào từ người sử dụng và 12 00:00:38,340 --> 00:00:40,610 gọi hàm di chuyển. 13 00:00:40,610 --> 00:00:44,600 >> Vì vậy, chúng ta sẽ được thực hiện bốn chức năng cho các trò chơi của mười lăm, 14 00:00:44,600 --> 00:00:48,110 init, vẽ, di chuyển, và chiến thắng. 15 00:00:48,110 --> 00:00:50,340 Đầu tiên, hãy giải quyết init. 16 00:00:50,340 --> 00:00:55,150 Trong init, cho khởi tạo, chúng tôi đại diện hội đồng quản trị trong một mảng số nguyên 2D. 17 00:00:55,150 --> 00:01:01,070 Và đây là một biến toàn cầu được gọi là hội đồng quản trị với kích thước MAX, MAX, 18 00:01:01,070 --> 00:01:03,880 kích thước tối đa của hội đồng quản trị. 19 00:01:03,880 --> 00:01:07,310 Bây giờ, kích thước thực tế của hội đồng quản trị được đưa ra bởi người sử dụng, đại diện trong 20 00:01:07,310 --> 00:01:10,620 d số nguyên, mà có thể ít hơn MAX. 21 00:01:10,620 --> 00:01:14,660 Tuy nhiên, trong C, bạn có thể thay đổi kích thước mảng không, do đó, bạn đang mắc kẹt với 22 00:01:14,660 --> 00:01:16,730 rằng kích thước tối đa. 23 00:01:16,730 --> 00:01:19,870 >> Công việc của bạn trong init là để cư các giá trị của hội đồng quản trị 24 00:01:19,870 --> 00:01:21,860 với giá trị chính xác. 25 00:01:21,860 --> 00:01:26,910 Bây giờ, chúng tôi đã nhìn thấy mảng 1D, nhưng làm thế nào để các mảng 2D làm việc? 26 00:01:26,910 --> 00:01:30,985 Có một chỉ số của hàng, số không lập chỉ mục như mọi khi, và sau đó cũng của 27 00:01:30,985 --> 00:01:32,100 cột. 28 00:01:32,100 --> 00:01:36,120 Và bạn sẽ điền vào mạng lưới của bạn trong trong giảm dần giá trị, chỉ cần như thế này. 29 00:01:36,120 --> 00:01:43,260 Lưới, 0, 0, 0 hàng, cột 0, 8, lưới 0, 1 là 7. 30 00:01:43,260 --> 00:01:48,500 Đây là một ví dụ nơi d, ít d, là 3. 31 00:01:48,500 --> 00:01:52,690 >> Bây giờ, hội đồng quản trị trong mười lăm cũng phải chứa một gạch trống, nếu bạn đã bao giờ 32 00:01:52,690 --> 00:01:54,280 chơi với các trò chơi thể chất. 33 00:01:54,280 --> 00:01:59,210 Nhưng, hội đồng quản trị là một mảng số nguyên, do tất cả các giá trị phải là số nguyên. 34 00:01:59,210 --> 00:02:06,950 Vì vậy, nó là vào bạn để quyết định một số nguyên giá trị để đại diện cho một gạch trống. 35 00:02:06,950 --> 00:02:10,460 Để khởi tạo bảng của bạn, bạn có thể sử dụng cấu trúc vòng lặp để chứa 36 00:02:10,460 --> 00:02:16,440 bắt đầu từ trạng thái bảng, nơi hội đồng quản trị i j đại diện cho phần tử ở 37 00:02:16,440 --> 00:02:19,380 i hàng và cột j. 38 00:02:19,380 --> 00:02:23,035 Họ bắt đầu trong thứ tự giảm dần và, nhớ rằng, nếu số lượng gạch 39 00:02:23,035 --> 00:02:29,590 là số lẻ, sau đó bạn sẽ phải trao đổi vị trí của 2 và 1. 40 00:02:29,590 --> 00:02:33,790 Do đó, chúng tôi có của chúng tôi hội đồng quản trị khởi tạo. 41 00:02:33,790 --> 00:02:37,440 >> Bây giờ, chúng ta đã khởi tạo của chúng tôi hội đồng quản trị, đó là thời gian để vẽ nó. 42 00:02:37,440 --> 00:02:41,260 Lễ bốc thăm sẽ in ra trạng thái hiện tại của hội đồng quản trị, nhưng bạn cần phải chắc chắn 43 00:02:41,260 --> 00:02:44,260 in gạch theo thứ tự mà bạn đã khởi tạo chúng. 44 00:02:44,260 --> 00:02:47,300 Và bạn cũng cần phải định dạng con số của bạn một cách chính xác. 45 00:02:47,300 --> 00:02:51,700 Bởi vì chúng tôi có thể có một con số và hai con số, sau đó bạn muốn 46 00:02:51,700 --> 00:02:54,540 in một không gian trống trước bất kỳ chữ số duy nhất. 47 00:02:54,540 --> 00:03:00,150 Bạn sử dụng bằng cách sử dụng giữ chỗ -. 48 00:03:00,150 --> 00:03:02,550 >> Nhưng hãy nhớ không gian trống của chúng tôi. 49 00:03:02,550 --> 00:03:05,970 Chúng tôi không muốn in số lượng thực tế mà chúng tôi đã chọn để đại diện 50 00:03:05,970 --> 00:03:10,410 không gian trống trong hội đồng quản trị, nhưng chúng tôi cũng không muốn in không có gì cả. 51 00:03:10,410 --> 00:03:15,310 Vì vậy, những gì bạn có thể làm là xác định một biểu tượng hoặc ký tự đại diện cho 52 00:03:15,310 --> 00:03:17,050 gạch trống. 53 00:03:17,050 --> 00:03:21,030 Trong ví dụ trước tôi đã chọn một gạch dưới, và sau đó bạn chỉ cần in 54 00:03:21,030 --> 00:03:26,970 bất cứ khi nào bạn đạt đến trống không gian trong chức năng vẽ của bạn. 55 00:03:26,970 --> 00:03:29,850 >> Vì vậy, vẽ sẽ lồng nhau cho các vòng. 56 00:03:29,850 --> 00:03:31,150 Một cái gì đó như thế này. 57 00:03:31,150 --> 00:03:35,660 Cho mỗi hàng, và sau đó cho mỗi giá trị trong hàng, bạn sẽ in 58 00:03:35,660 --> 00:03:36,940 giá trị trong không gian này. 59 00:03:36,940 --> 00:03:39,470 Một khi bạn đã in tất cả các giá trị trong hàng, sau đó bạn 60 00:03:39,470 --> 00:03:41,180 có thể in một dòng mới. 61 00:03:41,180 --> 00:03:47,730 Hãy nhớ rằng để cho hòa của bạn chức năng phải vang hoặc phản ánh thứ tự 62 00:03:47,730 --> 00:03:48,980 trong chức năng khởi tạo của bạn. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Bây giờ bạn khởi tạo bảng và rồi bạn đã vẽ nó, đó là thời gian để cho 65 00:03:55,160 --> 00:03:58,500 người sử dụng chỉnh sửa nó và làm cho di chuyển của họ. 66 00:03:58,500 --> 00:04:03,840 Vì vậy, trong các chức năng Fifteen.c, các chương trình có đầu vào từ người sử dụng và 67 00:04:03,840 --> 00:04:07,690 sau đó gọi chức năng di chuyển, đi qua số lượng gạch mà 68 00:04:07,690 --> 00:04:09,270 người dùng muốn di chuyển. 69 00:04:09,270 --> 00:04:10,380 Bây giờ, hãy cẩn thận. 70 00:04:10,380 --> 00:04:14,200 Đây là con số thực tế của ngói và không thực tế vị trí của nó. 71 00:04:14,200 --> 00:04:19,010 Vì vậy, bạn sẽ cần phải tìm kiếm cho ngói của vị trí để biết nó ở đâu. 72 00:04:19,010 --> 00:04:23,440 >> Bây giờ, bạn chỉ nên cho phép người sử dụng để thực hiện một di chuyển nếu đó là hợp pháp. 73 00:04:23,440 --> 00:04:27,910 Một động thái pháp lý là bất kỳ gạch đó là tiếp giáp với gạch trống. 74 00:04:27,910 --> 00:04:32,020 Điều đó có nghĩa, trên và dưới, để bên trái và bên phải. 75 00:04:32,020 --> 00:04:34,680 Vì vậy, bạn sẽ cần phải biết gạch trống là tốt. 76 00:04:34,680 --> 00:04:39,720 Bây giờ, cho mỗi bước di chuyển bạn đang tìm kiếm ngói người sử dụng, nhưng nó có thể là 77 00:04:39,720 --> 00:04:43,030 không tốt nhất để tìm kiếm các ngói trống mỗi lần bởi vì bạn đang làm việc đó 78 00:04:43,030 --> 00:04:45,270 mỗi lần duy nhất các người dùng muốn di chuyển. 79 00:04:45,270 --> 00:04:50,300 Vì vậy, thay vào đó, nó là tốt nhất để ghi nhớ gạch trống được sử dụng một số 80 00:04:50,300 --> 00:04:52,650 cũng được đặt tên biến. 81 00:04:52,650 --> 00:04:55,970 Vì vậy, một khi bạn cho phép người dùng để làm cho họ di chuyển, họ đang trên của họ 82 00:04:55,970 --> 00:04:59,700 cách để chiến thắng trò chơi của Mười lăm. 83 00:04:59,700 --> 00:05:03,940 >> Để giành chiến thắng trong trò chơi của mười lăm, gạch phải theo một thứ tự cụ thể, và 84 00:05:03,940 --> 00:05:06,970 chức năng giành kiểm tra xem trò chơi là giành chiến thắng. 85 00:05:06,970 --> 00:05:10,290 Nó trả về True nếu trò chơi là giành chiến thắng và gạch là đúng trình tự, 86 00:05:10,290 --> 00:05:12,210 và sai khác. 87 00:05:12,210 --> 00:05:15,830 Vì vậy, để giành chiến thắng trong trò chơi của mười lăm, gạch phải được thứ tự tăng dần, với sự 88 00:05:15,830 --> 00:05:19,230 gạch trống ở góc dưới bên phải. 89 00:05:19,230 --> 00:05:23,630 Vì vậy, làm thế nào để bạn kiểm tra xem người sử dụng đã di chuyển bảng vào bên phải 90 00:05:23,630 --> 00:05:25,010 định hướng? 91 00:05:25,010 --> 00:05:29,200 >> Vâng, bạn sẽ lặp qua hội đồng quản trị và kiểm tra các giá trị để đảm bảo rằng 92 00:05:29,200 --> 00:05:30,550 họ đang ở đúng nơi. 93 00:05:30,550 --> 00:05:33,910 Để làm điều này, bạn có thể sử dụng lồng nhau cho các vòng giống như bạn đã làm 94 00:05:33,910 --> 00:05:36,520 trong trận hòa và trong init. 95 00:05:36,520 --> 00:05:40,430 Có một vài cách để kiểm tra và xác nhận cho dù hội đồng quản trị là 96 00:05:40,430 --> 00:05:42,860 chính xác và một chiến thắng hình thành, mặc dù. 97 00:05:42,860 --> 00:05:47,330 Nếu bạn đi từ trái sang phải, bắt đầu từ hàng trên xuống, sau đó mỗi 98 00:05:47,330 --> 00:05:50,590 số phải lớn hơn trước đó. 99 00:05:50,590 --> 00:05:54,530 Hãy cẩn thận về những gì bạn đã đánh giá chọn cho ngói trống của bạn mặc dù. 100 00:05:54,530 --> 00:05:59,250 >> Hoặc bạn có thể sử dụng một biến ngược lại đảm bảo rằng mỗi giá trị được đặt ra, nếu 101 00:05:59,250 --> 00:06:03,660 bạn đi lên với một số loại công thức để đại diện cho điều này. 102 00:06:03,660 --> 00:06:06,250 Vì vậy, vui chơi thử nghiệm với toán học. 103 00:06:06,250 --> 00:06:10,930 Một khi bạn đã tìm ra một cách, trở lại Đúng khi người dùng đã thắng. 104 00:06:10,930 --> 00:06:15,950 Nhưng nếu có giá trị là không chính xác, trở lại Sai, người sử dụng phải tiếp tục di chuyển 105 00:06:15,950 --> 00:06:18,440 bởi vì họ đã không thắng. 106 00:06:18,440 --> 00:06:23,030 Một khi bạn thực hiện việc kiểm tra này, và cùng với khởi tạo, vẽ, và di chuyển, 107 00:06:23,030 --> 00:06:25,110 bạn đã hoàn thành trò chơi của Mười lăm. 108 00:06:25,110 --> 00:06:27,620 Xin chúc mừng và có chơi vui vẻ. 109 00:06:27,620 --> 00:06:30,600 Tên tôi là Zamyla và đây là CS50. 110 00:06:30,600 --> 00:06:37,632