פורסם 2008 בינואר 1717 שנים אני לא רוצה עכשייו פירושאני רוצה קודם כל לדעת אם תוכלו לעזור ליהמטרה שלי היא לבנות משחק פינג פונג קלאסי כמו שאתה מכירים עם 2 קוים אחד בימין אחד בשמאלוכדור שנע ביניהםמשהו סטנדרטי לצורך לימודעכשיו אני אישית בראש עיצבתי את התוכנית בצורה הבאה1. יצירת לוח המשחק.2. יצירת 2 הקווים + יכולת תנועה עם handling על העכבר שכאשר הוא מזהה תנועה למעלה הוא משנה את המיקום של תמונה א' לדוגמא יותר כלפי מעלה כנ"ל ההפך3. יצירת כדור משחק 4. יצירת תנועה לכדור משחק5. ליצור מצב שאם הכדור משחק פוגע בתמונה א' או ב'(שחקנים) הוא משנה את הכיוון שלו(הצורה בה הוא משנה את הכיוון להמשך)6. כאשר הכדור פוגע בדפנות שמאחרוי השחקים הוא חוזר לאמצע ועולה הניקוד של אותה שחקן שנמצא באותו צד.אני בטוח ב90 אחוז שלא ככה מתכננים אבל זה אפשרי בצורה הזאת פשוט כמתכנת הרבה שנים זה דרך לא אמיתית כלומר זה כמו להשתמש ב goto ולייבלים במקום בלולאות כמו שצריך.אם כן האם תוכלו לעזור ליאני בתכלס רוצה לבנות את זה ב c++אבל אני מתכנת בסביבת לינוקס בעזרת wxwidgetsאז אני מעדיף שתעזרו עם c# שהיא יותר נפוצה פהואני כבר יעשה לזה הסבה לשפה שלי
פורסם 2008 בינואר 1717 שנים לא הבנתי מה בדיוק אתה רוצה לשאול , ואיפה בדיוק את צריך עזרה.אבל בכל מקרה, מה שרשמת זה לא תכנון, זה תאור של "מוצר" ומה הוא צריך לבצע.תתחיל בחלוקה למחלקות, ואיפיון של כל מחלקה ( DATA MEMBER ופונקציות ).תפריד בין החלק הלוגי של המשחק לבין הממשק, אבל אל תשכח שהממשק צריך להגיב לאירועים מהחלק הלוגי.
פורסם 2008 בינואר 1717 שנים מחבר אני צריך לדעת האם התכנון שמניתי נכוןכלומר האם הוא ככה אמור ליהיות מבוצעאני כל תוכנית שאני בונה אני עושה בשלביםדבר שניאני צריך בעיקרון עזרה באיך לבנות את המשחק עצמו אני אישית לא בדיוק יודע מהיכן להתחיל
פורסם 2008 בינואר 1717 שנים מה שרשמת זה לא תכנון, זה תאור של "מוצר" ומה הוא צריך לבצע.תתחיל בחלוקה למחלקות, ואיפיון של כל מחלקה ( DATA MEMBER ופונקציות ).
פורסם 2008 בינואר 1717 שנים גם משחק פשוט כמו זה אפשר למדל כזה מכאן ועד הודעה חדשה, אבל הדרך העדיפה (לטעמי) היא שרוב הלוגיקה יהיה באובייקט "משחק", ושהכדור וה - paddles יהיו אובייקטים 'טיפשים' שאובייקט המשחק הוא זה שמזיז אותם.אם אתה רוצה לשכלל קצת את השליטה (לאפשר AI, שני שחקנים, וכו') אתה יכול לכתוב class לצורך controller, שמתחבר לאובייקט שאפשר לשחק:בתחילת כל cycle של המשחק ה- controllers קוראים/מחשבים את הקלט שלהם, והקלט שלהם מועבר לאובייקט שאליו הוא מחובר.
פורסם 2008 בינואר 1717 שנים מחבר בומרנגהעינייןשאני לא יודע איך לעשות את זהאני צריך הכוונהאני צריך מדריךהסתכלתי במקורות של משחקים שנבנולא היה בדיוק מובןאני צריך לפחות הכוונהתבנה אובייקט כך וכך שיכיל את......אני מוכן לקבל עזרה באי סי קיו אפילו בפלאפון
פורסם 2008 בינואר 1717 שנים לעשות גרפיקה אתה יוגע?כי זה חלק דיי נכבד.בכ"א, לדעתי אתה צריך ליצור את האובייקטים בצורה כזו:אובייקט "לוח" שהוא בעצמם המנוע של המשחק.אובייקט "כדור", שיחזיק בתוכו רק את המיקום של הכדור (נ"צ), ומטודות לשינוי המיקוםאובייקט "מטקה", שיחזיק בתוכו את המיקום של המטקה, ומתודה להזזה למעלה/מטה.אובייט "שחקן" שיחזיק את המטקה ואת הניקוד כאיברים.ואז ה"לוח", יבצע את כל הלוגיקה של המשחק עצמו, וכאשר הוא צריך להזיז מטקה מסויימת, אתה בעצם תעשה קריאה לאובייקט "שחקן", שיקרא לאובייקט "מטקה" שלו, ואז המתודה להזזת המטקה תופעל.אגב, אם אתה יודע לעשות threading, אז כדאי לך שהמטודת תזוזה של הכדור תרוץ בת'רד, ויהיו לו אירועים כאשר הוא פוגש בדברים, ואז תוכל פחות לדאוג לתזוזת הכדור במגרש.
פורסם 2008 בינואר 1717 שנים כן, כמו שאמרתי - אפשר למדל את זה מכאן ועד הודעה חדשה. עצה שלי - אל תיקח עצות ממי שבחיים לא כתב משחק.הנה טיפה מבוא כללי לתכנות משחקים (עוד לפני שמדברים על שפה או סביבת עבודה):במודל המקובל של משחק מחשב, החלק העיקרי הוא ה- main game loop, שזו לולאה שחוזרת על עצמה ומורכבת מהחלקים הבאים:1. קלט (למשל - לקרוא מהמקלדת אם המקש שאומר 'למעלה' לחוץ, ואם כן - להעביר הלאה את הפקודה 'למעלה')2. עדכון מידע (למשל - לראות שהתקבלה הפקודה 'למעלה' ולעדכן את המיקום של העצם שאמור לזוז)3. ציור למסךהלולאה חוזרת על עצמה כל עוד לא נגמר המשחק/שלב. כדי לשמור על קצב של משחק אתה צריך להשתמש באיזשהו טיימר שיאפשר לך לבצע את הלולאה כל כמה זמן (אפשרי גם שהחלק של עדכון המידע ידע כמה זמן עבר מאז הפעם הקודמת שהוא רץ ולפי זה יעשה את החישובים שלו).אם אתה עובד תחת חלונות מאיזשהו סוג אז בעצם כבר יש לך את ה- event loop/window procedure שמתפקדת כ- game loop, ואתה רק צריך לגרום ל- event כל פרק זמן קבוע.
פורסם 2008 בינואר 1717 שנים מחבר חחחחחחחחחלא הבנתם נראה לי נכוןאני מדבר על משהו סגנון כזהhttp://www.jesperjuul.net/gfx/projects/PingPong.gifמה שבומרנג אמר זה בעצם מה שחשבתיתיהיה כזאת צורהוזה לא קשה מדייישנו לוחוישנו לופ שכל הזמן מחכה לפקודה של המקלדתברגע שהוא מקבל keyup הוא שולח פקודה לשנות את המיקום של המטקה למעלהברגע שיש keydown ההפךאת המטקה אפשר לחלק ללפחות 5 חלקים שכל חלק שהוא יפגע ישנה את הסטייה של הכדור ותחזיר אותו לצד השני עם הסטייהתכלס זה לא קשה זה נשמע קלאגבאני מתכנת בסביבת לינוקסעם sdlעריכה:חשבתי גם על צורה שאיך הכדור ידע אם הוא פגע במטקהתיהיה פונקציה שתחשב כל הזמן את המיקום של המטקה ותשלח אותה ל2 משתנים x ו y לדוגמאברגע שהכדור ינוע כל רגע הוא ישלח פוקדה עם המיקוםברגע שהוא יגיע למיקום של המטקההוא פשוט יחזור חזרהתיהיה גם פונקציה שבעצם תעשה drawimg ובכל פעם שיתקבל keyup לדוגמא היא תשנה את המשתנה x ותוסיף לו לדוגמא +5 ותשלח לפונקציה drawimg ותמחק את התמונה הקודמת ותעלה את החדשה עם המיקום החדשאלא אם כן יש שיטה לשנות מיקום של תמונה אוטומטי
פורסם 2008 בינואר 1717 שנים מחבר זהו שכןאז צריך פה גם multithreadingשתוך כדי שלולאה שמריצה את הכדור מחכה לתגובה ושינוי בזוית ההנעהגם יש event handling שמחכה לתגובה מהמקלדתנכון?
פורסם 2008 בינואר 1817 שנים ממש ממש לא.בשלב הזה זה רק ייסבך אותך עם סינכרון בין ה- threads ו- race conditions ביניהם.כמו שכתבתי קודם, אתה עושה את הקלט (ומשתמש בפונקציות שהן non-blocking) ואז מעדכן את מבני הנתונים שלך לפי מהלך המשחק.
פורסם 2008 בינואר 1817 שנים מחבר אז זה יותר פשוט משחשבתיכל העניין זה לולאה שמריצה את הכדור ואת התגובות של הכדורושתי events למקלדת שיזיזו את המטקותסך הכול הלולאה היא לכדור
פורסם 2008 בינואר 1817 שנים אל תבלבל בין דברים, ואל תמהר לחשוב קודם על הפונקציות שיהיו לך שם. קודם תתאר את האובייקטים שאתה הולך להשתמש בהם(כפי שכבר ציינו, לוח, שחקנים וכו').אחר כך, תתכנן אילו פונקציות צריכות להיות בכל אובייקט שכזה. תתכנן את זה עבור כל אובייקט בנפרד. תרשום את השם של האובייקט, ואת הפונקציות שיהיו לו מתחתיו.אחרי שהחלטת על הפונקציות שאתה רוצה שיהיו, אתה יכול כבר להתחיל לחשוב איך אתה מקשר בין הפונקציות(איזו פונקציה תקרא לאחרת).רק בסוף תשב ותתכנת.דוגמא לאובייקטים והמתודות שלהן:שחקן-----העלה ניקודהזז לוח שחקןקבל מיקום לוח שחקןלוח----הזז ימינה/שמאלהקבל מיקום לוחצייר לוחכדור----הזז כדורקבל כדורצייר כדורככה, תעשה עבור כל אובייקט שאתה מוצא(רשימת הפונקציות כאן היא חלקית, ייתכן שתצטרך להוסיף למה שרשום כאן, וייתכן אפילו שתצטרך להוריד כמה).
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.