שאלה דחופה!!

bitrich

New member
שאלה דחופה!!

שלום , מישהו מכיר את המשחק "פנטגו"? אני צריך נואשות עזרה בבינה המלאכותית שלו! בתודה מראש.
 

IndigonFlash

New member
אלפא בטא

חפש alpha beta algorithm בגוגל וכל בעיותיך יפתרו (לא בדיוק, אבל זה יתן לך כיוון).
 

bitrich

New member
תודה רבה , אבל...

אז ככה: התחלתי לבנות אלגוריתם שמתבסס על שיטת MINMAX המוכרת - אבל אין לי מושג איך לתת מחיר לצעד וזה גם יצא נורא כבד. הרעיון של המשחק הוא שיש 4 לוחיות - בכל אחת 3*3 עיגולים , סה"כ 6*6 במבט על כל הלוח , כל אחד משני השחקנים צריך ליצור רצף של 5 כדורים בצבע שלו - בשורה , עמודה או אלכסון , כל משתתך בתורו צריך להניח כדור ולסובב אחת מארבע הלוחיות לימין או לשמאל ואז הוא בעצם יוצר ( או מתחיל ליצור ) רצף משלו , או חוסם רצף של היריב , או חוסם ויוצר ביחד. ב MINMAX חובה לתת מחיר לצעד וזה כבר מסתבך לי... אם יש למישהו רעיון זה יהיה מצויין. תורה מראש.
 

IndigonFlash

New member
אני מכיר את פנטגון

ולפני שנה גם בדיוק עבדתי על גרסת פלאש ללקוח שביסס את המשחק שלו על אותו משחק. השתמשתי ב-a&b בעומק 2 (כי הפלאש עשה הרבה בעיות עם חישוב שכזה, במיוחד שכל צעד זה בעצם 2 צעדים, למרות שמאז למדתי כמה טריקים). מה שתעשה זה שתשכפל כל שכבת עומק ל-2 (עבור כל סוג צעד) ואת הניקוד תתן בהתאם למספר השורות/עמודות וכו' שיש לשחקן, המיקום שלהן והאורך שלהן (למשל אם יש שורה במרכז המסך עם 3 אבנים, זה יכול להוביל למצב בו השחקן מנצח בכל מחיר - למהלך כזה תתן ניקוד גבוה מן הסתם).
 

bitrich

New member
תודה רבה , אפשר יותר פירוט?

אגב , כתבתי את זה ב- #C
 

IndigonFlash

New member
אז ב-C# לא תהיה לך בעיה

תכניס את האלפא בטא לת'רד חדש, ובעקרון כל עוד האופטימיזציה שלך טובה, אתה יכול להגדיל את עומק העץ עד כמה שאתה רוצה. פירוט נוסף? אין יותר מידי, כמו שאמרתי. אם צעד ראשון זה לשים אבן במעגל (צומת בעץ), תבנה מהצומת הזו את כל אפשרויות הסיבוב. עבור כל אפשרות כזו (שוב עוד צומת בעץ), בדוק את כל המהלכים עבור השחקן היריב (במקרה שלך, השחקן האנושי) באותו אופן. עד כאן זה מגדיר רק עומק 2. אתה יכול להמשיך להרחיב את זה ולהכניס את היורסטיקה לעלים בעץ. אתה הופך את ה-min/max לא בכל שכבה, אלא רק כשאתה מחליף שחקן (כדי שלא תחליף min max במעבר בין לשים אבן לבין לסובב חלק מהלוח).
 

bitrich

New member
אני רק רוצה להבין משהו:

בעצם התכוונת לזה שאני אספור את הכדורים שיש לשחקן על הלוח ולפי זה הוא יקבל ציון?
 

IndigonFlash

New member
אתה מבקש יותר מידי

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

bitrich

New member
תודה רבה על העזרה

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