Съдържание:

Понг играе гъвкав екран на риза: 8 стъпки (със снимки)
Понг играе гъвкав екран на риза: 8 стъпки (със снимки)

Видео: Понг играе гъвкав екран на риза: 8 стъпки (със снимки)

Видео: Понг играе гъвкав екран на риза: 8 стъпки (със снимки)
Видео: Настя и сборник весёлых историй 2024, Ноември
Anonim
Понг играе гъвкав екран върху риза
Понг играе гъвкав екран върху риза
Понг играе гъвкав екран на риза
Понг играе гъвкав екран на риза
Понг играе гъвкав екран върху риза
Понг играе гъвкав екран върху риза

Това е моят костюм за Хелоуин за 2013 г. Той е в процес на работа около година и е отнел доста човешки часове за създаването му. Екранът е 14 на 15 пиксела, така че, доста ниска разделителна способност, но все пак може да направи някои забавни неща. Той е физически гъвкав във всички посоки, въпреки че не може да бъде сгънат без повреди. Той разполага с контролер, състоящ се от един бутон и плъзгащ се съд, свързан към pro mega чрез USB. За да го поддържа жив за дълго време, той използва две чудовищни 2200 mAh батерии, свързани последователно, за да получи необходимото напрежение, и след това 5 -волтов регулатор, за да го направи използваем. Цялата електроника е поставена в джобове от вътрешната страна на ризата, така че да може да се сваля и така ризата да може да се пере. Играе функционална игра на понг. Първо украсява един с думите „PONG PLAY“с прекрасни сини букви, използвайки модифицирана версия на шрифта Tom Thumb (може да се намери на https://robey.lag.net/2010/01/23/tiny-monospace-font.html). След пет секунди може да се даде възможност да натиснете бутона, за да продължите, или да не натиснете бутона и да оставите напълно добро преживяване след себе си. Когато човек избере да натисне бутона, играта започва. Червено гребло отдясно е греблото на компютъра, а зеленото гребло отдясно е лопатката на плейъра, която се контролира от плъзгащия се пот, за да се движи нагоре и надолу. Топката подскача наоколо, докато всяка страна се опитва да спечели точка. Играчът може да удари топката с ръба на греблото си, за да я ускори (хубава функция), докато компютърът не може да направи това, а вместо това се забива с движение малко по -бавно от топката. Когато една точка е отбелязана, пикселът се променя в бяло на греблото на оценяващите страни. Той се брои в двоичен формат от дъното. където зеленото или червеното е нула, а бялото е 1. 21 е резултатът, който трябва да спечелите (или загубите в зависимост от това кой получава 21 точки) и така, когато греблото на играча прочете 10101, се показва текстът „ВИ ПЕЧЕЛЕТЕ“. Отново в модифициран Tom Thumb. Същото се случва, но вместо това се показва „YOU LOSE“. След победа или загуба играта се рестартира до точката веднага след Pong Play. За да рестартирате изцяло бутона за рестартиране на "Magic Box", известен също като кутията-с-цялата-електроника-с изключение на екрана, се натиска.

Стъпка 1: Материали и инструменти

Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти

Нещата, отбелязани със *, не са задължителни, но се препоръчват И така в никакъв ред … Материали: 4 ярда Adafruit Neopixle 60 пиксела на метър лента 1 тениска * 1 чифт окачвания 1/2 ярда плат ще бъде повече от достатъчно (Не еластично тъкане е за предпочитане) 6 крака USB A мъжки към USB B мъжки кабел 1 USB A женски конектор 3 2 пинови JST женски конектори 4 2 пинови JST мъжки проводници зарядно устройство за батерии 2 6600 mAh батерии 1 Бутон в аркаден стил 1 arduino pro-mega 1 FTDI заглавка 1 USB B женски конектор с прекъсвач 1 превключвател за включване/изключване (превключвател) 1 ключ за нулиране (превключване или моментален) 1 плъзгащ потенциометър *1 копче за плъзгаща се помпа 1 двойка конектори за висок усилвател *1 проектна кутия 1 5V 3+ усилвател на напрежение малък малко пластмаса малко спойка малко тел малко конец *малко горещо лепило *малко еластично известно време (Може би малко повече от "малко") малко постоянство (Вероятно ще ви трябва доста от това всъщност) малко термосвиваеми тръби или електрическа лента малко супер лепило малко желязо върху подложка Инструменти *Ръце за помощ Нормална ръка s (или някой, който има достъп до тях) Поялник *Пистолет за горещо лепило Dremel или шкурка Длето Тел за събличане Тел ножове Телбод за пистолет Винтоверт Триони за шевна машина Машина за ножици

Стъпка 2: Нарежете LED лентата на по -малки ленти

Нарежете LED лентата на по -малки ленти
Нарежете LED лентата на по -малки ленти
Нарежете LED лентата на по -малки ленти
Нарежете LED лентата на по -малки ленти
Нарежете LED лентата на по -малки ленти
Нарежете LED лентата на по -малки ленти

Използвайте предпочитания от вас инструмент за рязане и нарязайте лентата на 14 сегмента, всеки с дължина 15 пиксела. Изрежете само между медни следи, обозначени с нещо като „DO“„DIN“„+5V“и „GND“. Ако вече е запоен върху медта, просто ги прорежете. Опитайте се да не нарязвате прекалено много в откритата мед, но ако я наръжете малко, това е добре. След като всички 14 ленти са отрязани, отрежете малко от гумата от всеки край, за да я отстраните от пътя за запояване на лентите.

Стъпка 3: Запояване на екрана заедно

Запояване на екрана заедно
Запояване на екрана заедно
Запояване на екрана заедно
Запояване на екрана заедно
Запояване на екрана заедно
Запояване на екрана заедно

Вземете жицата и я нарежете на около 3,5 инчови (9 см) сегменти. В моя случай имам три различни цвята, за да улесня придържането при запояване, но един цвят би работил добре. Ще ви трябват около 40 от тези малки момчета, но изрежете още няколко за всеки случай. След като приключите с рязането на телта, отстранете и оловете краищата (Ако имате опит с запояване, можете да преминете към следващия параграф), което означава, че след като премахнете малко пластмаса, поставете малко спойка върху краищата на всяка жица. Не загрявайте спойката и се опитайте да преминете към проводника, загрейте с поялника от дъното на медта и поставете спойката отгоре. Бъдете търпеливи и изчакайте горещата жица да разтопи спойката. Изкушаващо е да прикачите поялника към запояването, за да започне (Моето нетърпение и аз знам точно как се чувствате), но спойката също няма да залепне. Направете същото за откритите медни следи във всеки край на лентовите участъци. Ако вече има спойка, не се притеснявайте за това. За ивицата може да искате да изградите малко могила, за да бъде по -лесно по -късно. Когато работите с лентата, направете го бързо и се опитайте да не отделяте много време, като прилагате топлина към лентата. Правете само необходимото, за да стопите спойката върху следата. Запоявайте проводник върху всяка следа до края на първата лента (Първата лента е тази с проводниците и конектора, запоявайте я към открития край). Ако погледнете лентата, ще видите малки стрелки, които се издигат до края, където сте запоявали жицата. Вземете друга лента, така че стрелките да сочат обратната посока, и запоявайте жицата, идваща от следата GND към следата GND на другата, +5V към +5V и така нататък. Повторете това, като се уверите, че стрелките превключват посоките след всеки участък, така че ако трябва да ги следвате, той ще се движи зигзагообразно нагоре и надолу и в крайна сметка може да се разтегне до дълга лента. След като всички 14 ленти са запоени, поставете ги и подредете, така че светодиодите да образуват мрежа. След това ги задръжте заедно, като използвате метод, който може да бъде премахнат по -късно, без да се повреди лентата. Използвах скоч. Той е достатъчно лепкав, за да държи всичко заедно, но не е толкова лепкав, че да остави остатък. Не препоръчвам нищо за постоянно, като телбод или тиксо. След като всичко е залепено заедно, запоявайте жица от лентата на дъното +5V към тази непосредствено до нея. Повторете, докато цялото дъно не достигне докрай. Това е така, че екранът да не се затъмнява с напредването на линията на светодиодите.

Стъпка 4: Запояване на основната електроника

Запояване на основната електроника
Запояване на основната електроника
Запояване на основната електроника
Запояване на основната електроника
Запояване на основната електроника
Запояване на основната електроника

Запояйте USB B пробивната платка (BOB) към USB B конектора. Запоявайте подходящите проводници към USB A конектора. Съветвам да разгледате извода на конектора, както е намерено на този уебсайт, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Не се притеснявайте къде да запоите другите краища на проводниците на USB A конектора в момента; които ще бъдат обхванати в стъпката на контролера. Изрежете конектора за данни от лентата, женския конектор, а не мъжкия конектор (Женският конектор се получава от другия край). Запоявайте мъжки JST конектори към краищата на батерията, така че червеното да стане червено, а черното - черно. Разтопете термосвиваемите тръби върху откритите проводници (плъзнете се преди запояване), така че да не се късат или да използват нещо друго като електрическа лента или горещо лепило. Запояйте някои проводници към всички женски JST конектори. Не забравяйте да включите мъжки край, за да не се разместват щифтовете. Внимавайте с полярността и се уверете, че проводниците съвпадат с мъжки конектори. Припоявайте проводниците към един конектор за високо напрежение (но не и към двойката), като отново се уверите, че всички цветове съвпадат и че са свързани заедно, за да се предотврати разместването на щифтовете. Запоявайте женския само съединител/проводник, така че да са свързани последователно, а не успоредно, за да преминете през праговото напрежение за регулатора на мощността. И така, запоявайте положителния проводник към отрицателния проводник на другия монтаж, така че сега имаме един незапоен положителен проводник и един отрицателен незапоен проводник и двата запоени проводника са запоени към различни конектори. Вземете отрицателния проводник и го запазете, за да бъде запоен към отрицателния проводник на друго място. Сега вземете положителния проводник и го запоявайте към превключвателя. Ако има три или повече щифта (или повече от един начин да бъдете „включени“), запойте го към средния щифт. Обърнете внимание, че "средният щифт" може физически да не е в средата. Начинът да го идентифицирате е да намерите пина, който, когато превключвателят е включен във всяко състояние, винаги ще бъде свързан към друг щифт. Ако нито един щифт не е такъв, тогава имате много специален превключвател; просто го свържете към всеки щифт и се уверете, че следващият проводник, запоен към превключвателя, ще бъде свързан към този проводник в поне едно включено състояние. Сега запоявайте положителния входящ проводник на регулатора на напрежението към противоположния край на превключвателя, както е обсъдено по -горе. Запоявайте положителното напрежение към положителния край на неспаяния конектор за висок ток. Вземете отрицателния входящ проводник и го запоявайте към отрицателния край на съединителя за висок ток. Сега ще запояваме захранването успоредно на Arduino и Power strip. Сега вземете изходните проводници на регулатора на напрежението и запоявайте две парчета жица както на положителния, така и на отрицателния край, така че да излязат под формата на Y. Запоявайте двупинов конектор към положителните и отрицателните проводници на модула на LED лентата. Няма значение какъв тип конектор използвате, може да бъде JST или в моя случай някакъв захранващ/аудио кабел или нещо подобно (не съм сигурен и се извинявам, че нямам снимки). Запояйте един от положителните проводници към положителния край на противоположния конектор за светлинната лента и един от отрицателните проводници към другия щифт на конектора. Направете същото, но за мъжки JST конектор/проводник. През цялото време не забравяйте да изолирате спойките, за да избегнете къси панталони. Сега за това какво да правите с USB B конектора. Запоявайте положителния проводник към 5v отвор на Arduino Pro Mega. Вземете заземяващия проводник и го запоявайте в дупка GND. Вземете D+ и го запоявайте към цифровия щифт (или в този случай отвор) 40. Запоявайте D- към аналогов щифт 15. Запоявайте края на данните на женския конектор, който се свързва с мъжкия конектор на LED лентата към извода за данни 6 и заземяващ проводник към щифт GND. Маскирането или скочът работят чудесно за задържане на проводниците към дъската, така че да не изпаднат, когато се обърнат, за да бъдат запоени. Сега вземете моментния бутон и запоявайте проводник от единия край към щифта VCC (или всеки изходен извод за напрежение), а другия край към щифта RESET.

Стъпка 5: Контролер

Контролер
Контролер
Контролер
Контролер
Контролер
Контролер

Първо е да изберете правилната форма, с която да започнете. Всичко зависи от това как искате структурата на контролера. Исках повече плосък контролер, така че взех парче от 3 1/2 "на 3/4" дъска. подредете частите по начин, който изглежда подходящ и удобен за работа. Използвайте френска крива, компас, триъгълник и прав ръб, за да очертаете къде трябва да отидат всички фигури. Изрежете основните очертания с помощта на режещия инструмент по ваш избор. Трион за забрана би бил най -добрият, но аз използвах трион за справяне, който работи добре. Шлайфайте ръбовете, за да ги преместите плавно, след това изстържете ъглите, за да стане по -удобно. Пробийте дупката за превключвателя, след това изсипете пясък, длето и/или Dremel всяка част от дъното, която ще го направи подходящ. Опитайте се да не правите нищо с горната част и само изпилявайте всичко, което ви е необходимо, за да можете да я поставите, като я завъртите, наклоните или каквото и да е друго, за да я накарате да влезе. След като я поставите, прикрепете я с пластмасовата гайка и прикрепете превключвател. Пробийте зоната, за да може копчето на потенциометъра да се вмести, и издърпайте зона, така че да може да потъне и да се побере докрай. Пробийте няколко дупки, така че винтът да може да го задържи. Огънете малките парчета от USB A конектора, които правят общата му ширина малко увеличена (вижте снимките). Издърпайте част за конектора, като постепенно проверявате дали конекторът се побира. Супер залепете конектора в слота. Вземете малко парче пластмаса и го изрежете във форма, която да пасне на конектора (вижте снимките), след което го закачете с телбод към дървото. Изрежете всички парчета, които могат да ви попречат. Завийте потенциометъра и прикрепете копчето. Запоявайте положителния проводник към един от краищата на потенциометъра (не към променливата част) и отрицателния проводник към противоположния край. Запоявайте D-щифта към променливия щифт на саксията. Запоявайте проводник от щифта на гърнето с положителния проводник към един от щифтовете на бутона. Припой D+ към другия щифт на бутона. Подрежете резервния проводник и изолирайте парчетата, които се нуждаят от него.

Стъпка 6: Риза

Риза
Риза
Риза
Риза
Риза
Риза

Намерете удобна риза, която ще пропуска светлината. Избрах тази основна бяла тениска. Всъщност няма значение цвета или стила, стига да се вижда светлината, която прониква отвътре. Не препоръчвам графики отпред. Поставете всичко върху ризата, за да решите къде искате да я използвате и използвайте изтриваем инструмент за маркиране, за да я нарисувате. Аз (имам предвид някои хора, които познавам) имам молив, предназначен за маркиране на тъкани, който се измива лесно. Измерете размера на батериите, кутията на контролера и екрана и изрежете парчета хартия, които да съвпадат. След това прикрепете хартията към парче неразтеглива тъкан. Тъкането работи добре за това. След това изрежете правоъгълник, оставяйки около четвърт инч за шев по целия път. След това използвайте лист хартия като водач гладете гънките в тъканта. Сега хартията може да бъде премахната. От частта на джоба, която ще бъде отгоре, го сгънете три пъти. Изгладете го и го закрепете, за да го задържите на място. Зашийте анфас по средата на гънката. Сега вземете ъгъла и го сгънете така, че незашитите ръбове, перпендикулярни един на друг, са успоредни и зашийте сянка по изгладената гънка най-близо до ъгъла (Снимките наистина помагат). Направете това и за другия ъгъл. Ако случайно ще имате превключвател, излизащ от джоб, зашийте отвор за копче в основата на джоба, където превключвателят докосва. След това зашийте дупка за копче и изрежете средната част. Не мога да дам подробни инструкции, защото имах готин инструмент за направата на дупки за копчета. Просто не забравяйте да направите дупките преди да се пришие джоба. Вземете няколко щифта и ги прокарайте през ризата в ъглите на маркировките за джоба. Вземете джоба и поставете всеки ъгъл на щифт (от вътрешната страна на ризата), оставяйки четвърт инч за шева и го закрепете към ризата. След закрепване на джоба. извадете щифтовете, които не държат джоба, и пришийте джоба към ризата. Повторете за всички джобове. За големия джоб, който държи екрана, оставете празнина за проводниците в долната част на джоба. За да поставите дупка в ризата, маркирайте мястото и вземете ютия върху подложката (с по -лъскавата част върху тъканта) и я изгладете. След това, за малка дупка (като това, което използвах за превключвателя), направете отвор за бутон. За по-голям отвор маркирайте контура и използвайте зигзагообразен бод по линията (или кривата или каквото имате) и изрежете средната част. Ако искате, можете да използвате тиранти, за да задържите тежестта на джобовете, като двете скоби се придържат към джобовете отпред, а задната скоба към панталона. Също така имам малък ръкав от плат, пришит върху частите на тирантите, които ще докосват кожата ми. Две ризи могат да станат малко прекалено горещи, затова се отказах и използвах малката втулка от плат.

Стъпка 7: Програмиране

Програмиране
Програмиране

И ето кода. Има няколко части, които са добре коментирани, но по -голямата част от тях не са. Ако имате въпроси относно различни части, можете или да ми дадете номера на реда (с #include като ред номер едно) или да ми дадете копие от реда (ите) и функцията, в която се намира (като loop () или compMovePaddle ()) и ще направя всичко възможно да ви го обясня, след което добавя коментар към кода, който го обяснява. #include #define PIN 6 // казва кои са входните щифтове за играта int buttonPin = 40; // диктува резултата, съхраняван в бианарен масив, защото е по -езирен int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // диктува посоката на топката int bvd = 0; // 0 е надолу, 1 е нагоре int bhd = 0; // 0 е вдясно, 1 е вляво // диктува позицията на топките int bvp = 8; int bhp = 6; // проверява дали топката е в бърз режим boolean fast = false; // проверява дали е резултат. булева cIsPoint = невярно; булев pIsPoint = невярно; // позиции на гребла int cPaddle = 0; int pPaddle = 0; дълъг предишенMillis = 0; дълъг предишенMillisForComp = 0; // задаваме времената на забавяне за бързо и бавно движеща се топка "Int" в normInt и fastInt е за интервал int normInt = 50; int fastInt = 10; // използвани за проверка за печалба. 1 е победа на играча, -1 в компютърна победа и 0 е нищо, което все още не се е случило int win = 0; // за да се отървете от бъг. използвани в оператора addOne и никъде другаде. int който = 0; // Нещото, което се показва преди началото, -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}; // ако спечелите 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}; // ако загубите int youLose = {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}; // настройва LED лентата Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // настройка, не завърта щифт 40 за вход, започва лентата, показва // съобщението и го показва. void setup () {pinMode (buttonPin, INPUT); strip.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); забавяне (5000); while (digitalRead (buttonPin) == LOW) {// Това е капан! (докато бутонът не бъде натиснат.)}} void loop () {clearScreen (); // тегли греблата, за да покаже резултата за (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } иначе ако ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } ако (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } иначе ако ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // изтегля топката в началната й позиция strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // решава дали топката да се издига нагоре или надолу докато (pIsPoint == false && cIsPoint == false) {clearScreen (); беззнаков дълъг токMillis = millis (); // присвоява позицията на лопатката на плейъра pPaddle = checkPaddlePos (); // проверява следващата позиция checkNext (); // преместване на топката if (fast == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // изтеглете топката, ако (bhp%2! = 0) {strip.setPixelColor (bhp*15+14-bvp, strip. Color (255, 255, 255)); } иначе ако (bhp%2 == 0) {strip.setPixelColor (bhp*15+bvp, strip. Color (255, 255, 255)); } // движение на компютърно гребло compMovePaddle (); // draw's the paddles drawPaddles (); // всъщност поставя всичко.strip.show (); // проверка дали точка е отбелязана if (pIsPoint == true) {which = 0; bhd = 0; addOne (); прекъсване; } else if (cIsPoint == true) {което = 1; bhd = 1; addOne (); прекъсване; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } забавяне (5000); за (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } печалба = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } забавяне (5000); за (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } печалба = 0; } pIsPoint = невярно; cIsPoint = невярно; bvp = 8; к.с. = 6; bvd = random (0, 2); // 0 е надолу, 1 е нагоре бързо = false; } // AI за играта void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } иначе ако (bvp = 0 && cPaddle <10) {cPaddle ++; } иначе ако (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } иначе ако (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // премества топката void moveBall () {if (bhd == 0) {bhp--; } иначе ако (bhd == 1) {bhp ++; } ако (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // добавя едно към масива. Ако whichOne е 0, това добавя към резултата на играча. Ако е 1, той добавя към компютрите void addOne () {if (which == 0) {// ако това е резултатът на играча // Добавете такъв. Това е най -простият начин, по който знам как. for (int i = 0; i <5; i ++) {// цикъл if (playerScore == 0) {// ако тази стойност е нулева playerScore = 1; // направете 1 почивка; // след това отидете} else {// ако е 1 играчScore = 0; // направете нула и завъртете}}} else if (който == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; прекъсване; } else {compScore = 0; }}} // Проверява дали някой е спечелил. ако (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } иначе ако (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // проверява топките следваща позиция void checkNext () {// проверява, за да види дали е отбелязана точка if (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // ако е отбелязана точка, прескочете останалата част от това, ако (pIsPoint == false || cIsPoint == false) {// проверява топката вертикално if (bvp+bvd == 15) {bvd = 0; } иначе ако (bvp+bvd == 0) {bvd = 1; } // проверява хоризонтално топката if (bhp+bhd == 13) {// първо от страната на компютъра if (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } иначе ако (bhd == 0) {bhd = 1; } бързо = невярно; } иначе ако (bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } иначе ако (bvd == 1) {bvd = 0; } bhd = 1; } иначе ако (bvp == 0 || bvp == 14) {bhd = 1; } бързо = невярно; }} иначе, ако (bhp+bhd == 1) {// след това от страна на играча if (bvp> = pPaddle && bvp <= pPaddle+4) {// това ли е удрянето на греблото на нормално място? // подскача топката! ако (bhd == 1) {bhd = 0; } иначе ако (bhd == 0) {bhd = 1; }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// това ли е удрянето на греблото на ъгъла, ако (bvp! = 0 && bvp! = 14) {// това ли е не нагоре високо или надолу ниско? // Скача топката! ако (bvd == 0) {bvd = 1; } иначе ако (bvd == 1) {bvd = 0; } bhd = 1; бързо = вярно; } else if (bvp == 0 || bvp == 14) {// дали е нагоре високо или надолу ниско? // подскача топката! bhd = 0; fast = true; // задайте стойността, за да накара по -късно топката да се движи бързо}}}}} int checkPaddlePos () {// чете пота и решава позицията на греблото, ако (analogRead (A15) <93) {return 0; } else if (analogRead (A15) <186) {връщане 1; } else if (analogRead (A15) <279) {return 2; } else if (analogRead (A15) <372) {return 3; } else if (analogRead (A15) <465) {връщане 4; } else if (analogRead (A15) <558) {връщане 5; } else if (analogRead (A15) <652) {връщане 6; } else if (analogRead (A15) <745) {return 7; } else if (analogRead (A15) <837) {return 8; } else if (analogRead (A15) <= 931) {връщане 9; } else if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// тегли греблата на правилното място и показва резултата на греблото за (int i = 0; i <5; i ++) {if (playerScore == 1) {strip. setPixelColor (pPaddle+i, strip. Color (255, 255, 255)); } иначе ако ((playerScore == 0)) {strip.setPixelColor (pPaddle+i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199+cPaddle-i, strip. Color (255, 255, 255)); } иначе ако ((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: Готов продукт

Крайния продукт
Крайния продукт
Крайния продукт
Крайния продукт

И така, готовата риза!

Препоръчано: