Съдържание:
- Стъпка 1: Вземете всички части
- Стъпка 2: 2.8 "сензорен цветен дисплей за Arduino
- Стъпка 3: Изграждане на проекта и неговото тестване
- Стъпка 4: Алгоритъмът на играта
- Стъпка 5: Код на проекта
- Стъпка 6: Последни мисли и подобрения
Видео: Arduino Touch Tic Tac Toe Игра: 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Скъпи приятели, добре дошли в друг урок за Arduino! В този подробен урок ще изградим игра на Arduino Tic Tac Toe. Както можете да видите, ние използваме сензорен екран и играем срещу компютъра. Една проста игра като Tic Tac Toe е чудесно въведение в програмирането на игри и изкуствения интелект. Въпреки че няма да използваме никакви алгоритми за изкуствен интелект в тази игра, ще разберем защо алгоритмите за изкуствен интелект са необходими в по -сложни игри.
Разработването на игри за Arduino не е лесно и изисква много време. Но ние можем да създадем няколко прости игри за Arduino, защото е забавно и ще ни позволи да изследваме някои по -напреднали теми за програмиране, като изкуствен интелект. Това е страхотно учене и в края ще имате приятна игра за децата!
Нека сега изградим този проект.
Стъпка 1: Вземете всички части
Частите, необходими за изграждането на този проект, са следните:
Arduino Uno ▶
2.8”сензорен екран ▶
Цената на проекта е много ниска. Това е само 15 $
Преди да се опитате да изградите този проект, моля, вижте подготвеното от мен видео за сензорния дисплей. Прикачих го в тази инструкция. Това ще ви помогне да разберете кода и да калибрирате сензорния екран.
Стъпка 2: 2.8 "сензорен цветен дисплей за Arduino
Открих този сензорен екран на banggood.com и реших да го купя, за да опитам да го използвам в някои от моите проекти. Както можете да видите, дисплеят е евтин, струва около 11 долара.
Вземете го тук ▶
Дисплеят предлага резолюция 320x240 пиксела и идва като щит, който прави връзката с Arduino изключително лесна. Както можете да видите, дисплеят използва почти всички цифрови и аналогови щифтове на Arduino Uno. Когато използваме този щит, ние имаме само 2 цифрови пина и 1 аналогов щифт за нашите проекти. За щастие, дисплеят работи добре и с Arduino Mega, така че когато имаме нужда от повече щифтове, можем да използваме Arduino Mega вместо Arduino Uno. За съжаление този дисплей не работи с Arduino Due или платката Wemos D1 ESP8266. Друго предимство на щита е, че предлага микро SD слот, който е много лесен за използване.
Стъпка 3: Изграждане на проекта и неговото тестване
След като свържете екрана с Arduino Uno, можем да заредим кода и сме готови за игра.
Първо натискаме бутона „Старт на играта“и играта започва. Ардуино играе първи. След това можем да играем нашия ход, просто като докоснем екрана. След това Arduino играе своя ход и така нататък. Играчът, който успее да постави три свои марки в хоризонтален, вертикален или диагонален ред, печели играта. Когато играта приключи, се появява екранът Game Over. След това можем да натиснем бутона за възпроизвеждане, за да започнем играта отново.
Arduino е много добър в тази игра. Той ще спечели повечето игри, или ако сте много добър играч, играта ще завърши наравно. Умишлено проектирах този алгоритъм, за да направя някои грешки, за да дам шанс на човека да спечели. Като добавим още два реда към кода на играта, можем да направим Arduino невъзможно да загуби играта. Но как 2 $ чип, процесорът Arduino, може да победи човешкия мозък? Дали програмата, която разработихме, е по -умна от човешкия мозък?
Стъпка 4: Алгоритъмът на играта
За да отговорим на този въпрос, нека разгледаме алгоритъма, който съм приложил.
Компютърът винаги играе първи. Само това решение прави играта много по -лесна за победата на Arduino. Първият ход винаги е ъгъл. Вторият ход за Arduino също е случаен ъгъл от останалите, без изобщо да се интересува от хода на играча. От този момент Arduino първо проверява дали играчът може да спечели в следващия ход и блокира този ход. Ако играчът не може да спечели с един ход, той играе ъглов ход, ако е наличен, или случаен от останалите. Това е, този прост алгоритъм може да победи човешкия играч всеки път или в най -лошия сценарий играта ще доведе до равенство. Това не е най -добрият алгоритъм на играта тик -так, но един от най -простите.
Този алгоритъм може лесно да се внедри в Arduino, защото играта Tic Tac Toe е много проста и ние лесно можем да я анализираме и разрешим. Ако проектираме дървото на игрите, можем да открием някои печеливши стратегии и лесно да ги внедрим в код или да оставим процесора да изчисли дървото на играта в реално време и сам да избере най -добрия ход. Разбира се, алгоритъмът, който използваме в тази игра, е много прост, защото играта е много проста. Ако се опитаме да проектираме печеливш алгоритъм за шах, дори ако използваме най -бързия компютър, не можем да изчислим дървото на играта за хиляда години! За такива игри се нуждаем от друг подход, имаме нужда от някои алгоритми за изкуствен интелект и разбира се огромна процесорна мощ. Повече за това в бъдещо видео.
Стъпка 5: Код на проекта
Нека да разгледаме набързо кода на проекта. Нуждаем се от три библиотеки, за да компилираме кода.
- Adafruit TFTLCD:
- Adafruit GFX:
- Сензорен екран:
Както можете да видите, дори една проста игра като тази, изисква повече от 600 реда код. Кодът е сложен, така че няма да се опитвам да го обясня в кратък урок. Все пак ще ви покажа изпълнението на алгоритъма за ходовете на Arduino.
Първоначално играем два произволни корнера.
<int firstMoves = {0, 2, 6, 8}; // ще използва първо тези позиции за (брояч = 0; брояч <4; брояч ++) // Брой първите изиграни ходове {if (дъска [firstMoves [брояч]! = 0) // Първият ход се играе от някой {movePlayed ++; }} do {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]); b = 1; }}
След това във всеки рунд проверяваме дали играчът може да спечели в следващия ход.
int checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; в противен случай if (board [0] == 1 && board [1] == 0 && board [2] == 1) return 1; в противен случай if (board [1] == 1 && board [2] == 1 && board [0] == 0) return 0; иначе ако (табло [3] == 1 && борд [4] == 1 && борд [5] == 0) връщане 5; в противен случай if (board [4] == 1 && board [5] == 1 && board [3] == 0) return 3; else if (board [3] == 1 && board [4] == 0 && board [5] == 1) return 4; иначе ако (табло [1] == 0 && борд [4] == 1 && борд [7] == 1) връщане 1; иначе върнете 100; }
Ако да, блокираме това движение, през повечето време. Ние не блокираме всички ходове, за да дадем шанс на човека да спечели. Можете ли да намерите кои ходове не са блокирани? След като блокираме хода, играем оставащ ъгъл или произволен ход. Можете да изучите кода и лесно да внедрите свой собствен непобедим алгоритъм. Както винаги можете да намерите кода на проекта, приложен към тази инструкция.
ЗАБЕЛЕЖКА: Тъй като 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 Game: играта python tic tac toe тази игра е направена на python, който е компютърен език използвах редактор на python, наречен: pycharm, можете да използвате и нормален редактор на кода на python
Електронна игра Tic-Tac-Toe в дървена кутия: 5 стъпки
Електронна игра Tic-Tac-Toe в дървена кутия: Здравейте Представям забавната игра Tic-Tac-Toe в ново издание. Търсих в мрежата за подобен проект, но идеята тук е уникална. НАДЕЖДА :) Така че нека започнем сега
Игра Microc Tic Tac Toe: 4 стъпки (със снимки)
Игра Microbit Tic Tac Toe: За този проект, моят колега - @descartez и аз създадохме страхотна игра с кърлежи, използвайки радио функционалността на microbits. Ако преди не сте чували за микробитове, те са страхотен микроконтролер, предназначен да учи децата да програмират. Те
3D4x игра: 3D 4x4x4 Tic-Tac-Toe: 5 стъпки (със снимки)
3D4x игра: 3D 4x4x4 Tic-Tac-Toe: Уморихте ли се да играете на един и същ, стар, скучен, двуизмерен тик-нок ?? Е, имаме решение за вас! Тик-так-пръст в три измерения !!! За 2 играчи, в този куб 4х4х4, вземете 4 светодиода подред (във всяка посока) и печелите! Ти го направи. Ти пла
Интерактивна игра Tic-Tac Toe, контролирана с Arduino: 6 стъпки
Интерактивна игра Tic-Tac Toe, контролирана с Arduino: Целта на проекта Physical Tic-Tac-Toe е да премести добре позната игра във физическата сфера. Първоначално играта се играе от двама играчи на лист хартия - чрез поставяне на символи „X“и „O“на последователност. Идеята ни беше да проучим поведението на играчите