Mm, aq kebeneran baru bikin sistem collapse yang rada mirip gitu juga, tapi kasusnya rada beda
Komentar pertamaku IMHO seh, bit tricky~
Kayanya mending diliatin pseudocode buat masing2 fungsinya, biar bisa lebih jelas lagi
Dari yang kebayang ama aq so far, yang om rookie bikin dah bener2 aja ko flownya,
Pastiin aja penggantian isi array pas marble masuk ama marble keluar dilakuin sereal time mungkin
Kalo marble belum jatuh, jangan diganti arraynya, kalo marble dah berenti,
selsein dulu semua proses selse jatuhnya, baru update arraynya
Kalo marble keluar, selesein dulu semua proses pengeluarannya, terus update arraynya
*kayanya seh yang aq bilangin di atas itu pasti dah om rookie lakuin dengan bener*
Untuk yang diswap, dikarantina aja, kasi flag aja di value arraynya,
*ini juga kayanya dah dilakuin kan ya?*
Kalo buat masalah, marble yang diswap saat masi ada marble jatuh ternyata ngasilin match,
marble2 yang lagi jatuh, lagi match, n sejenisnya, ditaro sementara di container kan om?
Harusnya seh kalo iya gakan terlalu banyak maslaah
Tambahin aja marble hasil match ke containernya,
kalibrasi marble2 laen yang lagi jatuh di atasnya
Itu dulu paling ya, err, moga2 ngbantu~
EDIT:
Jyah, dah dijawab ama om ulil dengan jelas

*sembah om ulil*
EDIT LAGI, baru baca:
Eh, om ulil, itu input ga dienable kalo belum selese collapse?
Ntu mah ga bisa ngswap sebelum selse collapse dunks~