>> ZAMYLA CHAN: Låt oss ha kul med femton.
Femton är det första spelet som du får att genomföra och det är interaktivt.
Nu, inte oroa dig.
Du behöver inte skriva det hela saken själv.
Titta på distributions kod eftersom en mycket av spelstrukturen är redan
ställa upp för dig.
Det accepterar och tolkar en kommandorad argument från användaren och skapar en
styrelsen baserat på den ingången.
Den kontrollerar om spelet vinns och utgångar gång användarens vunnit spelet.
Och för att vinna spelet, blir det inmatning från användaren och
anropar Move-funktionen.
>> Så vi kommer att genomföra fyra funktioner för spelet i femton,
init, rita, flytta och vann.
Först, låt oss ta itu init.
I init, för initialize, vi representerar styrelsen i ett 2D heltal array.
Och det här är en global variabel som heter styrelse med måtten MAX och MAX,
de maximala dimensioner i styrelsen.
Nu, den verkliga dimensionen av kortet ges av användaren, som representeras i
heltalet d, vilket kunde vara mindre än max.
Men, i C, du kan inte ändra storlek på matriser, så du har fastnat med
att maximal dimension.
>> Ditt jobb i init är att fylla värdena av brädan
med rätt värde.
Nu har vi sett 1D arrayer, men hur gör 2D-arrayer fungerar?
Det är ett index på den raden, noll indexeras som alltid, och då även för
kolonnen.
Och du kommer att fylla din rutnät på i fallande värden, precis som denna.
Grid, 0, 0, rad 0, kolumn 0, är ​​8, galler 0, 1 är 7.
Detta är för ett exempel där d, litet d, är 3.
>> Nu, styrelsen i femton måste också innehålla en tom sida vid sida, om du har någonsin
lekte med det fysiska spelet.
Men är ombord ett heltal array, så alla värden måste vara heltal.
Så det är upp till dig att bestämma ett heltal värde för att representera en tom bricka.
För att initiera din bräda, kan du använda slingstrukturer som innehåller
starttillstånd i styrelsen, där styrelsen i j representerar elementet vid
rad i och kolumn j.
De börjar i fallande ordning och, kom ihåg, att om antalet plattor
är märkligt, då du kommer att behöva byta plats för 2 och 1.
Så där har vi vår initierad styrelse.
>> Nu, när vi har initierats vår styrelse, är det dags att dra den.
Rita kommer att skriva ut den aktuella tillstånd ombord, men du måste se
för att skriva ut brickor i samma ordning att du har initierats dem.
Och du måste också formatera dina siffror korrekt.
Eftersom vi kan ha enstaka siffror och tvåsiffriga tal, då du vill
skriva ut ett tomt utrymme före alla ensiffriga tal.
Du använder det genom att använda platshållaren -.
>> Men kom ihåg vår tomt utrymme.
Vi vill inte skriva ut det verkliga antalet att vi har valt att representera
det tomma utrymmet i styrelsen, men vi också vill inte skriva ut någonting alls.
Så vad du kan göra är att definiera en symbol eller tecken för att representera
blank kakel.
I tidigare exempel har jag valt en streck, och då du bara skriva ut
att när du når den tomma utrymme i dragfunktion.
>> Så dra kommer att ha nästlade loopar.
Ungefär så här.
För varje rad, och sedan för varje värde i raden, du kommer att skriva ut
värde i detta utrymme.
När du har skrivit ut alla värden i rad, då du
kan skriva ut en ny linje.
Kom ihåg att för att din oavgjort Funktionen ska eka eller spegla ordning
i din initierad funktion.
>> Nu när du initierade styrelsen och att du har ritat det, är det dags att låta
användaren redigera den och göra sina drag.
Så i Fifteen.c funktion, Programmet tar indata från användaren och
anropar sedan flytten funktionen, passerar i numret för den bricka som det
användaren vill flytta.
Nu, var försiktig.
Detta är det verkliga antalet av plattan och inte dess faktiska läge.
Så, måste du söka efter kakel s position för att veta var den är.
>> Nu ska du bara låta användaren att göra ett drag om det är lagligt.
En regelrätt drag är någon bricka som är intill den tomma brickan.
Det betyder att, ovan och nedan, för att vänster och till höger.
Så du måste veta var den tomma brickan är också.
Nu, för varje steg du söker efter den användare kakel, men det är nog
inte bäst att söka efter den tomma brickan varje gång eftersom du gör det
varje gång den användaren vill flytta.
Så istället, är det bäst att komma ihåg var den tomma brickan är att använda några
väl namngivna variabler.
Så när du tillåter användaren att göra sina drag, de är på god
sätt att vinna spelet i femton.
>> För att vinna spelet av femton, brickor måste vara i en speciell ordning, och
det vunnit funktionen kontrollerar om spelet är vunnet.
Den returnerar True om matchen är vunnen och plattorna är i rätt ordning,
och False annars.
Så för att vinna spelet av Femton, kakel måste vara ökande ordning, med
tom bricka i det nedre högra hörnet.
Så hur kan du kontrollera om användaren har flyttat till styrelsen i rätt
läggning?
>> Tja, du iterera över styrelsen och kontrollera värdena för att säkerställa att
de är på rätt plats.
För att göra detta kan du använda nästlade för loopar precis som du gjorde
i lottningen och i init.
Det finns ett par sätt att kontrollera och validera om styrelsen är
korrekt och en vinnande formation, dock.
Om du går från vänster till höger, med början från den översta raden ner, sedan varje
Antalet måste vara större än den föregående.
Var försiktig med vad värderar du har valt för tom kakel ändå.
>> Eller så kan du använda en räknare variabel till säkerställa att varje värde är på plats, om så
du komma med någon form av formel för att representera denna.
Ha så kul att experimentera med matten.
När du har kommit på ett sätt, retur Sant när användaren har vunnit spelet.
Men om något värde är felaktigt, retur Falskt, har användaren att fortsätta gå
eftersom de inte har vunnit spelet.
När du genomför denna kontroll och, tillsammans med initialize, rita, och flytta,
du är klar spelet i femton.
Grattis och ha roligt att spela.
Mitt namn är Zamyla och detta är CS50.