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

Download Report

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

‫פרויקט‪ :‬בניית סביבת משחק ממוחשבת‬
‫שם התלמידים‪ :‬תומר עזרא ואופיר ערד‬
‫מנחה‪ :‬שי בגון‬
‫שם המורה המלווה‪ :‬אלי בן שלום‬
‫בית ספר‪ :‬תיכון אחד העם פתח תקווה‬
‫כיתה י"א‬
‫מועד הגשה‪11.04.07 :‬‬
‫עיקרי התכנים‬
‫•מבוא‬
‫•הגדרת הפרויקט ומטרותיו‬
‫•אינטליגנציה מלאכותית‬
‫•פונקציות בסיסיות‬
‫•ממשק גרפי‬
‫•תקשורת‬
‫•טסטינג‬
‫•הצעות לשיפור‬
‫תקציר‬
‫התכנון‪ -‬שתי אפליקציות מקושרות שמדמות משחק‬
‫ישויות שרת – המרות| תקשורת| חוקים| מצב| הרשימה| בינה מלאכותית‬
‫ישויות משתמש‪ -‬המרות| תקשורת| חוקים| מצב |הרשימה| ממשק גרפי|‬
‫שרת‬
‫שחקן‬
‫שחקן‬
‫מבוא ורקע‬
‫המשחק ארבע בשורה הינו משחק אסטרטגי בין שני שחקנים‬
‫חוקי המשחק –‬
‫המטרה ליצור רצף של ארבעה חיילי משחק‬
‫בנוסף‪ ,‬מניעת השגת מצב דומה מהיריב‬
‫הראשון אשר יוצר רצף הוא המנצח‬
‫שאלות עליהן המערכת עונה‬
‫‪ .1‬איך יוצרים פרוייקט במחשבים?‬
‫‪ .2‬מהו מודל נוח לעבודה?‬
‫‪ .3‬איך מתכננים נכון עבודה בכלל ואיך בצוות?‬
‫‪ .4‬איך משתפים קוד?‬
‫‪ .5‬כיצד להעצים את חויית המשתמש ע"י שימוש‬
‫בממשק גרפי ובתקשורת בין אפליקציות?‬
‫תיאור מטרות העבודה‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫לתכנת וליצור מודל נוח לעבודה למשחק‬
‫ללמוד נושאים חדשים בתחום מדעי המחשב‬
‫ועיצוב תוכנה‬
‫לתכנן אינטיליגנציה מלאכותית‬
‫עבודה בצוות ושיתוף קוד‬
‫ליצור תקשורת בין תהליכים שונים‪.‬‬
‫בדיקת התוכנית לוח העבודה שיצרנו (‪)testing‬‬
‫מימוש סביבת משחק "ארבע בשורה"‬
‫תיאור סביבת העבודה‬
•
•
•
•
•
Microsoft VISUAL C++ 6.0
(MFC)
(PIPES)
www.sourceforge.net
CVS
‫ניתוח הבעיה האלגוריתמית‬
‫•‬
‫•‬
‫•‬
‫•‬
‫יצירת סביבת משחק ממוחשבת מרובת תהליכים‬
‫יצירת תקשורת בין שרת‪-‬לקוח‬
‫יצירת אינטליגנציה מלאכותית‬
‫יצירת ממשק נוח למשתמש‬
‫חלוקת העבודה‬
‫תומר אחראי על‪:‬‬
‫• התקשורת בין האפליקציות‬
‫• אינטליגנציה מלאכותית‬
‫אופיר אחראי על‪:‬‬
‫• ישויות בסיסיות‬
‫• ממשק גרפי‬
‫אינטליגנציה מלאכותית‬
‫• כוללת ‪ 2‬פונקציות‬
‫• מינימקס‬
‫• הערכת מצב‬
‫עץ משחק‬
‫•תיאור המהלכים והמצבים האפשריים‪,‬‬
‫במשחק ע"פ הלוח‬
‫•התקדמות מעמיקה לאורך התורות‬
‫•התקדמות לסירוגין בין שחקן ויריב‬
‫מינימקס‬
‫•‬
‫•‬
‫•‬
‫•‬
‫עוברת על כל המהלכים למצב מסויים ומחזירה את‬
‫מינוס המהלך הטוב ביותר לפי האלגוריתם‬
‫המינוס הוא כדי לדמות שכאן תור היריב‬
‫מניחה שהיריב בוחר באפשרות הטובה ביותר‬
‫בשבילו אחרת יותר טוב‬
‫בעצם‪-‬עץ משחק‬
‫‪)...‬‬
‫כלשהו‬
‫(‬
‫מינימקס‬
‫עץ‬
‫עץ משחק (כלשהו)‪-‬ארבע בשורה‬
‫מחזיר ‪-17‬‬
‫מחזיר ‪17‬‬
‫הערכת מצב ‪-17‬‬
‫מחזיר ‪15‬‬
‫הערכת מצב ‪-15‬‬
‫מחזיר ‪-21‬‬
‫מחזיר ‪21‬‬
‫הערכת מצב ‪-21‬‬
‫מחזיר ‪15‬‬
‫הערכת מצב ‪-15‬‬
‫אלגוריתמים קיימים לפתרון הבעיה‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫רנדומלי‬
‫אסטרטגיה קבועה מראש‬
‫אסטרטגיה לומדת‬
‫מינימקס "עמוק"‬
‫מינימקס "מהיר"‬
‫שילוב בין אסטרגיות‬
‫הערכת מצב‬
‫• מטרתה לנקד באופן יחסי כל לוח‬
‫• עוברת על כל הרבעיות בלוח‬
‫• משלימה את המינימקס‬
‫ישויות בסיסיות‬
‫• ישות מצב‬
‫• ישות חוקים‬
‫• ישות הרשימה‬
‫• מופיעות גם בלקוח וגם בשרת‬
‫• הכרחיות למשחק תקין‬
‫ישות מצב‬
‫כוללת‪:‬‬
‫• פונקציות הקשורות בלוח המשחק‬
‫• איפוס‬
‫• החזרת ערך בנקודה‬
‫• העתקת לוח‬
‫• ביצוע מהלך‬
‫• בטל מהלך‬
‫חוקים‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫ישות בה נכללים חוקי המשחק‬
‫בין היתר‪:‬‬
‫בדיקת מנצח‬
‫בדיקת תור‬
‫גובה הטורים‬
‫עדכון מהלכים אופציונליים‬
‫עדכון גבהים‬
‫הרשימה‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫ישות הכוללת רשימת מהלכים אותם אפשרי לבצע‬
‫מוסיפה מהלכים לרשימה‬
‫יוצרת רשימות‬
‫מוחקת אותן‬
‫אומרת האם מהלך חוקי (איבר ברשימה)‬
‫ממשק גרפי‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫תפקידו לקשר בין המשתמש האנושי לבין המחשב‬
‫כולל אמצעי פלט וקלט‬
‫תצוגה צבעונית דו מימדית (חדשנית ביותר‪)...‬‬
‫מסך רגיש ללחיצות עכבר‬
‫חלונות עזרה‪ ,‬אודות ואפשרויות‬
‫הה מסך‬
‫תמונות‬
‫תמונות מסך‬
‫תמונות מסך‬
‫תמונות מסך‬
‫תמונות מסך‬
‫ישות התקשורת‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫כוללת בתוכה ‪ 3‬תתי ישויות‬
‫שרת‬
‫משתמש‬
‫ישות עזר‪ -‬המרות‬
‫נמצאת גם בתוכנת הלקוח וגם בתוכנת השרת‬
‫כרגע עובדת על ‪PIPE‬‬
‫ישות השרת והמשתמש‬
‫•‬
‫•‬
‫•‬
‫•‬
‫ישות השרת‪:‬‬
‫תפקידה להעביר מערך תווים‬
‫ישות המשתמש‪:‬‬
‫תפקידה לקבל מערכי תווים ולהעתיקם‬
‫• נעזרות לשם כך בישות ההמרות‬
‫סכימה של מהלך במשחק‬
‫משתמש ‪1‬‬
‫התחברות ראשונית‬
‫שרת‬
‫משתמש ‪2‬‬
‫התחברות לשרת‬
‫התחברות למשתמש ‪1‬‬
‫שליחת סוג משחק‬
‫התחברות ראשונית‬
‫התחברות לשרת‬
‫התחברות למשתמש ‪2‬‬
‫בכל לחיצה (ביצוע מהלך)‬
‫בכל לחיצה (ביצוע מהלך)‬
‫שליחת לוח‬
‫שליחת מהלך‬
‫שליחת לוח‬
‫שליחת מהלך‬
‫סכימת ישויות השרת‬
‫שרת‬
‫ניצחון‬
‫ראשי‬
‫רשימה‬
‫משתמש‬
‫חוקי משחק‬
‫המרות‬
‫הרשימה‬
‫מצב‬
‫קבועים‬
‫אינטליגנציה‬
‫מלאכותית‬
‫סכימת ישויות הלקוח‬
‫שרת‬
‫סיווג‬
‫לוח‬
‫רשימה‬
‫משתמש‬
‫הרשימה‬
‫קבועים‬
‫חוקי משחק‬
‫מצב‬
‫המרות‬
‫מאפיינים‬
‫עזרה‬
‫אודות‬
‫טסטינג‬
‫• ע"מ להקל בבדיקת הקוד בכל הקבצים יצרנו קבצי‬
‫בדיקה‬
‫• פונקציות או קלאסים שנועדו לבדוק חלק מסויים‬
‫בתוכנה‬
‫הצעות לשיפור‬
‫•‬
‫•‬
‫•‬
‫•‬
‫בדיקת יעילות הסביבה ע"י שינוי אסטרטגיה‬
‫שינוי סוג התקשורת (‪)TCP/IP‬‬
‫שינוי המשחק עצמו‬
‫שימוש ב ‪CHILD PROCESS -‬‬
‫ביבליוגרפיה‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪MSDN‬‬
‫‪www.sourceforge.net‬‬
‫מקורות מידע שונים ברחבי האינטרנט‬
‫מדריך למידה של האוניברסיטה הפתוחה לקורס‬
‫מספר ‪ - 20427‬מבוא למדעי המחשב שפת ‪++C‬‬
‫תודה‬