ZAMYLA CHAN: Lad os få sjov med Femten. Femten er det første spil, at du får at gennemføre, og det er interaktivt. Nu, ikke at bekymre sig. Du behøver ikke at skrive hele selv. Kig på fordelingen kode, fordi en masse af spillet struktur er allerede sat op for dig. Det accepterer og analyserer en kommandolinje argument fra brugeren og skaber en board baseret på denne indgang. Det tjekker, om spillet er vundet og udgange når brugerens vandt spillet. Og for at vinde spillet, får det input fra brugeren og kalder Flyt funktionen. Så vi kommer til at gennemføre fire funktioner til spillet af Fifteen, init, tegne, flytte og vandt. Først, lad os tackle init. I init for Initialiser, repræsenterer vi bestyrelsen i en 2D-heltal array. Og dette er en global variabel kaldet bord med dimensioner MAX og MAX de maksimale dimensioner af bestyrelsen. Nu er den faktiske dimension af bestyrelsen er givet af brugeren, er repræsenteret i heltal d, som kunne være mindre end MAX. Men i C, kan du ikke ændre størrelsen på arrays, så du sidder fast med den maksimale dimension. Dit job i init er at befolke værdierne af bestyrelsen med den korrekte værdi. Nu har vi set 1D arrays, men hvordan 2D arrays virker? Der er et indeks af rækken, nul indekseret som altid, og derefter også af kolonnen. Og du vil fylde din nettet i i faldende værdier, ligesom dette. Grid, 0, 0, række 0, kolonne 0, er 8, grid 0, 1 er 7. Dette er et eksempel, hvor d, lille d, er 3.. Nu er bestyrelsen i Femten skal også indeholde en tom flise, hvis du nogensinde har spilles med fysisk spil. Men bord er et heltal array, så alle værdier at være hele tal. Så det er op til dig at bestemme et heltal værdi til at repræsentere en tom flise. Sådan initialiserer dit bord, kan du bruge løkke-strukturer på at inddæmme start tilstand af bestyrelsen, hvor bestyrelsen i j repræsenterer grundstof række i og søjle j. De starter i faldende rækkefølge, og Husk, at hvis antallet af fliser er ulige, så er du nødt til at bytte placeringen af ​​2. og 1.. Så der har vi vores initialiseret bord. Nu, at vi har initialiseret vores bord, er det tid til at tegne den. Lodtrækningen udskrive det aktuelle tilstand bord, men du skal sørge for at udskrive fliser i samme rækkefølge at du har initialiseret dem. Og du også nødt til at formatere dine tal korrekt. Fordi vi kunne have encifret og dobbelte cifre, så du ønsker at udskrive en tom plads før enhver enkelt cifrede tal. Du bruger det ved at bruge pladsholderen -. Men husk vores tom plads. Vi ønsker ikke at udskrive det faktiske antal at vi har valgt til at repræsentere der tom plads i bestyrelsen, men vi har også ikke ønsker at udskrive noget overhovedet. Så hvad du kan gøre, er at definere en symbol eller tegn til at repræsentere blank flise. I tidligere eksempler har jeg valgt en underscore, og så skal du bare udskrive at når du når den tomme plads i dit draw funktion. Så tegner, vil have indlejret efter sløjfer. Noget som dette. For hver række, og derefter for hver værdi i rækken, er du nødt til at udskrive værdi i dette rum. Når du har udskrevet alle de værdier i rækken, så du kan udskrive en ny linje. Husk, at for at din draw skal funktionen echo eller spejle ordre i din initialiseret funktion. Nu, at du initialiseret bestyrelsen og at du har tegnet det, er det tid til at lade brugeren redigere det og gøre deres bevægelser. Så i Fifteen.c funktion, program tager input fra brugeren og derefter kalder flytte funktionen, der passerer i antallet af flisen, at brugeren ønsker at flytte. Nu, vær forsigtig. Det er det faktiske antal af flisen og ikke dens faktiske position. Så vil du nødt til at søge efter flisens position til at vide, hvor det er. Nu skal du kun gøre det muligt for brugeren at foretage et træk, hvis det er lovligt. Et lovligt træk er enhver flise, der er der støder op til den tomme flise. Det betyder, over og under, til venstre og til højre. Så du bliver nødt til at vide, hvor den tomme fliser er så godt. Nu, for hvert skridt, du søger efter brugerne fliser, men det er nok ikke bedst at søge efter det tomme flise hver gang, fordi du gør det hver eneste gang brugeren ønsker at flytte. Så i stedet, er det bedst at huske, hvor råemnet flise ved hjælp af nogle godt navngivne variabler. Så når du giver brugeren mulighed for at gøre deres bevæger sig, er de godt på vej til at vinde spillet af Femten. For at vinde spillet Femten, fliserne nødt til at være i en bestemt rækkefølge, og den vandt funktion kontrollerer, om spillet er vundet. Det giver True hvis spillet er vundet, og fliserne er i den rigtige rækkefølge, og False andet. Så for at vinde spillet af femten, fliser nødt til at være stigende rækkefølge med den blank flise i nederste højre hjørne. Så hvordan kan du kontrollere, om brugeren har bevæget bestyrelsen i den rigtige orientering? Nå, vil du gentage over for bestyrelsen og kontrollere de værdier, at sikre, at de er i det rigtige sted. For at gøre dette, kan du bruge indlejrede efter sløjfer ligesom du gjorde i lodtrækningen og init. Der er et par måder at kontrollere og validere, om bestyrelsen er korrekt og et vindende dannelse, selv om. Hvis du går fra venstre mod højre, startende fra den øverste række nedad, derefter hver nummer skal være større end den foregående. Vær forsigtig med, hvad værdi du har valgt til din tomme flise selv. Eller du kan bruge en tæller variabel til sikre, at hver værdi er på plads, hvis du kommer op med en slags formel til at repræsentere dette. Så har det sjovt at eksperimentere med matematik. Når du er kommet op med en måde, afkast Sandt når brugeren har vundet spillet. Men hvis nogen værdi er forkert, afkast Falsk, brugeren har til at fortsætte med at flytte fordi de ikke har vundet spillet. Når du gennemfører denne kontrol, og sammen med Initialiser, tegne og flytte, du er færdig med spillet af Femten. Tillykke og have det sjovt at spille. Mit navn er Zamyla og dette er CS50.