Мазмұны:

Arduino Touch Tic Tac Toe ойыны: 6 қадам (суреттермен)
Arduino Touch Tic Tac Toe ойыны: 6 қадам (суреттермен)

Бейне: Arduino Touch Tic Tac Toe ойыны: 6 қадам (суреттермен)

Бейне: Arduino Touch Tic Tac Toe ойыны: 6 қадам (суреттермен)
Бейне: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Маусым
Anonim
Image
Image
Arduino Touch Tic Tac Toe ойыны
Arduino Touch Tic Tac Toe ойыны
Arduino Touch Tic Tac Toe ойыны
Arduino Touch Tic Tac Toe ойыны
Arduino Touch Tic Tac Toe ойыны
Arduino Touch Tic Tac Toe ойыны

Құрметті достар, Arduino -ның басқа оқулығына қош келдіңіздер! Бұл егжей -тегжейлі оқулықта біз Arduino Tic Tac Toe ойынын құрамыз. Көріп отырғаныңыздай, біз сенсорлық экранды қолданамыз және біз компьютерге қарсы ойнаймыз. Tic Tac Toe сияқты қарапайым ойын - бұл ойын бағдарламалау мен жасанды интеллектке тамаша кіріспе. Біз бұл ойында жасанды интеллект алгоритмін қолданбайтын болсақ та, не себепті жасанды интеллект алгоритмдері күрделі ойындарда қажет екенін түсінеміз.

Arduino үшін ойындар жасау оңай емес және көп уақытты қажет етеді. Бірақ біз Arduino үшін қарапайым ойындар құра аламыз, себебі бұл қызықты және ол бізге жасанды интеллект сияқты бағдарламалаудың бірнеше жетілдірілген тақырыптарын зерттеуге мүмкіндік береді. Бұл керемет оқу тәжірибесі, соңында сіз балаларға арналған тамаша ойынға ие боласыз!

Енді осы жобаны құрайық.

1 -қадам: барлық бөлшектерді алыңыз

Image
Image
2.8
2.8

Бұл жобаны құру үшін келесі бөліктер қажет:

Arduino Uno ▶

2.8 дюймдік сенсорлы экран ▶

Жобаның құны өте төмен. Бұл бар болғаны 15 доллар

Бұл жобаны бастамас бұрын сенсорлық дисплей туралы мен дайындаған бейнені қараңыз. Мен оны осы нұсқаулыққа тіркедім. Бұл кодты түсінуге және сенсорлық экранды калибрлеуге көмектеседі.

2 -қадам: Arduino үшін 2,8 дюймдік сенсорлы дисплей

Image
Image
2.8
2.8
2.8
2.8

Мен бұл сенсорлық экранды banggood.com сайтынан тауып, оны кейбір жобаларымда қолдануға тырысу үшін сатып алуды шештім. Көріп отырғаныңыздай, дисплей арзан, бағасы шамамен 11 доллар.

Оны мына жерден алыңыз ▶

Дисплей 320x240 пиксель ажыратымдылығын ұсынады және қалқан ретінде келеді, бұл Arduino -мен қосылуды өте жеңілдетеді. Көріп отырғаныңыздай, дисплейде Arduino Uno цифрлық және аналогтық түйреуіштерінің барлығы дерлік қолданылады. Бұл қалқаны қолданған кезде бізде тек 2 цифрлық түйреуіш пен 1 аналогтық түйреуіш қалады. Бақытымызға орай, дисплей Arduino Mega -мен жақсы жұмыс істейді, сондықтан бізге көп түйреуіш қажет болған кезде Arduino Uno орнына Arduino Mega қолдануға болады. Өкінішке орай, бұл дисплей Arduino Due немесе Wemos D1 ESP8266 тақтасымен жұмыс істемейді. Қалқанның тағы бір артықшылығы - бұл micro SD ұяшығын ұсынады, оны пайдалану өте оңай.

3 -қадам: Жобаны құру және оны тексеру

Жобаны құру және оны тексеру
Жобаны құру және оны тексеру
Жобаны құру және оны тексеру
Жобаны құру және оны тексеру
Жобаны құру және оны тексеру
Жобаны құру және оны тексеру

Экранды Arduino Uno -ға қосқаннан кейін біз кодты жүктей аламыз және біз ойнауға дайынбыз.

Алдымен біз «Ойынды бастау» түймесін басамыз және ойын басталады. Алдымен Ардуино ойнайды. Содан кейін біз экранды түрту арқылы қимылымызды ойнай аламыз. Содан кейін Arduino өз қозғалысын ойнайды және т. Горизонталь, вертикаль немесе диагональ бойынша қатарға үш таңбаны қоюға қол жеткізген ойыншы жеңеді. Ойын аяқталғаннан кейін «Ойынды аяқтау» экраны пайда болады. Содан кейін ойынды қайтадан бастау үшін қайтадан ойнату түймесін басуға болады.

Arduino бұл ойында өте жақсы. Ол ойындардың көпшілігін жеңеді, немесе егер сіз өте жақсы ойыншы болсаңыз, ойын тең аяқталады. Мен бұл алгоритмді ойыншыға жеңіске жету үшін қателіктер жіберу үшін әдейі жасадым. Ойын кодына тағы екі жолды қосу арқылы біз Arduino -ны ойынды жоғалтуға мүмкіндік бермейміз. Бірақ 2 долларлық чип, Arduino процессоры адам миын қалай ұрады? Біз жасаған бағдарлама адам миынан ақылды ма?

4 -қадам: Ойын алгоритмі

Ойын алгоритмі
Ойын алгоритмі
Ойын алгоритмі
Ойын алгоритмі

