1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Mari kita bersenang-senang dengan Lima belas. 3 00:00:11,332 --> 00:00:15,680 Lima belas adalah game pertama yang Anda dapatkan untuk menerapkan dan itu interaktif. 4 00:00:15,680 --> 00:00:16,410 Sekarang, tidak perlu khawatir. 5 00:00:16,410 --> 00:00:18,830 Anda tidak perlu menulis semuanya sendiri. 6 00:00:18,830 --> 00:00:22,320 Lihatlah kode distribusi karena banyak struktur permainan sudah 7 00:00:22,320 --> 00:00:23,880 diatur untuk Anda. 8 00:00:23,880 --> 00:00:28,160 Ia menerima dan mem-parsing baris perintah Argumen dari pengguna dan menciptakan 9 00:00:28,160 --> 00:00:31,230 papan berdasarkan masukan itu. 10 00:00:31,230 --> 00:00:35,570 Ia memeriksa apakah game tersebut telah menang dan keluar sekali pengguna memenangkan pertandingan. 11 00:00:35,570 --> 00:00:38,340 Dan untuk memenangkan pertandingan, itu akan input dari user dan 12 00:00:38,340 --> 00:00:40,610 memanggil fungsi Move. 13 00:00:40,610 --> 00:00:44,600 >> Jadi kita akan menerapkan empat fungsi untuk permainan Fifteen, 14 00:00:44,600 --> 00:00:48,110 init, menggambar, memindahkan, 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 initialize, kami mewakili dewan dalam integer array 2D. 17 00:00:55,150 --> 00:01:01,070 Dan ini adalah variabel global yang disebut papan dengan dimensi MAX, dan MAX, 18 00:01:01,070 --> 00:01:03,880 dimensi maksimum papan. 19 00:01:03,880 --> 00:01:07,310 Sekarang, dimensi sebenarnya dari papan diberikan oleh pengguna, diwakili dalam 20 00:01:07,310 --> 00:01:10,620 integer d, yang bisa kurang dari MAX. 21 00:01:10,620 --> 00:01:14,660 Tapi, di C, Anda dapat mengubah ukuran array tidak, sehingga Anda terjebak dengan 22 00:01:14,660 --> 00:01:16,730 bahwa dimensi maksimum. 23 00:01:16,730 --> 00:01:19,870 >> Tugas Anda di init adalah untuk mengisi nilai-nilai papan 24 00:01:19,870 --> 00:01:21,860 dengan nilai yang benar. 25 00:01:21,860 --> 00:01:26,910 Sekarang, kami telah melihat array 1D, namun bagaimana array 2D bekerja? 26 00:01:26,910 --> 00:01:30,985 Ada indeks baris, nol diindeks seperti biasa, dan kemudian juga dari 27 00:01:30,985 --> 00:01:32,100 kolom. 28 00:01:32,100 --> 00:01:36,120 Dan Anda akan mengisi grid Anda di dalam turun nilai, seperti ini. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, baris 0, kolom 0, adalah 8, jaringan 0, 1 adalah 7. 30 00:01:43,260 --> 00:01:48,500 Hal ini untuk contoh di mana d, d kecil, adalah 3. 31 00:01:48,500 --> 00:01:52,690 >> Sekarang, dewan di Fifteen juga harus berisi ubin kosong, jika Anda sudah pernah 32 00:01:52,690 --> 00:01:54,280 bermain dengan permainan fisik. 33 00:01:54,280 --> 00:01:59,210 Tapi, papan adalah array integer, sehingga semua nilai harus bilangan bulat. 34 00:01:59,210 --> 00:02:06,950 Jadi terserah Anda untuk memutuskan integer Nilai untuk mewakili ubin kosong. 35 00:02:06,950 --> 00:02:10,460 Untuk menginisialisasi forum Anda, Anda dapat menggunakan lingkaran struktur mengandung 36 00:02:10,460 --> 00:02:16,440 mulai keadaan papan, di mana papan i j merupakan elemen pada 37 00:02:16,440 --> 00:02:19,380 baris i dan kolom j. 38 00:02:19,380 --> 00:02:23,035 Mereka mulai di Urutan menurun dan, ingat, bahwa jika jumlah ubin 39 00:02:23,035 --> 00:02:29,590 aneh, maka Anda akan harus menukar lokasi 2 dan 1. 40 00:02:29,590 --> 00:02:33,790 Jadi ada, kami telah kami diinisialisasi papan. 41 00:02:33,790 --> 00:02:37,440 >> Sekarang, bahwa kita telah diinisialisasi kami papan, saatnya untuk menarik itu. 42 00:02:37,440 --> 00:02:41,260 Hasil imbang akan mencetak keadaan saat ini papan, tetapi Anda perlu memastikan 43 00:02:41,260 --> 00:02:44,260 untuk mencetak ubin dalam urutan yang sama bahwa Anda telah diinisialisasi mereka. 44 00:02:44,260 --> 00:02:47,300 Dan Anda juga perlu memformat nomor Anda dengan benar. 45 00:02:47,300 --> 00:02:51,700 Karena kita mungkin memiliki satu digit dan dua digit, maka Anda ingin 46 00:02:51,700 --> 00:02:54,540 mencetak ruang kosong sebelum setiap angka satu digit. 47 00:02:54,540 --> 00:03:00,150 Anda menggunakannya dengan menggunakan placeholder -. 48 00:03:00,150 --> 00:03:02,550 >> Tapi ingat ruang kosong kami. 49 00:03:02,550 --> 00:03:05,970 Kami tidak ingin mencetak jumlah aktual bahwa kita telah dipilih untuk mewakili 50 00:03:05,970 --> 00:03:10,410 bahwa ruang kosong di papan, tapi kami juga tidak ingin mencetak apa-apa. 51 00:03:10,410 --> 00:03:15,310 Jadi apa yang dapat Anda lakukan adalah untuk mendefinisikan simbol atau karakter untuk mewakili 52 00:03:15,310 --> 00:03:17,050 ubin kosong. 53 00:03:17,050 --> 00:03:21,030 Dalam contoh sebelumnya saya telah memilih sebuah menggarisbawahi, dan kemudian Anda hanya mencetak 54 00:03:21,030 --> 00:03:26,970 bahwa setiap kali Anda mencapai kosong ruang dalam fungsi menarik Anda. 55 00:03:26,970 --> 00:03:29,850 >> Jadi menarik akan bersarang untuk loop. 56 00:03:29,850 --> 00:03:31,150 Sesuatu seperti ini. 57 00:03:31,150 --> 00:03:35,660 Untuk setiap baris, dan kemudian untuk setiap nilai dalam baris, 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 berturut-turut, maka Anda 60 00:03:39,470 --> 00:03:41,180 dapat mencetak baris baru. 61 00:03:41,180 --> 00:03:47,730 Ingat bahwa perintah untuk menarik Anda fungsi harus gema atau cermin order 62 00:03:47,730 --> 00:03:48,980 dalam fungsi Anda diinisialisasi. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Sekarang bahwa Anda diinisialisasi papan dan bahwa Anda telah ditarik itu, saatnya untuk membiarkan 65 00:03:55,160 --> 00:03:58,500 pengguna mengedit dan membuat gerakan mereka. 66 00:03:58,500 --> 00:04:03,840 Jadi dalam fungsi Fifteen.c, yang Program mengambil input dari user dan 67 00:04:03,840 --> 00:04:07,690 kemudian memanggil fungsi bergerak, melewati dalam jumlah ubin yang 68 00:04:07,690 --> 00:04:09,270 pengguna ingin pindah. 69 00:04:09,270 --> 00:04:10,380 Sekarang, berhati-hatilah. 70 00:04:10,380 --> 00:04:14,200 Ini adalah jumlah aktual ubin dan bukan posisi yang sebenarnya. 71 00:04:14,200 --> 00:04:19,010 Jadi, Anda harus mencari genteng yang posisi untuk tahu di mana itu. 72 00:04:19,010 --> 00:04:23,440 >> Sekarang, Anda hanya harus memungkinkan pengguna untuk bergerak jika itu legal. 73 00:04:23,440 --> 00:04:27,910 Sebuah langkah hukum adalah setiap genteng yang berdekatan dengan ubin kosong. 74 00:04:27,910 --> 00:04:32,020 Itu berarti, di atas dan di bawah, untuk kiri dan ke kanan. 75 00:04:32,020 --> 00:04:34,680 Jadi, Anda harus tahu di mana ubin kosong juga. 76 00:04:34,680 --> 00:04:39,720 Sekarang, untuk setiap gerakan yang Anda cari pengguna genteng, tapi mungkin 77 00:04:39,720 --> 00:04:43,030 tidak terbaik untuk mencari ubin kosong setiap waktu karena Anda melakukannya 78 00:04:43,030 --> 00:04:45,270 setiap kali itu pengguna ingin pindah. 79 00:04:45,270 --> 00:04:50,300 Jadi, sebagai gantinya, yang terbaik untuk mengingat di mana ubin kosong menggunakan beberapa 80 00:04:50,300 --> 00:04:52,650 baik bernama variabel. 81 00:04:52,650 --> 00:04:55,970 Jadi, sekali Anda memungkinkan pengguna untuk membuat mereka bergerak, mereka baik pada mereka 82 00:04:55,970 --> 00:04:59,700 cara untuk memenangkan permainan Lima belas. 83 00:04:59,700 --> 00:05:03,940 >> Untuk memenangkan permainan Fifteen, ubin harus berada dalam urutan tertentu, dan 84 00:05:03,940 --> 00:05:06,970 fungsi memenangkan memeriksa apakah permainan dimenangkan. 85 00:05:06,970 --> 00:05:10,290 Ia mengembalikan Benar jika permainan ini menang dan ubin berada dalam urutan yang benar, 86 00:05:10,290 --> 00:05:12,210 dan False sebaliknya. 87 00:05:12,210 --> 00:05:15,830 Jadi untuk memenangkan permainan Fifteen, ubin harus urutan yang meningkat, dengan 88 00:05:15,830 --> 00:05:19,230 ubin kosong di sudut kanan bawah. 89 00:05:19,230 --> 00:05:23,630 Jadi bagaimana Anda memeriksa apakah pengguna telah pindah papan ke kanan 90 00:05:23,630 --> 00:05:25,010 orientasi? 91 00:05:25,010 --> 00:05:29,200 >> Nah, Anda akan iterate atas papan dan memeriksa nilai memastikan bahwa 92 00:05:29,200 --> 00:05:30,550 mereka berada di tempat yang tepat. 93 00:05:30,550 --> 00:05:33,910 Untuk melakukan ini, Anda dapat menggunakan bersarang untuk loop seperti yang Anda lakukan 94 00:05:33,910 --> 00:05:36,520 imbang dan init. 95 00:05:36,520 --> 00:05:40,430 Ada beberapa cara untuk memeriksa dan memvalidasi apakah dewan adalah 96 00:05:40,430 --> 00:05:42,860 benar dan menang a pembentukan, meskipun. 97 00:05:42,860 --> 00:05:47,330 Jika Anda pergi dari kiri ke kanan, mulai dari baris atas ke bawah, maka setiap 98 00:05:47,330 --> 00:05:50,590 Jumlah harus lebih besar dari sebelumnya. 99 00:05:50,590 --> 00:05:54,530 Hati-hati tentang apa yang menghargai Anda sudah dipilih untuk ubin kosong Anda sekalipun. 100 00:05:54,530 --> 00:05:59,250 >> Atau Anda bisa menggunakan variabel counter untuk memastikan bahwa setiap nilai di tempat, jika 101 00:05:59,250 --> 00:06:03,660 Anda datang dengan beberapa jenis rumus untuk mewakili ini. 102 00:06:03,660 --> 00:06:06,250 Jadi bersenang-senang bereksperimen dengan matematika. 103 00:06:06,250 --> 00:06:10,930 Setelah Anda datang dengan cara, kembali Benar sekali pengguna telah memenangkan pertandingan. 104 00:06:10,930 --> 00:06:15,950 Tetapi jika nilai apapun salah, kembali False, pengguna harus terus bergerak 105 00:06:15,950 --> 00:06:18,440 karena mereka tidak memenangkan pertandingan. 106 00:06:18,440 --> 00:06:23,030 Setelah Anda menerapkan cek ini dan, bersama dengan initialize, menggambar, 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 Selamat dan bersenang-senang bermain. 109 00:06:27,620 --> 00:06:30,600 Nama saya adalah Zamyla dan ini adalah CS50. 110 00:06:30,600 --> 00:06:37,632