פרוייקט C

MILNI

New member
פרוייקט C

שלום......... אני זקוק לנושא לפרוייקט רציני בשפת C. לתעודת סיום הנדסאי אז למי שמבין ויש רעיון רציני וגדול מוזמן לתת לי רק את הרעיון. תודב רבה. דרך אגב: מומלץ פרויקט ללוא שימוש בגרפיקה רצינית.
 

yair24

Member
הנה כמה רעיונות...

אם אתה לא רוצה גרפיקה אז: מערכת לניהול מפעל. מערכת לניהול בית חולים. מערכת לניהול סידור עבודה שמסדרת עבודה למספר עובדים לפי אילוצים מסוימים.. אני אישית תמיד אוהב לשלב גרפיקה בפרוייקטים שלי ובמקרה כזה (אם כן תרצה להישתמש בגרפיקה) אז אני ממליץ לך לעשות משחק שיש בו הרבה דמויות שרצות על המסך (דמויות שרצות ביחד על המסך עושים בעזרת רשימות מקושרות) הנה כמה רעיונות: משחק בסגנון הפלישה מהחלל (מה שהיה פעם באטארי) משחק פאק מן טמאגוצ´י משוכלל שמבקש בקשות ואם אתה לא ממלא אותם הוא מת ונולדים לו ילדים דרך אגב כל הרעיונות שאני נותן לך כאן בוצצעו על ידי סטודנטים מהמכללה שלי כפרוייקטי ++C בסיום קורס ++C. בהצלחה
 

yair24

Member
בקשר לטמאגוצ´י...

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

The_Mighty_Perr

New member
מה???

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

yair24

Member
קודם כל אין צורך לכעוס... ../images/Emo13.gif

כמובן שאפשר לעשות בכל מיני דרכים אבל נסכים שאתה חייב להשתמש באיזשהו מבנה נתונים שאתה רץ לכל אורכו ומשנה נתון מסוים בו (למשל את קואורדינטה X שלו שזה יגרום לתזוזה של הדמות במסך) אז נגיד שאתה עושה רשימה מקושרת שמחזיקה את כל הדמויות בסדר? לצורך הענין אני אשתמש במשחק שלא מזמן כתבתי וגם חלק ממנו העליתי לפה לפורום. אז מה שקורה שם אתה טנק שיורה על חלליות שבאות מלמעלה והחלליות יורות עליך בחזרה. אז ככה: היריות ממומשות שם בתור איברים ברשימה מקושרת וכל פעם אתה בעצם "רץ על הרשימה" ומוריד את הY של היריה וככה זה מממש את "תזוזת" הכדור על המסך עכשיו אם כדור מסוים פגע במשהו או שעבר את גבול המסך אתה צריך לנתק אותו מהרשימה ולשחרר את הזיכרון שהוא תפס לא יעזור כלום אבל לנתק איבר מרשימה מקושרת הרבה יותר פשוט ומהיר מאשר להוציא איבר ממערך למשל למה? אני בטוח שאתה יודע לבד למה: כי כדי להוציא איבר ממערך במקרה וזה איבר שנמצא באמצע המערך אז צריך למחוק אותו ולשנות את גודל המערך ואת כל שאר האיברים להתחיל להזיז אחד אחורה וכולי... שזאת פעולה שלוקחת הרבה זמן מבחינת סיבוכיות... (כלומר ככל שיש יותר הרבה כדורים במסך זה יקח יותר זמן) אני מקווה שהבנת את הרעיון שלי למה צריך רשימות מקושרות (ושוב פעם ניתן בצורות אחרות ואני אשמח אם תתן לי דוגמא לדרך אחרת) ולקינוח אני מצרף לפה את קובץ ההפעלה של המשחק שיצרתי (אל תשכח ללחוץ על GAME->NEWGAME) תתחיל לירות עם רווח ואל תשכח להדליק את NUM LOCK וכשאתה יורה תחשוב שכל יריה שאתה מייצר נכנסת לתוך רשימה מקושרת וכל פיקסל שזז שם זה אומר שהמחשב בעצם סיים לרוץ על כל הרשימה והזיז את הכדור והנה הוא זז עוד פיקסל ועוד פיקסל ועוד פיקסל וכל פיקסל כזה זה ריצה על רשימה מקושרת שלמה שלא לדבר שהחלליות הזזות זה גם כן רשימה מקושת (עם 4 חלליות) וגם לאורכה המחשב רץ כל הזמן פשוט לא יאמן!!!!!
והכי חשוב לא לשכוח לשנות את הסיומת לEXE. בברכה... אני אשמח לשמוע את תגובתך בנושא אבל עם קצת פחות כעס ותדהמה. יאיר
 

The_Mighty_Perr

New member
אני לא כועס../images/Emo13.gif

בס"ד העניין הוא שכדורים הרצים על המסך, או חלליות הזזות על המסך בצורה שתארת אכן אפשר, ונראה בסדר גמור ליישם כקרשימה מקושרת, אבל... אבל נניח שאנחנו מדברים על משחק אסטרטגיה בסדר גודל של AOE או C&C או אפילו WarCraft... העצמים שזזים על המסך לא סתם יורדים למטה כמו הכדורים, ולא סתם זזים מצד אחד של המסך לצד השני שלו, אלא זזים בצורה חכמה מאוד(AI...)! לא רק זה אלא ש"דמות" לא נמחקת ברגע שהיא יוצאת מהמסך, שהרי יש scrolling... ובכלל דמות אינה יכולה לצאת מהמסך! איך תיישם את זה בעשת רשימות מקושרות???
 

yair24

Member
יפה שאתה שואל...

והאמת שהזכרת לי שאלה שרציתי לשאול פה בפורום ושכחתי לשאול: איך באמת יוצרים משחקים מתוחכמים?ואני לא מדבר על המשחקים הבאמת מתוחכמים כמו הדוגמאות שנתת אלא על משחקים הרבה יותר פשוטים כמו למשל COMMANDER KEEN מה שאני לא מצליח להבין זה איך כותבים משחק כזה ב-C או בפסקל או השד יודע באיזה תוכנה כתבו אותו את המשחק המצוקמק שכתבתי והעליתי לפה לקח לי כל כך הרבה זמן למצוא את כל זליגות הזיכרון שהיו בו ובכלל יש לי ניסיון בדי הרבה משחקים כאלה שכתבתי ומה שמאפיין את כל המשחקים שכתבתי זה שהם נמצאים במסך אחד כלומר הם לא נגללים הלאה בCOMMANDER KEEN אובSHINOBI (למי שזוכר את המשחק הגדול SHINOBI) אז שם המסך נגלל איך עושים את זה? ועכשיו אני אצייחס למה שאתה אמרת MIGHTY PERR, בודאי שלא חשבת שהצעתי לבחורצ´יק לכתוב משחק ברמה של WARCRAFT בשביל פרוייקט סיום????
נכון? יאיר
 

The_Mighty_Perr

New member
תגובה

בס"ד אני מניח שבאמת לא הצעת ל"בחורצ´יק" לעשות WarCraft, אבל מה זהוא שומע נקלט לו בראש, עוד 5-10 שנים כשהוא יתקבל לחברת מחשקים רצינית וינסה לבנות את AOE 4 בעשרת רשימות מקושרות ולא יצליח הוא ייתקע!!! בברכה...
 

yair24

Member
../images/Emo13.gif חה אז רגע...

נו אז איך באמת עושים משחקים כאלה? ומישהו מכיר את המשחק SHINOBI? יאיר
 

philips

New member
המממ...

כמו לכל שאלה....גם כאן התשובה נמצאת באינטרנט http://sourceforge.net/softwaremap/trove_list.php?form_cat=80 מדובר באתר מבריק המשמש במאגר Open Source ענק המפותח במקביל ע"י מתכנתים מכל העולם...ב LINK המצורף , קיימות מספר פלטפורמות לפיתוח משחקים ששווה לך להעיף בהן מבט ולו בשביל העניין...
 

The_Mighty_Perr

New member
עוד משהו

בס"ד תשובה לשאלתך "איך לעזאזל עושים תוכנה/משחק גדול?" והתשובה היא, כמובן, צוות גדול. נגיד שאנחנו מפתחים את WarCraft 4...
יש לנו צוות גדול - אנחנו מחלקים אותו לתת-צוותים: *תת-צוות לגרפיקה *תת-צוות לבינה מלאכותית *תת-צוות שיבדוק תאימות לחומרות שונות *תת-צווץ שיעסוק בקושוריות לאינטרנט וחיבור ישיר דרך מודם ---------------------------------------------------------------------- *בתת-הצוות של הגרפיקה יהיו מספר מתמטיקאים, מספר גרפיקאים ומספר מתכנתים. *בתת-הצוות לבינה המלאכותית יהיו בעיקר מתמטיקאים ומספר מתכנתים. *בתת-הצוות שיבדוק תימות לחומרות שונות יהיו הרבה מומחים שונים, לחומרות שונות, וכמה מתכנתים שיפטרו את הבעיות שיתעוררו בזמן הבדיקות. *בתת-הצוות שיעסוק במשחק הרב-משתתפים יהיו בעיקר מתנתים/אנשי-תונה(לא חומרה) ---------------------------------------------------------------------- לכל צוות יהיה ראש-צוות שיפקח על העבודה ויחלק משימות. כל ראשי הצוותים יפגשו מדי פעם בינם לבין עצמם לבין ראש הפרוייקט וידונו במשאבים נוספים שצריך, עובדים נוספים, דחיית זמן יציאת WarCraft 4
... ---------------------------------------------------------------------- עם הרבה השקעה ועוד יותר כאבי ראש - נקבל את WarCraft 4!!! בברכה...
 

TZURYOAV

New member
ספריית CDX למשל,לא צריך

לכתוב כל פעם מחדש מה שצריך הוא GAME ENGINE טוב גרפיקאי מוכשר ומזכירה כוסית.... ספריית CDX היא ספרייה דו מימדית מבוססת DIRECTX להכנת משחקים אתה יכול ליצור משחקים בקלות. יואב צור
 

The_Mighty_Perr

New member
תגובה

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

פינצ

New member
לגבי סעיף ב.

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

yair24

Member
ידעתי שפינצ´ תגיד על זה משהו ../images/Emo13.gif

האמת שציפיתי למשהו יותר בסגנון: "יואב יא חתיכת מאצ´ו!! @#$%" אבל נו טוב תמיד יש הפתעות בחיים... יאיר
 

פינצ

New member
בתור שוביניסטית מושבעת

המושג מאצ´ו אצלי לא נחשב כמילה גסה ולכן אין לי מה להשתמש בה בכזה הקשר.
 

פינצ

New member
כמובן

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

yair24

Member
אה ועוד משהו...

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