Бұл сұраққа жауап беру үшін мен енгізген алгоритмді қарастырайық.

Компьютер әрқашан бірінші орында. Бұл шешім ғана Arduino -ның жеңіске жетуін жеңілдетеді. Бірінші қадам әрқашан бұрыш болып табылады. Arduino үшін екінші қадам - бұл ойыншының қозғалысына мүлдем мән бермейтін кездейсоқ бұрыш. Осы сәттен бастап, Arduino алдымен ойыншының келесі қозғалыста жеңе алатынын тексереді және бұл қозғалысты блоктайды. Егер ойыншы бір қозғалыста жеңе алмаса, ол қол жетімді болса, бұрыштық немесе қалған кездейсоқ қозғалысты ойнайды. Міне, бұл қарапайым алгоритм адам ойыншысын әр уақытта жеңе алады немесе ең нашар жағдайда ойын тең нәтижеге әкеледі. Бұл ойын ойнаудың ең жақсы алгоритмі емес, бірақ ең қарапайымының бірі.

Бұл алгоритмді Arduino -да оңай енгізуге болады, себебі Tic Tac Toe ойыны өте қарапайым, біз оны оңай талдап, шеше аламыз. Егер біз ойын ағашын жобаласақ, онда біз кейбір жеңіске жету стратегияларын таба аламыз және оларды кодта оңай енгізе аламыз немесе процессорға ойын ағашын нақты уақыт режимінде есептеуге және ең жақсы қозғалысты таңдауға рұқсат бере аламыз. Әрине, біз бұл ойында қолданатын алгоритм өте қарапайым, себебі ойын өте қарапайым. Егер біз шахмат үшін жеңімпаз алгоритм құруға тырыссақ, біз ең жылдам компьютерді қолдансақ та, ойын ағашын мың жылда есептей алмаймыз! Мұндай ойындар үшін бізге басқа тәсіл қажет, бізге жасанды интеллект алгоритмдері және әрине өңдеудің үлкен қуаты қажет. Бұл туралы толығырақ алдағы видеода.

5 -қадам: Жобаның коды

Жобаның коды
Жобаның коды

Жобаның кодын жылдам қарастырайық. Кодты құрастыру үшін бізге үш кітапхана қажет.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Сенсорлық экран:

Көріп отырғаныңыздай, қарапайым ойынның өзі 600 -ден астам кодты қажет етеді. Код күрделі, сондықтан мен оны қысқа оқулықта түсіндіруге тырыспаймын. Мен сізге Arduino қозғалысының алгоритмінің орындалуын көрсетемін.

Алдымен біз кездейсоқ екі бұрыш ойнаймыз.

<int firstMoves = {0, 2, 6, 8}; // бұл позицияларды алдымен пайдаланады (counter = 0; counter <4; counter ++) // Алғашқы ойналатын қозғалыстарды санау {if (board [firstMoves [counter]! = 0) // Алғашқы қимылды біреу ойнайды {movePlayed ++; }} do {if (жылжытады <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; if (board [c] == 0) {delay (1000); тақта [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Әрі қарай, әр турда ойыншының келесі қозғалыста жеңіске жететінін тексереміз.

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) 2 қайтару; else if (board [0] == 1 && board [1] == 0 && board [2] == 1) 1 қайтару; else if (board [1] == 1 && board [2] == 1 && board [0] == 0) 0 қайтару; else if (board [3] == 1 && board [4] == 1 && board [5] == 0) 5 қайтару; else if (board [4] == 1 && board [5] == 1 && board [3] == 0) 3 қайтару; else if (board [3] == 1 && board [4] == 0 && board [5] == 1) 4 қайтару; else if (board [1] == 0 && board [4] == 1 && board [7] == 1) 1 қайтару; басқасы 100 қайтарады; }

Егер иә, біз бұл қозғалысты бұғаттаймыз, көбінесе. Біз адам ойыншысына жеңіске жету үшін барлық қозғалыстарға кедергі жасамаймыз. Қандай қозғалыстар бұғатталмағанын таба аласыз ба? Қозғалысты блоктағаннан кейін біз қалған бұрышты немесе кездейсоқ қозғалысты ойнаймыз. Сіз кодты зерттей аласыз және өзіңіздің теңдесі жоқ алгоритміңізді оңай енгізе аласыз. Әдеттегідей, сіз осы нұсқаулықта бекітілген жобаның кодын таба аласыз.

ЕСКЕРТПЕ: Banggood екі дисплей драйверімен бірдей дисплей ұсынатындықтан, жоғарыдағы код жұмыс істемесе, initDisplay функциясын келесіге өзгертіңіз:

жарамсыз initDisplay ()

{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }

6 -қадам: Қорытынды ойлар мен жақсартулар

Қорытынды ойлар мен жетілдірулер
Қорытынды ойлар мен жетілдірулер

Көріп отырғаныңыздай, тіпті Arduino Uno көмегімен біз қарапайым ойындарға теңдесі жоқ алгоритм құра аламыз. Бұл жоба керемет, өйткені оны құру оңай, сонымен қатар жасанды интеллект пен ойын бағдарламалауға тамаша кіріспе. Болашақта мен Raspberry Pi -ді қолдана отырып, жасанды интеллектпен бірнеше жетілдірілген жобалар құруға тырысамын, сондықтан бізбен болыңыз! Мен бұл жоба туралы сіздің пікіріңізді білгім келеді.

Пікірлеріңізді төменде қалдырыңыз, егер сізге қызықты болса, нұсқаулықты ұнатуды ұмытпаңыз. Рахмет!

Ұсынылған: