2010-11-01 34 views
5

Mahjong Asya'daki en popüler oyunlardan biridir (Windows 7'de bulunan solitaire stili değil). Orada Yahoo veya çevrimiçi olanları DOS günlerinde çevrimiçi olanlar da dahil olmak üzere orada Mahjong oyunları bol vardı! Bir Mahjong oyunu nasıl uygulanır?

Sadece başka bir gün kendi kendime düşünüyordum

, nasıl (GUI hariç) tek yazabilirim?

Veri modelleme kısmı kolaydır.

Kazanan ve puanlama kuralları ... desen eşleştirmesi?

oyunun stratejik bir parçası, bu tür dışarı atmak için hangi kiremit belirlenmesi ve zaman Chow veya Pong hamle en zor parçası olan olarak kullanılmalıdır. Bunu nasıl uygularsınız?

Teşekkürler!

Araştırma:

+0

Bu ilginç bir proje gibi geliyor bakın. Nasıl yapıldığını görmek için herhangi bir açık kaynak uygulamasına baktınız mı? http://www.google.com/search?q=open+source+mahjong – David

+0

Açık kaynak uygulamalarına hiç bakmadım, var mı bilmiyorum .. Belki de bir tane başlatmalıyım. – Henry

+0

Sudoku çözücüye benzer bir yaklaşım kullanabilir misiniz? backtracking, vb kullanarak. İşte yirmi Sudoku çözücü (Haskell'de) http://www.haskell.org/haskellwiki/Sudoku. Yaklaşımlar, diğer oyunların/bulmacaların çözülmesi için algoritmaların aranmasında size yardımcı olabilir. –

cevap

1

ona iyi gelebilir bu

http://homepage.mac.com/s_lott/books/python/html/p05/p05c05_mahjongg.html

okuyun. "Dışarı atmak için hangi kiremit belirleyen"

aslında oldukça düz ileri. Atma ve elin doğası göz önüne alındığında, “hazır” bir elin tanımlanması, hangi potansiyel kümelerin en mevcut (atılmamış, oyun içi olmayan) karolara sahip olduğunu belirleme konusudur.

Her karo birkaç olası desenleri (çifti, 3 Chow Chow, pung, Kong kadar) birine aittir. Deseni doldurmak için gerekli olan karoları hesaplamak kolaydır. Neyin çalındığına ve nelerin açığa çıktığına bağlı olarak muhtemel karoların sayımını azaltmak kolaydır. Ortaya çıkan olası desenler sıralanabilir. Atmalar, doldurulması en zor olan kombinasyonlardan seçilir.

[bu http://www.amazon.com/Mah-Jong-Handbook-Play-Score/dp/0804838747]

+0

Teşekkürler, ama bundan daha fazlasını istiyorum ... – Henry

+0

@Henry: "Teşekkürler, ama bundan daha fazlasını istiyorum". Lütfen "daha fazla" ile neyi kastettiğinizi tanımlamak için sorunuzu ** güncelleyin. –

+0

Bu bağlantı veri modelinde ağır, ancak zeka/stratejik tarafta en zayıf olan – Henry