Orodha ya maudhui:

Mchezo wa Arduino Touch Tic Tac Toe: Hatua 6 (na Picha)
Mchezo wa Arduino Touch Tic Tac Toe: Hatua 6 (na Picha)

Video: Mchezo wa Arduino Touch Tic Tac Toe: Hatua 6 (na Picha)

Video: Mchezo wa Arduino Touch Tic Tac Toe: Hatua 6 (na Picha)
Video: CS50 2015 – 10-я неделя 2024, Juni
Anonim
Image
Image
Mchezo wa Arduino Touch Tic Tac Toe
Mchezo wa Arduino Touch Tic Tac Toe
Mchezo wa Arduino Touch Tic Tac Toe
Mchezo wa Arduino Touch Tic Tac Toe
Mchezo wa Arduino Touch Tic Tac Toe
Mchezo wa Arduino Touch Tic Tac Toe

Wapendwa marafiki karibu kwenye mafunzo mengine ya Arduino! Katika mafunzo haya ya kina tutaunda mchezo wa Arduino Tic Tac Toe. Kama unavyoona, tunatumia skrini ya kugusa na tunacheza dhidi ya kompyuta. Mchezo rahisi kama Tic Tac Toe ni utangulizi mzuri wa programu ya mchezo na Akili ya bandia. Ingawa hatutatumia algorithms yoyote ya Usanii bandia katika mchezo huu, tutaelewa ni kwa nini Algorithms za Akili za bandia zinahitajika katika michezo ngumu zaidi.

Kuendeleza michezo ya Arduino sio rahisi na inahitaji muda mwingi. Lakini tunaweza kujenga michezo rahisi ya Arduino kwa sababu ni ya kufurahisha na itaturuhusu kuchunguza mada zingine za hali ya juu zaidi, kama akili ya bandia. Ni uzoefu mzuri wa kujifunza na mwishowe utakuwa na mchezo mzuri kwa watoto!

Wacha tujenge mradi huu.

Hatua ya 1: Pata Sehemu Zote

Image
Image
2.8
2.8

Sehemu zinazohitajika ili kujenga mradi huu ni zifuatazo:

Arduino Uno ▶

Skrini ya Kugusa ya 2.8 ▶

Gharama ya mradi ni ya chini sana. Ni $ 15 tu

Kabla ya kujaribu kujenga mradi huu tafadhali angalia video niliyoandaa kuhusu onyesho la kugusa. Nimeambatanisha na hii inayoweza kufundishwa. Itakusaidia kuelewa nambari, na usawazishe skrini ya kugusa.

Hatua ya 2: Onyesho la 2.8 "Gusa Rangi ya Arduino

Image
Image
2.8
2.8
2.8
2.8

Niligundua skrini hii ya kugusa kwenye banggood.com na nikaamua kuinunua ili kujaribu kuitumia katika baadhi ya miradi yangu. Kama unavyoona onyesho ni ghali, inagharimu karibu $ 11.

Ipate hapa ▶

Onyesho linatoa azimio la saizi 320x240 na inakuja kama ngao ambayo inafanya uhusiano na Arduino iwe rahisi sana. Kama unavyoona, onyesho hutumia karibu pini zote za dijiti na za Analog za Arduino Uno. Wakati wa kutumia ngao hii tunabaki na pini 2 tu za dijiti na pini 1 ya analogi kwa miradi yetu. Kwa bahati nzuri, maonyesho hufanya kazi vizuri na Arduino Mega pia, kwa hivyo sisi wakati tunahitaji pini zaidi tunaweza kutumia Arduino Mega badala ya Arduino Uno. Kwa bahati mbaya maonyesho haya hayafanyi kazi na Arduino Ngenxa au bodi ya Wemos D1 ESP8266. Faida nyingine ya ngao ni kwamba inatoa nafasi ndogo ya SD ambayo ni rahisi kutumia.

Hatua ya 3: Kuunda Mradi na Kuupima

Kujenga Mradi na Kuupima
Kujenga Mradi na Kuupima
Kujenga Mradi na Kuupima
Kujenga Mradi na Kuupima
Kujenga Mradi na Kuupima
Kujenga Mradi na Kuupima

