كنت في وضع الخمول خلال العطلات ، لذلك قضيت أكثر من أسبوع أشاهد مقطع فيديو نشره أحد الماجستير من Baidu Java Bar. تعلمت أن أكتب Tetris في Java. أود هنا أن أشكره على مساعدته في شكل رمز المصدر والتفسيرات اللازمة. بالطبع ، قمت أيضًا بإجراء بعض التغييرات هنا ، وواجهة البرنامج والوظائف التي قمت بها ليست تمامًا مثله.
الواجهة لتشغيل البرنامج بأكمله كما يلي:
الوظائف المدرجة في البرنامج هي:
واحد،
يظهر تصميم البرنامج بأكمله في الشكل أدناه ، مع ما مجموعه سبع حزم. نظرًا لأن التصميم الأصلي للبرنامج كان الاتصال بقاعدة البيانات لحفظ أسماء المستخدمين والدرجات ، وفشل جهاز الكمبيوتر الخاص بي في تثبيت برنامج قاعدة البيانات ، لقد قمت بإجراء تعديلات على الوظائف. لذلك ، لن تتطابق بعض أسماء الحزم وأسماء الفصول الدراسية إلى وظائفها الخاصة.
اثنين،
يتم إنشاء برمجة الواجهة الأكثر أهمية في البرنامج بأكمله بواسطة فئة الطبقة في حزمة واجهة المستخدم. إنه يحدد طريقة لصنع صورة 64 × 64 بكسل وتمتد إلى عرض وارتفاع محدد مسبقًا باستخدام وظيفة DrawImage ، وعرضها في الإحداثيات المحددة ، وبالتالي تصبح نافذة. ترث كل طبقة ***. فئة Java في حزمة واجهة المستخدم فئة الطبقة وتستخدم لتنفيذ كل واجهة نافذة ، مثل النافذة الرئيسية للعبة (Layergame) ، نافذة المستوى (Layerlevel) ، نافذة الدرجة (نقطة الطبقة) ، إلخ ، بالإضافة إلى ذلك ، قمت أيضًا بتغطية سطح النافذة مع طبقة من الصور الشفافة ، وبالتالي تحقيق "هاجز".
ثلاثة،
يتم استخدام فئة IMG لإعلان جميع كائنات الصورة. عندما أعلنت نافذة صورة الحدود ، كتبت عن عمد المسار الخطأ ، وبالتالي تحقيق التأثير بلا حدود.
أربعة ،
كما يتم رسم المربعات السقوط عن طريق قطع الصور.
كل كتلة من الألوان المختلفة هي نفس الحجم ، وفي كل مرة تستخدم فيها وظيفة DrawImage لقطع كتل بألوان مختلفة. بادئ ذي بدء ، يجب أن تنظر إلى نافذة اللعبة الرئيسية كنظام إحداثي مع الزاوية اليسرى العليا كأصل. يبلغ عرض نافذة اللعبة الرئيسية 9 وارتفاع 16 ، وبالتالي يجب أن تكون إحداثيات الزاوية اليمنى السفلى (15 ، 8) ، بحيث يمكنك تحديد إحداثيات المربع المتساقط. ثم استخدم القائمة <point []> لحفظ إحداثيات كل مربع صغير في الكتلة المتساقطة.
يجب أن يكون المربع المتساقط في الأشكال السبعة التالية:
ثم يجب أن تكون الإحداثيات الأولية عندما تكون الكتل من 0 إلى 6 خريف بحرية:
type_config = new ArrayList <point []> (7) ؛ type_config.add (new point [] {new point (4،0) ، new point (3،0) ، new point (5،0) ، new point (6،0)}) ؛ type_config.add (new point [] {New Point (4،0) Point (4،1)}) ؛ type_config.add (نقطة جديدة [] {new point (4،0) ، نقطة جديدة (3،0) ، نقطة جديدة (4،1)}) ؛ type_config.add (نقطة جديدة [] النقطة (4،0) ، نقطة جديدة (5،0) ، نقطة جديدة (3،1) ، نقطة جديدة (4،1)}) ؛ type_config.add (نقطة جديدة [] Point (5،0) ، New Point (5،1)}) ؛ type_config.add (نقطة جديدة [] {New Point (4،0) ، New Point (3،0) ، New Point (4،1) ، New Point (5،1)}) ؛كل مربع لديه نقطة مركزية. عندما يدور المربع ، يدور المربع 90 درجة في وسط الدائرة عند نقطة الوسط تلك. طريقة الدوران هي كما يلي:
خمسة،
يوجد التحكم المنطقي في اللعبة بشكل أساسي في فئة Gameservice ، والتي تدرك تحديد ما إذا كان يمكن القضاء على الخط ، أو تشغيل الخط ، أو تشغيل لوحة المفاتيح ، وما إلى ذلك.
ستة،
يستخدم البرنامج حزمتين إضافيتين ، DOM4J-1.6.1.JAR و JL1.0.1.JAR. يتم استخدام DOM4J-1.6.1.JAR لقراءة ملفات XML. يوجد ملف cfg.xml في مجلد التكوين ، والذي يحدد حجم وموقع كل نافذة. استخدم DOM4J-1.6.1.JAR في البرنامج لقراءة بيانات XML ، ثم تكوين واجهة البرنامج بناءً على هذه البيانات. لذلك ، طالما تم تغيير القيمة في XML ، يمكن تغيير حجم وإحداثيات النافذة.
jl1.0.1.jar يستخدم لتشغيل الموسيقى الخلفية. هذه وظيفة أضفت نفسي. من خلال الطريقة التي يوفرها ملف الجرة هذا ، يمكن تنفيذ وظيفة تشغيل الموسيقى ببساطة. في فئة MP3Player والفئة الرئيسية ، يجب إنشاء مؤشر ترابط جديد في الفصل الرئيسي. طريقة مرجعية محددة: موسيقى تشغيل خلفية Javaswing
سبعة،
تنزيل برنامج رمز المصدر: رمز المصدر
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.