من فترة قريبة كنت أعمل فى لعبة tetries و لظروف توقفت . و اليوم مع رجوعى لها بدأ التالى :
--------------------------------------------------------------------------------------------------------------------
من المعروف أن الشكل الذى ينزل رأسياً لإسفل عندما يصل لنهاية ال panel يجب أن يظهر شكل آخر أو نفس الشكل السابق و ينزل راسياً أيضاً .
أنى فعلت ذلك ، و لكن المشكلة تكمن فى : بمجرد نزول الشكل لإسفل و يظهر الشكل الإخر أو نفس السابق يختفى الأول .
فقررت عمل
list <List<JPanel
- حتى أحتفظ بكل الأشكال - كالطريقة التالية :
private void move_Square_Vertical() {
clearPanel();
panel[currentRow][currentColumn].setBackground(randomColor);
panel[currentRow][currentColumn + 1].setBackground(randomColor);
panel[currentRow + 1][currentColumn].setBackground(randomColor);
panel[currentRow + 1][currentColumn + 1].setBackground(randomColor);
if (currentRow != rows - 2) {
currentRow++;
} else {
currentRow = 0; // أقصدبذلك حينما تصل للصف الإخير أبدأ مرة أخرى من قيمة ال row =0 , ال col=4
currentColumn = 4;
}
for(JPanel[] p:panel){
// الخطأ هنا list.add(panel);
}
}و لكن بيعترض .
فلجأت لعمل Arraylist و أضيف كل الأشكال إليه . لكن دون جدوى
private void move_Square_Vertical() {
clearPanel();
panel[currentRow][currentColumn].setBackground(randomColor);
panel[currentRow][currentColumn + 1].setBackground(randomColor);
panel[currentRow + 1][currentColumn].setBackground(randomColor);
panel[currentRow + 1][currentColumn + 1].setBackground(randomColor);
if (currentRow != rows - 2) {
currentRow++;
} else {
arrayList.add(panel); // أقصد بها إضافة الشكل المرسوم للarraylist حتى لا يتم حذفه
currentRow = 0; // أقصدبذلك حينما تصل للصف الإخير أبدأ مرة أخرى من قيمة ال row =0 , ال col=4
currentColumn = 4;
}
}الكود كامل مرفق .
-----------------------------------
شكراً،،،،،،،،،،،

