ZAMYLA CHAN: La oss ha moro med Fifteen. Femten er det første spillet som du får å gjennomføre, og det er interaktive. Nå, for ikke å bekymre deg. Du trenger ikke å skrive den hele greia selv. Se på fordelingen kode fordi en Mange av spillet struktur er allerede satt opp for deg. Det aksepterer og analyserer en kommandolinje argument fra brukeren og skaper en styret basert på at innspill. Den sjekker om spillet er vunnet og utganger når brukerens vunnet spillet. Og for å vinne kampen, det blir input fra brukeren og kaller Move-funksjonen. Så vi kommer til å gjennomføre fire funksjoner for spillet av femten, init, tegne, flytte, og vant. Først, la oss takle init. I init, for initialisere, vi representerer styret i et 2D heltall array. Og dette er en global variabel kalt bord med dimensjoner MAX, og MAX, maksimale dimensjoner av styret. Nå er den faktiske dimensjon av brettet er gitt av brukeren, representert heltallet d, noe som kunne være mindre enn MAX. Men, i C, du kan ikke endre størrelsen på arrays, så du sitter fast med at maksimal dimensjon. Din jobb i init er å fylle verdiene av styre med den riktige verdien. Nå, vi har sett 1D arrays, men hvordan 2D-matriser fungerer? Det er en indeks for raden, null indeksert som alltid, og da også av kolonnen. Og du vil fylle din rutenett i inn synkende verdier, akkurat som dette. Grid, 0, 0, rad 0, kolonne 0, er åtte, grid 0, 1 er syv. Dette er et eksempel hvor d, d lite, er 3.. Nå har styret i Fifteen må også inneholde en blank flis, hvis du noen gang spilt med det fysiske spillet. Men, er styret et heltall array, så alle verdier må være heltall. Så det er opp til deg å bestemme et heltall verdi for å representere en tom flis. For å initialisere ditt bord, kan du bruke loop strukturer for å inneholde starter tilstand av styret, hvor styret jeg j representerer elementet på rad i og kolonne j. De begynner i synkende rekkefølge, og Husk, at hvis antallet av fliser er et oddetall, så er du nødt til å bytte plasseringen av to og en. Så der har vi vår initialisert bord. Nå som vi har initialisert vår bord, er det på tide å trekke den. Trekningen vil skrive ut den nåværende tilstanden i bord, men du må sørge for at å skrive ut fliser i samme rekkefølge at du har initialisert dem. Og du trenger også å formatere tallene dine riktig. Fordi vi kan ha enkelttall og doble sifre, så du vil skrive ut en tom plass før noen ensifret tall. Du bruker det ved hjelp plassholderen -. Men husk vår tomrom. Vi ønsker ikke å skrive det faktiske antallet at vi har valgt til å representere at tomrom i styret, men vi har også ikke ønsker å skrive ut noe i det hele tatt. Så hva du kan gjøre er å definere et symbol eller tegn for å representere blank flis. I eksemplene ovenfor har jeg valgt en strek, og så du bare skrive ut at når du kommer til blank plass i trekningen funksjon. Så trekke vil ha nestet for løkker. Noe sånt som dette. For hver rad, og deretter for hver verdi i raden, du kommer til å skrive ut verdi i dette rommet. Når du har skrevet ut alle verdier i raden, så du kan skrive ut en ny linje. Husk at den rekkefølgen for uavgjort Funksjonen må ekko eller speile den rekkefølgen i din initialisert funksjon. Nå som du initialisert styret og at du har tegnet det, er det på tide å la brukeren redigere det og gjøre sine trekk. Så i Fifteen.c funksjon, den Programmet tar input fra brukeren og Da kaller flyttingen funksjon, passerer i antall flis som brukeren ønsker å flytte. Nå, vær forsiktig. Dette er det faktiske antall av flis og ikke den faktiske plasseringen. Så, må du søke etter flis posisjon til å vite hvor det er. Nå bør du bare la brukeren å gjøre et trekk hvis det er lovlig. Et lovlig trekk er noe flis som er som grenser til den tomme flis. Det betyr, over og under, for å venstre og til høyre. Så du trenger å vite hvor den blanke fliser er like godt. Nå, for hver bevegelse du søker etter brukerne flis, men det er nok ikke best å søke etter den blanke fliser hver gang fordi du gjør det hver eneste gang brukeren ønsker å flytte. Så, i stedet, er det best å huske hvor den blanke fliser er ved hjelp av noen godt kalt variabler. Så når du tillater brukeren å gjøre sine trekk, de er vel på sin måten å vinne spillet av femten. For å vinne spillet Femten, flisene må være i en bestemt rekkefølge, og den vant funksjonen sjekker om spillet er vunnet. Den returnerer True hvis spillet er vunnet og flisene er i riktig rekkefølge, og False ellers. Så for å vinne spillet av femten, fliser nødt til å være økende rekkefølge, med blank flis nederst i høyre hjørne. Så hvordan gjør du sjekke om brukeren har flyttet styret inn i høyre orientering? Vel, vil du iterere over styret og kontrollere verdiene for å sørge for at de er på rett sted. For å gjøre dette, kan du bruke nestet for looper, akkurat som du gjorde i trekningen og i init. Det er et par måter å sjekke og validere om styret er korrekte og et vinnende formasjon, skjønt. Hvis du går fra venstre til høyre, og begynner fra den øverste raden ned, deretter hver Tallet må være større enn det foregående. Vær forsiktig med hvilken verdi du har valgt for blank flis skjønt. Eller du kan bruke en teller variabel til sørge for at hver verdi er på plass, dersom du kommer opp med en slags formel for å representere dette. Så ha det gøy å eksperimentere med regnestykket. Når du har kommet opp med en måte, retur Sant når brukeren har vunnet spillet. Men hvis noen verdi er feil, retur Falsk, har brukeren å fortsette å flytte fordi de ikke har vunnet spillet. Når du implementerer denne sjekken, og sammen med initialisere, tegne, og bevege seg, du er ferdig med spillet av femten. Gratulerer og ha det gøy å spille. Mitt navn er Zamyla og dette er CS50.