Baada ya kuunganisha skrini na Arduino Uno, tunaweza kupakia nambari hiyo na tuko tayari kucheza.

Mara ya kwanza, tunasisitiza kitufe cha "Anza Mchezo" na mchezo uanze. Arduino anacheza kwanza. Tunaweza kisha kucheza hoja yetu kwa kugusa skrini. Arduino kisha hucheza hoja yake na kadhalika. Mchezaji ambaye anafanikiwa kuweka alama zao tatu kwenye safu mlalo, wima, au ulalo anashinda mchezo. Mchezo unapomalizika, skrini ya Mchezo Juu inaonekana. Tunaweza kisha bonyeza kitufe cha kucheza tena ili uanze mchezo tena.

Arduino ni mzuri sana kwenye mchezo huu. Itashinda michezo mingi, au ikiwa wewe ni mchezaji mzuri sana mchezo utaisha kwa sare. Niliunda kwa makusudi algorithm hii kufanya makosa kadhaa ili kumpa mchezaji wa kibinadamu nafasi ya kushinda. Kwa kuongeza mistari mingine miwili kwenye nambari ya mchezo, tunaweza kufanya Arduino isiwezekane kupoteza mchezo. Lakini Chip 2 $, CPU ya Arduino inawezaje kupiga ubongo wa mwanadamu? Je! Mpango tuliotengeneza nadhifu kuliko ubongo wa mwanadamu?

Hatua ya 4: Algorithm ya Mchezo

Algorithm ya Mchezo
Algorithm ya Mchezo
Algorithm ya Mchezo
Algorithm ya Mchezo

Ili kujibu swali hili, hebu tuangalie algorithm ambayo nimetekeleza.

Kompyuta daima hucheza kwanza. Uamuzi huu peke yake, hufanya mchezo kuwa rahisi sana kwa Arduino kushinda. Hatua ya kwanza daima ni kona. Hoja ya pili kwa Arduino pia ni kona ya kubahatisha kutoka kwa waliosalia bila kujali hoja ya mchezaji kabisa. Kuanzia wakati huu na kuendelea, Arduino anakagua kwanza ikiwa mchezaji anaweza kushinda katika hoja inayofuata na anazuia hoja hiyo. Ikiwa mchezaji hawezi kushinda kwa mwendo mmoja, hucheza hoja ikiwa inapatikana au moja kwa moja kutoka kwa iliyobaki. Ndio hivyo, algorithm hii rahisi inaweza kumpiga mchezaji wa binadamu kila wakati au katika hali mbaya mchezo utasababisha sare. Hii sio algorithm bora zaidi ya mchezo wa toe, lakini moja ya rahisi zaidi.

Algorithm hii inaweza kutekelezwa kwa Arduino kwa urahisi, kwa sababu mchezo wa Tic Tac Toe ni rahisi sana, na tunaweza kuichambua na kuisuluhisha kwa urahisi. Ikiwa tunabuni mti wa mchezo tunaweza kugundua mikakati kadhaa ya kushinda na kuyatekeleza kwa urahisi kwa kificho au tunaweza kuruhusu CPU ihesabu mti wa mchezo kwa wakati halisi na ikachagua hoja nzuri yenyewe. Kwa kweli, algorithm tunayotumia katika mchezo huu ni rahisi sana, kwa sababu mchezo ni rahisi sana. Ikiwa tunajaribu kubuni algorithm ya kushinda kwa chess, hata ikiwa tunatumia kompyuta yenye kasi zaidi hatuwezi kuhesabu mti wa mchezo katika miaka elfu! Kwa michezo kama hii, tunahitaji njia nyingine, tunahitaji algorithms za Usanii bandia na kwa kweli nguvu kubwa ya usindikaji. Zaidi juu ya hii katika video ya baadaye.

Hatua ya 5: Kanuni ya Mradi

Kanuni za Mradi
Kanuni za Mradi

Wacha tuangalie kwa haraka nambari ya mradi huo. Tunahitaji maktaba tatu ili nambari ya kukusanya.

  1. Matunda ya matunda TFTLCD:
  2. Adafruit GFX:
  3. Skrini ya kugusa:

Kama unavyoona, hata mchezo rahisi kama huu, unahitaji zaidi ya mistari 600 ya nambari. Nambari ni ngumu, kwa hivyo sitajaribu kuelezea kwa mafunzo mafupi. Nitakuonyesha utekelezaji wa algorithm kwa hatua za Arduino ingawa.

Mara ya kwanza, tunacheza pembe mbili za nasibu.

<int firstMoves = {0, 2, 6, 8}; // atatumia nafasi hizi kwanza kwa (counter = 0; kaunta <4; kaunta ++) // Hesabu hatua za kwanza zilizochezwa {if (board [firstMoves [counter]! = 0) // Hoja ya kwanza inachezwa na mtu {movesPlayed ++; }} fanya {if (moves <= 2) {int randomMove = random (4); int c = kwanzaMoves [randomMove]; ikiwa (bodi [c] == 0) {kuchelewesha (1000); bodi [c] = 2; Serial.print (kwanzaMoves [randomMove]); Serial.println (); choraCpuMove (kwanzaMoves [randomMove]); b = 1; }}

Ifuatayo, katika kila raundi tunaangalia ikiwa mchezaji anaweza kushinda katika hoja inayofuata.

int checkOpponent ()

{if (board [0] == 1 && board [1] == 1 && board [2] == 0) rudisha 2; vinginevyo ikiwa (bodi [0] == 1 && bodi [1] == 0 && bodi [2] == 1) kurudi 1; vinginevyo ikiwa (bodi [1] == 1 && bodi [2] == 1 && bodi [0] == 0) kurudi 0; vinginevyo ikiwa (bodi [3] == 1 && bodi [4] == 1 && bodi [5] == 0) kurudi 5; vinginevyo ikiwa (bodi [4] == 1 && bodi [5] == 1 && bodi [3] == 0) kurudi 3; vinginevyo ikiwa (bodi [3] == 1 && bodi [4] == 0 && bodi [5] == 1) kurudi 4; vinginevyo ikiwa (bodi [1] == 0 && bodi [4] == 1 && bodi [7] == 1) kurudi 1; mwingine kurudi 100; }

Ikiwa ndio tunazuia hoja hiyo, mara nyingi. Hatuzuii harakati zote ili kumpa mchezaji wa kibinadamu nafasi ya kushinda. Je! Unaweza kupata ni hatua zipi ambazo hazijazuiliwa? Baada ya kuzuia hoja hiyo, tunacheza kona iliyobaki, au hoja bila mpangilio. Unaweza kusoma nambari hiyo, na utekeleze hesabu yako isiyoweza kushindwa. Kama kawaida unaweza kupata nambari ya mradi iliyoambatishwa kwenye hii inayoweza kufundishwa.

KUMBUKA: Kwa kuwa Banggood inatoa onyesho sawa na madereva mawili tofauti ya kuonyesha, ikiwa nambari iliyo hapo juu haifanyi kazi, badilisha kazi ya initDisplay kuwa yafuatayo:

utupu initDisplay ()

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

Hatua ya 6: Mawazo ya Mwisho na Maboresho

Mawazo ya Mwisho na Maboresho
Mawazo ya Mwisho na Maboresho

Kama unavyoona, hata kwa Arduino Uno, tunaweza kujenga algorithm isiyoweza kushindwa kwa michezo rahisi. Mradi huu ni mzuri, kwa sababu ni rahisi kujenga, na wakati huo huo utangulizi mzuri wa ujasusi wa bandia na programu ya mchezo. Nitajaribu kujenga miradi ya hali ya juu zaidi na Akili ya bandia katika siku zijazo kwa kutumia Raspberry Pi yenye nguvu zaidi kwa hivyo kaa karibu! Ningependa kusikia maoni yako kuhusu mradi huu.

Tafadhali weka maoni yako hapa chini na usisahau kupenda inayoweza kufundishwa ikiwa unapata kupendeza. Asante!

Ilipendekeza: