1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Diamo divertimento con Quindici. 3 00:00:11,332 --> 00:00:15,680 Quindici è il primo gioco che si ottiene implementare ed è interattivo. 4 00:00:15,680 --> 00:00:16,410 Ora, di non preoccuparsi. 5 00:00:16,410 --> 00:00:18,830 Non dovete scrivere il tutto te stesso. 6 00:00:18,830 --> 00:00:22,320 Guardate il codice di distribuzione perché un lotto della struttura di gioco è già 7 00:00:22,320 --> 00:00:23,880 impostato per voi. 8 00:00:23,880 --> 00:00:28,160 Si accetta e analizza una riga di comando argomento dall'utente e crea un 9 00:00:28,160 --> 00:00:31,230 scheda basata su tale ingresso. 10 00:00:31,230 --> 00:00:35,570 Verifica se il gioco è vinto ed esce una volta che l'utente del vinto la partita. 11 00:00:35,570 --> 00:00:38,340 E per vincere la partita, diventa input dall'utente e 12 00:00:38,340 --> 00:00:40,610 chiama la funzione Move. 13 00:00:40,610 --> 00:00:44,600 >> Quindi stiamo andando a essere l'attuazione di quattro funzioni per il gioco del Quindici, 14 00:00:44,600 --> 00:00:48,110 init, disegnare, spostare, e ha vinto. 15 00:00:48,110 --> 00:00:50,340 In primo luogo, cerchiamo di affrontare init. 16 00:00:50,340 --> 00:00:55,150 In init, per initialize, noi rappresentiamo il consiglio in una matrice integer 2D. 17 00:00:55,150 --> 00:01:01,070 E questa è una variabile globale chiamata bordo con dimensioni MAX e MAX, 18 00:01:01,070 --> 00:01:03,880 le dimensioni massime della scheda. 19 00:01:03,880 --> 00:01:07,310 Ora, la dimensione reale del consiglio è dato dall'utente, rappresentata in 20 00:01:07,310 --> 00:01:10,620 il numero intero d, che potrebbe essere inferiore MAX. 21 00:01:10,620 --> 00:01:14,660 Ma, in C, non è possibile ridimensionare le matrici, così sei bloccato con 22 00:01:14,660 --> 00:01:16,730 quella dimensione massima. 23 00:01:16,730 --> 00:01:19,870 >> Il tuo lavoro in init è popolare i valori del consiglio 24 00:01:19,870 --> 00:01:21,860 con il valore corretto. 25 00:01:21,860 --> 00:01:26,910 Ora, abbiamo visto gli array 1D, ma come fanno gli array 2D funzionano? 26 00:01:26,910 --> 00:01:30,985 C'è un indice della riga, azzerare indicizzato come sempre, e poi anche di 27 00:01:30,985 --> 00:01:32,100 colonna. 28 00:01:32,100 --> 00:01:36,120 E potrai riempire la griglia nella decrescente dei valori, proprio come questo. 29 00:01:36,120 --> 00:01:43,260 Griglia, 0, 0, riga 0, colonna 0, è di 8, griglia 0, 1 è 7. 30 00:01:43,260 --> 00:01:48,500 Questo è un esempio in cui d, d poco, è 3. 31 00:01:48,500 --> 00:01:52,690 >> Ora, il consiglio di Quindici deve anche contenere una tessera vuota, se avete mai 32 00:01:52,690 --> 00:01:54,280 giocato con il gioco fisico. 33 00:01:54,280 --> 00:01:59,210 Ma, a bordo è un array di interi, così tutti i valori devono essere interi. 34 00:01:59,210 --> 00:02:06,950 Quindi sta a voi decidere un intero valore per rappresentare una piastrella vuota. 35 00:02:06,950 --> 00:02:10,460 Per inizializzare la scheda, è possibile utilizzare strutture loop per contenere l' 36 00:02:10,460 --> 00:02:16,440 stato iniziale del consiglio di amministrazione, in cui a bordo i j rappresenta l'elemento in 37 00:02:16,440 --> 00:02:19,380 i riga e colonna j. 38 00:02:19,380 --> 00:02:23,035 Iniziano in ordine decrescente e, ricordare, che se il numero di piastrelle 39 00:02:23,035 --> 00:02:29,590 è strano, allora si sta andando ad avere per scambiare la posizione di 2 e di 1. 40 00:02:29,590 --> 00:02:33,790 Quindi c'è, abbiamo il nostro bordo inizializzato. 41 00:02:33,790 --> 00:02:37,440 >> Ora, che abbiamo inizializzato il nostro bordo, è il momento di disegnare. 42 00:02:37,440 --> 00:02:41,260 Draw stamperà lo stato attuale della bordo, ma è necessario assicurarsi che 43 00:02:41,260 --> 00:02:44,260 stampare piastrelle nello stesso ordine che li avete inizializzato. 44 00:02:44,260 --> 00:02:47,300 Ed è anche necessario formattare i numeri correttamente. 45 00:02:47,300 --> 00:02:51,700 Perché potremmo avere una sola cifra e doppia cifra, poi si desidera 46 00:02:51,700 --> 00:02:54,540 stampare uno spazio vuoto prima tutti i numeri di una cifra. 47 00:02:54,540 --> 00:03:00,150 Si utilizza che utilizzando il segnaposto -. 48 00:03:00,150 --> 00:03:02,550 >> Ma ricordate il nostro spazio vuoto. 49 00:03:02,550 --> 00:03:05,970 Noi non vogliamo stampare il numero effettivo che abbiamo scelto di rappresentare 50 00:03:05,970 --> 00:03:10,410 quello spazio vuoto in pensione, ma abbiamo anche non si desidera stampare nulla. 51 00:03:10,410 --> 00:03:15,310 Che cosa si può fare è quello di definire un simbolo o caratteri per rappresentare il 52 00:03:15,310 --> 00:03:17,050 tile vuoto. 53 00:03:17,050 --> 00:03:21,030 Negli esempi precedenti ho scelto un sottolineatura e poi basta stampare 54 00:03:21,030 --> 00:03:26,970 che ogni volta che si raggiunge il vuoto spazio nella funzione draw. 55 00:03:26,970 --> 00:03:29,850 >> Quindi disegnare avranno cicli for nidificati. 56 00:03:29,850 --> 00:03:31,150 Qualcosa di simile a questo. 57 00:03:31,150 --> 00:03:35,660 Per ogni riga, e quindi per ogni valore nella la riga, si sta andando a stampare il 58 00:03:35,660 --> 00:03:36,940 valore in questo spazio. 59 00:03:36,940 --> 00:03:39,470 Dopo aver stampato tutti i valori nella riga, poi si 60 00:03:39,470 --> 00:03:41,180 può stampare una nuova linea. 61 00:03:41,180 --> 00:03:47,730 Ricordate che l'ordine per il vostro progetto funzione deve echo o rispecchiare l'ordine 62 00:03:47,730 --> 00:03:48,980 nella funzione inizializzato. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Ora che si inizializza la scheda e che hai disegnato, è il momento di lasciare 65 00:03:55,160 --> 00:03:58,500 l'utente modificarlo e fare le loro mosse. 66 00:03:58,500 --> 00:04:03,840 Quindi nella funzione Fifteen.c, la programma prende input da parte dell'utente e 67 00:04:03,840 --> 00:04:07,690 quindi chiama la funzione di movimento, passando nel numero della piastrella che la 68 00:04:07,690 --> 00:04:09,270 l'utente vuole muoversi. 69 00:04:09,270 --> 00:04:10,380 Ora, fate attenzione. 70 00:04:10,380 --> 00:04:14,200 Questo è il numero effettivo della piastrella e non la sua posizione reale. 71 00:04:14,200 --> 00:04:19,010 Quindi, avrete bisogno di cercare la tessera del grado di sapere dove si trova. 72 00:04:19,010 --> 00:04:23,440 >> Ora, si deve solo consentire all'utente a fare una mossa se è legale. 73 00:04:23,440 --> 00:04:27,910 Una mossa giuridico è una tegola che è adiacente alla piastrella vuoto. 74 00:04:27,910 --> 00:04:32,020 Ciò significa, sopra e sotto, per a sinistra ea destra. 75 00:04:32,020 --> 00:04:34,680 Quindi avrete bisogno di sapere dove la piastrella vuoto è pure. 76 00:04:34,680 --> 00:04:39,720 Ora, per ogni movimento che stai cercando la piastrella utenti, ma probabilmente 77 00:04:39,720 --> 00:04:43,030 Non migliore per cercare la tessera in bianco ogni volta perché si sta facendo 78 00:04:43,030 --> 00:04:45,270 ogni volta l' l'utente vuole muoversi. 79 00:04:45,270 --> 00:04:50,300 Così, invece, è meglio ricordare dove la tessera in bianco sta utilizzando alcune 80 00:04:50,300 --> 00:04:52,650 così denominato variabili. 81 00:04:52,650 --> 00:04:55,970 Quindi una volta che si consente all'utente di effettuare la loro mosse, essi sono sulla 82 00:04:55,970 --> 00:04:59,700 modo per vincere la partita di Quindici. 83 00:04:59,700 --> 00:05:03,940 >> Per vincere il gioco del Quindici, le piastrelle devono essere in un ordine specifico, e 84 00:05:03,940 --> 00:05:06,970 la funzione vinto verifica se la partita è vinta. 85 00:05:06,970 --> 00:05:10,290 Restituisce True se il gioco è vinto e le piastrelle sono nell'ordine corretto, 86 00:05:10,290 --> 00:05:12,210 e False altrimenti. 87 00:05:12,210 --> 00:05:15,830 Quindi, per vincere il gioco del Quindici, piastrelle essere ordine crescente, con la 88 00:05:15,830 --> 00:05:19,230 tile vuoto nell'angolo in basso a destra. 89 00:05:19,230 --> 00:05:23,630 Così come si fa a controllare se l'utente ha spostato la scheda nel giusto 90 00:05:23,630 --> 00:05:25,010 orientamento? 91 00:05:25,010 --> 00:05:29,200 >> Beh, ti scorrere la scheda e controllare i valori per assicurarsi che 92 00:05:29,200 --> 00:05:30,550 sono nel posto giusto. 93 00:05:30,550 --> 00:05:33,910 Per fare questo, è possibile utilizzare nidificato cicli for, proprio come hai fatto 94 00:05:33,910 --> 00:05:36,520 in pareggio e in init. 95 00:05:36,520 --> 00:05:40,430 Ci sono un paio di modi per controllare e confermare se la scheda è 96 00:05:40,430 --> 00:05:42,860 corretta e vincente la formazione, però. 97 00:05:42,860 --> 00:05:47,330 Se si va da sinistra a destra, a partire dalla fila verso il basso, poi ogni 98 00:05:47,330 --> 00:05:50,590 numero deve essere maggiore di quello precedente. 99 00:05:50,590 --> 00:05:54,530 Fate attenzione a ciò che valore hai scelto per la tua tessera vuoto però. 100 00:05:54,530 --> 00:05:59,250 >> Oppure si potrebbe utilizzare una variabile contatore garantire che ogni valore è a posto, se 101 00:05:59,250 --> 00:06:03,660 si arriva con una sorta di formula per rappresentare questo. 102 00:06:03,660 --> 00:06:06,250 Quindi divertiti a sperimentare con la matematica. 103 00:06:06,250 --> 00:06:10,930 Una volta arriva con un certo senso, il ritorno Vero volta che l'utente ha vinto la partita. 104 00:06:10,930 --> 00:06:15,950 Ma se il valore non è corretto, il ritorno Falso, l'utente deve continuare a muoversi 105 00:06:15,950 --> 00:06:18,440 perché non hanno vinto la partita. 106 00:06:18,440 --> 00:06:23,030 Una volta che si sceglie di implementare questo controllo e, insieme con inizializzazione, disegnare, e spostare, 107 00:06:23,030 --> 00:06:25,110 hai finito il gioco del Quindici. 108 00:06:25,110 --> 00:06:27,620 Congratulazioni e si divertono a giocare. 109 00:06:27,620 --> 00:06:30,600 Il mio nome è Zamyla e questo è CS50. 110 00:06:30,600 --> 00:06:37,632