ฉันไม่ได้ใช้งานในช่วงวันหยุดดังนั้นฉันจึงใช้เวลามากกว่าหนึ่งสัปดาห์ในการดูวิดีโอที่โพสต์โดย Master Alwing จาก Baidu Java Bar ฉันเรียนรู้ที่จะเขียน tetris ในชวา ที่นี่ฉันขอขอบคุณเขาสำหรับความช่วยเหลือของเขาในรูปแบบของการเผยแพร่ซอร์สโค้ดและคำอธิบายที่จำเป็น แน่นอนว่าฉันได้ทำการเปลี่ยนแปลงที่นี่และอินเทอร์เฟซโปรแกรมและฟังก์ชั่นที่ฉันทำนั้นไม่เหมือนกับของเขา
อินเทอร์เฟซสำหรับการรันโปรแกรมทั้งหมดมีดังนี้:
ฟังก์ชั่นที่รวมอยู่ในโปรแกรมคือ:
หนึ่ง,
การออกแบบของโปรแกรมทั้งหมดจะแสดงในรูปด้านล่างโดยมีแพ็คเกจทั้งหมดเจ็ดแพ็คเกจ เนื่องจากการออกแบบดั้งเดิมของโปรแกรมคือการเชื่อมต่อกับฐานข้อมูลเพื่อบันทึกชื่อผู้ใช้และคะแนนและคอมพิวเตอร์ของฉันไม่สามารถติดตั้งซอฟต์แวร์ฐานข้อมูลฉันจึงทำการปรับฟังก์ชั่น ดังนั้นชื่อแพ็คเกจและชื่อคลาสบางชื่อจะไม่ตรงกับฟังก์ชั่นของตัวเอง
สอง,
การเขียนโปรแกรมอินเทอร์เฟซที่สำคัญที่สุดในโปรแกรมทั้งหมดถูกสร้างขึ้นโดยคลาสเลเยอร์ในแพ็คเกจ UI มันกำหนดวิธีการที่จะทำให้ภาพ 64-by-64 พิกเซลตัดและยืดออกเป็นความกว้างและความสูงที่กำหนดไว้ล่วงหน้าโดยใช้ฟังก์ชั่น DrawImage และแสดงในพิกัดที่ระบุจึงกลายเป็นหน้าต่าง แต่ละเลเยอร์ *** คลาส Java ในแพ็คเกจ UI สืบทอดคลาสเลเยอร์และใช้ในการใช้งานอินเตอร์เฟสหน้าต่างแต่ละรายการเช่นหน้าต่างหลักของเกม (Layergame), ระดับหน้าต่าง (เลเยอร์), หน้าต่างคะแนน (เลเยอร์จุด) ฯลฯ นอกจากนี้ฉันยังครอบคลุมพื้นผิวหน้าต่างด้วยเลเยอร์
สาม,
คลาส IMG ใช้เพื่อประกาศวัตถุรูปภาพทั้งหมด เมื่อฉันประกาศหน้าต่างภาพชายแดนฉันจงใจเขียนเส้นทางที่ไม่ถูกต้องดังนั้นจึงบรรลุเอฟเฟกต์ไร้พรมแดน
สี่
การวาดภาพสี่เหลี่ยมที่ตกลงมานั้นทำได้โดยการตัดรูปภาพ
แต่ละบล็อกที่มีสีต่างกันมีขนาดเท่ากันและทุกครั้งที่คุณใช้ฟังก์ชั่น DrawImage เพื่อตัดบล็อกที่มีสีต่างกัน ก่อนอื่นคุณควรถือว่าหน้าต่างเกมหลักเป็นระบบพิกัดที่มีมุมซ้ายบนเป็นจุดกำเนิด หน้าต่างเกมหลักมีความกว้าง 9 และความสูง 16 ดังนั้นพิกัดของมุมล่างขวาควรเป็น (15, 8) เพื่อให้คุณสามารถกำหนดพิกัดสำหรับสี่เหลี่ยมที่ตกลงมา จากนั้นใช้รายการ <point []> เพื่อบันทึกพิกัดของแต่ละตารางเล็ก ๆ ในบล็อกที่ตกลงมา
สี่เหลี่ยมที่ตกลงมาควรอยู่ในเจ็ดรูปร่างดังต่อไปนี้:
จากนั้นพิกัดเริ่มต้นเมื่อบล็อก 0 ถึง 6 ตกได้อย่างอิสระควร:
type_config = arraylist ใหม่ <point []> (7); type_config.add (จุดใหม่ [] {จุดใหม่ (4,0), จุดใหม่ (3,0), จุดใหม่ (5,0), จุดใหม่ (6,0)}); type_config.add (จุดใหม่ จุด (4,1)}); type_config.add (จุดใหม่ [] {จุดใหม่ (4,0), จุดใหม่ (3,0), จุดใหม่ (4,1)}); type_config.add (จุดใหม่ {จุดใหม่ (4,0), จุดใหม่ (3,0), จุดใหม่ จุด (4,0), จุดใหม่ (5,0), จุดใหม่ (3,1), จุดใหม่ (4,1)}); type_config.add (จุดใหม่ [] {จุดใหม่ (4,0), จุดใหม่ (5,0), จุดใหม่ (4,1), จุดใหม่ (ใหม่) จุด (5,0), จุดใหม่ (5,1)}); type_config.add (จุดใหม่ [] {จุดใหม่ (4,0), จุดใหม่ (3,0), จุดใหม่ (4,1), จุดใหม่ (5,1)});แต่ละตารางมีจุดกึ่งกลาง เมื่อสี่เหลี่ยมหมุนสี่เหลี่ยมจะหมุน 90 °ที่กึ่งกลางของวงกลมที่จุดกึ่งกลางนั้น วิธีการหมุนมีดังนี้:
ห้า,
การควบคุมตรรกะของเกมส่วนใหญ่อยู่ในคลาส Gameservice ซึ่งตระหนักถึงการพิจารณาว่าสามารถกำจัดสายได้หรือไม่การทำงานของสายการดำเนินการคีย์บอร์ดการดำเนินการที่สอดคล้องกัน ฯลฯ
หก,
โปรแกรมใช้แพ็คเกจ JAR เพิ่มเติมสองชุด, DOM4J-1.6.1.JAR และ JL1.0.1.JAR DOM4J-1.6.1.jar ใช้เพื่ออ่านไฟล์ XML มีไฟล์ cfg.xml ในโฟลเดอร์ config ซึ่งตั้งค่าขนาดและตำแหน่งของแต่ละหน้าต่าง ใช้ DOM4J-1.6.1.JAR ในโปรแกรมเพื่ออ่านข้อมูล XML จากนั้นกำหนดค่าอินเทอร์เฟซโปรแกรมตามข้อมูลนี้ ดังนั้นตราบใดที่ค่าใน XML เปลี่ยนไปขนาดและพิกัดของหน้าต่างสามารถเปลี่ยนแปลงได้
jl1.0.1.jar ใช้เพื่อเล่นเพลงพื้นหลัง นี่คือฟังก์ชั่นที่ฉันเพิ่มตัวเอง ด้วยวิธีการที่จัดทำโดยไฟล์ JAR นี้ฟังก์ชั่นการเล่นเพลงสามารถนำไปใช้ได้ง่าย ในคลาส MP3Player และคลาสหลักต้องสร้างเธรดใหม่ในคลาสหลัก วิธีการอ้างอิงเฉพาะ: เพลงการเล่นพื้นหลังของ Javaswing
เจ็ด
ดาวน์โหลดโปรแกรมซอร์สโค้ด: ซอร์สโค้ด
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น