============
== pin tu ==
============
bahasa: delphi
versi: 0,02
penulis: tony (
[email protected])
tanggal: 2002.01.13
perkenalan
============
Sebagian besar teka-teki gambar yang pernah saya lihat sebelumnya memiliki ubin persegi, dan banyak di antaranya hanya dapat dipindahkan dengan menukar posisi dua ubin. Rasanya sangat berbeda dari teka-teki gambar asli sehingga sangat tidak nyaman.
Belum lama ini, saya melihat teka-teki gambar yang termasuk dalam "Legenda Zhao Yun dari Tiga Kerajaan". Ubinnya memiliki tepi yang tidak beraturan (dengan tepi cekung dan cembung), dan Anda dapat menyeret ubin apa pun di jendela ... Saya sendiri mendapat ide untuk membuat software serupa. (Kemudian saya melihat puzzle asing bernama bjig32. Bagus sekali. Jika saya pernah melihatnya sebelum saya mulai mengembangkan program ini, mungkin saya tidak akan berpikir untuk mengembangkannya sendiri, karena menurut saya Tidak ada cara untuk mengembangkannya permainan puzzle sebaik itu.)
bagaimana saya menerapkannya
===
Keseluruhan sistem permainan mencakup dua kelas yang saya rancang sendiri, TTuObj dan TTuMng.
TTuObj - mengacu pada ubin, yang merupakan potongan kecil gambar setelah dipotong. Ini memiliki batas yang tidak beraturan dan dapat bergerak dalam wadah di mana ia berada sebagai respons terhadap peristiwa tarikan mouse. Saya merancang kelas ini untuk mewarisi dari TObject, dan kemudian menghasilkan TPanel dan TImage masing-masing di konstruktor (alasan mengapa kelas ini tidak diwarisi dari TControl atau diwarisi langsung dari TPanel adalah karena saya tidak terlalu paham menggunakan vcl untuk menulis kontrol. Kalau bisa, tulis ulang), TPanel digunakan untuk menghasilkan bentuk tepi yang tidak beraturan, karena TImage tidak memiliki Handle dan tidak dapat diubah bentuknya (menurut saya begitu), dan TImage digunakan untuk menampilkan gambar dan menyediakan event mouse. Selain itu, setiap TTuObj juga mencatat penunjuk TTuObj di sekitarnya dan apakah sambungan telah dibuat. Hal ini memberikan kemampuan untuk menentukan apakah kedua ubin terhubung ketika berdekatan satu sama lain, dan untuk memindahkan ubin apa pun setelah ubin terhubung. Itu dapat memindahkan ubin yang terhubung dengannya.
TTuMng - adalah pengelola permainan puzzle. Ia bertanggung jawab untuk membagi gambar lengkap menjadi ubin individual, mengelolanya secara terpusat, dan menentukan apakah semua ubin terhubung (yaitu, permainan selesai).
bug yang diketahui
==========
Efisiensi seluruh sistem masih sangat rendah, terutama saat memindahkan ubin, kedipannya sangat parah. Setelah penilaian awal, menurut saya itu karena ketika ubin dipindahkan, event PAINT dari ubin itu sendiri akan terpicu terlebih dahulu. dan kemudian event PAINT pada ubin itu sendiri akan dipicu. Event PAINT pada wadah tempat ubin berada, yang berarti bahwa semua ubin akan digambar ulang satu kali. Penggambaran ulang kontrol tepi yang tidak beraturan pada dasarnya tidak efisien, sehingga akan berkedip seperti ini . Saya mencoba menangani sendiri fungsi pemrosesan pesan WM_PAINT dari AImage di TTuObj (yaitu, menggambar ulang tidak diperbolehkan saat ubin diseret), tetapi saya menemukan bahwa setelah memindahkan ubin, ia meninggalkan gambar sisa di mana pun ubin itu lewat. Game puzzle di "Three Kingdoms Zhao Yun" ditulis di DirectX, dan tidak ada kedipan sama sekali. Mungkin saya akan mencoba menulisnya di DirectX di masa mendatang.
harap Anda dapat bergabung dan memperbaikinya!!!!!!