כשהמשחק שלנו מתחיל לגדול מבחינת כמות הקוד, מומלץ לחלק אותו למספר קבצים לדוגמא נניח שיש לנו משחק מכוניות פשוט שמכיל מסלול, מכונית ושעון זמן. הקוד יכול להיות משהו בסגנון הזה:
var time=60 track is a static track2 car is a gtr_nismo vehicle : pos (0,2,0) camera.chase car : trailing=true timer = { time=time-1 sys.print "Time: "+time : pos (0,0,0) and font "yoshi" if(time==0) { sys.print "Game Over" : pos (300,300,0) stop } } run timer every 1 second
ניתן לראות שהתכנית מכילה מספר חלקים:
א. הגדרת משתנים
ב. טעינת מודלים של מסלול ומכונית
ג. פרוצדורה שמטפלת בשעון ומגבילה את המשחק ל 60 שניות
במקום לשים את כל הקוד הזה בקובץ אחד (קובץ main) אפשר לחלק אותו למספר קבצים לדוגמא: בואו נעביר את כל טעינת המודלים לקובץ נפרד –
ניצור קובץ חדש תחת התקיה של המשחק – נקרא לו load_game
נעביר לקובץ load_game את הפקודות שטוענות את המסלול והמכונית ואת מצלמת המעקב:
track is a static track2 car is a gtr_nismo vehicle : pos (0,2,0) camera.chase car : trailing=true
ואז נחבר את הקובץ load_game לתכנית הראשית בקובץ main באמצעות הפקודה add code:
var time=60 add "load_game" code timer = { time=time-1 sys.print "Time: "+time : pos (0,0,0) and font "yoshi" if(time==0) { sys.print "Game Over" : pos (300,300,0) stop } } run timer every 1 second
כעת, כל קוד שקשור בטעינת משאבים למשחק יכול להיכתב ישירות בקובץ load_game
הדבר הבא שנרצה לעשות זה להעביר את כל אסטרטגיית ניהול זמן המשחק לקובץ נפרד –
ניצור קובץ חדש בשם game_timer תחת תקיית המשחק.
נעביר לתוכו את הפרוצדורה שמטפלת במדידת הזמן של המשחק:
timer = { time=time-1 sys.print "Time: "+time : pos (0,0,0) and font "yoshi" if(time==0) { sys.print "Game Over" : pos (300,300,0) stop } }
ואז נחבר אותו לתכנית הראשית בקובץ main:
var time=60 add "load_game" code add "game_timer" code run timer every 1 second
באופן הזה אנו מחלקים את התכנית לחלקים הגיוניים שקל יותר לתחזק אותם. שימו לב שישנה חשיבות למקום בו נשים את פקודת ה add code . הגיוני שטעינת המשאבים תהיה בהתחלה מפני שקטעי הקוד הבאים ישתמשו באותם משאבים וכך גם הוספנו את הקוד שמטפל בשעון המשחק לפני שקראנו לפקודה
run timer every 1 second
מפני שהפרוצדורה timer הוגדרה שם.