Menurut komentar Anda di jawaban lain, masalah Anda bukan algoritma creep tumbuh, melainkan algoritma yang memilih ubin creep untuk digunakan.
Ubin mana yang digunakan tergantung pada apakah:
- ubin atas terinfeksi atau tidak
- ubin yang tepat terinfeksi atau tidak
- ubin bagian bawah terinfeksi atau tidak
- ubin kiri terinfeksi atau tidak
Itu berarti Anda akan membutuhkan total 16 ubin. Anda dapat dengan mudah mengatasinya dengan bitfield. Berikut adalah beberapa pseudocode yang akan memilih ubin berbeda untuk setiap konstelasi creep yang mungkin:
index = 0;
if left tile is creeped then index += 1
if lower tile is creeped then index += 2
if right tile is creeped then index += 4
if upper tile is creeped then index += 8
creep_tile = creep_tiles[index]
Perhatikan bahwa setiap kali Anda mengubah status infeksi ubin, semua ubin berdekatan yang terinfeksi perlu dievaluasi ulang, karena lingkungan mereka sekarang telah berubah.
Cara mendesain 16 ubin grafik sehingga mereka cocok bersama dengan baik adalah pertanyaan (baru) untuk seorang desainer grafis.