>> 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.