עיקרי שירותי הזרמה פריצת מיינקראפט ב- Raspberry Pi

פריצת מיינקראפט ב- Raspberry Pi



Raspberry Pi 2 הוא מכשיר בעל יכולת מפתיעה, בהתחשב במחירו הנמוך מ- £ 30. זה מגיע עם גרסה של Minecraft שהותקנה מראש, יחד עם ממשק API המאפשר לך לכתוב קוד להפעלה בעולם הווירטואלי. אתה עושה זאת בפייתון, וזה פשוט ללמוד. השילוב של ה- Pi, Python ו- Minecraft מספק הזדמנות מצוינת להתחיל לחקור את אפשרויות התכנות. והריגוש לראות בית בונה את עצמו על נוף וירטואלי, גם לא רק לילדים.

למה הסמן שלי קופץ מסביב

תסריטים ב- Minecraft

מיינקראפט הוא משחק ארגז חול פתוח שאין עליו קו עלילה. לפעמים זה מתואר כלגו לגו וירטואלי, מכיוון שהשחקן יכול לבנות כל סוג של מבנה באמצעות הבלוקים שעומדים לרשותו. הגרסה המשולבת עם ה- Raspberry Pi כוללת מערכת תכונות מוגבלת המתאימה לתפקיד החינוכי שלה - כך שאינך צריך לדאוג שמרדפים יירדפו אחריך, למשל. אינטראקציה עם העולם הזה אינה דורשת הגדרה מיוחדת, אלא רק בנייה חדשה של מערכת ההפעלה Raspbian בתוספת סביבת תכנות. הייתי בוחר ב- Geany, אותו תוכל להתקין על ידי פתיחת LXTerminal והקלדה:

sudo apt-get להתקין geany

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

כדי שהקוד יעבוד, טען אותו ל- Geany ואז הפעל את Minecraft וצור עולם חדש. לחץ על מקש Tab כדי לשחרר את הסמן מחלון Minecraft ולחץ על סמל גלגל השיניים ב- Geany (או הקש F5) להפעלת הסקריפט. אתה צריך לראות בית להרכיב את עצמו בצורה קסומה. אם לא, נסה להסתובב - זה עשוי להיות מאחוריך! אתה יכול לראות את התסריט בפעולה פה . אז איך התסריט עובד? ובכן, ראשית זה פותח קישור ל- Minecraft:

ייבא mcpi.minecraft כ- minecraft, זמן mc = minecraft.Minecraft.create ()

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

כעת אנו קוראים לפונקציית Minecraft mc.player.getTilePos () לאיתור הנגן בנוף, והערכים שחוזרים משמשים לאחר מכן ליצירת שני משתנים, שמאלה ותחתונה, כדי לתאר היכן תהיה הפינה הראשונה בדירה. .

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

def clear_house (גרעיני):
אם גרעיני == נכון:
blast_zone = 20
אַחֵר:
blast_zone = 0
mc.setBlocks (left-blast_zone, player_
קרקע, תחתית + אזור פיצוץ, שמאל + רוחב + פיצוץ_
אזור, שחקן_שטח + גובה + פיצוץ_
אזור + 10, אזור תחתון-פיצוץ_אזור, אוויר_חסום)

כאשר אנו קוראים clear_house, אנו מעבירים את הפרמטר גרעיני. יש לו את הערך נכון או לא נכון. אתה יכול לנסות לקרוא לזה עם True כדי לנקות נפח גדול יותר סביב אזור היעד, או להתקשר אליו עם False כדי להגביל את המרווח למידות הפנימיות של הבית. ב- Minecraft, הפונקציה mc.setBlocks משמשת ליצירת קוביית בלוקים על ידי העברת הקואורדינטות, בתלת מימד, של פינות מנוגדות ואחריהן סוג הבלוק שברצונך להשתמש בו. במקרה זה אנו מפנים מקום, ולכן אנו משתמשים באוויר.

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

def ראשי ():
clear_house (שקר)
start_pos = [שמאל, תחתון, שחקן_
קרקע, אדמה]
build_floor (start_pos)
קורס = build_walls (start_pos)
להוסיף_דלת (מיקום דלת)
זמן. שינה (עיכוב * 10)
build_roof (start_pos, כמובן)

הפונקציה הבאה הנקראת main () בונה את הרצפה - זו משתמשת ב- mc. setBlocks שוב כדי לחצוב תשתית (לאפקט אמנותי) ואז להוסיף קוביית אריחי רצפה בעומק של בלוק אחד ליצירת רצפה מוצקה בביתנו.

כיצד למחוק דף

בניית הקירות

הפונקציה build_walls היא לב התוכנית. הדרך היעילה ביותר ליצור מעטפת של בית תהיה לסטור קוביית לבנים מוצקה ואז להשתמש ב- clear_house כדי לחצוב את הפנים. עם זאת, אנו רוצים שהבית יראה את עצמו, ולכן עלינו להציב בלוקים אחד אחרי השני. הנה גרסה פשוטה של ​​קוד בניית הקירות:

def build_course (start_pos, כיוון,
קוּרס):
בלוקים = ​​1
current_horiz = start_pos [0]
current_vert = start_pos [1]

