תכנות משחקים ב- C # באמצעות SDL.NET

אחת הבעיות עם קוד פתוח היא שלעתים נדמה שפרויקטים נופלים לצד הדרך או מסתובבים. קח SDL.NET. התעלמות מהאתר למכירה, חיפוש באינטרנט מגלה cs-sdl.sourceforge.net פרויקט שנראה כאילו הפסיק בנובמבר 2010. אנחנו לא חושבים שזה הפסיק, אלא פשוט נראה כמו שהיה.

אם אינך מכיר את C #, תחילה עליך ללמוד כיצד לעשות זאת תוכנית ב- C #. במבט אחר במקום אחר, נתקלנו במסגרת הטאו המקושרת באתר מונו שנראה כי היא מכסה את אותו אזור ומוסיפה תמיכה לצלילים וכו '. אבל אם מסתכלים על Sourceforge (שוב!), זה הוחלף על ידי OpenTK אבל המוקד שם הוא OpenGL. עם זאת, זה כולל גם את OpenAL כך שהתקנת השניים (cs-sdl ו- OpenTK) נראתה הדרך קדימה.

חלק מהתקנה של OpenTk נכשל; NS (shader) מכיוון שאין לנו VS 2008 מותקן! עם זאת, השאר היה בסדר. יצרנו פרויקט C # Console והתחלנו לשחק עם SDL.NET. את התיעוד המקוון תוכלו למצוא כאן.

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

instagram viewer

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

אתר את שני קבצי ה- SDL.NET (SdlDotNet.dll וטאו). Sdl.dll) כמו גם קובצי ה- DLL של OpenTK, והוסיפו אותם להפניות לפרויקט. לאחר ההתקנה, קבצי ה- DLL ממוקמים בקבצי תוכניות \ SdlDotNet \ bin (על חלונות 32 סיביות וקבצי תוכנה (x86) \ SdlDotNet \ bin ב- 64 סיביות. לחץ באמצעות לחצן העכבר הימני על החלק הפניות בסייר פתרונות ואז לחץ על הוסף הפניה ובחר בכרטיסייה עיון. זה פותח דו-שיח של סייר ולאחר איתור ה- DLL בחר ואז ולחץ על אישור.

דבר אחרון, לחץ על View \ Properties כך שיפתח את דפי המאפיינים ובכרטיסייה הראשונה (יישום) שנה את סוג הפלט מיישום המסוף ליישום Windows. אם לא תעשה זאת כאשר התוכנית תפעל לראשונה ותפתח את החלון הראשי של SDL, היא תפתח חלון קונסולה גם כן.

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

1,700 זה מגיע מהגדרת המספר המצויר למסגרת ל -17 והצגת המסגרות בשנייה בכיתוב החלון באמצעות וידאו. כותרת חלון. כל מסגרת היא מציירת 17 עיגולים ומלבנים מלאים, 17 על 2 x 50 = 1,700. נתון זה תלוי בכרטיס המסך, במעבד וכו '. זו מהירות מרשימה.

// מאת דייוויד בולטון, http://cplus.about.com
באמצעות מערכת;
באמצעות מערכת. ציור;
באמצעות SdlDotNet. גרפיקה;
באמצעות SdlDotNet. הליבה;
באמצעות SdlDotNet. גרפיקה. פרימיטיבים;
מעמד ציבורי ex1
{
רוחב const int intw = 1024;
משקל פרטית בינוני = 768;
מסך משטח סטטי פרטי;
סטטי פרטי אקראי r = חדש אקראי ();
ריק סטטי ציבורי ראשי (מחרוזת [] args)
{
מסך = וידאו. SetVideoMode (רוחב, גובה, 32, שקר, שקר, שקר, נכון);
אירועים. TargetFps = 50;
אירועים. צא + = (QuitEventHandler);
אירועים. Tick ​​+ = (TickEventHandler);
אירועים. רוץ ();
}
ריק סטטי פרטי QuitEventHandler (שולח אובייקטים, טענות QuitEventArgs)
{
אירועים. QuitApplication ();
}
חלל סטטי פרטי ריק TickEventHandler (שולח האובייקט, טענות TickEventArgs)
{
עבור (var i = 0; i <17; אני ++)
{
var rect = מלבן חדש (נקודה חדשה (r. הבא (רוחב 100), r. הבא (wheight-100)),
גודל חדש (10 + r. הבא (רוחב - 90), 10 + r. הבא (משקל - 90)));
var Col = צבע. מ- Argb (r. הבא (255), r. הבא (255), r. הבא (255));
var CircCol = צבע. מ- Argb (r. הבא (255), r. הבא (255), r. הבא (255));
רדיוס קצר = (קצר) (10 + r. הבא (משקל - 90));
var Circ = מעגל חדש (נקודה חדשה (r. הבא (רוחב 100), r. הבא (wheight-100)), רדיוס);
מסך. מילוי (רקט, קול);
מעגל צייר (מסך, CircCol, שקר, נכון);
מסך. עדכון() ;
וידאו. WindowCaption = אירועים. Fps. ToString ();
}
}
}

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

כאן אובייקט הווידיאו משמש לקביעת הגודל והרזולוציה של חלון המשחק (מסך מלא הוא אפשרות). הפרמטרים של SetVideoMode מאפשרים לך לשנות את אלה ו 13 עומסי יתר מספקים מגוון רב. יש קובץ .chm (פורמט העזרה של Windows html) בתיקיית המסמך המתעד את כל הכיתות והחברים.

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

אתה יכול להגדיר את קצב המסגרת הרצוי שלך ואת שלי להפחית את הלולאה ל 5 ולשנות את Targetfps ל 150 יש לנו את זה פועל על 164 פריימים לשנייה. TargetFps הוא דמות מגרש כדור; זה מכניס עיכובים כדי להתקרב לנתון ההוא, אלא לאירועים. Fps זה מה שמועבר.

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

instagram story viewer