1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Wir haben Spaß mit fünfzehn. 3 00:00:11,332 --> 00:00:15,680 Fünfzehn ist das erste Spiel, die Sie erhalten zu implementieren und es ist interaktiv. 4 00:00:15,680 --> 00:00:16,410 Nun, keine Sorgen machen. 5 00:00:16,410 --> 00:00:18,830 Sie müssen nicht zu schreiben, die ganze Sache selber. 6 00:00:18,830 --> 00:00:22,320 Sehen Sie sich den Code, da eine Verteilung viel von der Spielstruktur ist bereits 7 00:00:22,320 --> 00:00:23,880 stellen sie für Sie. 8 00:00:23,880 --> 00:00:28,160 Er akzeptiert und analysiert eine Befehlszeile Argument von dem Benutzer und erzeugt eine 9 00:00:28,160 --> 00:00:31,230 Board, basierend auf diesen Eingang. 10 00:00:31,230 --> 00:00:35,570 Es prüft, ob das Spiel gewonnen und Ausfahrten sobald der Benutzer das Spiel gewonnen. 11 00:00:35,570 --> 00:00:38,340 Und um das Spiel zu gewinnen, wird es Eingabe von dem Benutzer und 12 00:00:38,340 --> 00:00:40,610 ruft die Funktion Verschieben. 13 00:00:40,610 --> 00:00:44,600 >> So werden wir umsetzen vier Funktionen für das Spiel der Fünfzehn, 14 00:00:44,600 --> 00:00:48,110 init, ziehen, verschieben und gewann. 15 00:00:48,110 --> 00:00:50,340 Lassen Sie uns zunächst angehen init. 16 00:00:50,340 --> 00:00:55,150 In init initialize vertreten wir der Vorstand in einer 2D-Integer-Array. 17 00:00:55,150 --> 00:01:01,070 Und dies ist eine globale Variable namens Platte mit Abmessungen MAX und MAX, 18 00:01:01,070 --> 00:01:03,880 die maximalen Abmessungen der Platine. 19 00:01:03,880 --> 00:01:07,310 Nun, die tatsächliche Dimension des Vorstandes durch den Benutzer, dargestellt in bestimmten 20 00:01:07,310 --> 00:01:10,620 die ganze Zahl d, die könnten weniger als MAX. 21 00:01:10,620 --> 00:01:14,660 Aber in C, können Sie nicht die Größe Arrays so dass Sie mit stecken 22 00:01:14,660 --> 00:01:16,730 die maximale Abmessung. 23 00:01:16,730 --> 00:01:19,870 >> Ihre Aufgabe ist es, in init bevöl die Werte des Bord 24 00:01:19,870 --> 00:01:21,860 mit dem richtigen Wert. 25 00:01:21,860 --> 00:01:26,910 Jetzt haben wir gesehen, 1D-Arrays, aber wie kann 2D-Arrays zu arbeiten? 26 00:01:26,910 --> 00:01:30,985 Es gibt ein Index der Zeile, auf Null auch indiziert wie immer, und dann 27 00:01:30,985 --> 00:01:32,100 die Säule. 28 00:01:32,100 --> 00:01:36,120 Und Sie werden das Raster in auszufüllen absteigenden Werten, einfach so. 29 00:01:36,120 --> 00:01:43,260 Gitter, 0, 0, Zeile 0, Spalte 0, 8, Gitter 0, 1 7 ist. 30 00:01:43,260 --> 00:01:48,500 Dies ist ein Beispiel, wo d, d wenig, 3 ist. 31 00:01:48,500 --> 00:01:52,690 >> Nun muss auch der Vorstand in Fünfzehn enthalten eine leere Fliesen, wenn Sie überhaupt haben 32 00:01:52,690 --> 00:01:54,280 mit dem physischen Spiel gespielt. 33 00:01:54,280 --> 00:01:59,210 Aber, das ist ein Integer-Array Bord, so Alle Werte müssen ganze Zahlen sein. 34 00:01:59,210 --> 00:02:06,950 So ist es an Ihnen zu entscheiden, eine ganze Zahl Wert auf eine leere Kachel darzustellen. 35 00:02:06,950 --> 00:02:10,460 Um Ihre Karte zu initialisieren, die Sie verwenden können Loop-Strukturen enthalten die 36 00:02:10,460 --> 00:02:16,440 Ausgangszustand des Boards, wo Bord i j die Element 37 00:02:16,440 --> 00:02:19,380 Zeile i und Spalte j. 38 00:02:19,380 --> 00:02:23,035 Sie beginnen in der absteigenden Reihenfolge und denken Sie daran, dass, wenn die Anzahl der Kacheln 39 00:02:23,035 --> 00:02:29,590 ungerade ist, dann sind Sie gehen zu müssen sind tauschen sich die Position 2 und 1. 40 00:02:29,590 --> 00:02:33,790 So gibt es, wir haben unsere initialisiert Bord. 41 00:02:33,790 --> 00:02:37,440 >> Jetzt, da wir initialisiert haben unsere Bord, ist es Zeit, es zu zeichnen. 42 00:02:37,440 --> 00:02:41,260 Auslosung wird den aktuellen Zustand des Druck Bord, aber Sie müssen sicherstellen, dass 43 00:02:41,260 --> 00:02:44,260 Fliesen in der gleichen Reihenfolge zu drucken dass Sie sie initialisiert haben. 44 00:02:44,260 --> 00:02:47,300 Und Sie müssen auch formatieren Ihre Zahlen richtig. 45 00:02:47,300 --> 00:02:51,700 Weil wir vielleicht einzelne Ziffern haben und zweistellig, dann wollen 46 00:02:51,700 --> 00:02:54,540 ein Leerzeichen zu drucken, bevor alle einstelligen Zahlen. 47 00:02:54,540 --> 00:03:00,150 Sie verwenden dass durch die Verwendung der Platzhalter -. 48 00:03:00,150 --> 00:03:02,550 >> Aber denken Sie daran unsere Leerzeichen. 49 00:03:02,550 --> 00:03:05,970 Wir wissen nicht um die tatsächliche Anzahl drucken möchten dass wir gewählt, um darzustellen 50 00:03:05,970 --> 00:03:10,410 dass Leerzeichen in Pension, aber wir haben auch wollen nicht, dass überhaupt nichts zu drucken. 51 00:03:10,410 --> 00:03:15,310 Also, was Sie tun können, ist, um ein Symbol zu definieren oder Charakter stellen die 52 00:03:15,310 --> 00:03:17,050 blank Fliese. 53 00:03:17,050 --> 00:03:21,030 In den vorherigen Beispielen habe ich eine gewählt zu unterstreichen, und dann müssen Sie nur drucken 54 00:03:21,030 --> 00:03:26,970 dass, wenn Sie die leere erreichen Platz in Ihrem Zeichenfunktion. 55 00:03:26,970 --> 00:03:29,850 >> So ziehen wird für Schleifen geschachtelt haben. 56 00:03:29,850 --> 00:03:31,150 So etwas wie dies. 57 00:03:31,150 --> 00:03:35,660 Für jede Zeile, und dann für jeden Wert in die Zeile, die Sie Drucklegung sind die 58 00:03:35,660 --> 00:03:36,940 Wert in diesem Raum. 59 00:03:36,940 --> 00:03:39,470 Wenn Sie alle Werte gedruckt haben in der Reihe, dann 60 00:03:39,470 --> 00:03:41,180 kann eine neue Zeile zu drucken. 61 00:03:41,180 --> 00:03:47,730 Denken Sie daran, dass der Auftrag für Ihren Unentschieden Funktion muss echo oder spiegeln die Reihenfolge 62 00:03:47,730 --> 00:03:48,980 in Ihrer Funktion initialisiert. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Nun, da Sie das Brett initialisiert und dass Sie es gezeichnet haben, ist es Zeit zu lassen 65 00:03:55,160 --> 00:03:58,500 der Benutzer bearbeiten und ihre Bewegungen. 66 00:03:58,500 --> 00:04:03,840 So in der Fifteen.c Funktion, die Programm nimmt Eingaben von dem Benutzer und 67 00:04:03,840 --> 00:04:07,690 ruft dann die Move-Funktion, vorbei der Anzahl der Kacheln, die 68 00:04:07,690 --> 00:04:09,270 Nutzer will sich zu bewegen. 69 00:04:09,270 --> 00:04:10,380 Nun, seien Sie vorsichtig. 70 00:04:10,380 --> 00:04:14,200 Dies ist die tatsächliche Anzahl der Fliese und nicht seine aktuelle Position. 71 00:04:14,200 --> 00:04:19,010 So müssen Sie für die Fliesen suchen Position zu wissen, wo es ist. 72 00:04:19,010 --> 00:04:23,440 >> Jetzt sollten Sie nur dem Benutzer ermöglichen einen Schritt machen, wenn es legal ist. 73 00:04:23,440 --> 00:04:27,910 Ein Rechts Bewegung ist jede Fliese, ist neben dem leeren Fliese. 74 00:04:27,910 --> 00:04:32,020 Das bedeutet, dass oben und unten, um links und rechts. 75 00:04:32,020 --> 00:04:34,680 So werden Sie müssen wissen, wo der Rohling Fliese ist als gut. 76 00:04:34,680 --> 00:04:39,720 Nun, für jede Bewegung, die Sie suchen die Nutzer Fliesen, aber es ist wahrscheinlich 77 00:04:39,720 --> 00:04:43,030 nicht am besten, für die leere Kachel suchen jedes Mal, weil Sie es tun 78 00:04:43,030 --> 00:04:45,270 jedes Mal die Nutzer will sich zu bewegen. 79 00:04:45,270 --> 00:04:50,300 Also, statt, ist es am besten zu erinnern, wo der Rohling Fliese wird mit einigen 80 00:04:50,300 --> 00:04:52,650 und benannte Variablen. 81 00:04:52,650 --> 00:04:55,970 Also, wenn Sie erlauben es dem Benutzer, um ihre bewegt, sind sie auf dem besten 82 00:04:55,970 --> 00:04:59,700 Weg, um das Spiel zu gewinnen der Fünfzehn. 83 00:04:59,700 --> 00:05:03,940 >> Um das Spiel der Fünfzehn, die Fliesen zu gewinnen haben, in einer bestimmten Reihenfolge angeordnet sein, und 84 00:05:03,940 --> 00:05:06,970 gewann die Funktion überprüft, ob das Spiel gewonnen. 85 00:05:06,970 --> 00:05:10,290 Es gibt True zurück, wenn das Spiel gewonnen und Die Fliesen sind in der richtigen Reihenfolge, 86 00:05:10,290 --> 00:05:12,210 sonst Falsch. 87 00:05:12,210 --> 00:05:15,830 Also, um das Spiel der Fünfzehn, Fliesen gewinnen haben zu steigen, um mit der 88 00:05:15,830 --> 00:05:19,230 blank Fliesen in der unteren rechten Ecke. 89 00:05:19,230 --> 00:05:23,630 So, wie Sie überprüfen, ob der Benutzer hat das Board in rechts bewegt 90 00:05:23,630 --> 00:05:25,010 Orientierung? 91 00:05:25,010 --> 00:05:29,200 >> Nun, Sie werden über das Brett durchlaufen und überprüfen Sie die Werte, um sicherzustellen, dass 92 00:05:29,200 --> 00:05:30,550 sie sind an der richtigen Stelle. 93 00:05:30,550 --> 00:05:33,910 Um dies zu tun, können Sie verschachtelte verwenden können for-Schleifen wie Sie getan haben 94 00:05:33,910 --> 00:05:36,520 in Zug und in init. 95 00:05:36,520 --> 00:05:40,430 Es gibt ein paar Möglichkeiten, um zu überprüfen, und überprüfen, ob das Board 96 00:05:40,430 --> 00:05:42,860 richtige und eine Gewinn Bildung, though. 97 00:05:42,860 --> 00:05:47,330 Wenn Sie von links nach rechts zu gehen, ab aus der oberen Reihe nach unten, dann jeden 98 00:05:47,330 --> 00:05:50,590 Zahl muss größer sein als die vorherige. 99 00:05:50,590 --> 00:05:54,530 Seien Sie vorsichtig, was schätzen Sie habe gewählt, für Ihre leere Kachel aber. 100 00:05:54,530 --> 00:05:59,250 >> Oder Sie könnten eine Zählervariable verwenden sicherzustellen, dass jeder Wert in Ort ist, wenn 101 00:05:59,250 --> 00:06:03,660 Sie kommen mit einer Art Formel, um dies darzustellen. 102 00:06:03,660 --> 00:06:06,250 Also, viel Spaß zu experimentieren mit der Mathematik. 103 00:06:06,250 --> 00:06:10,930 Sobald Sie mit einem Weg, Rückkehr kommen Wahr, wenn der Benutzer das Spiel gewonnen hat. 104 00:06:10,930 --> 00:06:15,950 Aber wenn irgendein Wert nicht korrekt ist, Rück Falsch, muss der Benutzer weiterbewegen 105 00:06:15,950 --> 00:06:18,440 weil sie nicht das Spiel gewonnen. 106 00:06:18,440 --> 00:06:23,030 Wenn Sie dieses Kontroll implementieren und, zusammen mit initialize, zeichnen und bewegen, 107 00:06:23,030 --> 00:06:25,110 Sie das Spiel der Fünfzehn abgeschlossen haben. 108 00:06:25,110 --> 00:06:27,620 Herzlichen Glückwunsch und viel Spaß beim Spielen. 109 00:06:27,620 --> 00:06:30,600 Mein Name ist Zamyla und das ist CS50. 110 00:06:30,600 --> 00:06:37,632