فهرست مطالب:

بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن: 8 مرحله (همراه با تصاویر)
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن: 8 مرحله (همراه با تصاویر)

تصویری: بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن: 8 مرحله (همراه با تصاویر)

تصویری: بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن: 8 مرحله (همراه با تصاویر)
تصویری: (دوربین مخفی) صحنه هایی که اگرضبط دوربین نمیشد کسی آنرا باور نمی کرد!! 2024, دسامبر
Anonim
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن
بازی پونگ با صفحه نمایش انعطاف پذیر روی پیراهن

این لباس هالووین من برای سال 2013 است. این لباس حدود یک سال است که در حال کار است و برای ساختن آن چند ساعت وقت صرف شده است. صفحه نمایش 14 در 15 پیکسل است ، بنابراین وضوح بسیار پایینی دارد اما همچنان می تواند کارهای سرگرم کننده ای انجام دهد. از نظر فیزیکی قابل انعطاف در همه جهات است ، اگرچه نمی توان آن را بدون آسیب تا کرد. دارای کنترلر متشکل از یک دکمه و دیگ کشویی است که از طریق USB به یک مگا حرفه ای متصل می شود. برای زنده نگه داشتن آن برای مدت طولانی ، از دو باتری هیولایی 2200 میلی آمپر ساعتی به صورت سری برای دریافت ولتاژ لازم استفاده می کند و سپس از یک تنظیم کننده 5 ولت استفاده می کند. تمام قطعات الکترونیکی در جیب های داخل پیراهن قرار گرفته است تا بتوان آنها را جدا کرد و پیراهن را می توان شست. این یک بازی کاربردی از پنگ بازی می کند. ابتدا با کلمات "PONG PLAY" با حروف آبی دوست داشتنی و با استفاده از نسخه اصلاح شده فونت Tom Thumb (در https://robey.lag.net/2010/01/23/tiny-monospace-font یافت می شود).html). بعد از پنج ثانیه می توانید گزینه ای را فشار دهید که دکمه را فشار دهید تا حرکت کند ، یا دکمه را فشار ندهید و تجربه کاملاً خوبی را پشت سر بگذارید. وقتی یکی دکمه را فشار می دهد ، بازی شروع می شود. یک پارو قرمز در سمت راست ، پارو کامپیوتر است و پارو سبز در سمت راست ، پدل پخش کننده است که توسط سرسره کنترل می شود تا به بالا و پایین حرکت کند. در حالی که هر طرف سعی می کند یک امتیاز کسب کند ، توپ به اطراف باز می گردد. بازیکن می تواند با لبه دست و پا خود توپ را برای سرعت بخشیدن به آن (یک ویژگی خوب) در حالی که کامپیوتر نمی تواند این کار را انجام دهد ضربه بزند و در عوض با حرکت کمی کندتر از توپ گیر می کند. هنگامی که یک امتیاز به ثمر می رسد ، یک پیکسل در پارو زدن طرفین به رنگ سفید تغییر می کند. به صورت باینری از پایین حساب می شود. جایی که رنگ سبز یا قرمز صفر و سفید 1. 1. نمره برنده شدن (یا بسته به اینکه چه کسی 21 امتیاز را از دست می دهد) است و بنابراین هنگامی که بازیکنان 10101 را می خوانند ، متن "شما برنده می شوید" نمایش داده می شود. بار دیگر در Tom Thumb اصلاح شده. همین اتفاق می افتد اما در عوض "YOU LOSE" نمایش داده می شود. پس از یک برد یا باخت بازی درست بعد از بازی پونگ به نقطه شروع می شود. برای راه اندازی مجدد به طور کامل ، دکمه راه اندازی مجدد روی "جعبه جادویی" ، که به عنوان جعبه با همه وسایل الکترونیکی به جز صفحه نمایش نیز شناخته می شود ، فشار داده می شود.

مرحله 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 میلی آمپر ساعت باتری 1 سبک بازی دکمه 1 arduino pro-mega 1 سربرگ FTDI 1 کانکتور USB B زن با برد شکست 1 سوئیچ روشن/خاموش (ضامن) 1 سوئیچ تنظیم مجدد (ضامن یا لحظه ای) 1 پتانسیومتر اسلاید *1 دستگیره قابلمه اسلاید 1 جفت اتصال دهنده آمپر بالا *1 مورد پروژه 1 تنظیم کننده ولتاژ 5+ 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 دیگر می آید ، 5+ +به +5V +وصل کنید. این کار را تکرار کنید و مطمئن شوید که فلش ها بعد از هر بخش جهت خود را عوض می کنند تا در صورت دنبال کردن آنها زیگ زاگ بالا و پایین شود و در انتها به نوار بلند کشیده شود. هنگامی که همه 14 نوار لحیم شدند ، آنها را بچسبانید و به ترتیب صف بندی کنید تا LED یک شبکه ایجاد کند. سپس آنها را با استفاده از روشی که بعداً بدون آسیب به نوار برداشته می شود ، کنار هم نگه دارید. من از نوار چسب استفاده کردم. آنقدر چسبناک است که همه چیز را در کنار هم نگه می دارد اما آنقدر چسبناک نیست که بقایایی باقی بماند. من هیچ چیزی را به دائمی مانند منگنه یا نوار چسب توصیه نمی کنم. پس از چسباندن همه چیز ، سیم را از نوار پایین +5 ولت به سیم بلافاصله کنار آن بچسبانید. این کار را آنقدر تکرار کنید تا تمام قسمت های پایینی به طور کامل از دریچه های برق استفاده کنند. این به این دلیل است که با پیشرفت خط LED ها صفحه نمایش کم نور نمی شود.

مرحله 4: لحیم کردن قطعات الکترونیکی اصلی

لحیم کردن قطعات الکترونیکی اصلی
لحیم کردن قطعات الکترونیکی اصلی
لحیم کردن قطعات الکترونیکی اصلی
لحیم کردن قطعات الکترونیکی اصلی
لحیم کردن قطعات الکترونیکی اصلی
لحیم کردن قطعات الکترونیکی اصلی

برد شکست USB B (BOB) را به اتصال USB B لحیم کنید. سیمهای مناسب را به کانکتور USB A لحیم کنید. توصیه می کنم به پین کردن کانکتور در این وب سایت ، https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout-p.webp

مرحله 5: کنترل کننده

کنترل کننده
کنترل کننده
کنترل کننده
کنترل کننده
کنترل کننده
کنترل کننده

اول انتخاب شکل مناسب برای شروع است. همه چیز بستگی به این دارد که چگونه می خواهید کنترلر ساختار یافته باشد. من بیشتر یک کنترلر تخت می خواستم ، بنابراین یک قطعه تخته 3 3 1/2 اینچ در 3/4 اینچ گرفتم. قطعات را به گونه ای تنظیم کنید که مناسب و راحت به نظر برسد. از منحنی فرانسوی ، قطب نما ، مثلث و لبه مستقیم برای رسم جایی که همه قطعات باید بروند استفاده کنید. طرح اصلی را با استفاده از ابزار برش دلخواه خود برش دهید. اره ممنوعه بهترین کار را می کند اما من از یک اره برقی استفاده کردم که بسیار خوب کار می کرد. لبه ها را سمباده بزنید تا هموار منتقل شوند ، سپس گوشه ها را سنباده بزنید تا راحت تر شود. سوراخ سوئیچ را سوراخ کنید ، سپس هر قسمتی را در قسمت پایین که مناسب آن است ، ماسه ، اسکنه و/یا Dremel بردارید. سعی کنید با قسمت بالا کاری انجام ندهید و فقط آنچه را که نیاز دارید بچرخانید تا بتوانید آن را با پیچاندن ، زاویه دار کردن یا هر چیز دیگری که می خواهید داخل آن قرار بگیرد سنباده بزنید. هنگامی که آن را داخل آن قرار دادید با مهره پلاستیکی وصل کنید تعویض. ناحیه ای را تنظیم کنید که دستگیره پتانسیومتر در آن جا بیفتد و ناحیه ای را اسکن کنید تا بتواند فرو رود و تا انتها جا بگیرد. چند سوراخ ایجاد کنید تا یک پیچ بتواند آن را نگه دارد. قطعات کوچک اتصال USB A را خم کنید که باعث می شود عرض کلی آن کمی افزایش یابد (به تصاویر نگاه کنید). قسمتی را برای اتصال جدا کنید ، به تدریج بررسی کنید تا مطمئن شوید اتصالات مناسب هستند. فوق العاده کانکتور را به شکاف آن بچسبانید. یک تکه پلاستیک کوچک بردارید و آن را به شکلی که روی کانکتور قرار می گیرد برش دهید (به تصاویر نگاه کنید) ، و سپس آن را روی چوب وصل کنید. قطعاتی را که ممکن است مانع از کار شوند برش دهید. پتانسیومتر را پیچ کرده و دستگیره را وصل کنید. سیم مثبت را به یکی از انتهای پتانسیومتر (نه قسمت متغیر) و سیم منفی را به انتهای مقابل بچسبانید. پایه D را به پایه متغیر قابلمه لحیم کنید. سیم را از پین روی قابلمه با سیم مثبت به یکی از پایه های دکمه لحیم کنید. D+ را به پین دیگر روی دکمه لحیم کنید. سیم یدکی را کوتاه کرده و قطعات مورد نیاز را عایق بندی کنید.

مرحله ششم: پیراهن

پیراهن
پیراهن
پیراهن
پیراهن
پیراهن
پیراهن

یک پیراهن راحت پیدا کنید که نور را عبور دهد. من این تیشرت سفید سفید را انتخاب کردم. تا زمانی که نور از داخل تابیده شود ، رنگ یا سبک آن اهمیت چندانی ندارد. با این حال ، من گرافیک در جلو را توصیه نمی کنم. همه چیز را روی پیراهن بگذارید تا به شما کمک کند تصمیم بگیرید کجا را می خواهید و از یک ابزار مارک پاک کن برای کشیدن آن استفاده کنید. من (منظور برخی از افرادی است که می شناسم) مدادی برای علامت گذاری پارچه ها دارم که به راحتی شسته می شود. اندازه باتری ها ، کیف کنترل و صفحه نمایش را اندازه بگیرید و تکه های کاغذ را برش دهید تا مطابقت داشته باشد. سپس کاغذ را به یک تکه پارچه بدون کشش وصل کنید. یک بافت برای این کار خوب عمل می کند. سپس مستطیلی را برش دهید که حدود یک چهارم اینچ برای یک درز در اطراف آن باقی بماند. سپس از قطعه کاغذ به عنوان راهنما استفاده کنید تا چین ها را داخل پارچه بکشید. حالا کاغذ را می توان حذف کرد. در قسمتی از جیب که بالای آن قرار دارد ، آن را سه بار روی خود تا کنید. اتوکشی کرده و سنجاق بزنید تا در جای خود بماند. یک دوخت را تا انتهای وسط چوب دوخت. حالا گوشه را بردارید و آن را تا کنید تا لبه های دوخته نشده عمود بر یکدیگر موازی باشند و در امتداد چین نزدیک به گوشه ، ظاهری بدوزید (تصاویر واقعاً کمک می کند). این کار را برای گوشه دیگر نیز انجام دهید. اگر به احتمال زیاد یک سوئیچ ضامن دار از جیب شما بیرون می آید ، یک سوراخ دکمه را در قسمت جیب جایی که سوئیچ به آن دست می زند ، بدوزید. سپس یک سوراخ دکمه بدوزید و قسمت وسط آن را ببرید. من واقعاً نمی توانم دستورالعمل های مفصلی ارائه دهم زیرا من یک ابزار جالب برای ایجاد سوراخ های دکمه داشتم. فقط مطمئن شوید که قبل از دوختن جیب سوراخ ها را ایجاد می کنید. چند پین بردارید و آنها را از طریق پیراهن در گوشه های علامت جیب بکشید. جیب را بردارید و هر گوشه را در یک سنجاق (در قسمت داخلی پیراهن) قرار دهید ، یک چهارم اینچ برای درز باقی می ماند و آن را به پیراهن محکم کنید. بعد از بسته شدن جیب. سنجاق هایی را که جیب را نگه ندارند بردارید و جیب را به پیراهن بدوزید. برای همه جیب ها این کار را تکرار کنید. برای جیب بزرگ که صفحه را نگه می دارد ، فاصله ای را برای سیم های پایین جیب بگذارید. برای ایجاد سوراخ در پیراهن ، محل را علامت زده و روی پشت یک اتو (با قسمت درخشان روی پارچه) بگیرید و روی آن اتو کنید. سپس ، برای یک سوراخ کوچک (مانند آنچه که برای سوئیچ ضامن استفاده کردم) ، یک سوراخ دکمه ایجاد کنید. برای یک سوراخ بزرگتر ، طرح کلی را علامت زده و از یک کوک زیگزاگ در امتداد خط (یا منحنی یا آنچه دارید) استفاده کنید و قسمت وسط آن را ببرید. در صورت تمایل می توانید از جاروبرقی برای نگه داشتن وزن جیب ها استفاده کنید ، دو گیره که روی جیب های جلو و گیره پشتی روی شلوار نگه داشته شده است. من همچنین یک آستین کوچک پارچه ای دوختم که روی قسمت هایی از بندها دوخته شده است که به پوست من دست می زند. دو پیراهن می توانند کمی بیش از حد گرم شوند ، بنابراین من تصمیم نگرفتم و از آستین پارچه ای کوچک استفاده کردم.

مرحله 7: برنامه نویسی

برنامه نويسي
برنامه نويسي

و اینجا کد است. چند قسمت وجود دارد که کاملاً نظر داده شده است ، اما اکثر آنها چنین نیستند. اگر در قسمت های مختلف س questionsالی دارید ، می توانید شماره خط را به من بدهید (با #شامل خط اول) یا یک کپی از خط (ها) و عملکردی که در آن قرار دارد (مانند حلقه () یا compMovePaddle ()) و من تمام تلاش خود را می کنم تا آن را برای شما توضیح دهم ، سپس نظر خود را به کد توضیح دهنده آن اضافه کنید. #شامل #تعریف پین 6 // می گوید پین های ورودی دکمه int بازی پین = 40 ؛ // نمره را دیکته می کند ، در یک آرایه دوتایی نگهداری می شود زیرا esier 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 = false؛ بولی pIsPoint = false؛ // موقعیت های پارو زدن int cPaddle = 0؛ int pPaddle = 0؛ طولانی قبلی Milis = 0؛ long previousMillisForComp = 0؛ // زمان تاخیر برای حرکت سریع و آهسته توپ را "Int" در normInt و fastInt برای فاصله int normInt = 50 تعیین کنید. int fastInt = 10؛ // برای بررسی برد استفاده می شود. 1 برد بازیکن ، -1 برد کامپیوتر ، و 0 هنوز هیچ اتفاقی نیفتاده است int win = 0؛ // برای خلاص شدن از شر اشکال در دستور addOne و هیچ جای دیگر استفاده می شود. int که = 0؛ // چیزی که قبل از شروع نمایش داده می شود ، -1 یک بازی فرار از بازی است = {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}؛ // اگر برنده شوید در = {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 شما ببازید = {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 = Adafruit_NeoPixel (210 ، PIN ، NEO_RGB + NEO_KHZ800) ؛ // تنظیم می شود ، هیچ پین 40 برای ورودی نمی چرخد ، نوار را شروع می کند ، پیام // را نمایش می دهد و آن را نشان می دهد. void setup () {pinMode (buttonPin، INPUT)؛ strip.begin ()؛ برای (int i = 0؛ pongPlay > 0؛ i ++) {strip.setPixelColor (pongPlay ، strip. Color (0، 0، 255))؛ } strip.show ()؛ تأخیر (5000) ؛ while (digitalRead (buttonPin) == LOW) {// این یک تله است! (تا زمانی که دکمه فشار داده نشود.)}} حلقه void () {clearScreen ()؛ // پاروها را می کشد تا نمره (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))؛ }} // توپ را در موقعیت اولیه خود می کشاند 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))؛ } else if (bhp٪ 2 == 0) {strip.setPixelColor (bhp*15+bvp، strip. Color (255، 255، 255))؛ } // کامپیوتر حرکت پارو compMovePaddle ()؛ // draw's the paddles drawPaddles ()؛ // واقعاً همه چیز را تنظیم کردstrip.show ()؛ // بررسی اینکه آیا نقطه ای (pIsPoint == true) {which = 0؛ bhd = 0؛ addOne ()؛ زنگ تفريح؛ } else if (cIsPoint == true) {which = 1؛ bhd = 1؛ addOne ()؛ زنگ تفريح؛ }} if (win == 1) {clearScreen ()؛ برای (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 ()؛ برای (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 = false؛ cIsPoint = false؛ bvp = 8 ؛ bhp = 6 ؛ bvd = تصادفی (0 ، 2) ؛ // 0 پایین است ، 1 سریع سریع = غلط ؛ } // AI برای بازی 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 ++؛ }}} // حرکت توپ void moveBall () {if (bhd == 0) {bhp--؛ } else if (bhd == 1) {bhp ++؛ } if (bvd == 0) {bvp-- ؛ } else if (bvd == 1) {bvp ++؛ }} // یکی را به آرایه اضافه می کند. اگر کدام یک صفر باشد به امتیاز بازیکن می افزاید. اگر 1 باشد ، به رایانه ها افزودن void addOne () {if (which == 0) {// اگر امتیاز بازیکن است // افزودن یکی. این ساده ترین راهی است که من می دانم چگونه. برای (int i = 0 ؛ i <5؛ i ++) {// حلقه if (playerScore == 0) {// اگر این مقدار صفر بازیکن است نمره = 1 ؛ // 1 شکستن ؛ // سپس بروید} else {// اگر 1 playerScore = 0؛ // آن را صفر کنید و حلقه کنید}}} دیگری if (which == 1) {for (int i = 0؛ i <5 ؛ i ++) {if (compScore == 0) {compScore = compScore +1 ؛ زنگ تفريح؛ } else {compScore = 0؛ }}} // بررسی می کند که آیا کسی برنده شده است. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {برد = -1 ؛ } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {برد = 1 ؛ }} // توپ ها را چک می کند موقعیت بعدی void checkNext () {// بررسی می کند تا ببیند آیا یک امتیاز به دست آمده است (bhp == 13) {pIsPoint = true؛ } else if (bhp == 0) {cIsPoint = true؛ } // اگر امتیازی به دست آمد ، در صورت باقی ماندن در سایر موارد (pIsPoint == false || cIsPoint == false) {// توپ را به صورت عمودی بررسی می کند (bvp+bvd == 15) {bvd = 0 ؛ } else if (bvp+bvd == 0) {bvd = 1؛ } // بررسی توپ horizontalaly if (bhp+bhd == 13) {// ابتدا در سمت کامپیوتر if (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0؛ } else if (bhd == 0) {bhd = 1؛ } fast = false؛ } 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؛ } fast = false؛ }} else if (bhp+bhd == 1) {// سپس در طرف پخش if (bvp> = pPaddle && bvp <= pPaddle+4) {// آیا با پارو در نقطه عادی برخورد می کند؟ // برگشتن توپ! if (bhd == 1) {bhd = 0؛ } else if (bhd == 0) {bhd = 1؛ }} else if (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// آیا به پارو در گوشه ضربه می زند اگر (bvp! = 0 && bvp! = 14) {// آیا بالا نیست یا پایین؟ // گزاف گویی توپ! if (bvd == 0) {bvd = 1؛ } else if (bvd == 1) {bvd = 0؛ } bhd = 1؛ سریع = درست ؛ } else if (bvp == 0 || bvp == 14) {// بالا یا پایین است؟ // برگشتن توپ! bhd = 0؛ fast = true؛ // مقدار را طوری تنظیم کنید که بعداً توپ سریع حرکت کند}}}}} int checkPaddlePos () {// گلدان را می خواند و بر این اساس در مورد موقعیت پارو تصمیم گیری می کند اگر (analogRead (A15) <93) {بازگشت 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 () {// پاروها را در نقطه صحیح می کشد و نمره را برای (int i = 0؛ i <5؛ i ++) {if (playerScore == 1) {نوار نشان می دهد. 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: محصول نهایی

محصول نهایی
محصول نهایی
محصول نهایی
محصول نهایی

و شما بروید ، پیراهن تمام شده!

توصیه شده: