فهرست مطالب:

مین روب: 5 مرحله (همراه با تصاویر)
مین روب: 5 مرحله (همراه با تصاویر)

تصویری: مین روب: 5 مرحله (همراه با تصاویر)

تصویری: مین روب: 5 مرحله (همراه با تصاویر)
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, نوامبر
Anonim
مین روبی
مین روبی

برای پروژه نهایی CPE 133 ، من و چیس تصمیم گرفتیم یک بازی "Minesweeper" ایجاد کنیم که از دکمه و تغییر ورودی از یک برد Basys-3 و همچنین کد VHDL استفاده می کند. یک نام بهتر برای بازی می تواند "رولت روسی" باشد ، با این حال ما می خواستیم با نام خانوادگی بیشتری انتخاب کنیم. این بازی شامل کاربر است که دکمه وسط روی برد Basys را فشار دهد تا به طور تصادفی یکی از 16 سوئیچ را با یک بمب "فعال" کند. سپس دو بازیکن به نوبت سوئیچ ها را یکی یکی می چرخانند تا یکی از بازیکنان سوئیچ را با "بمب" بچرخاند. هنگامی که این اتفاق می افتد ، صفحه هفت قسمت به بازیکنان هشدار می دهد که آن بازیکن به تازگی بازی را باخته است.

مرحله 1: مرور کلی

این پروژه از بسیاری از ماژول های VHDL استفاده کرده است که ما در طول این سه ماه استفاده کرده ایم. یک شمارنده چهار بیتی در ارتباط با لبه ساعت به منظور شبیه سازی یک عدد تصادفی چهار بیتی برای فعال سازی یکی از سوئیچ ها استفاده شد. همچنین از نمودار حالت برای خروج کلمات مختلف به صفحه هفت بخش استفاده می شود ، از "PLAY" زمانی که بازیکنان در وسط بازی خود هستند ، تا "LOSE" هنگامی که یکی از بازیکنان سوئیچ فعال را چرخانده است ، استفاده می شود.

مرحله 2: مواد

  • هیئت توسعه Basys3 از Digilent، Inc.
  • Vivado Design Suite BC_DEC.vhd (این فایل در Polylearn در اختیار ما قرار گرفته و توسط برایان میلی نوشته شده است)
  • پیشخوان 4 بیتی ساخته شده از فلیپ فلاپ T
  • یک FSM

مرحله 3: ساخت بازی

ساخت بازی
ساخت بازی
ساخت بازی
ساخت بازی

اولین قدم برای ساخت این بازی رسم نمودار مدار با تمام اجزای مورد استفاده ما بود. ورودی های این سیستم دکمه 1 ، 16 سوئیچ و ساعت بود. خروجی ها صفحه نمایش هفت قسمتی و آند بودند. پس از رسم نمودار مدار ، فایلهای منبع جداگانه را برای هر جزء در Vivado نوشتیم و آنها را با استفاده از نقشه های پورت در زیر فایل منبع اصلی قرار دادیم.

کل اساس بازی حول این است که به طور تصادفی یکی از 16 سوئیچ را با یک بمب فعال می کند و بازیکنان نمی دانند تا زمانی که سوئیچ فعال روشن نشود کدام سوئیچ فعال است. ما تولیدکنندگان اعداد تصادفی و شبه تصادفی را به صورت آنلاین بررسی کردیم ، اما در نهایت به این نتیجه رسیدیم که استفاده از شمارنده 4 بیتی و تعیین فعال بودن سوئیچ مربوطه به اندازه کافی تصادفی برای چیزی است که ما به دنبال آن بودیم. ما توانستیم شمارنده 4 بیتی خود را که در یک پروژه قبلی ایجاد کرده بودیم مجدداً مورد استفاده قرار دهیم تا بتوانیم برای این کار کار کنیم. ما از شمارنده برای ایجاد یک عدد تصادفی بین 0-15 استفاده کردیم. سپس در جزء main1 ، معادل اعشاری عدد تصادفی را به سوئیچ مربوطه روی برد اختصاص می دهیم. همانطور که در شکل نشان داده شده است ، هم خروجی X ("بمب فعال") از جزء main1 و هم سوئیچ هایی که بازیکنان روشن می کنند به FSM1 می روند. ماشین حالت مقدار یک بیت Z را خروجی می دهد که سپس توسط BC_DEC1 خوانده می شود. ماشین حالت نهایی که استفاده کردیم دارای دو حالت متفاوت است: در حالت A ، خروجی های هفت قسمتی "PLAY" نمایش داده می شود و دستگاه در آن حالت می ماند تا زمانی که تشخیص دهد کلید فعال شده در حال چرخاندن است. هنگامی که این اتفاق می افتد ، FSM به حالت B می رود که در آن "LOSE" را در صفحه نمایش هفت بخش خروجی می دهد و تا زمانی که همه 16 سوئیچ به "0" برگردند در آن حالت باقی می ماند. هنگامی که این شرط برآورده شد ، FSM بار دیگر به حالت A می رود و منتظر بازیکنان است تا بازی دیگری را شروع کنند. نمودار مور برای کمک به درک این FSM در بالا نشان داده شده است.

مرحله 4: اصلاحات آینده

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

مرحله 5: نتیجه گیری

ما از نتیجه نهایی این پروژه بسیار خوشحال بودیم. نه تنها به این دلیل که نسخه نهایی بازی سرگرم کننده بود ، بلکه به این دلیل که ایجاد و برنامه نویسی پروژه ما را ملزم به استفاده از بیشتر ، اگر نه همه چیزهایی که در این سه ماه یاد گرفته بودیم ، کنیم. ما از Flip Flops ، شمارنده ، FSM ، ساعت ، ورودی کاربر از برد و خروجی به صفحه نمایش هفت بخش استفاده کردیم.

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

توصیه شده: