המשחק "ארבע בשורה" ב - JAVA - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

המשחק "ארבע בשורה" ב - JAVA


מושיקו1

Recommended Posts

שלום.

אני צריך לממש את המשחק הנ"ל, ואחת הבעיות זה שאני אמור להגדיר במחלקה קבוע בשם: empty = ' ', ויש לי שגיאת קומפילציה "invalid charactr constant". אשמח לעזרה, תודה.[br]פורסם בתאריך: 22.12.2009 בשעה 00:58:19


שכחתי לציין שהשגיאה היא על ה - ' '.
קישור לתוכן
שתף באתרים אחרים

עוד בעיה זה לכתוב שיטה בשם private cell[] getFreeCells().

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

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

אם אין אף תא פנוי, השיטה תחזיר null

תודה.[br]פורסם בתאריך: 22.12.2009 בשעה 01:05:49


private Cell[] getFreeCells()

{

if(col[0]=)

return [5];

if(col[1]=)

return [5];

if(col[2]=)

return [5];

if(col[3]=)

return[5];

if(col[4]=)

return[5];

if(col[5]=)

return[5;]

if(col[0]=)

return null;

if(col[1]=)

return null;

if(col[2]=)

return null;

if(col[3]=)

return null;

if(col[4]=)

return null;

if(col[5]=)

return null;

}

קישור לתוכן
שתף באתרים אחרים

#

private Cell[] getFreeCells()

{

if(col[0]=)

return [5];

if(col[1]=)

return [5];

if(col[2]=)

return [5];

if(col[3]=)

return[5];

if(col[4]=)

return[5];

if(col[5]=)

return[5;]

if(col[0]=)

return null;

if(col[1]=)

return null;

if(col[2]=)

return null;

if(col[3]=)

return null;

if(col[4]=)

return null;

if(col[5]=)

return null;

}

#

קישור לתוכן
שתף באתרים אחרים

כתוב את הקוד שלך בתוך טג קוד (כפתור #, ליד הכפתור של הציטוט). כרגע אי אפשר להבין ממנו כלום.

לא כפתור # במקלדת, אלא הכפתור למעלה בפורום.

לגבי הקוד שלך - אתה יכול להסביר מה ניסית לעשות שם?

מה זה?

if (col[0]=)

למה בדיוק אתה מנסה להשוות אותו?

מה זה?

return [5]

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

קישור לתוכן
שתף באתרים אחרים

for(char x;x<)

וכנראה שטעיתי שניסיתי לכתוב את הקוד עם התנאים. נראה לי שאני אמור לעשות לולאה או לולאות שייכנסו בשיטה.

ה - X מסמל את השחקן האנושי במשחק. אני אמור לכתוב שיטה שמחזירה מערך של אובייקטים מסוג Cell(שמייצג תא במשחק) שמכיל את כל התאים שבהם ניתן לשים סימן כלשהו. גודל המערך חייב להיות בדיוק כמספר התאים הפנויים. אם, למשל, עמודה 0 מלאה לגמרי(איך אני בודק זאת לגבי כל העמודות ?), אזי המערך יכיל רק חמישה תאים ולא שישה. אם אין אף תא פנוי, השיטה תחזיר null.

קישור לתוכן
שתף באתרים אחרים

לא הבנתי מה קשור X כאן, ומה זה ה-for השבור הזה.

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

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

קישור לתוכן
שתף באתרים אחרים

במשחק יש שני שחקנים, השחקן האנושי במיוצג ע" ה - X והמחשב שמיוצג ע"י ה - O.

ה - for השבור היה ניסיון לכתיבת הקוד, ואני לא יודע איך לכתוב אותו.

כשאני אומר "תא שאפשר לשים בו סימן כלשהו" אני מתכוון לכל התאים בלוח המשחק שבהם ניתן לשים X או O, ז"א תאים ריקים. סימן זה או X או O. מחלקת ה - CEll מוגדרת באופן הבא:

public class Cell {
private int row, col;
public Cell(int x, int y)
{
if(x < 0)
x = 0;
if(y < 0)
y = 0;
row = x;
col = y;
}
public int getRow() { return row; }
public int getCol() { return col; }
public String toString()
{
return "Row: " + row + " Col: " + col;
}
public boolean equals(Cell other)
{
return row == other.row && col == other.col;
}
}

הגודל של המערך ציך להיות 6*6. תוכל לתת לי התחלה של כתיבת הקוד שאני אדע לאן לכוון ?[br]פורסם בתאריך: 23.12.2009 בשעה 23:08:47


כמו כן, בשיטה שאני מנסה לכתוב :

private Cell[] getFreeCells()
{
for(int i =0;i<board.length;i++)
return ;
return null;
}

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

קישור לתוכן
שתף באתרים אחרים

או, עכשיו אנחנו מגיעים לאנשהו.

קודם כל, תוסיף עוד שדה ל-Cell שאומר איזה סימן יש בו כרגע - אם אתה רוצה שיהיה פשוט אז תעשה את זה char שיכיל את אחד הערכים - 'X','O' או '-' (כשסימן '-' מציין שהתא פנוי, וכמובן אתה יכול להשתמש בכל תו אחר, לפי מה שנוח לך). הדרך הנכונה יותר היא להגדיר enum מתאים ולהשתמש בו (אם לא למדת את זה אז לא משנה). כמובן תוסיף פונקציות גישה מתאימות (מומלץ גם שתוסיף פונקציה שבודקת ספציפית אם התא ריק).

בשביל להחזיר את רשימת התאים הפנויים, תעשה כמו שאמרתי קודם:

קודם כל, תגדיר משתנה n ותאתחל אותו ב-0. תעבור באמצעות לולאה על המערך (כיוון שהמערך שלך דו-מימדי תצטרך לולאה בתוך לולאה, אחת שעוברת על השורות ואחת על העמודות). כל פעם תבדוק את התא הנוכחי במערך - אם הוא ריק, תוסיף 1 ל-n. בסופו של דבר n יכיל את מספר התאים הפנויים במערך.

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

קישור לתוכן
שתף באתרים אחרים

ניסיתי להוסף את השדה שדיברת עליו:

 char = 'X'

האם הוא בסדר ?

תוכל לסביר לי איך לכתוב את פונקציות הגישה ?

בשביל להחזי את רשימת התאים הפנויים, יש לי את מבנה הקוד הבא :

private Cell[] getFreeCells()
{
int n =0;
for(int n =0;n<board.length;n++)
for(int )
return ;
return null;
int n = [][]
}

לא הבנתי את כל מה שאני אמור לכתוב, תוכל להסביר לי שוב ?

תודה.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...