אם כיוון == למעלה או
כיוון == למטה:
number_of_blocks = אורך
אַחֵר:
number_of_blocks = רוחב

ואילו בלוקיםmc.setBlock (current_horiz, player_
מסלול קרקע + מסלול הנוכחי, קיר_חסום
אם כיוון == למעלה:
current_vert- = 1
כיוון elif == למטה:
current_vert + = 1
כיוון אליף == ימינה:
current_horiz + = 1
אַחֵר:

current_horiz- = 1
בלוקים = ​​בלוקים + 1 # עוברים לבלוק הבא
זמן. שינה (עיכוב)

אנו מתחילים באחסון עמדת ההתחלה - זה יהיה המיקום של הבלוק האחרון שהונח מהמהלך הקודם של הבלוקים. לאחר מכן אנו מציינים כמה בלוקים להניח, תלוי אם אנו הולכים לאורך הבניין או לרוחבו.

שלב הבנייה נכלל בתוך גוש הזמן - זה ממשיך לרוץ עד שהנחנו את כל הגושים. mc.setBlock מציב בלוק יחיד בקואורדינטות המוצגות ואז מגדיל אחד מאותם קואורדינטות בהתאם לכיוון אליו אנו מניחים. ההשפעה היא שבלוקים מונחים לאורך קיר לפני שמפנים פינה וממשיכים במלבן עד לסיום המסלול.

איך אתה רואה אילו תמונות מישהו אוהב באינסטגרם

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

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

השינויים האלה אולי נשמעים טריוויאליים, אבל אני מתכנת בצורה מקצועית יותר מ -20 שנה ואני עדיין זוכה לריגוש כשקטע קוד עובד כמתוכנן. אם מעולם לא תיכנתת בעבר, אני מקווה שתספק - ואם יש לך אוהד של מיינקראפט בבית, אני מציע לשחרר אותם על הקוד ולראות לאן זה לוקח אותם. תוכלו למצוא קישורים למשאבי Minecraft Pi בכתובת kevpartner.co.uk/programming .

מאמרים מעניינים

בחירת העורך

כיצד פועלים מנועי משחק? [כל היבט הובהר]
כיצד פועלים מנועי משחק? [כל היבט הובהר]
לא ניתן להשבית מודעות אוטומטיות באופן פרוגרמטי בדף, אז אנחנו כאן!
כיצד להסתיר כרטיסיות ב- Alt + Tab ב- Windows 10
כיצד להסתיר כרטיסיות ב- Alt + Tab ב- Windows 10
סטים הוא יישום מעטפת הכרטיסיות עבור Windows 10 שתאפשר קיבוץ אפליקציות בדיוק כמו כרטיסיות בדפדפן. כברירת מחדל, מחליף החלונות Alt + Tab מציג חלונות ולשוניות, אך ניתן להסתיר משם כרטיסיות, כך שהוא יציג רק חלונות שנפתחו.
כיצד לשלוח פקס ישירות מג'ימייל
כיצד לשלוח פקס ישירות מג'ימייל
אנשים רבים רואים בפקס מיושן. מי צריך לשלוח מידע באמצעות נייר בימינו? ובכן, ישנם מקרים מסוימים שבהם תרצה לקבל או לשלוח עותק קשיח של משהו. למשל, אם הנמען
כיצד להסיר סימן מים של טרילר
כיצד להסיר סימן מים של טרילר
טרילר היא פלטפורמת מדיה חברתית מהנה ופופולרית המאפשרת לך ליצור תוכן וידאו ומוסיקה. הוא מציע הרבה אפשרויות עריכת וידאו, המאפשרות לך להוציא את הכוכב הפנימי שלך ולסנוור את העוקבים שלך. אתה יכול לבחור
הגדר שורות כותרת צבעוניות אך שמור על שורת המשימות השחורה ותפריט התחל ב- Windows 10
הגדר שורות כותרת צבעוניות אך שמור על שורת המשימות השחורה ותפריט התחל ב- Windows 10
ראה כיצד להשיג שורת משימות שחורה תוך שמירה על שורות כותרת צבעוניות בעדכון נובמבר 1511 של Windows 10 (Threshold2).
כיצד להאיר מסך של מחשב נייד
כיצד להאיר מסך של מחשב נייד
השתמש בשיטות הפשוטות האלה כדי להפוך את מסך המחשב הנייד שלך לבהיר יותר. אתה יכול לעשות זאת משורת המשימות, ההגדרות, או אפילו ישירות מהמקלדת.
מיקרוסופט הכריזה על פרויקט חלודה / WinRT
מיקרוסופט הכריזה על פרויקט חלודה / WinRT
מיקרוסופט הכריזה על פרויקט Rust / WinRT המספק דרך טבעית ואידיומטית למפתחי Rust להתקשר לממשקי API של Windows. Rust / WinRT מאפשר לך להתקשר לכל WinRT API בעבר, בהווה ובעתיד באמצעות קוד שנוצר באופן מיידי ישירות מהמטא-נתונים המתארים את ה- API וישר לתוך חבילת ה- Rust שלך, שם תוכל לקרוא להם בשם