Բովանդակություն:
- Քայլ 1: Նյութեր
- Քայլ 2. Getանոթացեք ծրագրին - խորհուրդ
- Քայլ 3. Getանոթացեք ծրագրին `սալիկ
- Քայլ 4: Getանոթացեք --րագիրը - խաղ
- Քայլ 5. Կարևոր մեթոդներ. Շարժում
Video: Programրագրեք ձեր սեփականը 2048 խաղ W/Java !: 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Ըստ PranP1 Իմ (Թերի) SiteFollow Ավելին հեղինակի կողմից.
Ես սիրում եմ 2048 խաղը: Եվ ես որոշեցի ծրագրավորել իմ սեփական տարբերակը:
Այն շատ նման է իրական խաղին, բայց ինքս այն ծրագրավորելը ինձ ազատություն է տալիս փոխելու այն, ինչ ուզում եմ, երբ ուզում եմ: Եթե ես ուզում եմ 5x5 խաղ տիպիկ 4x4- ի փոխարեն, ապա «Տախտակ» կոնստրուկտորի միջոցով օգտագործվող պարզ փոփոխությունը թույլ կտա դա անել: Ասեք, որ ես ուզում եմ խաղը ավելի բարդացնել ՝ ավելացնելով կտորներ այն դիրքերում, որոնք խաղացողի համար կդարձնեն այն առավել բարդ, քան պատահական: Օգտագործելով պարզ ալգորիթմ, ես կարող եմ դա անել: Թեև ես չեմ լուսաբանի այս հրահանգի այս բոլոր փոփոխությունները, բայց ես մտադիր եմ ավելի շատ ավելացնել:
Սակայն առայժմ մենք ծրագրելու ենք ձեր տիպիկ 2048 թվականի խաղը:
Եկեք սկսենք!
(Կողքի նշում. Այս հրահանգը պահանջում է ծրագրավորման չափավոր իմացություն `մասնավորապես Java- ի հետ)
Քայլ 1: Նյութեր
Այս նախագծի համար ձեզ շատ բան պետք չի լինի, քանի որ այն պարզապես ծրագրավորման քայլ է:
Նյութեր:
- Նոթբուք
- Խավարում (կամ ձեր ընտրած ցանկացած IDE)
Այո. Վերջ:
Քայլ 2. Getանոթացեք ծրագրին - խորհուրդ
Ես իմ ամբողջ ծածկագիրը վերբեռնեցի GitHub - ստուգեք այն այստեղ ՝
Ես խաղը բաժանեցի 3 դասի ՝ տախտակ, սալիկ և խաղ:
Տախտակ:
Նկարագրություն. Տախտակի դասը զբաղվում է խաղատախտակով, ստեղծելով «Կղմինդր» տարրերի զանգված, ստանալով ընթացիկ հաշիվը և ամենաբարձր սալիկը և զանգվածը դնելով տողի մեջ (հետագայում օգտագործվելու է «Խաղ» -ում): Տրամաբանության մեծ մասը նույնպես այստեղ է, դասը տրամադրում է մեթոդներ 2 -րդ և 4 -երը ձվադրելու պատահական վայրերում, վեր, վար, ձախ և աջ տեղաշարժվելու և խաղացողներին տեղյակ պահելու, երբ խաղն ավարտված է:
Կոնստրուկտորներ
/ * Լռելյայն կոնստրուկտոր խորհրդի համար - ստեղծում է 4x4 մատրիցա */
հանրային խորհուրդ () {…}
/ * Board for Constructor - ստեղծում է մատրիցա `նշված ցանցի չափսերով */
հանրային խորհուրդ (int grids) {…}
Մեթոդներ
/ * Getter մեթոդը, որը վերադարձնում է խորհուրդը */
հրապարակային սալիկ getBoard () {…}
/ * Getter մեթոդը, որը վերադարձնում է հաշիվը */
public int getScore () {…}
/ * Գտնում է գրատախտակի ամենաբարձր սալիկը և վերադարձնում այն */
public int getHighTile () {…}
/ * Տախտակը տպում է վահանակի վրա `փորձարկման նպատակով */
հրապարակային դատարկ տպագիր () {…}
/ * Վերադարձնում է տախտակը որպես տող - օգտագործվում է GUI- ում */
public String toString () {…}
/ * Ձգում է 2 (կամ 4) դատարկ տարածության վրա, երբ շարժում է կատարվում */
public void spawn () {…}
/ * Ստուգում է, թե արդյոք տախտակն ամբողջությամբ մթագնել է, և եթե այն այդպես է, դա խաղացողներին կխթանի վերսկսել */
հանրային բուլյան blackOut () {…}
/ * Ստուգում է, արդյոք խաղը ավարտված է, երբ տախտակը մթագնում է, և սալիկներից ոչ մեկը չի կարող համատեղվել */
հանրային բուլյան gameOver () {…}
/ * Calանգահարվում է «w» կամ վերև սլաքը սեղմելիս ՝ «վեր» պարամետրով տախտակի յուրաքանչյուր սալիկի համար կանչում է «verticalMove» */
հանրային դատարկություն () {…}
/ * Ledանգահարվում է «s» կամ ներքև սլաքը սեղմելու դեպքում - կանչում է «verticalMove» տախտակի յուրաքանչյուր սալիկի համար «down» */public void down () {…}
/ * Ledանգահարվում է 'd' կամ աջ սլաքը սեղմելիս `կանչում է 'horizontalMove' տախտակի յուրաքանչյուր սալիկի համար 'right' * պարամետրով/public void right () {…}
/ * Calանգահարվում է 'a' կամ ձախ սլաքը սեղմելիս `կանչում է 'horizontalMove' տախտակի յուրաքանչյուր սալիկի համար 'ձախ' պարամետրով */
public void left () {…}
/* Համեմատում է երկու սալիկների արժեքները միասին, և եթե դրանք նույնն են կամ եթե մեկը հավասար է 0 -ի (պարզ սալիկ) - դրանց արժեքները գումարվում են (պայմանով, որ մեր համեմատած սալիկները երկու տարբեր սալիկներ են և շարժվում են համապատասխան ուղղությամբ) - ռեկուրսիվ կերպով շարժվում է շարքով */
public void horizontalMove (int տող, int col, String direction) {…}
/* Համեմատում է երկու սալիկների արժեքները միասին, և եթե դրանք նույնն են կամ եթե մեկը հավասար է 0 -ի (պարզ սալիկ) - դրանց արժեքները գումարվում են (պայմանով, որ մեր համեմատած սալիկները երկու տարբեր սալիկներ են և շարժվում են համապատասխան ուղղությամբ) - ռեկուրսիվ շարժվում է սյունակում */
public void verticalMove (int տող, int col, լարային ուղղություն) {…}
Այո, դա շատ մեթոդներ են, բայց մի անհանգստացեք, շատերը շատ հեշտ է հասկանալ: Բացի այդ, «Տախտակ» դասը ամենաբարդն է, ուստի դրանից հետո ամեն ինչ համեմատաբար պարզ կլինի:
Քայլ 3. Getանոթացեք ծրագրին `սալիկ
Սալիկ:
Նկարագրություն. Սալիկների դասը վերաբերում է առանձին սալիկներին և ամենափոքրն է բոլոր դասերից: Յուրաքանչյուր սալիկ ունի ամբողջ արժեք և գույն: Այն ունի երկու կոնստրուկտոր, որոնք ստեղծում են 0 արժեքի սալիկներ (կանխադրված) կամ #արժեք: Մեթոդները հիմնականում ինքնաբացատրվող են, իսկ «հավաքող» և «սեթեր» մեթոդները կազմում են ընդհանուրի մեծ մասը:
Կոնստրուկտորներ
/ * Կառուցում է 0 * արժեքով հիմնական սալիկ
հանրային սալիկ () {…}
/ * Կառուցում է սալիկ ՝ թվի արժեքով */
հանրային սալիկ (int համար) {…}
Մեթոդներ
/ * Ստանում է սալիկի արժեքը */
public int getValue () {…}
/ * Սահմանում է սալիկի արժեքը - օգտագործվում է երկու սալիկ միասին ավելացնելիս */
public void setValue (int value) {…}
/ * Ներկայացնում է կղմինդրը որպես տող - օգտագործվում է GUI- ում */
public String toString () {…}
/ * Սահմանում է սալիկի գույնը `ելնելով դրա արժեքից */
public void setColor () {…}
/ * Ստանում է սալիկի գույնը */
public void getColor () {…}
Քայլ 4: Getանոթացեք --րագիրը - խաղ
Խաղ
Խաղերի դասը ներառում է հիմնական մեթոդը, GUI մեթոդների մեծ մասը և հիմնական փոխազդեցությունները: Այն տևում է ինչպես սալիկի, այնպես էլ խորհրդի դասերը և հնարավորություն է տալիս նրանց աշխատել միասին:
Կոնստրուկտորներ
Ոչ ոք
Մեթոդներ
/ * տեղադրում է GUI- ն համապատասխան չափերով և ավելացնում է հիմնական ունկնդիրը */
հանրային ստատիկ դատարկություն setUpGUI () {…}
/ * Ստուգում է ՝ արդյոք wasd կամ arrow ստեղները սեղմված են և կատարում է համապատասխան գործողություններ. Թարմացնում է JFrame- ը ամեն քայլափոխի */
public void keyPressed (KeyEvent e) {…}
/ * Ներկում է GUI- ն մի շարք լարերով, տախտակով, սալիկներով և ապահովում, որ դրանք վերաներկվեն, երբ խաղը ավարտվի */
հանրային դատարկ ներկ (գրաֆիկա g) {…}
/ * նկարում է առանձին սալիկ `կոչված ներկի մեթոդից */
public void drawTiles (Graphics g, Tile tile, int x, int y) {…}
/ * Հիմնական մեթոդը - ստեղծում է GUI և սկսում խաղը */
public static void main (String args) {…}
Քայլ 5. Կարևոր մեթոդներ. Շարժում
Շարժման մեթոդներն ամենակարևորն են հասկանալու համար, բայց լավ նորությունն այն է, երբ դուք հասկանում եք ուղղահայաց շարժումները, կարող եք այդ հասկացողությունը կիրառել հորիզոնական շարժումների վրա: Իրականում, ուղղահայաց շարժման երեք մեթոդները ճիշտ նույնն են, ինչ երեք հորիզոնական մեթոդների շարժումները, բացառությամբ մեկի `տողերի, մյուսը` սյուների միջև: Այդ պատճառով եկեք կենտրոնանանք միայն ուղղահայաց շարժման մեթոդների վրա:
private void verticalMove (int տող, int col, լարային ուղղություն)
{Սալիկի սկզբնական = տախտակ [եզրագիծ] [col]; Սալիկի համեմատում = տախտակ [տող] [սյուն]; if (initial.getValue () == 0 || initial.getValue () == compare.getValue ()) {if (տող> սահման || (ուղղություն.հավասար («ներքև») && (տող <սահման))) {int addScore = initial.getValue () + compare.getValue (); if (initial.getValue ()! = 0) {միավոր += addScore; } initial.setValue (addScore); compare.setValue (0); }} այլ {if (direction.equals ("down")) {border--; } else {սահման ++; } verticalMove (տող, սյուն, ուղղություն); }}
Վերը նշված մեթոդը ՝ verticalMove, կոչվում է «վեր» և «վար» մեթոդներով: Եկեք նայենք «վեր» մեթոդին:
հանրային դատարկություն ()
{for (int i = 0; i <grids; i ++) {border = 0; for (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "up"); }}}}}
Այս մեթոդը անցնում է ամբողջ տախտակի միջով և յուրաքանչյուր սալիկի համար անվանում է verticalMove «վեր» պարամետրով: verticalMove- ն այնուհետև համեմատում է «j» և «i» դիրքում գտնվող սալիկը սալիկի հետ «եզր» և «i» դիրքերում: Եթե երկուսը հավասար են, դրանք համակցված են: Եթե դրանք չլինեն, եզրագծի սալիկն ավելանում է 1 -ով (քանի որ տեղում պարամետրը «վեր» է), և verticalMove- ը կրկին կանչվում է:
Խորհուրդ ենք տալիս:
Կատարելով ձեր սեփականը (սղոց) Կրկնակի LED լուսամփոփ: 4 քայլ
Կատարելով ձեր սեփականը (սղոց) Կրկնակի LED լուսամփոփ: Այսօր ես ձեզ ցույց կտամ, թե ինչպես պատրաստել Կրկնակի LED Dimmer- ը ընդամենը 555 տայմեր չիպերով `ընդհանուր բաղադրիչներով: կամ N-Channel), որը կարգավորում է լուսադիոդի պայծառությունը, սա օգտագործում է երկու MOS
Ստեղծեք ձեր սեփականը պարզ թերմին. 4 քայլ (նկարներով)
Ստեղծեք ձեր սեփականը պարզ Թերեմին. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես է աշխատում Թերմինի էլեկտրոնային գործիքը և ինչպես կարող ենք դրա պարզ տարբերակը ստեղծել 2 IC- ի և ընդամենը մի քանի լրացուցիչ բաղադրիչների օգնությամբ: Theանապարհին մենք կխոսենք տատանումների տեսակների, մարմնի տարողության մասին
Programրագրեք ձեր Arduino- ն Android սարքով Bluetooth- ով. 6 քայլ (նկարներով)
Programրագրեք ձեր Arduino- ն Android սարքով Bluetooth- ի միջոցով. Դա շատ պարզ է և այնքան էժան: Նաև մեզ թույլ է տալիս ծրագրավորել մեր Arduino- ն այնտեղ, որտեղ երբևէ ցանկանում ենք անլար bluetooth- ով … Այսպիսով
Ստեղծեք ձեր սեփականը (մի տեսակ) Թափանցիկ ցուցադրում `7 քայլ
Ստեղծեք ձեր սեփականը (մի տեսակ) թափանցիկ էկրան. Այնուամենայնիվ, կան մի քանի ոչ -ոքի հետքեր: Նախ, պարզապես այդքան շատ տարբերակներ չկան: Եվ երկրորդ, քանի որ դրանք սովորաբար OLED էկրաններ են, կարող են
Programրագրեք ձեր համակարգչին ինքնաբերաբար անջատել `նշելով, թե որ ժամին եք ուզում դա անել: 4 քայլ
Programրագրեք ձեր համակարգչին ինքնաբերաբար անջատելու համար ՝ նշելով, թե որ ժամին եք ուզում դա անել. մեկ գիշերվա ընթացքում, ես չէի ուզում իմ համակարգիչը միացված պահել ներբեռնումներն ավարտելուց հետո և գիշերը