Kami adalah empat orang yang membuat game Tower Defense sebagai proyek di kelas satu di universitas. Game ini akan menjadi sangat sederhana!
- Tiga menara berbeda
- Tiga monster berbeda
- Satu peta (mungkin tambahkan lagi jika kita punya waktu)
Permainan harus berorientasi objek.
Struktur kelas adalah sebagai berikut
- Game - Menggambar grafik, dll.
- Level - Setiap level adalah objek dari kelas ini. Setiap level memiliki jumlah objek gelombang yang terbatas (dalam daftar)
- Wave - Berisi daftar objek monster.
- Monster - Ini adalah superclass. Kami membuat subclass untuk berbagai jenis monster
- Tower - Superclass ke menara. Ada subkelas untuk setiap jenis menara.
Kami berpikir tentang bagaimana menyelesaikan masalah yang harus dilakukan banyak objek, pada saat yang sama, misalnya memindahkan satu piksel dalam satu arah.
Apa yang kami temukan adalah ide mengimplementasikan Timer kelas av, untuk mengontrol kapan objek melakukan sesuatu. Saya tidak yakin ini adalah cara terbaik untuk melakukannya. Bisakah seseorang memberikan ide bagus tentang cara mengatasi kasus pembaruan yang terus-menerus ini?
Pada dasarnya, saya menggunakan loop pembaruan dan bukan sistem berbasis acara.
Untuk memperbarui monster, Anda dapat mengulangi daftar monster dan memperbaruinya dalam loop pembaruan dengan, katakanlah,
monster.update()
Jika monster harus berjalan, ia harus memperbarui posisinya. Jadi, dalam metode pembaruan saya menghitung posisi baru berdasarkan waktu yang telah berlalu, yang disimpan dalam kelas 'timer' yang terpisah.
Itu seharusnya semua 'berjalan';)
sumber
elapsedTime * movementPerSecond
. Atau Anda bisa memiliki cooldown di menara penembakan:if(cooldown > 0){ cooldown -= elapsedTime } else { cooldown = X, shoot(); }
dll.Saya kira itu akan memenuhi tujuannya dengan baik untuk proyek uni, tetapi dalam permainan nyata saya akan memiliki kelas monster konkret, dan alih-alih subklasifikasi jenis, minta berbagai jenis monster yang dijelaskan dalam file data. Kecepatan, titik kesehatan, resistensi terhadap berbagai jenis kerusakan dan sprite dapat dengan sempurna dijelaskan dalam file, itu akan memudahkan Anda untuk menambahkan jenis monster baru ke gim Anda, dan Anda tidak perlu mengkompilasi setiap kali Anda menginginkannya. ingin melakukannya.
Pokoknya, soal pergerakan. Berikan semua objek "bergerak" Anda yang berbeda dengan variabel kecepatan. Setiap frame dalam logika game Anda, Anda loop melalui semua objek yang bergerak dan melakukan sesuatu seperti
Ini berlaku untuk monster, rudal dari menara, dll ...
sumber