Kazalo:

Pong igra fleksibilen zaslon na srajci: 8 korakov (s slikami)
Pong igra fleksibilen zaslon na srajci: 8 korakov (s slikami)

Video: Pong igra fleksibilen zaslon na srajci: 8 korakov (s slikami)

Video: Pong igra fleksibilen zaslon na srajci: 8 korakov (s slikami)
Video: CS50 2014 – неделя 1, продолжение 2024, November
Anonim
Pong igra fleksibilen zaslon na srajci
Pong igra fleksibilen zaslon na srajci
Pong igra fleksibilen zaslon na srajci
Pong igra fleksibilen zaslon na srajci
Pong igra fleksibilen zaslon na srajci
Pong igra fleksibilen zaslon na srajci

To je moj kostum za noč čarovnic za leto 2013. Delal je približno eno leto in za ustvarjanje je potreboval kar nekaj moških ur. Zaslon je velikosti 14 x 15 slikovnih pik, kar pomeni, da ima precej nizko ločljivost, vendar lahko kljub temu naredi nekaj zabavnih stvari. Fizično je prilagodljiv v vseh smereh, čeprav ga ni mogoče zložiti brez poškodb. Ima krmilnik, sestavljen iz enega samega gumba in drsnega lonca, priključenega na pro mega preko USB -ja. Za dolgo življenjsko dobo uporablja dve pošastni bateriji 2200 mAh, ki sta povezani zaporedno, da dobita potrebno napetost, nato pa še 5 voltni regulator, ki omogoča njeno uporabo. Vsa elektronika je nameščena v žepih na notranji strani srajce, tako da jih je mogoče odstraniti in srajco oprati. Igra funkcionalno igro pong. Najprej krasi enega z besedami "PONG PLAY" z lepimi modrimi črkami z uporabo spremenjene različice pisave Tom Thumb (najdete jo na https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Po petih sekundah lahko daste možnost, da pritisnete gumb, da se premaknete naprej, ali da ne pritisnete gumba in pustite popolnoma dobre izkušnje. Ko se kdo odloči pritisniti gumb, se igra začne. Rdeče veslo na desni je veslo računalnika, zeleno veslo na desni pa veslo igralca, ki ga za premikanje navzgor in navzdol nadzoruje drsnik. Žoga odskoči, ko poskuša vsaka stran osvojiti točko. Igralec lahko z robom vesla udari žogo, da jo pospeši (lepa lastnost), medtem ko računalnik tega ne zmore, in se namesto tega zatakne, ko se premika nekoliko počasneje kot žoga. Ko je točka dosežena, se piksel spremeni na belo na straneh veslanja. Šteje se v binarni obliki od spodaj. kjer je zelena ali rdeča nič, bela pa 1. 21 je rezultat za zmago (ali izgubo, odvisno od tega, kdo dobi 21 točk), in tako, ko igralčevo veslo prebere 10101, se prikaže besedilo "ZMAGAŠ". Še enkrat v spremenjenem Tom Thumbu. Enako se zgodi, vendar je namesto tega prikazano "YOU LOSE". Po zmagi ali porazu se igra znova zažene takoj po igri v pongu. Za popoln ponovni zagon pritisnete gumb za ponovni zagon na "Magic Boxu", znanem tudi kot polje-z-vso-elektroniko-razen-zaslona.

Korak: Materiali in orodja

Materiali in orodja
Materiali in orodja
Materiali in orodja
Materiali in orodja

Stvari, označene z *, so neobvezne, vendar priporočljive In tako v nobenem posebnem vrstnem redu … Materiali: 4 jardi Adafruit Neopixle 60 pikslov na meter traku 1 majica * 1 par obeskov 1/2 jarda tkanine bo več kot dovolj (Ne prednost je raztegljivo tkanje) 6-metrski USB A moški do USB B moški kabel 1 USB A ženski konektor 3 2-polni ženski konektorji JST 4 2 polni moški žice JST polnilec baterij 2 baterije 6600 mAh 1 Gumb v arkadnem slogu 1 arduino pro-mega 1 glava FTDI 1 ženski konektor USB B z odklopno ploščo 1 stikalo za vklop/izklop (preklop) 1 stikalo za ponastavitev (preklopno ali trenutno) 1 drsni potenciometer *1 gumb za drsni lonček 1 par priključkov z visokim ojačevalnikom *1 ohišje projekta 1 5V 3+ ojačevalnik napetosti majhen košček plastike nekaj spajkanja nekaj žice nekaj niti *nekaj vročega lepila *nekaj elastike nekaj časa (Morda malo več kot "nekaj") nekaj vztrajnosti (verjetno boste potrebovali kar nekaj tega v resnici) nekaj toplotno skrčljive cevi ali električni trak nekaj super lepila nekaj železa na podlago Orodja *Roke za pomoč Normalna roka s (ali nekdo, ki ima dostop do njih) Spajkalnik *Pištola za vroče lepilo Dremel ali brusni papir Dleto Odstranjevalci žice Rezalniki za pištole Žagirne igle Šivalni stroj Škarje za tkanine

2. korak: LED trak razrežite na manjše trakove

LED trak razrežite na manjše trakove
LED trak razrežite na manjše trakove
LED trak razrežite na manjše trakove
LED trak razrežite na manjše trakove
LED trak razrežite na manjše trakove
LED trak razrežite na manjše trakove

Uporabite želeni pripomoček za rezanje in trak razrežite na 14 segmentov, dolgih vsakih 15 slikovnih pik. Izrežite le med bakrenimi sledmi, označenimi kot "DO" "DIN" "+5V" in "GND". Če je že spajkano na baker, ga preprosto prerežite. Poskusite, da ne razrežete preveč v izpostavljeni baker, če pa ga malo pobotate, je to v redu. Ko je vseh 14 trakov odrezanih, z vsakega konca odrežite malo gume, da se izognete spajkanju trakov.

3. korak: Spajanje zaslona skupaj

Spajanje zaslona skupaj
Spajanje zaslona skupaj
Spajanje zaslona skupaj
Spajanje zaslona skupaj
Spajanje zaslona skupaj
Spajanje zaslona skupaj

Vzemite žico in jo razrežite na približno 3,5 -palčne (9 cm) segmente. V mojem primeru imam tri različne barve za lažje ohranjanje naravnosti pri spajkanju, vendar bi ena barva delovala v redu. Potrebovali boste približno 40 teh fantov, vendar za vsak slučaj odrežite še nekaj. Ko končate z rezanjem žice, odlepite in pokosite konce (če imate izkušnje s spajkanjem, lahko preskočite na naslednji odstavek), kar pomeni, da po tem, ko odstranite malo plastike, na konce vsake žice nanesite nekaj spajkanja. Spajka ne segrevajte in poskušajte preiti na žico, segrejte s spajkalnikom z dna bakra in spajkalnik postavite na vrh. Bodite potrpežljivi in počakajte, da vroča žica stopi spajkanje. V skušnjavi je spajkalnik natakniti na spajkalnik, da ga začnete (moja nestrpnost in točno vem, kako se počutite), vendar se spajkalnik tudi ne drži. Enako naredite za izpostavljene bakrene sledi na vsakem koncu odsekov traku. Če že ima spajkanje, naj vas to ne skrbi. Za trak boste morda želeli zgraditi majhen nasip, da bo kasneje lažje. Ko delate s trakom, to storite hitro in ne poskušajte porabiti veliko časa za nanašanje toplote na trak. Naredite le vse, kar morate, da spajk stopite na sled. Spajajte žico na vsaki sledi do konca prvega traku (prvi trak je tisti z žicami in priključkom, ga spajkajte na izpostavljeni konec). Če pogledate trak, boste na njem videli majhne puščice, ki gredo do konca, kjer ste spajkali žico. Vzemite še en trak, tako da puščice kažejo v nasprotni smeri, in žico, ki prihaja iz sledi GND, spajkajte na sled GND druge, +5V na +5V itd. To ponovite tako, da puščice po vsakem odseku preklapljajo smer, tako da bi se, če bi jim sledili, cik -cak gor in dol, in da bi se na koncu lahko raztegnil na dolg trak. Ko je vseh 14 trakov spajkanih, jih položite in poravnajte, tako da LED tvori mrežo. Nato jih držite skupaj z metodo, ki jo lahko kasneje odstranite brez poškodb traku. Uporabil sem škotski trak. Je dovolj lepljiv, da drži vse skupaj, vendar ne tako lepljiv, da bi pustil sledi. Ne priporočam ničesar za trajno, na primer sponke ali lepilni trak. Ko je vse skupaj zlepljeno, spajkajte žico od traku na dnu +5V do tistega, ki je tik ob njem. Ponavljajte, dokler na celotnem dnu ne pridejo napajalne pipe. Tako zaslon ne zatemni, ko vrstica LED napreduje.

4. korak: Spajkanje jedrne elektronike

Spajkanje jedrne elektronike
Spajkanje jedrne elektronike
Spajkanje jedrne elektronike
Spajkanje jedrne elektronike
Spajkanje jedrne elektronike
Spajkanje jedrne elektronike

Spojite odklopno ploščo USB B (BOB) na priključek USB B. Priključite ustrezne žice na priključek USB A. Svetujem, da si ogledate pin-out priključka, ki ga najdete na tej spletni strani, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Ne skrbite, kje bi zdaj spajkali druge konce žic na priključku USB A; ki bo zajeto v koraku krmilnika. Odrežite podatkovni konektor s traku, ženskega konektorja, ne moškega konektorja (ženski konektor dobite z drugega konca). Spojite moške priključke JST na konce baterije, tako da rdeča preide v rdečo, črna pa v črno. Toplotno skrčljivo cev stopite na izpostavljenih žicah (zdrsnite po njej pred spajkanjem), da se ne kratčijo ali uporabijo kaj drugega, na primer električni trak ali vroče lepilo. Spajate nekaj žic na vse ženske konektorje JST. Pazite, da imate priključen moški konec, da se zatiči ne premikajo. Pazite na polarnost in se prepričajte, da se žice ujemajo z moškimi konektorji. Še enkrat spajkajte žice na visokonapetostni konektor (vendar ne na njegov par), pri tem pazite, da se vse barve ujemajo in da so med seboj povezane, da preprečite premikanje nožic. Spojite samo sklop konektorja/žice za žensko, tako da sta povezani zaporedno, ne vzporedno, da preseže mejno napetost regulatorja moči. Torej, pozitivno žico spajkajte na negativno žico drugega sklopa, tako da imamo zdaj eno spajkano pozitivno žico in eno negativno nepajano žico, dve spajkani žici pa sta spajkani na različne priključke. Vzemite negativno žico in jo shranite za spajkanje na negativno žico drugje. Zdaj vzemite pozitivno žico in jo spajkajte na stikalo. Če so trije ali več zatiči (ali več načinov "vklopljenega"), jo spajkajte na srednji zatič. Upoštevajte, da "srednji zatič" morda fizično ni na sredini. Način, kako ga prepoznati, je najti pin, ki bo, ko je stikalo v katerem koli stanju, vedno priključen na drug pin. Če noben pin ni tak, potem imate zelo posebno stikalo; samo povežite ga s katerim koli zatičem in se prepričajte, da bo naslednja žica, spajkana na stikalo, priključena na to žico v vsaj enem vklopljenem stanju. Zdaj spajkajte pozitivno vstopno žico na regulatorju napetosti na nasprotni konec stikala, kot je opisano zgoraj. Pozitivno napetost spajkajte na pozitivni konec nelemljenega visokotokovnega priključka. Vzemite negativno dovodno žico in jo spajkajte na negativni konec visokotokovnega priključka. Zdaj bomo spajkali napajanje vzporedno z Arduino in Power trakom. Zdaj vzemite izhodne žice regulatorja napetosti in dva kosa žice spajkajte na pozitivnem in negativnem koncu, tako da prideta v obliki črke Y. Spajate dvopolni konektor na pozitivne in negativne žice sklopa LED traku. Ni važno, kakšen priključek uporabljate, lahko je to JST ali v mojem primeru kakšen napajalni/zvočni kabel ali kaj podobnega (nisem prepričan in se opravičujem, ker nimam slik). Spajate eno od žic pozitivnega napajanja na pozitivni konec nasprotnega konektorja za svetlobni trak in eno od negativnih žic na drugi pin na priključku. Naredite enako, vendar za moški sklop priključka/žice JST. Pri tem ne pozabite izolirati spajkalnih spojev, da se izognete kratkim hlačam. Zdaj pa o tem, kaj storiti s priključkom USB B. Pozitivno žico spajkajte na 5 -voltno luknjo na Arduino Pro Mega. Vzemite ozemljitveno žico in jo spajkajte v luknjo GND. Vzemite D+ in ga spajkajte na digitalni zatič (ali v tem primeru luknjo) 40. Spajkajte D- na analogni zatič 15. Spajkajte podatkovni konec ženskega konektorja, ki je povezan z moškim priključkom LED traku na podatkovni zatič 6 in ozemljitveno žico na pin GND. Zaščitni trak ali škotski trak odlično delujeta pri držanju žic na plošči, da ne padejo ven, ko se obrnejo za spajkanje. Zdaj vzemite trenutni gumb in spajkajte žico z enega konca na pin VCC (ali kateri koli napetostni izhodni pin), drugi konec pa na pin RESET.

5. korak: Krmilnik

Krmilnik
Krmilnik
Krmilnik
Krmilnik
Krmilnik
Krmilnik

Najprej je izbira prave oblike za začetek. Vse je odvisno od tega, kako želite krmilnik strukturirati. Želel sem več ploščatega krmilnika, zato sem dobil kos deske 3 1/2 "za 3/4". dele razporedite tako, da se vam zdijo primerni in udobni za delo. S francosko krivuljo, kompasom, trikotnikom in ravnim robom potegnite, kam naj gredo vsi kosi. Izrežite osnovni obris z rezalnim orodjem po vaši izbiri. Najboljša bi bila žaga za prepoved, vendar sem uporabil žago za obvladovanje, ki je delovala v redu. Pobrusite robove, da se gladko prehodijo, nato pa po kotih pobrusite, da bo bolj udobno. Izvrtajte luknjo za stikalo, nato s peskom, dletom in/ali Dremelom odstranite kateri koli del na dnu, ki bo ustrezal. Z vrhom ne poskušajte storiti ničesar in samo zbrusite, zapeljite ali karkoli drugega, da ga vstavite v notranjost. Ko je vstavljen, ga pritrdite s plastično matico in pritrdite stikalo. Izvrtajte območje, da se gumb potenciometra prilega, in ga izklesate, da se lahko potopi in prilega do konca. Izvrtajte nekaj lukenj, da jih lahko pritrdite z vijakom. Upognite majhne koščke priključka USB A, zaradi katerih se njegova splošna širina nekoliko poveča (poglejte slike). Izrežite del priključka in postopoma preverite, ali se priključek prilega. Priključek super prilepite v njegovo režo. Vzemite majhen kos plastike in ga razrežite v obliko, ki se prilega konektorju (poglejte slike), nato pa ga spejte na les. Odrežite vse kose, ki bi vam lahko ovirali. Privijte potenciometer in pritrdite gumb. Pozitivno žico spajkajte na enega od koncev potenciometra (ne na spremenljivem delu), negativno žico pa na nasprotni konec. Spojite D-pin na spremenljiv zatič na loncu. Spajajte žico s čepa na loncu s pozitivno žico na enega od zatičev na gumbu. Spajkajte D+ z drugim zatičem na gumbu. Odrežite rezervno žico in izolirajte dele, ki jih potrebujejo.

6. korak: Srajca

Srajca
Srajca
Srajca
Srajca
Srajca
Srajca

Poiščite udobno srajco, ki bo prepuščala svetlobo. Izbral sem to osnovno belo majico. Barva ali slog v resnici ni pomemben, dokler je svetloba vidna skozi notranjost. Ne priporočam grafike spredaj. Položite vse na majico, da se boste lažje odločili, kje jo želite, in jo uporabite z brisalnim orodjem za označevanje. Jaz (kar pomeni nekaj ljudi, ki jih poznam) imam svinčnik za označevanje tkanin, ki se zlahka opere. Izmerite velikost baterij, ohišja krmilnika in zaslona ter izrežite kos papirja. Nato papir pripnite na kos neraztegljive tkanine. Za to dobro deluje vezava. Nato izrežite pravokotnik, ki pušča približno četrt palca za šiv. Nato uporabite kos papirja kot vodilo, da zgubate gube v tkanini. Zdaj lahko papir odstranite. Na delu žepa, ki bo zgornji, ga trikrat prepognite. Likajte in pripnite, da ostane na svojem mestu. Sew a zdi vse do sredine gube. Sedaj vzemite vogal in ga prepognite tako, da so nešivani robovi, pravokotni drug na drugega, vzporedni in sešijete videz vzdolž zlikane gube, ki je najbližje vogalu (slike res pomagajo). Naredite to tudi za drugi kotiček. Če imate iz žepa izklopno stikalo, na dnu žepa zašite stikalo, kjer se stikalo dotakne. Nato zašite luknjo za gumb in izrežite srednji del. Ne morem dati natančnih navodil, ker sem imel kul orodje za izdelavo lukenj za gumbe. Prepričajte se, da ste luknje naredili, preden je žep prišit. Vzemite nekaj zatičev in jih potisnite skozi srajco na vogalih oznak za žep. Vzemite žep in vsak vogal postavite na zatič (na notranji strani srajce), za šiv pa pustite četrt centimetra, in ga pripnite na srajco. Ko je žep pripet. odstranite zatiče, ki ne držijo žepa, in žep prišite na srajco. Ponovite za vse žepe. Za velik žep, ki drži zaslon, pustite vrzel za žice na dnu žepa. Če želite v majico narediti luknjo, označite mesto in vzemite likalnik na podlago (s svetlejšim delom na tkanini) in ga zlikajte. Nato za majhno luknjo (kot sem uporabil za preklopno stikalo) naredite luknjo za gumb. Za večjo luknjo označite obris in uporabite cikcak šiv vzdolž črte (ali krivuljo ali kaj imate) in izrežite srednji del. Če želite, lahko z naramnicami zadržite težo žepov, obe sponki se držita na žepih spredaj, zadnja pa na hlačah. Dobil sem tudi majhen rokav iz tkanine, prišit čez dele naramnic, ki se bodo dotikali moje kože. Dve majici se lahko nekoliko segrejeta, zato sem se odločil in uporabil majhen rokav iz tkanine.

7. korak: Programiranje

Programiranje
Programiranje

In tukaj je koda. Nekaj delov je dobro komentiranih, velika večina pa ne. Če imate vprašanja o različnih delih, mi lahko daste številko vrstice (z #include kot številko prve vrstice) ali pa mi dajte kopijo vrstic in funkcijo, v kateri se nahaja (na primer zanka () ali compMovePaddle ()) in potrudil se bom, da vam to razložim, nato pa kodi dodam komentar, ki to pojasni. #include #define PIN 6 // pove, kateri so vhodni zatiči za igro int buttonPin = 40; // narekuje rezultat, shranjen v dvosmernem nizu, ker je boljši int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // narekuje smer žoge int bvd = 0; // 0 je navzdol, 1 je navzgor int bhd = 0; // 0 je desno, 1 je levo // narekuje položaj žog int bvp = 8; int bhp = 6; // preveri, če je žogica v hitrem načinu boolean fast = false; // preveri, ali gre za rezultat. logična vrednost cIsPoint = false; boolean pIsPoint = false; // položaji vesla int cPaddle = 0; int pPaddle = 0; dolgi prejšnjiMillis = 0; dolgi prejšnjiMillisForComp = 0; // nastavimo čas zakasnitve za hitro in počasi premikajočo se žogo "Int" v normInt in fastInt je za interval int normInt = 50; int fastInt = 10; // se uporablja za preverjanje zmage. 1 je zmaga igralca, -1 v računalniški zmagi, 0 pa še ni nič int win = 0; // znebiti se hrošča. uporabljeno v stavku addOne in nikjer drugje. int kateri = 0; // Pred začetkom prikazano je -1 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}; // če zmagaš int youWin = {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}; // če izgubite med izgubo = {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}; // nastavi LED trak Adafruit_NeoPixel = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // nastavitev, za vhod ne obrne nožice 40, začne trak, prikaže // sporočilo in ga prikaže. void setup () {pinMode (buttonPin, INPUT); strip.begin (); za (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); zamuda (5000); while (digitalRead (buttonPin) == LOW) {// To je past! (dokler ne pritisnete gumba.)}} void loop () {clearScreen (); // nariše vesla, da prikaže rezultat za (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } drugače če ((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)); }} // potegne žogo v začetni položaj strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // odloča, ali gre žogica gor ali dol, medtem ko (pIsPoint == false && cIsPoint == false) {clearScreen (); nepodpisani dolgi tokMillis = millis (); // dodeli položaj vesla igralca pPaddle = checkPaddlePos (); // preveri naslednji položaj checkNext (); // premikanje žoge if (fast == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // potegni žogo, če (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)); } // premikanje vesla računalnika compMovePaddle (); // draw's the paddles drawPaddles (); // pravzaprav vse postavil.strip.show (); // preverjanje, če je bila točka dosežena if (pIsPoint == true) {which = 0; bhd = 0; addOne (); prekiniti; } else if (cIsPoint == true) {kateri = 1; bhd = 1; addOne (); prekiniti; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } zakasnitev (5000); za (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } zmaga = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } zakasnitev (5000); za (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } zmaga = 0; } pIsPoint = napačno; cIsPoint = false; bvp = 8; KM = 6; bvd = naključno (0, 2); // 0 je navzdol, 1 je hitro = napačno; } // AI za igro void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - prejšnjiMillisForComp> 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 ++; }}} // premakne žogo void moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // doda eno v matriko. Če whichOne je 0, se doda igralčev rezultat. Če je 1, računalnikom doda void addOne () {if (which == 0) {// če je rezultat igralca // Dodaj enega. To je preprost način, kako vem. for (int i = 0; i <5; i ++) {// zanka if (playerScore == 0) {// če je ta vrednost nič igralcaScoreScore = 1; // naredimo 1 prelom; // potem pojdi stran} else {// če je 1 igralecScore = 0; // naj bo nič in zanka}}} else if (which == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; prekiniti; } else {compScore = 0; }}} // Preveri, če je kdo zmagal. če (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } drugače če (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // preveri kroglice na naslednji poziciji void checkNext () {// preveri, če je bila točka dosežena, če (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // če je bila dosežena točka, preskočite preostale stvari, če (pIsPoint == false || cIsPoint == false) {// preveri žogo navpično if (bvp+bvd == 15) {bvd = 0; } else if (bvp+bvd == 0) {bvd = 1; } // horizontalno preveri žogo if (bhp+bhd == 13) {// najprej na strani računalnika if (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } hitro = napačno; } 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; } hitro = napačno; }} else if (bhp+bhd == 1) {// potem na strani igralca if (bvp> = pPaddle && bvp <= pPaddle+4) {// ali zadeva veslo na običajnem mestu? // odbijte žogo! če (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// ali zadeva veslo na vogalu, če (bvp! = 0 && bvp! = 14) {// je to ni visoko ali dol nizko? // Odbijte žogo! če (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; hitro = res; } else if (bvp == 0 || bvp == 14) {// je visoko ali nizko? // odbijte žogo! bhd = 0; fast = true; // nastavite vrednost, da se žogica pozneje hitro premika}}}}} int checkPaddlePos () {// prebere pot in se odloči za položaj vesla skladno if (analogRead (A15) <93) {return 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 () {// nariše vesla na pravem mestu in prikaže rezultat na veslu za (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. korak: Končni izdelek

Končan izdelek
Končan izdelek
Končan izdelek
Končan izdelek

Evo, končana srajca!

Priporočena: