עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

פונקציית חישוב מהלכים במשחק איקס עיגול ב-JAVA

Featured Replies

פורסם

שלום לכולם !!

אני בונה את המשחק איקס עיגול בשפת JAVA..

אני כרגע בונה את האפשרות של משחק בין המשתמש למחשב (בינה מלאכותית)..

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

2.איך אני בונה עץ עם מהלכים הכי טובים בשביל המחשב לפי חוקי המשחק?

פורסם

קוראים לזה עץ מחשק.

אתה בונה עץ עבור כל צעד אפשרי שאתה יכול לעשות והמחשב יכול לעשות.

נניח הצעד הראשון הוא של המשתמש. הוא שם X בנקודה [i,j]. המצב הנוכחי של המשחק נהיה השורש של העץ וכעט לעץ הזה יש 8 בנים שהם כל המהלכים האפשריים שהמחשב יכול לבצע. לכל אחד משמונה הבנים יהיו 7 בנים שאלה הם כל המהלכים שהמשתמש יכול לבצע אחרי כל מהלך של מחשב וכו'. כמובן לפני בניית רמה הבאה צריך לבדוק שהמשחק לא הסתיים (ניצחון/הפסד/תיקו). כל עלה בעץ מסמל סוף משחק אפשרי. לאחר מכן כל אחד מהמהלכים מקבל ניקוד לפי אלגוריתם minimax http://en.wikipedia.org/wiki/Minimax (כעיקרון אתה מחליט ניקוד על כל מהלך נגיד מהלך של ניצחון יקבל ניקוד 1000, מהלך של הפסד מקבל 10 ומהלך רגיל 100, ולפי זה המחשב נותן ניקוד לכל מהלך ובוחר את הצעד בעל הניקוד הכי טוב שלו [משהוא כזה לא זוכר כבר,תקראה בויקי]).

יש גם את אלגוריתם אלפא-בטא http://en.wikipedia.org/wiki/Alpha-beta_pruning שנראה לי הוא פשוט מתעלם ממהלכים שיכולים להוביל להפסד של המחשב (או ניצחון של היריב האנושי) ומצבים של תיקו (שוב מין מתן נקודות כאשר מהלך שיכול להוביל לנצחון הוא הטוב ביותר).

זה העיקרון בהצלחה.

פורסם

אחלה תגובה. אבל (במאמר מוסגר) - אי אפשר להשתמש באלפא-בטא בגלל שחלק מבחירות של צעד 2 גורמות לכך שהמצב היחיד שהמשחק יכול להסתיים לטובת X הוא תיקו.

פורסם
  • מחבר

קוראים לזה עץ מחשק.

אתה בונה עץ עבור כל צעד אפשרי שאתה יכול לעשות והמחשב יכול לעשות.

נניח הצעד הראשון הוא של המשתמש. הוא שם X בנקודה [i,j]. המצב הנוכחי של המשחק נהיה השורש של העץ וכעט לעץ הזה יש 8 בנים שהם כל המהלכים האפשריים שהמחשב יכול לבצע. לכל אחד משמונה הבנים יהיו 7 בנים שאלה הם כל המהלכים שהמשתמש יכול לבצע אחרי כל מהלך של מחשב וכו'. כמובן לפני בניית רמה הבאה צריך לבדוק שהמשחק לא הסתיים (ניצחון/הפסד/תיקו). כל עלה בעץ מסמל סוף משחק אפשרי. לאחר מכן כל אחד מהמהלכים מקבל ניקוד לפי אלגוריתם minimax http://en.wikipedia.org/wiki/Minimax (כעיקרון אתה מחליט ניקוד על כל מהלך נגיד מהלך של ניצחון יקבל ניקוד 1000, מהלך של הפסד מקבל 10 ומהלך רגיל 100, ולפי זה המחשב נותן ניקוד לכל מהלך ובוחר את הצעד בעל הניקוד הכי טוב שלו [משהוא כזה לא זוכר כבר,תקראה בויקי]).

יש גם את אלגוריתם אלפא-בטא http://en.wikipedia.org/wiki/Alpha-beta_pruning שנראה לי הוא פשוט מתעלם ממהלכים שיכולים להוביל להפסד של המחשב (או ניצחון של היריב האנושי) ומצבים של תיקו (שוב מין מתן נקודות כאשר מהלך שיכול להוביל לנצחון הוא הטוב ביותר).

זה העיקרון בהצלחה.

ואיך אני רושם את זה כפונקציה כאשר היא מקבלת את לוח המשחק ואת השחקן ?

פורסם

public Move GetBestMove( Board i_Board, Player i_player)
{

/*
your Code Here
*/

}

בהצלחה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.