الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

tetris game with java

مغلق
بدأه Mohammed Mansoor في 15 ديسمبر 2005 · 5 رد · 1,124 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اخواني الكرام مبرمجي الجافا اريد عمل tetris game باستخدام لغة الجافا وفكرت وكتبت الكود اللازم

ولكن مش عارف ايش المشكلة اللي ماخلتش البرنامج يشتغل

الرجاء من اي اخ يعرف اين الخلل يكلمني باسرع وقت ولكم جزيل الشكر

الكود مرفق

tetris.zip

#2

حاول شرح الشفرة قليلا، واذكر أين يتم الرسم؟ وأين يتم تحديث بيانات القطع؟

#3

اخي ابو مازن بالنسبة للكود

لدينا في الفورم الرئيسي 2 بانيل واحد منهم خاص بالرسم والاخر بالكنترول

في البانيل الخاص بالكنترول معانا اوبجيكت من نوع بلاير وهو عبارة عن thread بياخذ grahpics من البانيل بتاع الرسم ويبداء في الشغل.

بالنسبة للرسم الفعلي بيتم بفانكشن في كلاس base واسمها draw وبالنسبة لتحديث القطع باستخدام فانكشن drawShape في الكلاس Shape والتالي تقوم برسم القطعة و الفانكشن Undo في الكلاس Screen والتي تقوم بمسح الشكل السابق قبل ان يتم اعادة رسمه في مكانه التالي بالفانكشن drawShape

#4

يامش فاهمين الموضوع اساساً

او مش عارفين ايه المشكلة في البرنامج ...! :angry:

#5

أولا امسك أعصابك أخي محمد فأنت في منتدى الفريق!

ثانيا: تصميمك لبرنامجك غريب بعض الشيء! انظر إلى الفئة MainPanel العجيبة،، فهي لا ترسم شيئا، ولكنها تحتفظ في القلم والورقة Graphics ! ولا أدري لماذا الاحتفاظ مع أنه من الواجب أن تستخدم ورقة وقلم جديدين كلما تعمل تحديث للصورة! لا أن تستخدم نفس Graphics في تعاملك كلها! وتنقلها إلى Player وإلى كل الفئات تقريبا وكل منها يحتفظ بنفس الورقة والقلم!

لاحظ أنه عندك أوامر مثل Shape.draw وكان ينبغي أن يكون عندك Shape.draw(Graphics g); وطبعا تنتظر هذه الورقة والقلم يعطيها لك JPanel مثلا.. لا أن تحتفظ بواحدة!

ولم أعرف وظيفة Piped و Buffered وحزمة java.io بأكلمها في برنامجك! بمعنى آخر لماذا تحتاج هذه الحزمة في برنامجك؟

--------------

ربما تحتاج إلى شرح أكثر: أنت لا ترسم على JPanel حقيقة، أنت ترسم على Graphics أو لوحة، وهذه اللوحة تعمل في الخفاء.. إذا رسمت القطعة التي تريد في Graphics وانتهيت من الرسم فإن Graphics سيطبع ذلك على JPanel،، افرض أنك تريد أن تحريك القطعة،، عليك أن ترسم ذلك في لوجة جديدة Graphics (تأخذها من JPanel) وبعدها ترسم صورة جديدة عليها، وبعد أن تنتهي من رسمك (ركز على {[{[{[{ بعد أن تنتهي من رسمك الجزئي الذي يمثل صورة في وقت معين }]}]}]} )

إذا أردت أن ترسم من جديد عليك بالأمر repaint،، عندها يقوم JPanel ودون تدخل منك بمناداة الأمر JPanel.paint أو JPanel.paintComponent .. وعندها ترسم الحالة الجديدة.

ابحث عن دروس للبريمجات Applet تشرح لك الرسم بصورة سهلة..

وأي شيء آخر اطلبه هنا،، وإذا لم تجد جوابا من أحد فلا تزعل ولا تتهكم! وأرجو أن تكتب بالعربية الفصحى حتى لا نتعب!

بالتوفيق!

#6

للمعلومية، في الثلاثة الأيام السابقة، انتهيت من لعبة التركيب Tetris!

هذا الموضوع مغلق.

مواضيع مشابهة