הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   פרסום| משחק שבניתי - איקס עיגול - C# (https://hosts.co.il/forums/showthread.php?t=97698)

WDeveloper 06-06-12 22:32

פרסום| משחק שבניתי - איקס עיגול - C#
 
שלום.

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

http://pastebin.com/5g2j7zei

ביקורות בונות יתקבלו בשמחה (אבל בונות באמת..).

אשמח גם לרעיונות לאיפה להמשיך עכשיו.

תודה

OrPol 06-06-12 23:02

לא ראיתי פה שימוש בOOP.

מתוך עניין, מה הייתה מטרת כתיבת המשחק? לימוד? או סתם לכיף?

ולמה השתמשת בstatic בכל המתודות?

WDeveloper 06-06-12 23:12

ציטוט:

נכתב במקור על ידי Or Polaczek (פרסם 846301)
לא ראיתי פה שימוש בOOP.

מתוך עניין, מה הייתה מטרת כתיבת המשחק? לימוד? או סתם לכיף?

ולמה השתמשת בstatic בכל המתודות?

1. בשביל מה OOP?..
2. לימוד, אני בתחילת דרכי בC#.
3. האמת שאין לי מושג, התחלתי ככה וככה זה המשיך, תוכל להגיד לי למה לא?


תודה על התגובה :)

OrPol 07-06-12 02:28

C# היא שפת תכנות מונחית עצמים.
לתכנת בה ״סקריפטאית״ זה אמנם יחסית נח אבל לא נכון.

לצורך העניין היית יכול ליצור class של המשחק, שירוץ על שרת למשל.
כשאתה משתמש בstatic הנתונים עבור כל המופעים (instances) של אותו קלאס נשמרים באותו מקום בזיכרון (במקרה הזה מתןדות),

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

אם תוריד מכולם את הstatic (לא עברתי על הקוד לעומק אבל לא נראה לי שיש מניעה), תוכל לספק ללקוח משחק ״מולטי פלייר״,
כאשר עבור כל שחקן כל מה שתצטרך לעשות זה
Tictactoe tc = new Tictactor() וזהו.


בהצלחה!

WDeveloper 07-06-12 14:31

ציטוט:

נכתב במקור על ידי Or Polaczek (פרסם 846313)
C# היא שפת תכנות מונחית עצמים.
לתכנת בה ״סקריפטאית״ זה אמנם יחסית נח אבל לא נכון.

לצורך העניין היית יכול ליצור class של המשחק, שירוץ על שרת למשל.
כשאתה משתמש בstatic הנתונים עבור כל המופעים (instances) של אותו קלאס נשמרים באותו מקום בזיכרון (במקרה הזה מתןדות),

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

אם תוריד מכולם את הstatic (לא עברתי על הקוד לעומק אבל לא נראה לי שיש מניעה), תוכל לספק ללקוח משחק ״מולטי פלייר״,
כאשר עבור כל שחקן כל מה שתצטרך לעשות זה
Tictactoe tc = new Tictactor() וזהו.


בהצלחה!

אוקיי, אקח לתשומת ליבי.
תודה :)

daromri 13-06-12 02:43

מה הקשר?
הוא השתמש בstatic בגלל שמדובר בקוד שנעשה בסביבות Console Application, כל הפונקציות שרצות שמה - חייבות להיות פונקציות סטטיות,
כיוון שהן נוצרות עם הפעלת הקוד.
חבל שעשית את זה בConsole Application, היית יכול לעשות משהו נחמד יותר ומגניב יותר בסביבת WINFORMS.
לקוד עצמו -
נחמד מאוד בכללי, רואים שהשקעת, בין אם זה מחשבה לבין אם זה ידע, אבל יש הרבה דברים שיכולת לקצר ולייעל את הפונקציות שיישמת,
למשל:
public static int getWinner(string[,] var)
מרפרוף אני רואה שיכולת לשלוח int כלשהו בנוסף ולבדוק איזה INT חוזר וככה לראות מי המנצח בדרך שתחצה את הקוד בפנים ל-2 (במקום לבדוק 2 מקרים תבדוק 1)

יפה, נחמד מאוד.

תבנה דמקה אם משעמם לך ובהצלחה :)

OrPol 13-06-12 10:56

ציטוט:

נכתב במקור על ידי daromri (פרסם 847058)
מה הקשר?
הוא השתמש בstatic בגלל שמדובר בקוד שנעשה בסביבות Console Application, כל הפונקציות שרצות שמה - חייבות להיות פונקציות סטטיות,
כיוון שהן נוצרות עם הפעלת הקוד.
חבל שעשית את זה בConsole Application, היית יכול לעשות משהו נחמד יותר ומגניב יותר בסביבת WINFORMS.
לקוד עצמו -
נחמד מאוד בכללי, רואים שהשקעת, בין אם זה מחשבה לבין אם זה ידע, אבל יש הרבה דברים שיכולת לקצר ולייעל את הפונקציות שיישמת,
למשל:
public static int getWinner(string[,] var)
מרפרוף אני רואה שיכולת לשלוח int כלשהו בנוסף ולבדוק איזה INT חוזר וככה לראות מי המנצח בדרך שתחצה את הקוד בפנים ל-2 (במקום לבדוק 2 מקרים תבדוק 1)

יפה, נחמד מאוד.

תבנה דמקה אם משעמם לך ובהצלחה :)

הוא יכל להוציא את זה לCLASS חיצוני (הCLASS של הקונסול סטטי),
קונסול יודע להריץ קלאסים לא סטטיים, ולכן כל מה שאמרתי רלוונטי גם לדימוי של ה "MULTI PLAYER"....


כל הזמנים הם GMT +2. הזמן כעת הוא 20:27.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