1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Ας έχουν διασκέδαση με δεκαπέντε. 3 00:00:11,332 --> 00:00:15,680 Δεκαπέντε είναι το πρώτο παιχνίδι που μπορείτε να πάρετε να εφαρμόσουν και είναι διαδραστικές. 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 init, επιστήσει, κίνηση, και κέρδισε. 15 00:00:48,110 --> 00:00:50,340 Κατ 'αρχάς, ας αντιμετωπίσουμε init. 16 00:00:50,340 --> 00:00:55,150 Σε init, για αρχικοποιούν, εμείς εκπροσωπούμε το διοικητικό συμβούλιο σε ένα 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 ο ακέραιος d, η οποία θα μπορούσε είναι μικρότερο από το μέγιστο. 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 >> Η δουλειά σου είναι στο init είναι για να συμπληρώσετε οι τιμές του διοικητικού συμβουλίου 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 Πλέγμα, 0, 0, 0 γραμμή, στήλη 0, είναι 8, πλέγμα 0, 1 είναι 7. 30 00:01:43,260 --> 00:01:48,500 Αυτό είναι για παράδειγμα, όπου ά, λίγο ά, είναι 3. 31 00:01:48,500 --> 00:01:52,690 >> Τώρα, το διοικητικό συμβούλιο στην Δεκαπέντε πρέπει επίσης να περιέχει ένα κενό πλακάκι, αν έχετε ποτέ 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 κατάσταση έναρξης του διοικητικού συμβουλίου, όπου σκάφους θ ι αντιπροσωπεύει το στοιχείο σε 37 00:02:16,440 --> 00:02:19,380 i γραμμή και την j στήλη. 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 Κλήρωση θα εκτυπώσετε την τρέχουσα κατάσταση της διοικητικό συμβούλιο, αλλά θα πρέπει να βεβαιωθείτε 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 Μια νόμιμη κίνηση είναι κάθε πλακάκι που είναι δίπλα στο κενό κεραμίδι. 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 στην ισοπαλία και στο init. 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 Αφού έχετε καταλήξει με κάποιο τρόπο, την επιστροφή Είναι αλήθεια ότι μόλις ο χρήστης έχει κερδίσει το παιχνίδι. 104 00:06:10,930 --> 00:06:15,950 Αλλά αν υπάρχει η τιμή είναι εσφαλμένη, η επιστροφή Λάθος, ο χρήστης πρέπει να συνεχίσει να κινείται 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