1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Mari kita menyeronokkan dengan Lima belas. 3 00:00:11,332 --> 00:00:15,680 Lima belas adalah permainan pertama yang anda dapat untuk melaksanakan dan ia interaktif. 4 00:00:15,680 --> 00:00:16,410 Sekarang, tidak perlu bimbang. 5 00:00:16,410 --> 00:00:18,830 Anda tidak perlu menulis Semua perkara sendiri. 6 00:00:18,830 --> 00:00:22,320 Lihatlah kod pengedaran kerana banyak struktur permainan sudah 7 00:00:22,320 --> 00:00:23,880 ditubuhkan untuk anda. 8 00:00:23,880 --> 00:00:28,160 Ia menerima dan mem-parsing baris arahan hujah dari pengguna dan mewujudkan 9 00:00:28,160 --> 00:00:31,230 lembaga berdasarkan input itu. 10 00:00:31,230 --> 00:00:35,570 Ia memeriksa jika permainan itu dimenangi dan keluar sebaik sahaja pengguna memenangi permainan. 11 00:00:35,570 --> 00:00:38,340 Dan untuk memenangi permainan, ia mendapat input daripada pengguna dan 12 00:00:38,340 --> 00:00:40,610 panggilan fungsi Gerakkan. 13 00:00:40,610 --> 00:00:44,600 >> Jadi, kita akan perlu melaksanakan empat fungsi untuk permainan Lima belas, 14 00:00:44,600 --> 00:00:48,110 INIT, menarik, bergerak, dan menang. 15 00:00:48,110 --> 00:00:50,340 Pertama, mari kita menangani init. 16 00:00:50,340 --> 00:00:55,150 Dalam INIT, untuk Memula, kami mewakili lembaga dalam pelbagai integer 2D. 17 00:00:55,150 --> 00:01:01,070 Dan ini adalah berubah-ubah global dipanggil papan dengan dimensi MAX, dan MAX, 18 00:01:01,070 --> 00:01:03,880 dimensi maksimum lembaga. 19 00:01:03,880 --> 00:01:07,310 Sekarang, dimensi sebenar lembaga diberikan oleh pengguna, yang diwakili dalam 20 00:01:07,310 --> 00:01:10,620 d integer, yang boleh kurang daripada MAX. 21 00:01:10,620 --> 00:01:14,660 Tetapi, dalam C, anda tidak boleh mengubah saiz tatasusunan, jadi anda terjebak dengan 22 00:01:14,660 --> 00:01:16,730 dimensi maksimum. 23 00:01:16,730 --> 00:01:19,870 >> Tugas anda dalam init adalah untuk mengisi nilai-nilai lembaga 24 00:01:19,870 --> 00:01:21,860 dengan nilai yang betul. 25 00:01:21,860 --> 00:01:26,910 Sekarang, kita telah melihat array 1D, tetapi bagaimana tatasusunan 2D berfungsi? 26 00:01:26,910 --> 00:01:30,985 Ada satu indeks baris, sifar diindeks seperti biasa, dan kemudian juga daripada 27 00:01:30,985 --> 00:01:32,100 lajur. 28 00:01:32,100 --> 00:01:36,120 Dan anda akan mengisi grid anda di dalam menurun nilai-nilai, seperti ini. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, 0 baris, kolum 0, ialah 8, grid 0, 1 ialah 7. 30 00:01:43,260 --> 00:01:48,500 Ini adalah sebagai contoh di mana d, sedikit d, ialah 3. 31 00:01:48,500 --> 00:01:52,690 >> Sekarang, lembaga di Lima belas juga mesti mengandungi jubin kosong, jika anda pernah 32 00:01:52,690 --> 00:01:54,280 bermain dengan permainan fizikal. 33 00:01:54,280 --> 00:01:59,210 Tetapi, lembaga adalah pelbagai integer, jadi semua nilai perlu menjadi integer. 34 00:01:59,210 --> 00:02:06,950 Supaya ia terpulang kepada anda untuk memutuskan integer Nilai untuk mewakili jubin kosong. 35 00:02:06,950 --> 00:02:10,460 Untuk memulakan papan anda, anda boleh menggunakan struktur gelung untuk membendung 36 00:02:10,460 --> 00:02:16,440 negeri bermula lembaga, di mana papan i j mewakili elemen di 37 00:02:16,440 --> 00:02:19,380 baris i dan lajur j. 38 00:02:19,380 --> 00:02:23,035 Mereka mula sama ada turun dan, ingat, bahawa jika bilangan jubin 39 00:02:23,035 --> 00:02:29,590 ganjil, maka anda akan perlu untuk swap lokasi 2 dan 1. 40 00:02:29,590 --> 00:02:33,790 Jadi di sana, kami mempunyai kita lembaga dimulakan. 41 00:02:33,790 --> 00:02:37,440 >> Sekarang, yang kami telah dimulakan kami lembaga, ia adalah masa untuk menarik ia. 42 00:02:37,440 --> 00:02:41,260 Cabutan akan mencetak keadaan semasa yang lembaga, tetapi anda perlu memastikan 43 00:02:41,260 --> 00:02:44,260 untuk mencetak jubin dalam urutan yang sama bahawa anda telah dimulakan mereka. 44 00:02:44,260 --> 00:02:47,300 Dan anda juga perlu memformat nombor anda dengan betul. 45 00:02:47,300 --> 00:02:51,700 Kerana kita mungkin mempunyai digit tunggal dan dua angka, maka anda mahu 46 00:02:51,700 --> 00:02:54,540 mencetak ruang kosong sebelum mana-mana nombor satu angka. 47 00:02:54,540 --> 00:03:00,150 Anda menggunakan bahawa dengan menggunakan ruang letak -. 48 00:03:00,150 --> 00:03:02,550 >> Tetapi ingat ruang kosong kami. 49 00:03:02,550 --> 00:03:05,970 Kita tidak mahu untuk mencetak jumlah sebenar bahawa kami telah dipilih untuk mewakili 50 00:03:05,970 --> 00:03:10,410 bahawa ruang kosong dalam lembaga, tetapi kita juga tidak mahu untuk mencetak apa-apa. 51 00:03:10,410 --> 00:03:15,310 Jadi apa yang anda boleh lakukan ialah untuk menentukan simbol atau watak untuk mewakili 52 00:03:15,310 --> 00:03:17,050 jubin kosong. 53 00:03:17,050 --> 00:03:21,030 Dalam contoh yang lepas saya telah memilih satu menekankan, dan kemudian anda hanya mencetak 54 00:03:21,030 --> 00:03:26,970 bahawa setiap kali anda mencapai kosong ruang dalam fungsi seri anda. 55 00:03:26,970 --> 00:03:29,850 >> Jadi menarik akan bersarang untuk gelung. 56 00:03:29,850 --> 00:03:31,150 Sesuatu seperti ini. 57 00:03:31,150 --> 00:03:35,660 Bagi setiap baris, dan kemudian untuk setiap nilai dalam berturut-turut, anda akan mencetak 58 00:03:35,660 --> 00:03:36,940 nilai dalam ruang ini. 59 00:03:36,940 --> 00:03:39,470 Setelah anda dicetak semua nilai-nilai berturut-turut, maka anda 60 00:03:39,470 --> 00:03:41,180 boleh mencetak baris baru. 61 00:03:41,180 --> 00:03:47,730 Ingat bahawa perintah seri anda fungsi mesti echo atau mencerminkan perintah itu 62 00:03:47,730 --> 00:03:48,980 dalam fungsi dimulakan anda. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Sekarang anda dimulakan lembaga dan bahawa anda telah disediakan, ia adalah masa untuk membiarkan 65 00:03:55,160 --> 00:03:58,500 pengguna mengedit dan membuat bergerak mereka. 66 00:03:58,500 --> 00:04:03,840 Jadi dalam fungsi Fifteen.c itu, program mengambil input daripada pengguna dan 67 00:04:03,840 --> 00:04:07,690 maka panggilan fungsi bergerak, lulus dalam bilangan jubin bahawa 68 00:04:07,690 --> 00:04:09,270 pengguna mahu bergerak. 69 00:04:09,270 --> 00:04:10,380 Sekarang, berhati-hati. 70 00:04:10,380 --> 00:04:14,200 Ini adalah jumlah sebenar jubin dan tidak kedudukan sebenar. 71 00:04:14,200 --> 00:04:19,010 Jadi, anda akan perlu untuk mencari jubin ini kedudukan untuk tahu di mana ia. 72 00:04:19,010 --> 00:04:23,440 >> Sekarang, anda hanya perlu membenarkan pengguna untuk bergerak jika ia adalah undang-undang. 73 00:04:23,440 --> 00:04:27,910 Satu langkah undang-undang adalah jubin yang bersebelahan dengan jubin yang kosong. 74 00:04:27,910 --> 00:04:32,020 Ini bermakna, di atas dan di bawah, untuk kiri dan ke kanan. 75 00:04:32,020 --> 00:04:34,680 Jadi, anda perlu tahu di mana jubin kosong adalah juga. 76 00:04:34,680 --> 00:04:39,720 Sekarang, untuk setiap langkah yang anda sedang mencari jubin pengguna, tetapi ia mungkin 77 00:04:39,720 --> 00:04:43,030 tidak terbaik untuk mencari jubin kosong setiap kali kerana anda melakukannya 78 00:04:43,030 --> 00:04:45,270 setiap kali tunggal yang pengguna mahu bergerak. 79 00:04:45,270 --> 00:04:50,300 Jadi, sebaliknya, ia adalah yang terbaik untuk ingat di mana jubin tampang menggunakan beberapa 80 00:04:50,300 --> 00:04:52,650 juga dinamakan pembolehubah. 81 00:04:52,650 --> 00:04:55,970 Jadi apabila anda membenarkan pengguna untuk membuat mereka bergerak, mereka juga pada mereka 82 00:04:55,970 --> 00:04:59,700 cara untuk memenangi permainan Lima belas. 83 00:04:59,700 --> 00:05:03,940 >> Untuk memenangi permainan Lima belas, jubin perlu berada dalam susunan yang tertentu, dan 84 00:05:03,940 --> 00:05:06,970 fungsi memenangi memeriksa sama ada permainan dimenangi. 85 00:05:06,970 --> 00:05:10,290 Ia mengembalikan Benar jika permainan ini menang dan jubin berada dalam susunan yang betul, 86 00:05:10,290 --> 00:05:12,210 dan palsu sebaliknya. 87 00:05:12,210 --> 00:05:15,830 Jadi untuk memenangi permainan Lima belas, jubin perlu meningkatkan usaha, dengan 88 00:05:15,830 --> 00:05:19,230 jubin kosong di sudut bawah kanan. 89 00:05:19,230 --> 00:05:23,630 Jadi bagaimana anda menyemak sama ada pengguna telah berpindah ke dalam lembaga hak 90 00:05:23,630 --> 00:05:25,010 orientasi? 91 00:05:25,010 --> 00:05:29,200 >> Nah, anda akan melelar atas papan dan memeriksa nilai-nilai memastikan bahawa 92 00:05:29,200 --> 00:05:30,550 mereka berada di tempat yang betul. 93 00:05:30,550 --> 00:05:33,910 Untuk melakukan ini, anda boleh menggunakan bersarang untuk gelung seperti yang anda lakukan 94 00:05:33,910 --> 00:05:36,520 seri dan dalam init. 95 00:05:36,520 --> 00:05:40,430 Terdapat beberapa cara untuk memeriksa dan mengesahkan sama ada lembaga adalah 96 00:05:40,430 --> 00:05:42,860 betul dan memenangi satu pembentukan, walaupun. 97 00:05:42,860 --> 00:05:47,330 Jika anda pergi dari kiri ke kanan, bermula dari baris atas ke bawah, maka setiap 98 00:05:47,330 --> 00:05:50,590 bilangan mesti lebih besar daripada yang sebelumnya. 99 00:05:50,590 --> 00:05:54,530 Berhati-hati apa yang anda telah menghargai dipilih untuk jubin kosong anda sekalipun. 100 00:05:54,530 --> 00:05:59,250 >> Atau anda boleh menggunakan pembolehubah kaunter untuk memastikan bahawa setiap nilai di tempat, jika 101 00:05:59,250 --> 00:06:03,660 anda datang dengan beberapa jenis formula untuk mewakili ini. 102 00:06:03,660 --> 00:06:06,250 Jadi berseronok mencuba dengan matematik. 103 00:06:06,250 --> 00:06:10,930 Sebaik sahaja anda telah datang dengan satu cara, pulangan Benar sekali pengguna telah memenangi permainan. 104 00:06:10,930 --> 00:06:15,950 Tetapi jika apa-apa nilai tidak betul, pulangan Palsu, pengguna mempunyai untuk terus bergerak 105 00:06:15,950 --> 00:06:18,440 kerana mereka tidak memenangi permainan. 106 00:06:18,440 --> 00:06:23,030 Apabila anda melaksanakan semak ini dan, bersama-sama dengan Memula, menarik, dan bergerak, 107 00:06:23,030 --> 00:06:25,110 anda selesai permainan Lima belas. 108 00:06:25,110 --> 00:06:27,620 Tahniah dan mempunyai bermain menyeronokkan. 109 00:06:27,620 --> 00:06:30,600 Nama saya Zamyla dan ini adalah CS50. 110 00:06:30,600 --> 00:06:37,632