Բովանդակություն:
- Քայլ 1: Ստացեք բոլոր մասերը
- Քայլ 2. Arduino- ի 2.8 դյույմանոց գունավոր ցուցադրում:
- Քայլ 3. Նախագծի կառուցում և փորձարկում:
- Քայլ 4. Խաղի ալգորիթմ
- Քայլ 5. Նախագծի ծածկագիրը
- Քայլ 6: Վերջնական մտքեր և բարելավումներ
Video: Arduino Touch Tic Tac Toe խաղ. 6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Հարգելի ընկերներ, բարի գալուստ Arduino- ի հերթական ձեռնարկը: Այս մանրամասն ձեռնարկում մենք պատրաստվում ենք կառուցել Arduino Tic Tac Toe խաղ: Ինչպես տեսնում եք, մենք օգտագործում ենք սենսորային էկրան և խաղում ենք համակարգչի դեմ: Tic Tac Toe- ի նման պարզ խաղը հիանալի ներածություն է խաղերի ծրագրավորման և Արհեստական բանականության համար: Թեև այս խաղում մենք չենք օգտագործի արհեստական բանականության որևէ ալգորիթմ, մենք կհասկանանք, թե ինչու են արհեստական բանականության ալգորիթմները պահանջվում ավելի բարդ խաղերում:
Arduino- ի համար խաղեր մշակելը հեշտ չէ և պահանջում է շատ ժամանակ: Բայց մենք կարող ենք Arduino- ի համար կառուցել մի քանի պարզ խաղեր, քանի որ դա զվարճալի է, և դա թույլ կտա մեզ ուսումնասիրել ծրագրավորման ավելի առաջադեմ թեմաներ, ինչպես արհեստական բանականությունը: Սա հիանալի ուսուցման փորձ է, և վերջում դուք կունենաք գեղեցիկ խաղ երեխաների համար:
Եկեք հիմա կառուցենք այս նախագիծը:
Քայլ 1: Ստացեք բոլոր մասերը
Այս նախագծի կառուցման համար անհրաժեշտ մասերը հետևյալն են.
An Arduino Uno ▶
2.8 դյույմանոց սենսորային էկրան ▶
Նախագծի արժեքը շատ ցածր է: Այն ընդամենը 15 դոլար է:
Նախքան այս նախագիծը կառուցելը, խնդրում ենք դիտել իմ պատրաստած տեսանյութը սենսորային էկրանին: Ես կցել եմ այս հրահանգին: Դա կօգնի ձեզ հասկանալ ծածկագիրը և ճշգրտել սենսորային էկրանը:
Քայլ 2. Arduino- ի 2.8 դյույմանոց գունավոր ցուցադրում:
Ես գտա այս սենսորային էկրանը banggood.com կայքում և որոշեցի գնել այն, որպեսզի փորձեմ օգտագործել այն իմ որոշ նախագծերում: Ինչպես տեսնում եք, էկրանն էժան է, այն արժե մոտ $ 11:
Ստացեք այստեղ ▶
Theուցադրումն առաջարկում է 320x240 պիքսել թույլատրելիություն և գալիս է որպես վահան, ինչը չափազանց հեշտ է դարձնում կապը Arduino- ի հետ: Ինչպես տեսնում եք, էկրանն օգտագործում է Arduino Uno- ի գրեթե բոլոր թվային և անալոգային կապերը: Այս վահանն օգտագործելիս մեզ մնում է միայն 2 թվային կապում և 1 անալոգային կապում մեր նախագծերի համար: Բարեբախտաբար, ցուցադրումը լավ է աշխատում նաև Arduino Mega- ի հետ, ուստի մենք, երբ ավելի շատ կապում ենք պետք, կարող ենք օգտագործել Arduino Mega- ն Arduino Uno- ի փոխարեն: Unfortunatelyավոք, այս էկրանը չի աշխատում Arduino Due- ի կամ Wemos D1 ESP8266 տախտակի հետ: Վահանի մեկ այլ առավելությունն այն է, որ այն առաջարկում է միկրո SD բնիկ, որը շատ հեշտ է օգտագործել:
Քայլ 3. Նախագծի կառուցում և փորձարկում:
Էկրանը Arduino Uno- ին միացնելուց հետո կարող ենք բեռնել ծածկագիրը և պատրաստ ենք խաղալ:
Սկզբում մենք սեղմում ենք «Սկսել խաղը» կոճակը, և խաղը սկսվում է: Առաջինը խաղում է Arduino- ն: Այնուհետև մենք կարող ենք խաղալ մեր քայլը ՝ պարզապես դիպչելով էկրանին: Arduino- ն այնուհետև կատարում է իր քայլը և այլն: Խաղացողը, ում կհաջողվի հորիզոնական, ուղղահայաց կամ անկյունագծային շարքերում տեղադրել իրենց երեք նշանները, շահում է խաղը: Երբ խաղն ավարտվում է, հայտնվում է Game Over էկրանը: Այնուհետև կարող ենք սեղմել play again կոճակը ՝ խաղը նորից սկսելու համար:
Arduino- ն շատ լավ է խաղում այս խաղում: Այն կհաղթի խաղերի մեծ մասում, կամ եթե դուք շատ լավ խաղացող եք, խաղը կավարտվի ոչ -ոքի: Ես միտումնավոր նախագծեցի այս ալգորիթմը որոշ սխալներ թույլ տալու համար, որպեսզի մարդկային խաղացողին հաղթելու հնարավորություն տամ: Խաղի կոդին ավելացնելով ևս երկու տող, մենք կարող ենք Arduino- ին անհնար դարձնել պարտությունը: Բայց ինչպես կարող է 2 $ չիպը ՝ Arduino պրոցեսորը, ծեծել մարդու ուղեղը: Արդյո՞ք մեր մշակած ծրագիրը խելացի է, քան մարդու ուղեղը:
Քայլ 4. Խաղի ալգորիթմ
Այս հարցին պատասխանելու համար եկեք նայենք իմ կիրառած ալգորիթմին:
Համակարգիչը միշտ առաջինն է խաղում: Միայն այս որոշումը Arduino- ի համար խաղը շատ ավելի հեշտ է դարձնում հաղթելը: Առաջին քայլը միշտ անկյունային է: Երկրորդ քայլը Arduino- ի համար նույնպես պատահական անկյուն է մնացածից ՝ ընդհանրապես չմտածելով խաղացողի շարժման մասին: Այս պահից սկսած, Arduino- ն նախ ստուգում է, արդյոք խաղացողը կարող է հաղթել հաջորդ քայլում և արգելափակում է այդ քայլը: Եթե խաղացողը չի կարող հաղթել մեկ քայլով, ապա այն խաղարկում է անկյունային, եթե առկա է կամ պատահական ՝ մնացածից: Վերջ, այս պարզ ալգորիթմը կարող է ամեն անգամ հաղթել մարդ խաղացողին կամ վատագույն դեպքում խաղը ոչ -ոքիի կհանգեցնի: Սա ոչ թե tic tac toe խաղի լավագույն ալգորիթմն է, այլ ամենապարզերից մեկը:
Այս ալգորիթմը կարելի է հեշտությամբ իրականացնել Arduino- ում, քանի որ Tic Tac Toe խաղը շատ պարզ է, և մենք հեշտությամբ կարող ենք այն վերլուծել և լուծել: Եթե մենք նախագծում ենք խաղի ծառը, մենք կարող ենք գտնել որոշ հաղթող ռազմավարություններ և հեշտությամբ դրանք իրականացնել կոդի մեջ, կամ մենք կարող ենք թույլ տալ, որ պրոցեսորը հաշվարկի խաղի ծառը իրական ժամանակում և ինքնուրույն ընտրի լավագույն քայլը: Իհարկե, այն ալգորիթմը, որը մենք օգտագործում ենք այս խաղում, շատ պարզ է, քանի որ խաղը շատ պարզ է: Եթե մենք փորձենք նախագծել շախմատի հաղթող ալգորիթմ, նույնիսկ եթե մենք օգտագործում ենք ամենաարագ համակարգիչը, մենք չենք կարող հաշվել խաղի ծառը հազար տարվա ընթացքում: Նման խաղերի համար մեզ այլ մոտեցում է պետք, մեզ պետք են Արհեստական բանականության որոշ ալգորիթմներ և, իհարկե, հսկայական մշակման հզորություն: Այս մասին ավելին ՝ ապագա տեսանյութում:
Քայլ 5. Նախագծի ծածկագիրը
Եկեք արագ նայենք նախագծի ծածկագրին: Մեզ պետք է երեք գրադարան, որպեսզի ծածկագիրը կազմվի:
- Adafruit TFTLCD ՝
- Adafruit GFX ՝
- Սենսորային էկրան ՝
Ինչպես տեսնում եք, նույնիսկ այսպիսի պարզ խաղը պահանջում է ավելի քան 600 տող կոդ: Կոդը բարդ է, այնպես որ ես չեմ փորձի այն բացատրել կարճ ձեռնարկում: Չնայած ձեզ ցույց կտամ Arduino- ի քայլերի ալգորիթմի իրականացումը:
Սկզբում մենք խաղում ենք երկու պատահական անկյունային:
<int firstMoves = {0, 2, 6, 8}; // առաջին հերթին կօգտագործի այս դիրքերը (հաշվիչ = 0; հաշվիչ <4; հաշվիչ ++) // Հաշվեք առաջին քայլերը, որոնք խաղացել են {if (տախտակ [firstMoves [counter]! = 0) // Առաջին քայլը կատարում է մեկը {movesPlayed ++; }} անել {if (շարժումներ <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (տախտակ [c] == 0) {ուշացում (1000); տախտակ [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); բ = 1; }}
Հաջորդը, յուրաքանչյուր տուրում մենք ստուգում ենք, արդյոք խաղացողը կարող է հաղթել հաջորդ քայլին:
int checkOpponent ()
{if (տախտակ [0] == 1 && տախտակ [1] == 1 && տախտակ [2] == 0) վերադարձ 2; այլապես եթե (տախտակ [0] == 1 && տախտակ [1] == 0 && տախտակ [2] == 1) վերադարձնել 1; այլապես եթե (տախտակ [1] == 1 && տախտակ [2] == 1 && տախտակ [0] == 0) վերադարձնել 0; այլապես, եթե (տախտակ [3] == 1 && տախտակ [4] == 1 && տախտակ [5] == 0) վերադարձնել 5; այլապես, եթե (տախտակ [4] == 1 && տախտակ [5] == 1 && տախտակ [3] == 0) վերադարձնել 3; այլապես եթե (տախտակ [3] == 1 && տախտակ [4] == 0 && տախտակ [5] == 1) վերադարձնել 4; այլապես եթե (տախտակ [1] == 0 && տախտակ [4] == 1 && տախտակ [7] == 1) վերադարձնել 1; այլապես վերադարձնել 100; }
Եթե այո, ապա մենք արգելափակում ենք այդ քայլը, շատ դեպքերում: Մենք չենք արգելափակում բոլոր քայլերը, որպեսզի մարդկային խաղացողին հաղթելու հնարավորություն տանք: Կարո՞ղ եք գտնել, թե որ շարժումներն արգելափակված չեն: Քայլը արգելափակելուց հետո մենք խաղում ենք մնացած անկյուն կամ պատահական քայլ: Դուք կարող եք ուսումնասիրել ծածկագիրը և հեշտությամբ իրականացնել ձեր սեփական աննման ալգորիթմը: Ինչպես միշտ, դուք կարող եք գտնել ծրագրի կոդը, որը կցված է այս ուսանելի:
ՈEՇԱԴՐՈԹՅՈՆ. Քանի որ Banggood- ն առաջարկում է նույն էկրանը երկու տարբեր ցուցադրման վարորդներով, եթե վերը նշված կոդը չի գործում, փոխեք initDisplay գործառույթը հետևյալին
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Քայլ 6: Վերջնական մտքեր և բարելավումներ
Ինչպես տեսնում եք, նույնիսկ Arduino Uno- ի միջոցով մենք կարող ենք կառուցել անպարտելի ալգորիթմ պարզ խաղերի համար: Այս նախագիծը հիանալի է, քանի որ այն կառուցելը հեշտ է, և միևնույն ժամանակ հիանալի ներածություն Արհեստական բանականության և խաղերի ծրագրավորման մեջ: Ես կփորձեմ ապագայում Արհեստական բանականության հետ ավելի առաջադեմ նախագծեր կառուցել `օգտագործելով ավելի հզոր Raspberry Pi- ն, այնպես որ մնացեք լարված: Ես կցանկանայի լսել ձեր կարծիքը այս նախագծի վերաբերյալ:
Խնդրում ենք տեղադրել ձեր մեկնաբանությունները ստորև և չմոռանաք հավանել ուսուցանվողը, եթե ձեզ հետաքրքրում է: Շնորհակալություն
Խորհուրդ ենք տալիս:
Python Tic Tac Toe խաղ. 4 քայլ
Python Tic Tac Toe խաղ. Python tic tac toe խաղ այս խաղը պատրաստված է համակարգչային լեզվով Python- ում օգտագործել են python խմբագիր, որը կոչվում է. Pycharm կարող եք օգտագործել նաև սովորական python կոդի խմբագիր
Էլեկտրոնային խաղ Tic-Tac-Toe խաղ փայտե տուփի մեջ. 5 քայլ
Էլեկտրոնային խաղ Tic-Tac-Toe- ը փայտե տուփի մեջ
Microbit Tic Tac Toe խաղ. 4 քայլ (նկարներով)
Microbit Tic Tac Toe խաղ. Այս նախագծի համար իմ գործընկերը `@descartez- ը և ես, ստեղծեցինք հիանալի tic tac toe խաղ` օգտագործելով microbits- ի ռադիոակտիվությունը: Եթե նախկինում չեք լսել միկրոբիտների մասին, դրանք հիանալի միկրոկոնտրոլեր են, որոնք նախատեսված են երեխաներին ծրագրավորում սովորեցնելու համար: Նրանք
3D4x խաղ. 3D 4x4x4 Tic-Tac-Toe ՝ 5 քայլ (նկարներով)
3D4x խաղ. 3D 4x4x4 Tic-Tac-Toe. Հոգնե՞լ եք նույն, հին, ձանձրալի, երկչափ tic-tac-toe խաղալուց: Դե, մենք ունենք լուծում ձեզ համար: Tic-tac-toe 3 չափսերով !!! 2 խաղացողների համար, այս 4x4x4 խորանարդում, ստացեք 4 LED անընդմեջ (ցանկացած ուղղությամբ) և շահեք: Դուք հասցնում եք: Դուք պլանավորում եք
Ինչպես կատարել Tic Tac Toe խաղ ՝ օգտագործելով Swift- ը Xcode- ով ՝ 5 քայլ
Ինչպես կատարել Tic Tac Toe խաղ ՝ օգտագործելով Swift- ը Xcode- ով. Այս Swift ձեռնարկում ես ձեզ ցույց կտամ, թե ինչպես ստեղծել Tic Tac Toe հավելված: Այս ծրագիրը չափազանց պարզ է և հիանալի նախագիծ է ցանկացած սկսնակի համար: Ես ձեռնարկը կբաժանեմ երեք քայլի ՝ 1. Օբյեկտների ստեղծում 2. Օբյեկտների կապը կոդի հետ 3. Գ