למישהו יש רעיון?

Blade2

New member
למישהו יש רעיון?

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

yair24

Member
אני לא ממש בטוח...

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

yair24

Member
עוד רעיון שאולי יעזור...

תנסה לחפש אתרים שיש בהם מידע על איך לכתוב אלגוריתמים למשחקים כאלה... אני חיפשתי ומצאתי משהו שאולי יעניין אותך: http://www.recherche.enac.fr/~alliot/chess.html (אמנם הדף הוא CHESS אבל יש שם גם על דמקה) יאיר
 

TZURYOAV

New member
עצי משחק

אתה צריך לבנות עץ משחק,ובסוף ענף להפעיל פונקציה הערכה,הפונציה יכולה להיות בנויה מכמה רכיבים כגון 1.מספר הכלים 2.כמה שיותר קרוב לקצה השני של הלוח 3.האם המהלך יוצר מלך 4.מספר הכלים שלך שנמצאים תחת איום 5.מספר הכלים שלו שנמצאים תחת איום 6.מספר אפשרויות ההליכה של היריב 7.מספר אפשרויות ההליכה שלך וכולי... לכל רכיב אתה נותן ניקוד ובסוף מחליט מי המהלך הטוב ביותר ככל שהעץ שלך עמוק יותר כך פונקציה ההערכה שלך מדויקת יותר (גם אם הרכיבים שבחרת לא ממש נותנים תשובה ברמות הראשונות) מה שאני מציע לך אם אתה רוצה ללמוד תיכנות הוא ליצור הפשטה למשחק לוח (כמעט כל המשחקים אותו הדבר) 1.מצייר הלוח 2.מחולל מהלכים 3.פונקציית הערכה כל שיכבה יכולה להכתב בתור DLL או אוביקט COM כשתרצה לשנות משהו בתוכנה לא תצטרך לכתוב מחדש ולקמפל כמובן שעלייך להגדיר ממשק קבוע בין כל הרמות שכבת הציור יכולה להיות מנוע דו מימדי או תלת מימדי למשל אבל הממק יהיה קבוע
 

Blade2

New member
שאלה

הכוונה בעץ משחק היא לבדיקת כל ההסתעפויות האפשריות כמה תורות קדימה?
 
אגב, אתה לא חייב תמיד לבדוק כל מהלך

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

anigno

New member
דמקה ממוחשבת

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