Հիմնական նյութ
Դասընթաց․ (Ծրագրավորում) > Բաժին 4
Դաս 5: Making a memory gameՀիշողության խաղ․ միավորներ հավաքել ու հաղթել
Մեր «Հիշողության» խաղը գրեթե է ավարտված է։ Պակասում է միայն միավորների վաստակման հատվածը։ Եվ ահա այդ հատվածի կանոնների վերաբերյալ հիշեցում.
Խաղի նպատակն է այնպես անել, որ բոլոր սալիկները շրջված լինեն (օրինակ՝ գտիր բոլոր նման պատկերների զույգերը) փորձերի նվազագույն քանակությամբ։ Նշանակում է, որ փորձերի նվազագույն քանակը խոսում է ավելի լավ միավորների մասին։
Իսկ ինչպե՞ս ենք հետևում փորձի քանակներին։ Փորձը երկու սալիկների շրջումն է, որը համապատասխանում է մեր if բլոկին, որը ստուգում է
flippedTiles.length === 2
-ը։ Կարող ենք ավելացնել նոր ընդհանրական փոփոխական՝ numTries
, որն ավելացնում ենք այդ պայմանականի մեջ։ if (flippedTiles.length === 2) {
numTries++;
...
}
Մենք պետք է ցուցադրենք վաստակած միավորները խաղի ավարտին, երբ խաղացողը համապատասխանաբար զույգեր է ստեղծել բոլոր սալիկների համար։ Ինչպե՞ս ենք դա ստուգում։ Կա երկու տարբերակ՝
- Կրկնօրինակում ենք մեր սալիկների զանգվածները և ստուգում՝ արդյոք
isMatch
ևtrue
զույգը ճիշտ է ընտրված: - Օգտագործում ենք ընդհանրական փոփոխական, որպեսզի ստուգենք, թե որքան համապատասխան զույգ է խաղացողը գտել, իսկ հետո ստուգում ենք՝ արդյոք նա ստացել է բոլոր հնարավոր զույգերի ընդհանուր քանակը։
Մենք նախկինում ունեցել ենք այսպիսի քննարկում, և ես նախընտրել եմ շարունակել այն տարբերակով, որտեղ մենք ստիպված չենք յուրաքանչյուր քայլում կրկնօրինակել ամբողջ զանգվածը։ Արի այս անգամ էլ ընտրենք այս երկրորդ տարբերակը։
Սկզբում պետք է 0 դարձնենք
numMatches
-ի սկզբնական արժեքը։ Դա կատարում ենք այն նույն վայրում, որտեղ սկզբնական արժեքներ ենք վերագրում մեր մնացած բոլոր ընդհանրական խաղերի ձևի փոփոխականներին։var numMatches = 0;
Հետո
if
բլոկի համապատասխան զույգ սալիկների ներսում տեղադրում ենք numMatches
փոփոխականը՝if (flippedTiles[0].face === flippedTiles[1].face) {
flippedTiles[0].isMatch = true;
flippedTiles[1].isMatch = true;
flippedTiles.length = 0;
numMatches++;
}
draw
ֆունկցիայի վերջում ստուգում ենք՝ արդյոք խաղացողը գտել է բոլոր համապատասխան զույգերը և հետո օգտատիրոջը ցուցադրում ենք շնորհավորանքի որևէ խոսք՝if (numMatches === tiles.length/2) {
fill(0, 0, 0);
text(«Բոլորը գտել ես» + numTries + " tries"-ում,
20, 360);
}
Կարող ես փորձարկել այն ներքևի հատվածում, սակայն գուցե որոշ ժամանակ պահանջվի, որպեսզի հաղթես։ (Իհարկե, առանց որևէ վիրավորանքի, բայց ինձնից ևս որոշ ժամանակ է պահանջվել հաղթելու համար)
Ահա մի հուշում՝ քեզ օգնելու համար, երբ խաղի որոշ հատվածներ փորձարկելիս դժվարությամբ ես կարողանում հասնել նրանց։ Ժամանակավորապես փոփոխիր քո խաղը, որպեսզի ավելի արագ վերջացնես և հաղթես։ Օրինակ՝ այս խաղում
NUM_ROWS
-ը և NUM_COLS
-ը փոխիր ավելի փոքր թվերով, որպեսզի ավելի արագ վերջացնես։ Այժմ փորձիր դա ներքևում։Ուզո՞ւմ ես միանալ խոսակցությանը։
Առայժմ հրապարակումներ չկան։