Spisu treści:

Gra w Ponga na elastycznym ekranie na koszuli: 8 kroków (ze zdjęciami)
Gra w Ponga na elastycznym ekranie na koszuli: 8 kroków (ze zdjęciami)

Wideo: Gra w Ponga na elastycznym ekranie na koszuli: 8 kroków (ze zdjęciami)

Wideo: Gra w Ponga na elastycznym ekranie na koszuli: 8 kroków (ze zdjęciami)
Wideo: A Wy na jakim etapie związku jesteście? 😂 #shorts 2024, Listopad
Anonim
Pong grający na elastycznym ekranie na koszuli
Pong grający na elastycznym ekranie na koszuli
Pong grający na elastycznym ekranie na koszuli
Pong grający na elastycznym ekranie na koszuli
Pong grający na elastycznym ekranie na koszuli
Pong grający na elastycznym ekranie na koszuli

To jest mój kostium na Halloween na rok 2013. Prace nad nim trwały od około roku, a jego stworzenie zajęło kilka godzin. Ekran ma 14 na 15 pikseli, więc dość niska rozdzielczość, ale wciąż może robić fajne rzeczy. Jest fizycznie elastyczny we wszystkich kierunkach, chociaż nie można go złożyć bez uszkodzenia. Posiada kontroler składający się z pojedynczego przycisku i suwaka, podłączony do Pro mega przez USB. Aby utrzymać go przy życiu przez długi czas, wykorzystuje dwie monstrualne baterie 2200 mAh połączone szeregowo, aby uzyskać niezbędne napięcie, a następnie regulator 5 V, aby był użyteczny. Cała elektronika jest umieszczona w kieszeniach po wewnętrznej stronie koszuli, dzięki czemu można ją wyjąć i prać koszulę. Gra w funkcjonalną grę w ponga. Najpierw ozdabia ją słowami „PONG PLAY” pięknymi niebieskimi literami przy użyciu zmodyfikowanej wersji czcionki Tom Thumb (można ją znaleźć na https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Po pięciu sekundach można wybrać opcję, aby nacisnąć przycisk, aby przejść dalej, lub nie naciskać przycisku i pozostawić za sobą doskonale dobre wrażenia. Kiedy ktoś zdecyduje się nacisnąć przycisk, rozpoczyna się gra. Czerwona paletka po prawej to wiosło komputerowe, a zielone wiosło po prawej to wiosło gracza, które jest kontrolowane przez garnek przesuwania, aby poruszać się w górę iw dół. Piłka odbija się, gdy każda ze stron próbuje zdobyć punkt. Gracz może uderzyć piłkę krawędzią wiosła, aby ją przyspieszyć (fajna funkcja), podczas gdy komputer nie może tego zrobić, a zamiast tego utknie, poruszając się nieco wolniej niż piłka. Po zdobyciu punktu piksel zmienia się na biały po bokach punktacji. Liczy się binarnie od dołu. gdzie zielony lub czerwony to zero, a biały to 1. 21 to wynik do wygrania (lub przegranej w zależności od tego, kto zdobędzie 21 punktów), a więc gdy tabliczka gracza odczyta 10101, wyświetlany jest tekst „WYGRYWASZ”. Ponownie w zmodyfikowanym Tom Thumb. To samo dzieje się, ale zamiast tego wyświetla się „TY PRZEGRAŁEŚ”. Po wygranej lub przegranej gra zostanie wznowiona do punktu zaraz po Pong Play. Aby całkowicie zrestartować komputer, wciskany jest przycisk restartu na „Magic Box”, znanym również jako pudełko z całą elektroniką z wyjątkiem ekranu.

Krok 1: Materiały i narzędzia

Materiały i narzędzia
Materiały i narzędzia
Materiały i narzędzia
Materiały i narzędzia

Rzeczy oznaczone * są opcjonalne, ale zalecane I tak w dowolnej kolejności… Materiały: 4 jardy Adafruit Neopixle 60 pikseli na metr pasa 1 T-shirt *1 para Szelek 1/2 metra materiału będzie więcej niż wystarczająca (nie rozciągliwy splot) Kabel USB A męski na USB B o długości 6 stóp 1 złącze żeńskie USB A 3 2-stykowe złącza żeńskie JST 4 2-stykowe męskie przewody JST ładowarka akumulatorów 2 baterie 6600 mAh 1 przycisk w stylu Arcade 1 arduino pro-mega 1 złącze FTDI 1 złącze żeńskie USB B z tabliczką zaciskową 1 włącznik/wyłącznik (przełącznik) 1 przełącznik resetowania (przegubowy lub chwilowy) 1 potencjometr suwakowy *1 suwak suwaka potencjometru 1 para złącz wysokiego wzmacniacza *1 obudowa projektu 1 5 V 3+ regulator napięcia wzmacniacza mały kawałek plastiku trochę lutu trochę drutu trochę gwintu * trochę gorącego kleju * trochę gumki trochę czasu (może trochę więcej niż "trochę") trochę wytrwałości (prawdopodobnie będziesz potrzebować sporo tego w rzeczywistości) trochę rurek termokurczliwych lub taśmy elektrycznej trochę super kleju trochę żelaza na podkładce Narzędzia *Pomocne dłonie Normalna ręka s (lub ktoś, kto ma do nich dostęp) Lutownica *Pistolet do klejenia na gorąco Dremel lub papier ścierny Dłuto Ściągacze do przewodów Przecinaki do drutu Zszywacz Śrubokręt Śrubokręt Szpilki Maszyna do szycia Nożyczki do tkanin

Krok 2: Pokrój pasek LED na mniejsze paski

Pokrój pasek LED na mniejsze paski
Pokrój pasek LED na mniejsze paski
Pokrój pasek LED na mniejsze paski
Pokrój pasek LED na mniejsze paski
Pokrój pasek LED na mniejsze paski
Pokrój pasek LED na mniejsze paski

Użyj preferowanego narzędzia do cięcia i pokrój pasek na 14 segmentów, każdy o długości 15 pikseli. Tnij tylko między śladami miedzi, oznaczonymi jako „DO” „DIN” „+5V” i „GND”. Jeśli jest już przylutowany do miedzi, wystarczy je przeciąć. Staraj się nie wcinać zbyt wiele w odsłoniętą miedź, ale jeśli trochę ją naciśniesz, to w porządku. Po odcięciu wszystkich 14 pasków odetnij trochę gumy z każdego końca, aby usunąć ją z drogi do lutowania pasków.

Krok 3: lutowanie ekranu razem

Wspólne lutowanie ekranu
Wspólne lutowanie ekranu
Wspólne lutowanie ekranu
Wspólne lutowanie ekranu
Wspólne lutowanie ekranu
Wspólne lutowanie ekranu

Weź drut i pokrój go na około 3,5 cala (9 cm) odcinki. W moim przypadku mam trzy różne kolory, aby łatwiej było zachować prosto podczas lutowania, ale jeden kolor będzie w porządku. Będziesz potrzebować około 40 takich małych facetów, ale na wszelki wypadek wytnij jeszcze kilka. Po zakończeniu cięcia drutu, zdejmij i ocynuj końce (jeśli masz doświadczenie w lutowaniu, możesz przejść do następnego akapitu), co oznacza, że po usunięciu kawałka plastiku nałóż trochę lutu na końce każdego drutu. Nie nagrzewaj lutowia i staraj się przejść do drutu, nagrzej lutownicą od spodu miedzi i umieść lut na górze. Bądź cierpliwy i poczekaj, aż gorący drut stopi lut. Kuszące jest, aby lutować lutownicę do lutowia, aby zacząć (moja niecierpliwość i wiem dokładnie, jak się czujesz), ale lut nie będzie się tak dobrze trzymać. Zrób to samo dla odsłoniętych śladów miedzi na każdym końcu odcinków taśmy. Jeśli ma już lut, nie martw się o to. W przypadku paska możesz zbudować mały kopiec, aby później było łatwiej. Pracując z paskiem, rób to szybko i staraj się nie spędzać zbyt dużo czasu na ogrzewaniu paska. Zrób tylko to, co musisz zrobić, aby stopić lut w śladzie. Przylutuj przewód na każdym śladzie do końca pierwszego paska (pierwszy pasek to ten z przewodami i złączem, przylutuj go do odsłoniętego końca). Jeśli spojrzysz na pasek, zobaczysz na nim małe strzałki idące do końca, w którym przylutowałeś drut. Weź kolejny pasek tak, aby strzałki wskazywały przeciwny kierunek, i przylutuj przewód wychodzący ze śladu GND do śladu GND drugiego, +5V do +5V i tak dalej. Powtórz to, upewniając się, że strzałki zamieniają kierunek po każdej sekcji, tak że gdybyś za nimi podążał, zygzakowałyby w górę iw dół, a na końcu można było go rozciągnąć na długim pasku. Po przylutowaniu wszystkich 14 pasków ułóż je i wyrównaj, aby diody LED utworzyły siatkę. Następnie trzymaj je razem w sposób, który można później usunąć bez uszkodzenia paska. Użyłem taśmy samoprzylepnej. Jest wystarczająco lepki, aby utrzymać wszystko razem, ale nie tak lepki, aby pozostawić resztki. Nie polecam niczego trwałego, np. zszywek czy taśmy klejącej. Gdy wszystko jest już sklejone, przylutuj przewód z paska na dole +5V do tego bezpośrednio obok. Powtarzaj, aż całe dno będzie miało odczepy mocy na całej długości. Dzieje się tak, aby ekran nie przyciemniał się wraz z postępem linii diod LED.

Krok 4: Lutowanie elektroniki rdzenia

Lutowanie elektroniki rdzenia
Lutowanie elektroniki rdzenia
Lutowanie elektroniki rdzenia
Lutowanie elektroniki rdzenia
Lutowanie elektroniki rdzenia
Lutowanie elektroniki rdzenia

Przylutuj płytkę zaciskową USB B (BOB) do złącza USB B. Przylutuj odpowiednie przewody do złącza USB A. Radzę spojrzeć na wyprowadzenia złącza, które można znaleźć na tej stronie, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Nie martw się, gdzie w tej chwili przylutować drugie końce przewodów do złącza USB A; które zostaną omówione w kroku kontrolera. Odetnij złącze danych z paska, złącze żeńskie, a nie złącze męskie (złącze żeńskie jest pobierane z drugiego końca). Przylutuj męskie złącza JST do końcówek baterii tak, aby kolor czerwony przeszedł na czerwony, a czarny na czarny. Roztop rurki termokurczliwe na odsłoniętych przewodach (nasuń je przed lutowaniem), aby się nie zwierały lub nie używały czegoś innego, jak taśma elektryczna lub gorący klej. Przylutuj kilka przewodów do wszystkich żeńskich złącz JST. Upewnij się, że wtyczka męska jest podłączona, aby kołki się nie przesuwały. Uważaj na polaryzację i upewnij się, że przewody pasują do męskich złączy. Przylutuj przewody do jednego złącza wysokiego napięcia (ale nie do pary), jeszcze raz, upewniając się, że wszystkie kolory pasują do siebie i że są połączone, aby zapobiec przesuwaniu się pinów. Przylutuj żeński tylko zespół złącza/przewodu, aby były połączone szeregowo, a nie równolegle, aby uzyskać napięcie progowe dla regulatora mocy. Przylutuj więc przewód dodatni do przewodu ujemnego drugiego zespołu, więc teraz mamy jeden nielutowany przewód dodatni i jeden ujemny nielutowany przewód, a dwa lutowane przewody są przylutowane do różnych złączy. Weź przewód ujemny i zachowaj go do przylutowania do przewodu ujemnego w innym miejscu. Teraz weź przewód dodatni i przylutuj go do przełącznika. Jeśli są trzy lub więcej pinów (lub więcej niż jeden sposób włączenia), przylutuj go do środkowego pinu. Zauważ, że „środkowy pin” może fizycznie nie znajdować się w środku. Sposobem na jego identyfikację jest znalezienie pinu, który gdy przełącznik jest włączony w dowolnym stanie, zawsze będzie połączony z innym pinem. Jeśli żaden pin nie jest taki, to masz bardzo specjalny przełącznik; po prostu podłącz go do dowolnego pinu i upewnij się, że następny przewód przylutowany do przełącznika zostanie podłączony do tego przewodu w co najmniej jednym stanie włączonym. Teraz przylutuj dodatni przewód wlotowy regulatora napięcia do przeciwległego końca przełącznika, jak omówiono powyżej. Przylutuj napięcie dodatnie do dodatniego końca nielutowanego złącza wysokoprądowego. Weź ujemny przewód wlotowy i przylutuj go do ujemnego końca złącza wysokoprądowego. Teraz zamierzamy lutować zasilanie równolegle do Arduino i listwy zasilającej. Teraz weź przewody wyjściowe regulatora napięcia i przylutuj dwa kawałki drutu na dodatnim i ujemnym końcu, aby wyszły w kształcie litery Y. Przylutuj dwupinowe złącze do dodatniego i ujemnego przewodu zespołu taśmy led. Nie ma znaczenia jakiego rodzaju złącza używasz, może to być JST lub w moim przypadku jakiś kabel zasilający/audio lub coś takiego (nie jestem pewien i przepraszam za brak zdjęć). Przylutuj jeden z dodatnich przewodów zasilania do dodatniego końca przeciwległego złącza paska świetlnego, a jeden z ujemnych przewodów do drugiego styku złącza. Zrób to samo, ale dla męskiego złącza/przewodu JST. Cały czas pamiętaj o zaizolowaniu połączeń lutowanych, aby uniknąć zwarć. Teraz przejdźmy do tego, co zrobić ze złączem USB B. Przylutuj przewód dodatni do otworu 5V w Arduino Pro Mega. Weź przewód uziemiający i przylutuj go do otworu GND. Weź D+ i przylutuj go do pinu cyfrowego (lub w tym przypadku do otworu) 40. Przylutuj D- do pinu analogowego 15. Przylutuj koniec danych złącza żeńskiego, który pasuje do męskiego złącza paska LED do pinu danych 6 i przewód uziemiający do pinu GND. Taśma maskująca lub samoprzylepna świetnie sprawdza się do mocowania przewodów do płytki, aby nie wypadły, gdy jest odwrócona do lutowania. Teraz weź chwilowy przycisk i przylutuj przewód z jednego końca do pinu VCC (lub dowolnego pinu wyjściowego napięcia), a drugi koniec do pinu RESET.

Krok 5: Kontroler

Kontroler
Kontroler
Kontroler
Kontroler
Kontroler
Kontroler

Pierwszym z nich jest wybór odpowiedniego kształtu na początek. Wszystko zależy od tego, jak chcesz skonstruować kontroler. Chciałem bardziej płaskiego kontrolera, więc dostałem kawałek deski 3 1/2" na 3/4". ułóż części w sposób, który wydaje się odpowiedni i wygodny w pracy. Użyj francuskiej krzywej, kompasu, trójkąta i prostej krawędzi, aby narysować, gdzie powinny iść wszystkie elementy. Wytnij podstawowy zarys za pomocą wybranego narzędzia tnącego. Piła taśmowa byłaby najlepsza, ale ja użyłem piły do wycinania krawędzi, która działała bez zarzutu. Zeszlifuj krawędzie, aby płynnie przechodziły, a następnie zeszlifuj rogi, aby było wygodniej. Wywierć otwór na przełącznik, a następnie wyszlifuj, dłutem i/lub narzędziem Dremel wytnij dowolną część na spodzie, która będzie pasować. Staraj się nie robić nic z blatem i wyszlifuj tylko to, czego potrzebujesz, aby móc go dopasować, skręcając, pod kątem lub cokolwiek innego, aby go włożyć. przełącznik. Wywierć obszar, w którym pokrętło potencjometru będzie pasować, i wykuj obszar, aby mógł się w nim zatopić i zmieścić na całej długości. Wywierć otwory, aby śruba mogła go utrzymać. Zagnij małe kawałki złącza USB A, które sprawią, że jego ogólna szerokość trochę się zwiększy (spójrz na zdjęcia). Wytnij część na złącze, stopniowo sprawdzając, czy złącze pasuje. Super przyklej złącze do gniazda. Weź mały kawałek plastiku i przytnij go do kształtu, który będzie pasował do złącza (patrz zdjęcia), a następnie zszyj go do drewna. Odetnij wszelkie kawałki, które mogą przeszkadzać. Wkręć potencjometr i zamocuj pokrętło. Przylutuj przewód dodatni do jednego z końców potencjometru (nie do części zmiennej), a przewód ujemny do drugiego końca. Przylutuj D-pin do zmiennego pinu na doniczce. Przylutuj przewód z kołka na garnku z przewodem dodatnim do jednego z kołków na przycisku. Przylutuj D+ do drugiego pinu na przycisku. Przytnij zapasowy przewód i zaizoluj elementy, które go potrzebują.

Krok 6: Koszula

Koszula
Koszula
Koszula
Koszula
Koszula
Koszula

Znajdź wygodną koszulę, która przepuszcza światło. Wybrałam tę podstawową białą koszulkę. Tak naprawdę nie ma znaczenia kolor ani styl, o ile światło jest widoczne od wewnątrz. Nie polecam jednak grafiki na froncie. Rozłóż wszystko na koszulce, aby pomóc Ci zdecydować, gdzie chcesz, i użyj wymazywalnego narzędzia do znakowania, aby to narysować. Ja (to znaczy niektóre osoby, które znam) mam ołówek przeznaczony do zaznaczania tkanin, które łatwo się zmywają. Zmierz rozmiar baterii, obudowy kontrolera i ekranu i wytnij pasujące kawałki papieru. Następnie przypnij papier do kawałka nierozciągliwej tkaniny. Splot dobrze się do tego nadaje. Następnie wytnij prostokąt, pozostawiając około ćwierć cala na szew dookoła. Następnie, używając kawałka papieru jako prowadnicy, wprasuj fałdy w tkaninę. Teraz papier można usunąć. Na tej części kieszeni, która będzie górna, załóż ją trzy razy na siebie. Prasuj i przypnij, aby utrzymać go na miejscu. Zszyj spód na całej długości zagięcia. Teraz weź róg i złóż go tak, aby niezszyte krawędzie prostopadłe do siebie były równoległe i zszyj szew wzdłuż wyprasowanego zagięcia najbliżej rogu (zdjęcia naprawdę pomagają). Zrób to również dla drugiego rogu. Jeśli zdarzy się, że z kieszeni wyjdzie przełącznik dwustabilny, przyszyj otwór na guzik u podstawy kieszeni, w miejscu gdzie przełącznik się styka. Następnie zszyć dziurkę na guzik i wyciąć środkową część. Naprawdę nie mogę podać szczegółowych instrukcji, ponieważ miałem fajne narzędzie do robienia dziurek na guziki. Tylko upewnij się, że zrobiłeś dziurki przed przyszyciem kieszeni. Weź szpilki i przebij je przez koszulę w rogach oznaczeń kieszeni. Weź kieszeń i umieść każdy róg na szpilce (wewnątrz koszuli), pozostawiając ćwierć cala na szew i przypnij go do koszuli. Po zapięciu kieszeni. usuń szpilki nie trzymające kieszeni i przyszyj kieszeń do koszuli. Powtórz dla wszystkich kieszeni. Dla dużej kieszeni trzymającej ekran zostaw przerwę na przewody na dole kieszeni. Aby zrobić dziurę w koszuli zaznacz miejsce i weź żelazko z podkładu (z bardziej błyszczącą częścią na tkaninie) i naprasuj. Następnie, dla małego otworu (takiego jak ten, którego użyłem do przełącznika), wykonaj otwór na przycisk. Aby uzyskać większą dziurę, zaznacz kontur i użyj ściegu zygzakowatego wzdłuż linii (lub krzywej lub cokolwiek) i wytnij środkową część. Jeśli chcesz, możesz użyć szelek do utrzymania ciężaru kieszeni, dwa klipsy przytrzymujące kieszenie z przodu i tylne klipsy do spodni. Dostałam też rękawek z materiału naszyty na części szelek, które będą dotykały mojej skóry. Dwie koszule mogą być trochę za gorące, więc zrezygnowałem i użyłem małego rękawa z tkaniny.

Krok 7: Programowanie

Programowanie
Programowanie

A oto kod. Jest kilka części, które są dobrze skomentowane, ale zdecydowana większość nie. Jeśli masz pytania dotyczące różnych części, możesz podać mi numer wiersza (z #include jako wiersz numer jeden) lub daj mi kopię wiersza(ów) i funkcji, w której się znajduje (np. loop() lub compMovePaddle()) i zrobię co w mojej mocy, aby ci to wyjaśnić, a następnie dodać komentarz do kodu wyjaśniającego to. #include #define PIN 6 //mówi piny wejściowe dla gry int buttonPin = 40; //określa wynik przechowywany w tablicy binarnej, ponieważ jest łatwiejszy int playerScore[5] = {0, 0, 0, 0, 0}; int compScore[5] = {0, 0, 0, 0, 0}; //określa kierunek piłki int bvd=0;//0 jest w dół, 1 jest w górę int bhd=0;//0 jest w prawo, 1 jest w lewo //określa pozycję piłki int bvp = 8; int bhp = 6; //sprawdza, czy piłka jest w trybie szybkim boolean fast = false; //sprawdza czy jest to wynik. wartość logiczna cIsPoint = fałsz; wartość logiczna pIsPoint = fałsz; //pozycje wiosła int cPaddle = 0; int pPadło = 0; długi poprzedni Millis = 0; długi poprzedniMillisForComp = 0; //ustaw czasy opóźnienia dla szybko i wolno poruszającej się piłki, "Int" w normInt i fastInt jest dla interwału int normInt = 50; int fastInt = 10; //używane do sprawdzania wygranej. 1 to wygrana gracza, -1 to wygrana komputera, a 0 to nic się jeszcze nie wydarzyło int wygrana = 0; //pozbyć się błędu. używane w instrukcji addOne i nigdzie indziej. int gdzie = 0; //Rzecz wyświetlana przed startem, -1 to ucieczka 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}; //jeśli wygrasz 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}; //jeśli przegrasz, stracisz = {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}; //ustawia pasek led Adafruit_NeoPixel strip = Adafruit_NeoPixel(210, PIN, NEO_RGB + NEO_KHZ800); //konfigurowanie, nie zamienia pinu 40 na wejście, rozpoczyna pasek, wyświetla //komunikat i pokazuje go. void setup() { pinMode(buttonPin, INPUT); strip.początek(); for (int i = 0; pongPlay>0; i++){ strip.setPixelColor(pongPlay, strip. Color(0, 0, 255)); } strip.show(); opóźnienie(5000); while (digitalRead(buttonPin) == LOW){ //To pułapka!(do momentu naciśnięcia przycisku.) } } void loop() { clearScreen(); //rysuje paletki, aby pokazać wynik for(int i = 0; i < 5; i++){ if (playerScore==1){ strip.setPixelColor(204-i, strip. Color(255, 255, 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)); } } //rysuje kulkę w pozycji startowej strip.setPixelColor(98, strip. Color(255, 255, 255)); strip.pokaż(); //określa, czy piłka idzie w górę czy w dół while(pIsPoint == false && cIsPoint == false){ clearScreen(); unsigned long currentMillis = millis(); //przypisuje pozycję wiosła gracza pPaddle=checkPaddlePos(); //sprawdza następną pozycję checkNext(); //przenoszenie piłki if (szybko == false){ if(currentMillis - previousMillis > normInt){ previousMillis = currentMillis; przesuńPiłkę(); } }else if(fast == true){ if(currentMillis - previousMillis > fastInt){ previousMillis = currentMillis; przesuńPiłkę(); } } //narysuj piłkę if(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)); } //ruch wiosła komputerowego compMovePaddle(); //rysuj wiosła drawPaddles(); //właściwie połóż wszystko.strip.pokaż(); //sprawdzenie, czy punkt został zdobyty if (pIsPoint == true){ which = 0; bhd=0; Dodaj jeden(); przerwa; }else if(cIsPoint == true){ which = 1; bhd=1; Dodaj jeden(); przerwa; } } if (win == 1){ clearScreen(); for (int i = 0; TwojaWygrana>0; i++){ strip.setPixelColor(TwojaWygrana, strip. Color(255, 0, 0)); strip.pokaż(); } opóźnienie(5000); for (int i = 0; i < 5; i++){ wynik gracza = 0; wynik_komp = 0; } wygrana = 0; }else if (win == -1){ clearScreen(); for (int i = 0; przegrałeś>0; i++){ strip.setPixelColor(strata, strip. Color(0, 255, 0)); strip.pokaż(); } opóźnienie(5000); for (int i = 0; i < 5; i++){ wynik gracza = 0; wynik_komp = 0; } wygrana = 0; } pIsPoint = fałsz; cIsPoint = fałsz; bvp = 8; bhp = 6; bvd=random(0, 2);//0 nie działa, 1 jest w górę fast=false; } //AI dla gry 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++; } } } //przenosi piłkę void moveBall(){ if (bhd == 0){ bhp--; } w przeciwnym razie jeśli(bhd == 1){ bhp++; } if (bvd == 0){ bvp--; } w przeciwnym razie jeśli(bvd == 1){ bvp++; } } //dodaje jeden do tablicy. Jeśli który z nich wynosi 0, dodaje się do wyniku gracza. Jeśli jest 1, dodaje do komputerów void addOne(){ if (co == 0){//jeśli to wynik gracza //Dodaj jeden. To najprostszy sposób, jaki znam. for (int i=0; i < 5; i++){//pętla if (playerScore == 0){//jeśli ta wartość jest równa zero playerScore=1;//spraw, aby 1 przerwa; //to odejdź }else {//jeśli to 1 graczWynik=0;//ustaw go na zero i wykonaj pętlę } } }else if(which == 1){ for (int i=0; i < 5;i++){ if (wynik_kompilacji == 0){Wynik_kompilacji=Wynik_kompilacji+1; przerwa; } w przeciwnym razie { compScore=0; } } } //Sprawdza, czy ktoś wygrał. if (compScore[0]==1 && compScore[2]==1 && compScore[4]==1){ win = -1; } w przeciwnym razie (playerScore[0]==1 && playerScore[2]==1 && playerScore[4]==1){ win = 1; } } //sprawdza kulki następna pozycja void checkNext(){ //sprawdź czy punkt został zdobyty if (bhp == 13){ pIsPoint = true; }else if(bhp == 0){ cIsPoint = prawda; } //jeśli punkt został zdobyty, pomiń resztę tych rzeczy if (pIsPoint == false || cIsPoint == false){ //sprawdza piłkę pionowo if (bvp+bvd==15){ bvd = 0; } w przeciwnym razie, jeśli(bvp+bvd==0){ bvd = 1; } //sprawdza piłkę poziomo if (bhp+bhd==13){//najpierw po stronie komputera if (bvp >= 10-cPaddle && bvp <= 10-cPaddle+4){ if(bhd==1) { bhd=0; } inaczej, jeśli(bhd==0){ bhd=1; } szybko = fałsz; } w przeciwnym razie if(bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5){ if(bvp != 0 && bvp !=14){ if (bvd == 0){ bvd=1; }jeżeli(bvd == 1){ bvd=0; } bhd=1; } w przeciwnym razie (bvp == 0 || bvp == 14){ bhd=1; } szybko = fałsz; } }else if(bhp+bhd==1){//to po stronie gracza if (bvp >= pPaddle && bvp <= pPaddle+4){//czy uderza w wiosło w normalnym miejscu? //odbij piłkę! jeśli (bhd==1){bhd=0; } inaczej, jeśli(bhd==0){ bhd=1; } }else if(bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle){//czy uderza w wiosło na rogu if(bvp != 0 && bvp !=14){//czy to jest nie wysoko lub nisko? //Odbij piłkę! jeśli (bvd == 0){ bvd=1; } w przeciwnym razie, jeśli(bvd == 1){ bvd=0; } bhd=1; szybko = prawda; } w przeciwnym razie jeśli (bvp == 0 || bvp == 14){//czy jest w górę, czy w dół? //odbij piłkę! bhd=0; fast = true;//ustaw wartość, aby później piłka poruszała się szybko } } } } } int checkPaddlePos(){ //odczytuje pulę i odpowiednio decyduje o pozycji wiosła if (analogRead(A15)<93){ return 0; } w przeciwnym razie (analogRead (A15)<186){ return 1; } w przeciwnym razie (analogRead(A15)<279){ return 2; } w przeciwnym razie (analogRead(A15)<372){ return 3; } w przeciwnym razie (analogRead(A15)<465){ return 4; } w przeciwnym razie (analogRead (A15)<558){ return 5; } w przeciwnym razie (analogRead(A15)<652){ return 6; } w przeciwnym razie (analogRead (A15)<745){ return 7; } w przeciwnym razie (analogRead (A15)<837){ return 8; } w przeciwnym razie (analogRead(A15)<=931){ return 9; }else if(analogRead(A15)<=2014){ return 10; } } void drawPaddles(){ //losuje paletki we właściwym miejscu i wyświetla wynik na paletce for(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(); }

Krok 8: Gotowy produkt

Ukończony produkt
Ukończony produkt
Ukończony produkt
Ukończony produkt

I gotowe, gotowa koszula!

Zalecana: