תוכן עניינים:

שואב מוקשים: 5 שלבים (עם תמונות)
שואב מוקשים: 5 שלבים (עם תמונות)

וִידֵאוֹ: שואב מוקשים: 5 שלבים (עם תמונות)

וִידֵאוֹ: שואב מוקשים: 5 שלבים (עם תמונות)
וִידֵאוֹ: ניר וגלי חדר וחצי - קומקום מתקלקל 2024, נוֹבֶמבֶּר
Anonim
שׁוֹלַת מוֹקְשִׁים
שׁוֹלַת מוֹקְשִׁים

עבור פרויקט הגמר שלנו CPE 133, צ'ייס ואני החלטנו ליצור משחק 'שורש מוקשים' שהשתמש בכפתורים ובחלפת קלט מלוח 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. למכשיר ה- Finite State בו השתמשנו יש שני מצבים שונים: במצב A, שבעת הקטע של תצוגת הפלח 'PLAY' והמכונה נשארת במצב זה עד שהיא מזהה שהמתג המופעל מתהפך. ברגע שזה קורה, ה- FSM עובר למצב B ושם הוא מוציא 'LOSE' לתצוגת שבעה הפלחים ונשאר במצב זה עד שכל 16 המתגים הופכים ל- '0'. כאשר התנאי מתקיים, ה- FSM שוב עובר למצב A ומחכה לשחקנים להתחיל משחק נוסף. תרשים מור שיסייע בהבנת FSM זה מוצג למעלה.

שלב 4: שינויים עתידיים

כמה שינויים ששקלנו לגבי ביצוע המשחק שלנו כוללים הוספת פצצות נוספות למגרש (אפשר להגדיל מאחת לשלושה), הוספת מונה ציונים ומספר סיבובים. בסופו של דבר החלטנו נגד השיפורים האלה, מכיוון שגילינו שמשחק משחק ארוך ומוארך בדרך כלל היה מתוח יותר ובסופו של דבר כיף יותר ממשחק שהסתיים בדרך כלל לאחר שלושה או ארבעה סיבובי החלפה.

שלב 5: מסקנה

שמחנו מאוד מהתוצאה הסופית של הפרויקט הזה; לא רק כי הגרסה הסופית של המשחק הייתה מהנה לשחק, אלא גם מכיוון שיצירה ותכנות של הפרויקט דרשו מאתנו לנצל את רוב, אם לא את כל מה שלמדנו ברבעון הזה. השתמשנו בכפכפים, מונים, FSM, השעון, קלט המשתמש מהלוח ופלט לתצוגת שבעה הפלחים.

למדנו גם כיצד כמה שגיאות תחביר יכולות לשבור את התוכנית לחלוטין (גם אם הן ייחשבו בסדר בשפות תכנות אחרות כגון פייתון או ג'אווה) וכי רק לאחר סימולציות מרובות ואיטרציות מרובות של הקוד שהועלו ונבדקו ב- לוח, האם תוכל סוף סוף לחלץ את כל הבאגים מהקוד שלך.

מוּמלָץ: