bygge dit eget oop forbinde 4 spil

, bygge dit eget oop forbinde 4 spil,,,,, 1,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, nu kan gøre udviklingen hurtigere, og deres ansøgninger løbe hurtigere.i løbet af denne forelæsning vil jeg vise, hvordan til at bygge en actionscript forbinde 4 spil, ved hjælp af en organiseret oop tilgang. lad os komme i gang!,,,,,,, 1. trin: først i kilden filer jeg har medtaget et connect4_start.fla fil.i begyndelsen af denne sag; den indeholder alle de movieclips, der er nødvendig for at afslutte den tutor.det indeholder 4 movieclips.en rød chip movieclip, en gul chip movieclip, en boardpiece movieclip og en vinder dialog movieclip., 2. trin: skabe connect4 klasse fil, skabe en ny actionscript fil og redde det med navnet connect4.derefter tilsættes følgende kode:, pakke (import flash.display.sprite import flash.events.mouseevent; import flash.events.event; import flash.geom.point; import caurina.transitions.tweener; offentlige klasse connect4 udvider sprite (private var kolonner: uint; private var rækker: uint; private var bord: array = nye array(); private var columnwidth: uint; private var rowheight: uint; private var. currentplayer: uint = 1; private var currentchip; offentlig funktion connect4 (kolonne: uint, rækker: uint): ugyldig (this.columns = kolonne this.rows = rækker columnwidth = nye boardpiece(). bredde rowheight = nye boardpiece(). højde}}}, i denne kode blok, vi importerer, klasser (jeg også brugt tweepr. klasse, som du kan finde her eller i min kilde - filer).vi definerer området variabler, og vi skaber entreprenøren.konstruktøren har to argumenter, og antallet af søjler og rækker du dig i din kamp.vi sætter disse værdier i vores område variabler. endelig vi lokalitet den columnwidth og rowheight variabel.en spalte har samme bredde som bredden af en boardpiece (samme princip for rowheight), trin 3: drawboard funktion, denne funktion vil drage de playboard af spillet, afhængigt af hvor mange piller og rækker, du vil have.det fungerer for producenten af connect4 klasse:, privat funktion drawboard(): ugyldig (for (var - jeg: uint = 0. jeg < rækker; jeg + +) (for (var - j: uint = 0 j < kolonne j + +) (var - boardpiece: boardpiece = ny boardpiece(); boardpiece. x = j * boardpiece.width; boardpiece. y = * boardpiece.height; dette. addchild (boardpiece)}}}, trin 4: createboardarray funktion her skaber vi et todimensionalt system, som vil indeholde alle de steder i bestyrelsen. vi udfylde det system med 0. 0 betyder, at der er ikke en chip, der lægges på den holdning.denne funktion skal også tilføjes, at konstruktøren. privat funktion createboardarray(): ugyldig (for (var - jeg: uint = 0. jeg < rækker; jeg + +) {karton [i] = [...] for (var - j: uint = 0 j < kolonne j + +) {karton [i] [j] = 0}}}, løntrin 5: putchipready funktion i denne funktion, som vi identificere den nuværende spiller og tilføje den matchende chip til display - liste.vi giver det en negativ værdi, så den chip i dukker op over vores playboard.endnu en gang, at tilføje denne funktion for producenten, privat funktion putchipready(): ugyldig (hvis (currentplayer = = 1) (currentchip = nye redchip();} andre (currentchip = nye yellowchip();} currentchip. y = - 50. addchildat (currentchip, 0)}, trin 6: enterframehander på alle ramme denne funktion, beregner den kolonne, hvor den nuværende chip vil falde, hvis du klikker på det tidspunkt.på den måde bliver det lettere for brugeren at foretage et træk.den funktion, calculatecolumn (jf. næste skridt), returnerer den kolonne er du svævede. så vi beregne nye x holdning af chippen.derfor er vi mangedobler de currentcolumn kolonnen bredde.for registrering af chips i midten, vi er nødt til at tilføje, i kolonnen bredde divideret med 2. endelig vi mellem de nuværende chip til den position, vi har beregnet, privat funktion enterframehandler e: begivenhed): ugyldig (var - currentcolumn: uint = calculatecolumn (. mousex) var xposchip: uint = currentcolumn * columnwidth + columnwidth /2 tweener. addtween (currentchip (x: xposchip tid: 0,3 overgang "lineair"})}, tilføje træde ramme begivenhed lytter til konstruktør. her. addeventlistener (event.enter_frame, enterframehandler), trin 7: calculatecolumn funktion, det helpfunction får x holdning af mus og returnerer den kolonne tændstikker. hvis din mus x holdning er mindre end nul, så vender vi tilbage den første kolonne (0 værefor mange er nul - indeks).hvis din mus x holdning er mere end bredden af dit bord, vender vi tilbage til den sidste kolonne.hvis din mus x holdning er i bestyrelsen, vi del x position ved bredden af en kolonne, privat funktion calculatecolumn (mousexpos): uint (hvis (mousexpos < 0) (tilbagevenden 0} andre, hvis (mousexpos > dette. bredde) (tilbagevenden kolonner - 1) andet (tilbage mousexpos /columnwidth;}}, trin 8: boardclick funktion, denne funktion første kontrol som kolonne du klikkede (ved hjælp af beregne kolonne funktion, som jeg har forklaret i de foregående trin).,,, løkker gennem alle rækker, og så snart bestyrelsen [række] [columnclicked] = = 0 vi ved, den chip er markedsføres på det sted.kan du huske 0 i bestyrelsen system: placering er tomme. hvis vi finder det sted, hvor den chip er faldet, vi fylder det position i bestyrelsen vifte med antallet af de nuværende spiller (vi har brug for disse tal senere for at tjekke for vinderen), og vi sætter den chip med placechip funktion (forklaret i næste trin). endelig har vi greb den aktør (forklaret 2 skridt videre), og vi har en anden chip klar.tilbage er sikker på, at vi kommer ud for, loop. privat funktion boardclick e: mouseevent): ugyldig (var - columnclicked: uint = calculatecolumn (e.currenttarget. mousex) til (var - række: int = rows-1; linje > = 0, row...) (hvis (board (række] [columnclicked] = = 0) {karton [række] [columnclicked] = currentplayer; placechip (det nye punkt (ro, columnclicked)) toggleplayer(); putchipready(); tilbage}), tilsættes klik begivenhed til at lytte til konstruktør. her. addeventlistener (mouseevent.click, boardclick), trin 9: placechip funktion, denne funktion får række (position. x) og kolonne (position. y), hvor den chip har adgang til, derefter beregner y - og x afstand. distancey: man ganger rækken du sammen med en højde på en række.for registrering af chips er midtpunktet, vi er nødt til at tilføje den række højde divideret med 2., distancex anvender samme princip, så bruger vi tweener til mellem den nuværende chip til den rette holdning. privat funktion placechip (holdning: punkt): ugyldig (var - distancey: int = x * rowheight holdning. + rowheight /2, var distancex: int = holdning. y * columnwidth + columnwidth /2; tweener. addtween (currentchip (x: distancex, y: distancey tid: 0,7, overgang "easeoutbounce"})}, trin 10: toggleplayer funktion, denne funktion er ret ligetil.hvis den nuværende spiller er 1 skift til spiller 2, anden skifte tilbage til spiller 1. privat funktion toggleplayer(): ugyldig (hvis (currentplayer = = 1) (currentplayer = 2) andet (currentplayer = 1), på dette punkt kan man allerede sted, chips, men der er i øjeblikket ikke nogen til at tjekke, om en spiller er lykkedes at forbinde 4 chips.det næste skridt er at kode denne check. trin 11: checkforwinner funktion, at denne funktion 1 argument, den sidste placeret chip tilbage sandt eller falsk.den funktion, bruger 4 subfunctions som hver kontrol, en vinder. vi går gennem den holdning, for hver subfunction.hvis en af de 4 vender rigtigt, så har vi en vinder. privat funktion checkforwinner (holdning: punkt): boolean (hvis (verticalcheck (stilling) tilbage. hvis (horizontalcheck (stilling) tilbage. hvis (leftupdiagonalcheck (stilling) tilbage. hvis (rightupdiagonalcheck (stilling) tilbage. tilbage til falske}, trin 12: verticalcheck, for at kontrollere, om en vertikal forbindelse 4. vi behøver blot at se på de chips under den nuværende chip.(der kan ikke være en chip over det nuværende chip på dette punkt. vi først undersøge, om der er 3 steder under den nuværende chip.hvis ikke, er der ingen vej du kan forbinde 4, og vi vender forkert. hvis der er 3 eller flere steder under, vi starter en sløjfe, som går gennem tre rækker under.hvis en af dem under er fra den anden spiller vi ikke forbinde 4 - chips (return falske). hvis det kan være færdige, vi ved, at der er 4 forbundet (tilbage rigtigt). funktion verticalcheck (holdning: punkt): boolean {var række: uint = holdning. x, var uint kolonne: = holdning. y. var spiller: uint = bord [række] [kolonne]; hvis (række > = rækker - 3) (tilbagevenden falske} for (var - jeg: uint = række + 1 - < = række + 3; jeg + +) (hvis (board jeg] [kolonne].= aktør) {tilbage falske) tilbage.}, trin 13: horizontalcheck, hvad vi gør her, er den første check chips til venstre i det nuværende chip og chips på den rigtige side. derfor vi lokalitet en tæller med 1 (chip du bare, der er den første i række).så går vi til venstre, indtil vi når frem til en chip i en anden, og i mellemtiden tæller chips i den nuværende spiller. vi gør det samme i højre side.så hvis vi tæller er 4 eller mere har vi tilsluttet 4 - chips (tilbage rigtigt). funktion horizontalcheck (holdning: punkt): boolean {var række: uint = holdning. x var kolonne: uint = holdning. y. var spiller: uint = bord [række] [kolonne] var imod: uint = 1; (var - jeg: uint = column-1; jeg > = 0, jeg...) (hvis (bord [række] [i].= aktør) {pause.} mod + +) til (var - j: uint = kolonne + 1 j < kolonne j + +) (hvis (board (række] [j].= aktør) {pause.} mod +;} hvis (mod > = 4) (tilbage.} andre {tilbage falske), punkt 14: leftupdiagonalcheck, denne funktioner svarer til den horisontale check.den eneste forskel er, at vi nu se diagonalt., først går vi tilbage i opadgående retning: vi tæller dem af den nuværende spiller, og hvis vi støder på en chip i den anden spiller vi bryde ud.To make sure we don't go outside our board array the ,while, loop has to stop when our row or our column is less then 0.,We use the same principle to check the positions right downwards., function leftUpDiagonalCheck(position:Point):Boolean { \tvar player:uint = board[position.x][position.y]; \t\t \tvar row:Number = position.x - 1; \tvar column:Number = position.y - 1; \t\t \tvar counter:uint = 1; \twhile (row >= 0 && column >= 0) \t{ \t\tif (board[row][column] == player) \t\t{ \t\t\tcounter++; \t\t\trow--; \t\t\tcolumn--; \t\t} \t\telse \t\t{ \t\t\tbreak; \t\t} \t} \t\t \trow = position.x + 1; \tcolumn = position.y + 1; \t\t \twhile (row < rows && column < columns) \t{ \t\tif (board[row][column] == player) (mod + + + + + + kolonne, række;;} andre {pause.}} hvis (mod > = 4) (tilbage.} andre {tilbage falske}}, trin 15: rightupdiagonalcheck, denne funktion er næsten identiske med de tidligere funktion.The only difference is the direction of the diagonal we check., private function rightUpDiagonalCheck(position:Point):Boolean { \tvar player:uint = board[position.x][position.y]; \t \tvar row:Number = position.x + 1; \tvar column:Number = position.y - 1; \t\t \tvar counter:uint = 1; \t\t \twhile (row < rows && column >= 0) \t{ \t\tif (board[row][column] == player) \t\t{ \t\t\tcounter++; \t\t\trow++; \t\t\tcolumn--; \t\t} \t\telse \t\t{ \t\t\tbreak; \t\t} \t} \t\t \trow = position.x - 1; \tcolumn = position.y + 1; \twhile (row >= 0 && column < columns) \t{ \t\tif (board[row][column] == player) \t\t{ \t\t\tcounter++; \t\t\trow--; \t\t\tcolumn++; \t\t} \t\telse \t\t{ \t\t\t break; \t\t} \t} \tif(counter >=4) \t{ tilbage.} andre {tilbage falske}} trin 16: ajourføring af boardclick funktion, nu er vi nødt til at gennemføre den kode, vi lige har skrevet.efter vi den chip, vi tjekker en vinder.hvis vi har en vinder vi fjerner vores eventlisteners, så du ikke kan sætte en ny chip, og vi vise, hvem der har vundet (jf. næste skridt.hvis vi ikke har en vinder vi toggleplayer og sætte en ny chip klar. privat funktion boardclick e: mouseevent): ugyldig (var - columnclicked: uint = calculatecolumn (e.currenttarget. mousex) til (var - række: int = rows-1; linje > = 0, row...) (hvis (bord, - række] [columnclicked] = = 0) {karton [række] [columnclicked] = currentplayer; placechip (det nye punkt (ro, columnclicked)), hvis checkforwinner (det nye punkt (ro, columnclicked)) (denne. removeeventlistener (event.enter_frame, enterframehandler). removeeventlistener (mouseevent.click, boardclick); showwinnerdialog();} andre (toggleplayer(); putchipready();} tilbage}), trin 17: showwinnerdialog funktion, denne funktion blot tilføjer ennye tilfælde af winnerdialog, som man kan finde i biblioteket.hvis den nuværende spiller er 1 rød vinder, andre gule vinder. privat funktion showwinnerdialog(): ugyldig (var - dialogen: winnerdialog = nye winnerdialog(); var vinderen: string = (currentplayer = = 1). "red ":" den gule "dialog.txtwinner.text = vinder +" vinder!! "; dialog. x = (this.width - dialogen. bredde) /2; dialog. y = 100; dette. addchild (dialog)}, gå 18: skabe dokument klasse, skabe en ny actionscript fil og redde det med navnet "anvendelse". i denne klasse vi tilføje et tilfælde af connect4 klasse vi skrev til display - liste.glem ikke den pågældende argumenter., pakke (import flash.display.movieclip; import flash.events.event; offentlige klasse anvendelse strækker sig movieclip {offentlige funktion application(): ugyldig (var - connect4: connect4 = nye connect4 (7,6); connect4. x = (stage.stagewidth - connect4. bredde) /2; connect4. y = (stage.stageheight - connect4. højde) /2 + 50; dette. addchild (connect4)}}}, endelig, klik på det tidspunkt og det dokument, klasse "anvendelse"., konklusion, du har lige lært at skabe forbinde 4 spil, og hvor mange dimensioner kan gøre livet meget lettere.jeg håber, du nød den pædagogiske og takke dem for at læse.





Previous:
Next Page: