Tartalomjegyzék:

Rugalmas pongjáték pólón: 8 lépés (képekkel)
Rugalmas pongjáték pólón: 8 lépés (képekkel)

Videó: Rugalmas pongjáték pólón: 8 lépés (képekkel)

Videó: Rugalmas pongjáték pólón: 8 lépés (képekkel)
Videó: Grafikai programozó - FPS játékfejlesztés 2024, November
Anonim
Rugalmas pongpóló pólón
Rugalmas pongpóló pólón
Rugalmas pongpóló pólón
Rugalmas pongpóló pólón
Rugalmas pongpóló pólón
Rugalmas pongpóló pólón

Ez a 2013 -as halloweeni jelmezem. Körülbelül egy éve készülődik, és jó néhány munkaórát vett igénybe az alkotás. A képernyő 14 x 15 képpontos, tehát elég alacsony felbontású, de még mindig szórakoztató dolgokat tud csinálni. Fizikailag minden irányban rugalmas, bár sérülés nélkül nem hajtogatható. Van egy vezérlője, amely egyetlen gombból és csúsztatótálból áll, és USB -n keresztül egy pro mega -hoz csatlakozik. Ahhoz, hogy hosszú ideig életben tartsa, két szörnyű, 2200 mAh -s, sorba kötött akkumulátort használ a szükséges feszültség eléréséhez, majd egy 5 voltos szabályozót, hogy használhatóvá tegye. Az összes elektronika zsebekben van az ing belső oldalán, így eltávolíthatók, és így az ing mosható. Funkcionális pong játékot játszik. Először a "PONG PLAY" szavakkal díszít szép kék betűkkel, a Tom Thumb betűtípus módosított verziójával (megtalálható a https://robey.lag.net/2010/01/23/tiny-monospace-font címen).html). Öt másodperc elteltével lehetőség nyílik arra, hogy megnyomja a gombot a továbblépéshez, vagy nem nyomja meg a gombot, és tökéletesen jó élményt hagy maga után. Amikor valaki megnyomja a gombot, a játék elkezdődik. A jobb oldali piros lapát a számítógép lapátja, a jobb oldali zöld lapát pedig a játékos lapátja, amelyet a csúszó pot irányít, hogy felfelé és lefelé mozogjon. A labda körülpattan, amikor mindkét fél megpróbál pontot szerezni. A játékos ütheti a labdát a lapát szélével, hogy felgyorsítsa azt (ez egy szép szolgáltatás), miközben a számítógép nem tudja ezt megtenni, és ehelyett végül elakad a labdánál valamivel lassabb mozgással. Amikor egy pontot megszereznek, egy pixel fehérre változik a pontozó oldalakon. Alulról binárisan számol. ahol a zöld vagy a piros nulla, a fehér pedig az 1. 21 a nyerési pontszám (vagy a vereség attól függően, hogy ki kap 21 pontot), így amikor a játékos lapátja 10101 -et mutat, a "TE NYERSZ" szöveg jelenik meg. Ismét a módosított Tom Thumb -ban. Ugyanez történik, de a „VESZ” felirat jelenik meg helyette. Győzelem vagy vereség után a játék közvetlenül a Pong Play után újraindul. A teljes újraindításhoz nyomja meg a "Magic Box" újraindító gombját, más néven a doboz-a-minden-elektronikával-kivéve-képernyőt.

Lépés: Anyagok és eszközök

Anyagok és eszközök
Anyagok és eszközök
Anyagok és eszközök
Anyagok és eszközök

A * -gal jelölt dolgok nem kötelezőek, de ajánlhatók És így nem külön sorrendben … Anyagok: 4 yard Adafruit neopixle 60 pixel méterenként 1 póló * 1 pár függesztő 1/2 yard szövet több mint elég lesz (nem előnyös a rugalmas szőnyeg) 1 USB B anyacsatlakozó megszakítópanellel 1 ki/be kapcsoló (váltó) 1 visszaállító kapcsoló (váltó vagy pillanatnyi) 1 csúsztatható potenciométer *1 csúszó pot gomb 1 nagy erősítő csatlakozó pár *1 projekt tok 1 5V 3+ erősítő feszültségszabályozó egy kis műanyag, forrasztás, huzal, szál *forró ragasztó néhány szuperragasztó, néhány vas a hátlapon Eszközök *Segítő kezek Normál kéz s (vagy valaki, aki hozzáfér hozzájuk) Forrasztópáka *Forróragasztó pisztoly Dremel vagy csiszolópapír vésőhuzal lehúzók Drótvágók Tűzőpisztoly csavarhúzó Fűrészcsapok Varrógép szövet olló

2. lépés: Vágja a LED csíkot kisebb csíkokra

Vágja a LED csíkot kisebb csíkokra
Vágja a LED csíkot kisebb csíkokra
Vágja a LED csíkot kisebb csíkokra
Vágja a LED csíkot kisebb csíkokra
Vágja a LED csíkot kisebb csíkokra
Vágja a LED csíkot kisebb csíkokra

Használja a kívánt vágóeszközt, és vágja a csíkot 14, egyenként 15 képpont hosszú szegmensbe. Vágjon csak a réznyomok közé, például "DO" "DIN" "+5V" és "GND" felirattal. Ha már rá van forrasztva a rézre, akkor csak át kell vágni. Próbáljon meg nem túl sokat vágni a kitett rézbe, de ha egy kicsit lehorzsolja, az rendben van. Miután mind a 14 csíkot levágták, vágja le egy kicsit a gumi mindkét végét, hogy elkerülje a csíkok forrasztását.

3. lépés: A képernyő összeforrasztása

A képernyő forrasztása
A képernyő forrasztása
A képernyő forrasztása
A képernyő forrasztása
A képernyő forrasztása
A képernyő forrasztása

Fogja meg a vezetéket, és vágja körülbelül 9 cm -es szegmensekre. Esetemben három különböző szín van, amelyek megkönnyítik a forrasztás során az egyenes tartást, de egy szín jól működik. Körülbelül 40 ilyen kisfiúra lesz szüksége, de minden esetre vágjon még egyet. Miután befejezte a huzal vágását, csíkozza le és bádogozza a végeit (ha van forrasztási tapasztalata, akkor ugorjon a következő bekezdésre), vagyis miután eltávolította a kis műanyagot, tegyen forrasztást minden huzal végére. Ne melegítse fel a forrasztót, és próbáljon a vezetékhez lépni, melegítsen forrasztópáka alján a rézből, és tegye a forrasztót a tetejére. Légy türelmes, és várja meg, amíg a forró huzal megolvasztja a forrasztást. Kísértés a forrasztópáka rögzítése a forrasztópáka felé, hogy elinduljon (Türelmetlenségem és pontosan tudom, hogy érzi magát), de a forrasztóanyag nem fog ragaszkodni. Tegye ugyanezt a szalagszakaszok mindkét végén látható réznyomokkal. Ha már van forrasztása, ne aggódjon. A csíkhoz érdemes felépíteni egy kis dombot, hogy később könnyebb legyen. Amikor a szalaggal dolgozik, gyorsan végezze el, és próbáljon nem sok időt tölteni a csík hőkezelésével. Csak tegye meg, amit meg kell tennie, hogy a forraszanyagot a nyomra olvasztja. Forrasztjon egy vezetéket minden nyomon az első szalag végéig (Az első csík, amely a vezetékekkel és a csatlakozóval van ellátva, forrasztja a szabad végére). Ha ránéz a csíkra, kis nyilakat fog látni rajta, egészen a végéig, ahol forrasztotta a vezetéket. Vegyünk egy másik csíkot úgy, hogy a nyilak az ellenkező irányba mutassanak, és forrasztják a GND nyomvonalból érkező vezetéket a másik GND nyomvonalához, a +5 V -tól a +5 V -hoz stb. Ismételje meg ezt, ügyelve arra, hogy a nyilak minden szakasz után változtassák az irányt, hogy ha követné őket, akkor cikk -cakkban fel -le mozogjon, és a végén hosszú csíkra nyúlhasson. Miután mind a 14 csíkot forrasztotta, helyezze el őket, majd állítsa sorba, hogy a LED -ek rácsot képezzenek. Ezután tartsa őket együtt olyan módszerrel, amely később eltávolítható a csík károsodása nélkül. Scotch szalagot használtam. Elég ragacsos ahhoz, hogy mindent egyben tartson, de nem annyira ragadós, hogy maradványt hagyjon. Nem ajánlok semmit állandónak, például kapcsokat vagy ragasztószalagot. Miután mindent összeragasztott, forrasztjon egy vezetéket az alsó csíkról +5V a közvetlenül mellette lévőhöz. Ismételje meg mindaddig, amíg az egész alján a csapok teljesen át nem mennek. Ez azért van így, mert a LED -ek előrehaladtával a képernyő nem halványul el.

4. lépés: A Core Electronics forrasztása

A Core Electronics forrasztása
A Core Electronics forrasztása
A Core Electronics forrasztása
A Core Electronics forrasztása
A Core Electronics forrasztása
A Core Electronics forrasztása

Forrasztja az USB B megszakító kártyát (BOB) az USB B csatlakozóhoz. Forrasztja a megfelelő vezetékeket az USB A csatlakozóhoz. Azt tanácsolom, hogy nézze meg a csatlakozó dugóját, amely ezen a webhelyen található: https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Ne aggódjon, hogy hol kell forrasztani a vezetékek másik végét az USB A csatlakozón; amely a szabályozó lépésben fog szerepelni. Vágja le az adatcsatlakozót a szalagról, a hüvelyes csatlakozót, ne a férfi csatlakozót (A hüvelyes csatlakozó a másik végéről származik). Forrasztja a férfi JST csatlakozókat az akkumulátor végéhez úgy, hogy a piros pirosra, a fekete pedig feketére kerüljön. A hőre zsugorodó csöveket meg kell olvasztani a szabad huzalok felett (át kell csúsztatni a forrasztás előtt), hogy ne zárjanak rövidre, vagy ne használjanak mást, például elektromos szalagot vagy forró ragasztót. Forrasztjon néhány vezetéket az összes női JST csatlakozóhoz. Győződjön meg arról, hogy egy dugaszvég csatlakozik, nehogy a csapok elmozduljanak. Ügyeljen a polaritásra, és győződjön meg arról, hogy a vezetékek illeszkednek a dugaszoló csatlakozókhoz. Forrasztja a vezetékeket ismét a nagyfeszültségű csatlakozóhoz (de nem a párját), győződjön meg arról, hogy a színek illeszkednek egymáshoz, és össze vannak dugva, hogy megakadályozzák a csapok eltolódását. Forrasztja a hüvelyes csatlakozó/huzal szerelvényt úgy, hogy sorba kössék, ne párhuzamosan, hogy túllépje a teljesítményszabályozó küszöbfeszültségét. Tehát forrasztja a pozitív vezetéket a másik szerelvény negatív vezetékéhez, így most van egy forrasztás nélküli pozitív és egy negatív forrasztatlan vezetékünk, és a két forrasztott vezeték különböző csatlakozókhoz van forrasztva. Fogja meg a negatív vezetéket, és mentse el, hogy forrasztható legyen a negatív vezetékhez máshol. Most vegye a pozitív vezetéket és forrasztja a kapcsolóhoz Ha három vagy több csap van (vagy többféle módon lehet "bekapcsolni"), forrasztja a középső csaphoz. Ne feledje, hogy a "középső csap" fizikailag nem lehet középen. Az azonosítás módja annak a tűnek a megkeresése, amely a kapcsoló bekapcsolt állapotában mindig egy másik tűhöz lesz csatlakoztatva. Ha nincs ilyen csap, akkor van egy nagyon speciális kapcsolója; csak csatlakoztassa bármelyik csaphoz, és győződjön meg arról, hogy a kapcsolóhoz forrasztott következő vezeték legalább egy bekapcsolt állapotban csatlakozik ehhez a vezetékhez. Most forrasztja a feszültségszabályozó pozitív bemeneti vezetékét a kapcsoló másik végéhez, a fentiek szerint. Forrasztja le a pozitív feszültséget a forrasztás nélküli nagyáramú csatlakozó pozitív végéig. Fogja meg a negatív szívóvezetéket, és forrasztja a nagyáramú csatlakozó negatív végéhez. Most az Arduino és a Power szalaggal párhuzamosan forrasztjuk az áramot. Most vegye a feszültségszabályozó kimeneti vezetékeit, és forrasztjon két huzaldarabot a pozitív és a negatív végére, hogy Y alakúak legyenek. Forrasztjon két tűs csatlakozót a led szalag szerelvény pozitív és negatív vezetékeire. Nem számít, hogy milyen típusú csatlakozót használ, lehet JST, vagy esetemben valamilyen táp-/hangkábel vagy valami (nem vagyok benne biztos, és elnézést kérek, hogy nincsenek képeim). Forrasztja az egyik pozitív tápvezetéket a fénycsík ellenkező csatlakozójának pozitív végéhez, az egyik negatív vezetéket pedig a csatlakozó másik csapjához. Tegye ugyanezt, de egy férfi JST csatlakozó/vezeték szerelvénynél. Mindeközben ne felejtse el szigetelni a forrasztási kötéseket, hogy elkerülje a rövidzárlatot. Most nézze meg, mit tegyen az USB B csatlakozóval. Forrasztja a pozitív vezetéket az Arduino Pro Mega 5 V -os lyukába. Fogja a földelő vezetéket és forrasztja egy GND lyukba. Vegye ki a D+ -ot, és forrasztja a digitális tüskére (vagy ebben az esetben lyukba) 40. Forrasztás D- analóg tüskéhez. 15. Forrasztja be a LED-szalag-csatlakozóval párosuló csatlakozó adatvégét a 6. adattűhöz és a földelő vezetéket egy GND csaphoz. A maszkolás vagy a scotch szalag kiválóan alkalmas a vezetékeknek a táblához való rögzítésére, hogy ne essenek ki, ha felforgatják forrasztásra. Most vegyen egy pillanatnyi gombot, és forrasztjon egy vezetéket az egyik végétől a VCC csaphoz (vagy bármely feszültségkimeneti tűhöz), a másik végét pedig a RESET csaphoz.

5. lépés: Vezérlő

Vezérlő
Vezérlő
Vezérlő
Vezérlő
Vezérlő
Vezérlő

Először is a megfelelő forma kiválasztása a kezdéshez. Minden attól függ, hogyan szeretné felépíteni a vezérlőt. Inkább lapos vezérlőt akartam, így kaptam egy darab 3 1/2 "3/4" deszkát. rendezze el az alkatrészeket úgy, hogy megfelelőnek és kényelmesnek tűnjön a munka. Használjon francia görbét, iránytűt, háromszöget és egyenes élt, hogy rajzolhassa, hová kell mennie az összes darabnak. Vágja le az alapvető körvonalat a választott vágószerszámmal. A tiltó fűrész lenne a legjobb, de én egy fűrészgépet használtam, ami jól működött. Csiszolja le a széleket, hogy zökkenőmentesen átmenjenek, majd csiszolja le a sarkokat, hogy kényelmesebb legyen. Fúrja ki a lyukat a kapcsolóhoz, majd csiszolja le, vésje le és/vagy távolítsa el az alján található részeket, amelyek illeszkednek. Próbálja meg, hogy ne csináljon semmit a tetejével, és csak csiszolja ki azt, amire szüksége van ahhoz, hogy illeszkedjen hozzá csavarással, horgászással vagy bármi mással, hogy bejusson. Ha a helyére került, rögzítse a műanyag anyával és rögzítse a kapcsoló. Fúrja ki azt a területet, ahol a potenciométer gombja illeszkedik, és vésje ki a területet, hogy az elsüllyedhessen és teljesen illeszkedjen. Fúrjon ki néhány lyukat, hogy egy csavar be tudja tartani. Hajtsa be az USB A csatlakozó apró darabjait, amelyek miatt a szélesség kissé megnő (nézze meg a képeket). Vágja ki a csatlakozó egy részét, és fokozatosan ellenőrizze, hogy a csatlakozó illeszkedik -e. Ragasztja a csatlakozót a nyílásába. Fogjon egy kis műanyagdarabot, és vágja olyan formára, amely illeszkedik a csatlakozóra (nézze meg a képeket), majd tűzze a fához. Vágja le az esetlegesen akadályozó darabokat. Csavarja be a potenciométert, és rögzítse a gombot. Forrasztja a pozitív vezetéket a potenciométer egyik végéhez (nem a változó részt), és a negatív vezetéket a másik végéhez. Forrasztja a D-csapot a cserélhető csaphoz az edényen. Forrasztjon egy vezetéket az edény csapjából a pozitív vezetékkel a gomb egyik csapjához. Forrasztás D+ a gomb másik csapjára. Vágja le a tartalék vezetéket, és szigetelje le a szükséges darabokat.

6. lépés: Póló

Ing
Ing
Ing
Ing
Ing
Ing

Keressen egy kényelmes inget, amely átengedi a fényt. Ezt az alapvető fehér pólót választottam. Nem igazán számít a színe vagy a stílusa, amíg a fény belülről látható. Viszont nem ajánlom az előlapi grafikát. Fektessen le mindent az ingre, hogy segítsen eldönteni, hol szeretné, és rajzoljon egy törölhető jelölési eszközzel. Nekem (vagyis néhány ismerősömnek) van egy ceruzám, amely a szövetek jelölésére szolgál, és könnyen kimosható. Mérje meg az elemek, a vezérlőház és a képernyő méretét, és vágja ki a megfelelő papírlapokat. Ezután rögzítse a papírt egy nem rugalmas anyaghoz. Erre egy szövés jól működik. Ezután vágja ki a téglalapot, így körülbelül negyed hüvelyk marad a varráshoz. Ezután a papírlapot útmutatóként vasalja a redőket az anyagba. Most a papír eltávolítható. A zseb azon részén, amely a teteje lesz, háromszor hajtsa át önmagára. Vasalja meg és rögzítse, hogy a helyén maradjon. Varrjon egy látszatot végig a hajtás közepén. Fogja meg a sarkot, és hajtsa össze úgy, hogy az egymásra merőlegesen elvarrott élek párhuzamosak legyenek, és varrjon egy látszatot a sarokhoz legközelebb lévő vasalt ránc mentén (a képek valóban segítenek). Tegye ezt a másik sarokhoz is. Ha véletlenül a zsebéből egy váltókapcsoló kerül elő, varrjon egy gomblyukat a zseb aljára, ahol a kapcsoló érintkezik. Ezután varrjon egy gomblyukat, és vágja ki a középső részt. Nem igazán tudok részletes utasításokat adni, mert volt egy jó eszközöm a gomblyukak készítéséhez. Csak győződjön meg róla, hogy lyukakat készít a zseb felvarrása előtt. Fogjon néhány tűt, és szúrja át őket a zseb jelzéseinek sarkán lévő ingén. Fogja meg a zsebet, és tegye minden sarkát egy csaphoz (az ing belsejében), hagyva egy negyed centimétert a varráshoz, és rögzítse az inghez. A zseb rögzítése után. távolítsa el a csapokat, amelyek nem tartják a zsebet, és varrja a zsebet az inghez. Ismételje meg az összes zsebet. A képernyőt tartó nagy zsebnél hagyjon rést a vezetékek számára a zseb alján. Ha lyukat szeretne tenni az ingben, jelölje meg a helyet, és vegyen egy vasalót a hátlapra (a csillogóbb résszel az anyagon), és vasalja fel. Ezután egy kis lyukhoz (mint amit a váltókapcsolóhoz használtam) készítsen egy gomblyukat. Nagyobb lyuk esetén jelölje meg a körvonalat, és használjon cikk-cakk öltést a vonal mentén (vagy görbén, vagy mi van), és vágja ki a középső részt. Ha szeretné, a nadrágtartó segítségével tarthatja a zsebek súlyát, a két csíptető az elülső zsebeken, a hátsó csíptető pedig a nadrágon. Kaptam egy kis szövet ujjat is a nadrágtartó részei fölé, amelyek megérintik a bőrömet. Két ing kissé túlmelegedhet, ezért lemondtam, és a kis szövet ujjat használtam.

7. lépés: Programozás

Programozás
Programozás

És itt a kód. Van néhány rész, amelyek jól kommentáltak, de a túlnyomó többség nem. Ha kérdései vannak a különböző részekkel kapcsolatban, megadhatja nekem a sorszámot (#include az első sorral), vagy másolatot adhat a sor (ok) ról és a funkcióról (például loop () vagy compMovePaddle ()), és mindent megteszek, hogy elmagyarázzam neked, majd fűzz egy megjegyzést a kódhoz. #include #define PIN 6 // azt mondja, hogy melyek a játék bemeneti csapjai int gombPin = 40; // diktálja a pontszámot, bináris tömbben tartva, mert esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // diktálja a labda irányát int bvd = 0; // 0 lefelé, 1 fel int bhd = 0; // 0 jobbra, 1 balra // diktálja a labdák helyzetét int bvp = 8; int bhp = 6; // ellenőrzi, hogy a labda gyors módban van -e boolean fast = false; // ellenőrzi, hogy pontszám -e. boolean cIsPoint = hamis; logikai pIsPoint = hamis; // lapát pozíciók int cPaddle = 0; int pPaddle = 0; hosszú előzőMillis = 0; rég előzőMillisForComp = 0; // állítsa be a késleltetési időket a gyorsan és lassan mozgó labdához. Az "Int" a normInt és a fastInt intervallumban int normInt = 50; int fastInt = 10; // győzelemre használták. 1 a játékos nyerése, -1 a számítógépes győzelem, és a 0 még nem történt, de a győzelem = 0; // hogy megszabaduljon egy hibától. az addOne utasításban használják, és sehol máshol. int amely = 0; // A kezdés előtt megjelenített dolog, -1 a escape int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; // ha nyersz magadbanWin = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; // ha elveszíted bennedLose = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // beállítja a led szalagot Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // beállítás, nem fordítja el a 40 -es tűt a bemenethez, elkezdi a csíkot, megjeleníti az // üzenetet és megmutatja. void setup () {pinMode (buttonPin, INPUT); strip.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); késleltetés (5000); while (digitalRead (buttonPin) == LOW) {// Ez csapda! (a gomb megnyomásáig.)}} void loop () {clearScreen (); // felhívja a lapátokat, hogy megmutassa az (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255,) pontszámát 255)); } else if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // húzza a labdát a kiindulási helyzetbe csík.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // eldönti, hogy a labda felfelé vagy lefelé megy (pIsPoint == hamis && cIsPoint == hamis) {clearScreen (); előjel nélküli hosszú áramMillis = millis (); // hozzárendeli a játékos lapát helyzetét pPaddle = checkPaddlePos (); // ellenőrzi a következő pozíciót checkNext (); // labda mozgatása, ha (gyors == hamis) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (gyors == igaz) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // húzza a labdát, ha (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } else if (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // számítógépes lapát mozgás compMovePaddle (); // draw a lapátok drawPaddles (); // valójában mindent fel.strip.show (); // annak ellenőrzése, hogy pontot szereztek -e, ha (pIsPoint == true) {which = 0; bhd = 0; hozzáadni egyet(); szünet; } else if (cIsPoint == igaz) {amely = 1; bhd = 1; hozzáadni egyet(); szünet; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } késleltetés (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } győzelem = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } késleltetés (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } győzelem = 0; } pIsPoint = hamis; cIsPoint = hamis; bvp = 8; lóerő = 6; bvd = véletlen (0, 2); // 0 lefelé, 1 gyorsan felfelé = hamis; } // A játék mesterséges intelligenciája void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } else if (bvp = 0 && cPaddle <10) {cPaddle ++; } else if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } else if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // mozgatja a labdát void moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // egyet hozzáad a tömbhöz. Ha melyikOne 0, akkor növeli a játékos pontszámát. Ha 1, akkor hozzáadja a számítógéphez void addOne () {if (amely == 0) {// ha ez a játékos pontszáma // Adjon hozzá egyet. Így tudom a legegyszerűbben. for (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// ha ez az érték nulla playerScore = 1; // hogy 1 break; // majd menj el} else {// ha 1 játékos; i ++) {if (compScore == 0) {compScore = compScore +1; szünet; } else {compScore = 0; }}} // Ellenőrzi, nyert -e valaki. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // ellenőrzi a labdákat next position void checkNext () {// ellenőrzi, hogy pontot szereztek -e, ha (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = igaz; } // ha egy pontot szereztek, akkor ugorja át a többi dolgot, ha (pIsPoint == hamis || cIsPoint == hamis) {// vertikálisan ellenőrzi a labdát, ha (bvp+bvd == 15) {bvd = 0; } else if (bvp+bvd == 0) {bvd = 1; } // vízszintesen ellenőrzi a labdát, ha (bhp+bhd == 13) {// először a számítógép oldalán, ha (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } gyors = hamis; } else if (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; } else if (bvp == 0 || bvp == 14) {bhd = 1; } gyors = hamis; }} else if (bhp+bhd == 1) {// akkor a játékos oldalán, ha (bvp> = pPaddle && bvp <= pPaddle+4) {// normál helyen üti a lapátot? // pattogasd a labdát! ha (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// ütközik a sarok lapátjára, ha (bvp! = 0 && bvp! = 14) {// ez nem fent vagy lent? // Ugráld a labdát! ha (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; gyors = igaz; } else if (bvp == 0 || bvp == 14) {// magasan vagy alacsonyan van? // pattogasd a labdát! bhd = 0; gyors = igaz; // állítsa az értéket későbbre, hogy a labda gyorsan mozogjon}}}}} int checkPaddlePos () {// elolvassa a potot, és ennek megfelelően dönt a lapát helyzetéről, ha (analóg olvasott (A15) <93) {visszatérés 0; } else if (analogRead (A15) <186) {return 1; } else if (analogRead (A15) <279) {return 2; } else if (analogRead (A15) <372) {return 3; } else if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {return 5; } else if (analogRead (A15) <652) {return 6; } else if (analogRead (A15) <745) {return 7; } else if (analogRead (A15) <837) {return 8; } else if (analogRead (A15) <= 931) {return 9; } else if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// rajzolja a lapátokat a megfelelő helyre, és megjeleníti a lapáton a pontszámot (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }

8. lépés: Késztermék

Késztermék
Késztermék
Késztermék
Késztermék

És tessék, a kész ing!

Ajánlott: