תוכן עניינים:
וִידֵאוֹ: משחק טיימינג תחרותי מול 2 שחקנים: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
אתה תצטרך:
1. Basil 3, לוח FPGA (או כל FPGA אחר)
2. גירסה עדכנית יחסית של Vivado, או סביבת VHDL אחרת
3. מחשב שיכול להריץ את התוכנית המוזכרת.
שלב 1: המשחק עצמו
כיצד FSM מתקשר עם המודולים.
איך לשחק
כדי להתחיל, אתה לוחץ על הכפתור האמצעי. זה יגרום להצגת "99", המייצגת את בריאותו של השחקן השני, בתצוגת שבעה הקטע. לאחר מכן, נוריות ה- LED יידלקו ברצף מימין לשמאל. זה יוצר שורת כוח. ברגע שסרגל ההפעלה מלא, הוא מתאפס. מטרת השחקן הראשון היא להעיף את המתג כשהרמה גבוהה ככל האפשר. ככל שמדליקים יותר נוריות LED, כך השחקן גורם יותר נזק לשחקן שתיים. לאחר ששחקן אחד הופך את המתג שלו, הנזק שנגרם ינוכה מבריאותו של השחקן השני. לאחר מכן, הוא עובר לתורו של שחקן שני. כעת, המספר המוצג מייצג את בריאותו של השחקן, וסרגל ההפעלה מתמלא משמאל לימין. ברגע ששחקן שני עושה את המהלך שלו, הנזק ינוכה, וזה חוזר לתורו של השחקן. זה חוזר עד ששחקן אחד מגיע ל -0 בריאות. מצורף סרטון של תפקוד זה.
שלב 2: FSM
המשחק הזה הוא למעשה מכונת מדינה סופית אחת גדולה, שקורה לוגיקה מורכבת המבוססת על המצב בו ה- FSM נמצא.
מצב 1: תפריט המצב הראשון הוא מסך התפריט, שהוא אחד המצבים הפשוטים יותר. הוא כולל את תצוגת שבעה הקטעים המציגה את המילה "PLAY", ואת הכפתור שגורם למשחק להתחיל. הכפתור, BTN, מוביל אותנו למצב הבא, שהוא תורו של השחקן.
מצב 2: תורו של השחקן הראשון
תורו של השחקן האחד מפעיל אות הגורם לתצוגת שבעת הקטע להציג את מצב בריאותו של השחקן השני. אות אחר נדלק להפעלת רגיסט משמרות שיובא ממודול אחר שיצרנו (Pone.vhd). מרשם המשמרות גורם להאיר את נוריות ה- LED כמו מד כוח הולך ומשתנה במשחקים אחרים, ולאחר מכן הוא יתאפס ל -0 כאשר הוא יגיע לכמות הנורית המרבית שניתן להדליק. הוא מתעדכן בקצה העולה של השעון המתקבל מ- barclock.vhd, אשר משתנה מקובץ מעבדה שאול. התחלנו את סרגל השחקן אחד מימין, והתמלאו שמאלה, מכיוון שהמתג של השחקן אחד נמצא גם משמאל (לחוויית משתמש אינטואיטיבית). ברגע שהמתג הופך, המדינה עוברת לניכוי אחד של השחקן, וכמות הפעילים של ה- LED נשמרת באות.
מצב 3: ניכוי שחקן אחד האות עם כמות הפעילים של LED קובע את כמות הבריאות שמקבלת ניכוי. זה נעשה על ידי כך שיש לו עוד ריסט משמרת (deductor1.vhd) שבמקום להגדיל את נוריות הלדים, מפחית אותן. זה יורד בקצה העולה של אחד ממודולי div השעון שלווה ושנינו (downcounterclock.vhd). בדיוק כאשר נורית אחת כבויה, נקודת בריאות אחת מנוכה מכל הבריאות הכוללת של השחקן השני. אם במהלך תהליך זה שחקן שני מגיע ל -0 בריאות, אנו עוצרים ומיד עוברים למצב "משחק נגמר". אחרת, ברגע שווקטור ה- LED יגיע ל "0000000000000000", אנו עוברים לתורו של השחקן השני.
מצב 4: תורו של שחקן שני תורו של שחקן שני הוא בדיוק כמו תורו של שחקן אחד, למעט רישום המשמרות עבורו (Ptwo.bhd) עובר משמאל לימין, והמתג נמצא בצד ימין של הלוח. אות מופעל כדי להציג את תצוגת הבריאות של השחקן 1. ברגע שהמתג 2 פעיל, זה עובר לסיבוב הניכוי של שחקן שני.
שלב 5: ניכוי שחקן שני בדיוק כמו התור של שחקן שתיים, שחקן שני מנכה מתנהג הרבה כמו שחקן אחד מנכה. ההבדל העיקרי הוא שרשומת המשמרות השולטת בכיבוי הנורית הולכת בכיוון ההפוך, וזה שינוי קל לביצוע ברגע שהניכוי של השחקן פועל כראוי.
שלב 6: המשחק נגמר אם בשלב כלשהו השחקן מגיע לאפס בריאות, המשחק עובר למצב זה. אין שום תצוגות מפוארות. אם לוחצים על BTN אחד, אז הבריאות מתאפסת ל -99, והמדינה חוזרת לתפריט, ומתחילה למעשה את המשחק מחדש.
שלב 3: מודולים
תרשים קופסה שחורה למשחק
שעון למטה (מבוסס על מודול clk_div.vhd מאת בריאן מיילי):
זהו השעון המטפל בתזמון של הניכויים. הקבוע בשם max_count הוא פי 3 יותר מהקבוע max_count של barclock. זה יהפוך את המנחים לאט פי 3 ממהירות המוט.
Barclock - (מבוסס על מודול clk_div.vhd מאת בריאן מיילי):
שעון זה מטפל בתזמון מדדי הכוח, אותם ביצענו תוספת במהירות כדי להוסיף קושי למשחק. ניתן להתאים תזמון זה לטעמך, להגדיל את המהירות על ידי הפיכת המספר המקסימלי לקבוע למספר גדול יותר, או הפחתתו על ידי הפיכת מקסימום_ספר למספר קטן יותר. Sseg_dec - (נכתב על ידי בריאן מיילי): מודול זה לוקח מספר 8 סיביות כקלט, אותו הוא מפענח, ממיר את המספר למקבילה העשרונית שלו ולאחר מכן פלט לתצוגת שבעה המגזרים. כדי שהקובץ הזה יעבוד, עליך לוודא שהאילוצים שלך תואמים את שלנו.
לֶחֶם תִירָס:
זהו רישום משמרות המזיז סיביות שמאלה, ומוסיף ביט חם אחד כדי לגרום לו להיראות כאילו מד הכוח גדל. כאשר כל הסיביות חמות, כל הסיביות מתאפסות ל- '0', והמחזור מתחיל מחדש.
Ptwo:
זוהי גרסה הפוכה של מודול P1.
מנכה 1:
זהו שילוב של פנקס משמרות ומחסור. פנקס המשמרות הולך בכיוון ההפוך מרשם המשמרות של P1, מה שמעיד על ניכוי. זה גם מפחית 1 מבריאותו של שחקן 2 לכל מחזור שעון, כך שבשילוב של שתי הפונקציות הללו, ייראה כי בריאותו של היריב יורדת ב -1 עבור כל מדורגל של סרגל הבריאות שיורד.
Deductor2: זוהי גרסה הפוכה של מודול Deductor1.
PlayDecoder (שאול ושונה ללא ספק מ- ekchen35649 133 שלו ניתן להנחיה): זה משמש במצב התפריט כדי להציג את המילה "PLAY" על מפענח שבעת הקטע.
שלב 4: בדוק
המשחק הזה נוצר במקור בהשראת אחד ממשחקי המיני מקירבי. זהו משחק פשוט לשני שחקנים שניתן לשחק עליו על לוח Basys 3, או כל FPGA.
שלב 1: חומרים נדרשים
תזדקק ל: Digilent Basys 3, FPGA Board (או כל אחר) גירסה עדכנית יחסית של Vivado, או סביבת vhdl אחרת מחשב שיכול להריץ את התוכנית המוזכרת A brain
שלב 2: המשחק עצמו
איך לשחק
כדי להתחיל, אתה לוחץ על הכפתור האמצעי. זה יגרום ל"99 ", המייצג את בריאותו של השחקן השני, להופיע בתצוגת שבעה הקטע. לאחר מכן, נוריות ה- LED יידלקו ברצף מימין לשמאל. זה יוצר שורת כוח. ברגע שסרגל החשמל מלא, הוא מתאפס. מטרתו של השחקן הראשון היא להעיף את המתג כשהרמה גבוהה ככל האפשר. ככל שנוריות הנורות יותר נדלקות, כך השחקן גורם יותר נזק לשחקן השני. לאחר ששחקן אחד הופך את המתג שלו, הנזק שנגרם ינוכה מבריאותו של השחקן השני. לאחר מכן, הוא עובר לתורו של שחקן שני. כעת, המספר המוצג מייצג את בריאותו של השחקן, וסרגל ההפעלה מתמלא משמאל לימין. ברגע ששחקן שני עושה את המהלך שלו, הנזק ינוכה, וזה חוזר לתורו של השחקן. זה חוזר עד ששחקן אחד מגיע ל -0 בריאות. מצורף סרטון של תפקוד זה.
כדי לשחק את המשחק, טען אותו על לוח בסיסי ולחץ על הכפתור האמצעי. נסה להעיף את המתג עם כמה שיותר לדים פעילים, ולאחר מכן המתן וצפה כאשר הלוח מנכה את הנקודות הללו מבריאות היריב. לאחר מכן, העבירו אותו לחברכם, ו
שלב 3: FSM
המשחק הזה הוא למעשה מכונת מדינה סופית אחת גדולה, שקורה לוגיקה מורכבת המבוססת על המצב בו ה- FSM נמצא.
(תרשים המדינה)
מצב 1: תפריט
המצב הראשון הוא מסך התפריט, שהוא אחד המצבים הפשוטים יותר. הוא כולל את תצוגת שבעה הקטעים המציגה את המילה "PLAY", ואת הכפתור שגורם למשחק להתחיל. הכפתור, BTN, מוביל אותנו למצב הבא, שהוא תורו של השחקן.
מצב 2: תורו של השחקן הראשון
תורו של השחקן האחד מפעיל אות הגורם לתצוגת שבעת הקטע להציג את מצב בריאותו של השחקן השני. אות אחר נדלק להפעלת רגיסט משמרות שיובא ממודול אחר שיצרנו (Pone.vhd). מרשם המשמרות גורם להאיר את נוריות ה- LED כמו מד כוח הולך ומשתנה במשחקים אחרים, ולאחר מכן הוא יתאפס ל -0 כאשר הוא יגיע לכמות הנורית המרבית שניתן להדליק. הוא מתעדכן בקצה העולה של השעון המתקבל מ- barclock.vhd, אשר משתנה מקובץ מעבדה שאול. התחלנו את סרגל השחקן אחד מימין, והתמלאו שמאלה, מכיוון שהמתג של השחקן אחד נמצא גם משמאל (לחוויית משתמש אינטואיטיבית). ברגע שהמתג הופך, המדינה עוברת לניכוי אחד של השחקן, וכמות הפעילים של ה- LED נשמרת באות.
מדינה 3: ניכוי שחקן אחד
האות עם כמות הפעילים של LED קובע את כמות הבריאות שמקבלת ניכוי. זה נעשה על ידי כך שיש לו עוד ריסט משמרת (deductor1.vhd) שבמקום להגדיל את נוריות הלדים, מפחית אותן. זה יורד בקצה העולה של אחד ממודולי ה- div השעון שלוונו ושינינו (downcounterclock.vhd). בדיוק כאשר נורית אחת כבויה, נקודת בריאות אחת מנוכה מכל הבריאות הכוללת של השחקן השני. אם במהלך תהליך זה שחקן שני מגיע ל -0 בריאות, אנו עוצרים ומיד עוברים למצב "משחק נגמר". אחרת, ברגע שווקטור ה- LED יגיע ל "0000000000000000", אנו עוברים לתורו של השחקן השני.
מצב 4: תורו של שחקן שני
תורו של שחקן שני הוא בדיוק כמו תורו של שחקן אחד, למעט רשימת המשמרות עבורו (Ptwo.bhd) עוברת משמאל לימין, והמתג נמצא בצד ימין של הלוח. אות מופעל כדי להציג את תצוגת הבריאות של השחקן 1. ברגע שהמתג 2 פעיל, זה עובר לסיבוב הניכוי של שחקן שני.
שלב 5: ניכוי שחקן שני
בדיוק כמו תורו של שחקן שני, שחקן שני ניכויים מתנהג הרבה כמו שחקן אחד מנכה. ההבדל העיקרי הוא שמרשם המשמרות השולט על כיבוי הנורית עובר בכיוון ההפוך, וזה שינוי קל לביצוע ברגע שהניכוי של השחקן פועל כראוי.
שלב 6: המשחק נגמר אם בשלב כלשהו השחקן מגיע לאפס בריאות, המשחק עובר למצב זה. שום תצוגות מפוארות. אם לוחצים על BTN אחד, אז הבריאות מתאפסת ל -99, והמדינה חוזרת לתפריט, ומתחילה למעשה את המשחק מחדש.
קופסה שחורה
שלב 4: מודולים
שעון למטה (מבוסס על מודול clk_div.vhd מאת בריאן מיילי):
זהו השעון המטפל בתזמון של הניכויים. הקבוע בשם max_count הוא פי 3 יותר מהקבוע max_count של barclock. זה יהפוך את המנחים לאט פי 3 ממהירות המוט.
Barclock - (מבוסס על מודול clk_div.vhd של בריאן מיילי): שעון זה מטפל בתזמון של מדי הכוח, אותם ביצענו תוספת במהירות כדי להוסיף קושי למשחק. ניתן להתאים תזמון זה לטעמך, להגדיל את המהירות על ידי הפיכת המספר המקסימלי לקבוע למספר גדול יותר, או הפחתתו על ידי הפיכת מקסימום_ספר למספר קטן יותר. Sseg_dec - (נכתב על ידי בריאן מיילי): מודול זה לוקח מספר 8 סיביות כקלט, אותו הוא מפענח, ממיר את המספר למקבילה העשרונית שלו ולאחר מכן פלט לתצוגת שבעה המגזרים. כדי שהקובץ הזה יעבוד, עליך לוודא שהאילוצים שלך תואמים את שלנו.
Pone: זהו רישום משמרות המזיז סיביות שמאלה, ומוסיף ביט חם אחד כדי שייראה כאילו מד הכוח גדל. כאשר כל הסיביות חמות, כל הסיביות מתאפסות ל- '0', והמחזור מתחיל מחדש.
Ptwo: זוהי גרסה הפוכה של מודול P1.
Deductor1: זהו שילוב של רישום משמרות וחסר. פנקס המשמרות הולך בכיוון ההפוך מרשם המשמרות של P1, מה שמעיד על ניכוי. זה גם מפחית 1 מבריאותו של שחקן 2 לכל מחזור שעון, כך שבשילוב של שתי הפונקציות הללו, ייראה כי בריאותו של היריב יורדת ב -1 עבור כל מדורגל של סרגל הבריאות שיורד.
Deductor2: זוהי גרסה הפוכה של מודול Deductor1.
PlayDecoder (שאול ושונה מעט מ- ekchen35649 133 שלו להוראה):
זה משמש במצב התפריט כדי להציג את המילה "PLAY" במפענח שבעת הקטע.
לעשות: תמונות, וידאו
מוּמלָץ:
Tap Tap Rainbow - משחק תגובה מהיר ל -2 שחקנים: 4 שלבים (עם תמונות)
Tap Tap Rainbow - משחק תגובה מהיר ל -2 שחקנים: לפני שבועיים לבתי היה רעיון גאוני להכין משחק תגובה מהיר עם צבעי קשת (היא מומחית לקשת: D). אהבתי את הרעיון מיד והתחלנו לחשוב איך אפשר להפוך אותו למשחק אמיתי. יש לך קשת בענן
הפחתת צריכת החשמל ממסר - החזקת זרם איסוף מול: 3 שלבים
הפחתת צריכת החשמל ממסר - החזקת זרם איסוף מול: רוב הממסרים דורשים יותר זרם לפעול בתחילה מכפי שנדרש להחזיק את הממסר לאחר סגירת המגעים. הזרם הנדרש להחזקת הממסר על (זרם החזקה) יכול להיות נמוך בהרבה מהזרם ההתחלתי הנדרש להפעלה
Aruduino LED משחק לחיצה מהירה על שני שחקנים: 8 שלבים
משחק Aruduino LED לחיצה מהירה על שני שחקנים: פרויקט זה בהשראת @HassonAlkeim. אם אתה מוכן להציץ לעומק הנה קישור שאתה יכול לבדוק https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. המשחק הזה הוא גרסה משופרת של Alkeim. זה
רמקולים פסיביים עוצמתיים מול אלון לבן: 16 שלבים (עם תמונות)
רמקולים פסיביים עוצמתיים מול אלון לבן: זהו פרויקט הרמקולים השלישי שלי ושונה לחלוטין מהקודמים! הפעם אני הולך להכין כמה צגים גדולים, עוצמתיים ויפים למראה בחדר האודיו שלי! יש לי כמה פרויקטים אחרים באינסטגרם, אנא בדוק אותם! האתרים שלי
מגדל השומר מול באגים: 12 שלבים
מגדל השמירה מול באגים: אנו סטודנטים בשנה א 'מהמכון המשותף UM-SJTU, הממוקם בקמפוס מינג האנג באוניברסיטת שנחאי ג'יאוטונג, שנחאי, סין. מהלך ה- JI, ו