السلام عليكم،
إليكم الإصدار الأول من لعبة Tetris الشهيرة. برمجة حسام الملحم،
ضع صوتك بعد قراءتك للموضوع وتجربة البرنامج وقراءة الشفرة.
مهمتك أن تضع القطع لتشكل أسطر كاملة، كلما أكملت سطرا يختفي، إذا امتلأت الصفحة بالقطع تنتهي اللعبة..
بدأت الفكرة منذ أن كنت صغيرا، وبدأت في تنفيذها قبل أسبوع عندما قام محمد منصور بطرح موضوعه عن لعبته
مميزات البرنامج:
1-تعمل على كافة أنظمة التشغيل.
2-تعمل على جميع المتصفحات. (تستطيع تشغيلها كApplet).
3- الشفرة جميلة والله أعلم..
سلبيات:
1- اللعبة تعمل بدون حساب للدرجات.
2- ربما أمور أخرى. ربما في الإصدارات المقبلة، حتى نصل إلى الإصدار المستقر!
3- تحتاج إلى جافا 5 (من لديه إصدار جافا قديم فلن تعمل اللعبة) (حمل آخر إصدار من جافا)
شرح للشفرة بشكل عام: (قبل أن تضع صوتك)
الحزمة hussam.tetris تحوي منطق البرنامج:
1- TetrisShape عبارة عن فئة تمثل شكل من أشكال القطع المعروفة، هذه الفئة abstract وتضع خطوطا عريضة في كيفية تصميم شكل يعمل بشكل جيد: تحوي الأوامر الأساسية مثل move وتعني حرك،، و rotate وتعني أدر. و paint والتي وظيفتها رسم القطعة الخاصة.
2- الفئة Block وهي تمثل مربعا واحدا، فكما تعلم، القطع التي تتحكم فيها مؤلفة من مربعات. هذه الفئة ترث من TetrisShapeالأم.
3- الفئة Lego وهي تمثل مجموعة من Blocks لتشكل القطع المعروفة. هذه الفئة ترث من TetrisShape الأم.
4- الفئات Bar, LShape, SShape, ZShape, TShape, Box تمثل الأشكال التي نحركها وكلها ترث من الفئة Lego التي ترث من TetrisShape الأم.
5- TetrisScape وهذه تمثل رقعة الملعب التي نلعب عليها،، مهمتها حفظ القطع التي في الملعب، وبهذا نستطيع السؤال عن القطع الموجودة وأماكنها في الملعب. ونستطيع أيضا معرفة ماذا يوجد في أي نقطة من الملعب. كما أنها تضع أطوال الملعب الأساسية.
6- TetrisManager وهذه الفئة مسؤولة عن التحكم في القطع على الرقعة، هذه الفئة مسؤولة عن تجهيز القطع، إرسال القطع قطعة قطعة،، تحريك القطع إلى أسفل، واستقبال الإشارات اللازمة لتحريك القطعة المنشودة إلى اليمين أو اليسار. ومسؤولة أيضا عن ابتداء اللعبة وانتهائها.
7- TetrisShapeListener وهذه فئة مساعدة بسيطة تمكن مستقبلي الأحداث من معرفة ما يدور في المحرك الذي في البنود السابقة. هذه الفئة ستسقبل خبرا أن قطعة معينة قد تحركت مثلا!
8- TetrisException وهذه تبين وقوع خطأ ما ، مثلا يرمى هذا الخطأ إذا تحركت القطعة إلى خارج الملعب!
الحزمة hussam.tetris.gui وتحوي الواجهة الرسومية:
1- TetrisPanel عبارة عن JPanel وهو البرنامج الرئيسي، يستقبل الخيارات من المستخدم ويحولها إلى TetrisManager التي في الأعلى. وطبعا تستخدم TetrisScape لرسم الملعب والقطع.
2- TetrisApplet عبارة عن JApplet ووظيفته جعل البرنامج يعمل على المتصفح.
تحتاج إلى جافا 5، حملها من صفحة صن. www.java.com إذا لم يكن عندك بالأساس.
حمل بالضبط JRE 1.5 وحجمه تقريبا 15 ميجا، وهذا يعتبر مشغل برامج الجافا.
آسف على الإطالة، أرجو التصويت إذا قرأت الشفرة!
هذا هو البرنامج والشفرة:
.jpg)
