Markdown is built into Spring's bootJar, membuatnya lebih mudah untuk "menginstal" aplikasi di server.
Proyek Umum
Proyek Common mengandung semua kelas yang dibagi antara server dan client: kelas model (pengaturan, percakapan, pengguna, pemain, dll.), serta GameEngine. Dengan demikian, kita dapat mendukung permainan yang dikelola oleh server, serta permainan lokal (AI – dalam versi masa depan). Anda mungkin menemukan kelas penting di sini, seperti:
- ThreadContextMap – digunakan untuk mempertahankan identitas pemain pengiriman, sehingga kita tidak memberikan tangan pemain lain kecuali pemain yang mengirimkan request. Dengan demikian, kita dapat menghindari penyimpanan tangan pemain lain yang mungkin terbuka untuk klien HTTP.
- GameEngine – mesin utama permainan
- HandRankCalculator – kalkulator rank tangan pemain berdasarkan tangan dan papan (papan opsional), yang membantu kita menemukan pemenang atau pemenang dalam kasus seri, serta kartu-kartu yang dipilih agar klien dapat mempertegasinya.
- Pot – kelas ini digunakan untuk mempertahankan taruhan pemain pada setiap dasar, yang membantu kita dalam membagi pot ke sisi (ketika seorang pemain ALL-IN dan masih ada pemain lain yang tersisa untuk bermain).
Client
Source
Aplikasi Android written in Java. HTTPS requests di-kirim menggunakan Retrofit. (Lihat TexasHoldemWebService yang menutup layanan-layanan kita)
Ada dua aktivitas utama: Login dan Main
Aktivitas lainnya adalah ExitActivity yang digunakan untuk penutupan aplikasi biasa.
Dan SplashActivity, yang digunakan ketika aplikasi diluncurkan, untuk menampilkan animasi dan mengarahkan ke LoginActivity.
LoginActivity menggunakan dua fragment: SignInFragment dan SignUpFragment. Dua fragmen tersebut memperpanjang AbstractSignInFragment karena mereka sama-sama menggunakan dua bidang input dan view model yang diupdate setiap kali perubahan input pada view. Dengan demikian, kita mengikuti pola MVVM.
Perlu diingat bahwa token JWT disimpan ke SharedPreferences, sehingga ketika pengguna keluar dari aplikasi dan kemudian kembali, pengguna dapat masuk secara otomatis tanpa harus memasukkan password lagi.
MainActivity menggunakan NavigationView dengan MobileNavigation yang daftar item dan fragmen terkait dalam navigation view. Dengan demikian, semua navigasi antara fragmen dilakukan menggunakan navigation view, bukan menciptakan fragmen secara manual.
Fragmen terkait dengan activity utama adalah:
- HomeFragment
- PlayNetworkFragment
- GameFragment
- ChatFragment
- AboutFragment
Kelas induk dari semua fragmen adalah ViewBindedFragment untuk menerapkan penggunaan umum ViewBinding pada Android, serta menghindari "hell" findViewById.
Ada juga GameSoundService yang kita gunakan untuk memainkan efek suara dalam latar belakang. Dengan demikian, pemain dapat menyelesaikan aplikasi atau berpindah ke aplikasi lain, dan mendengar langkah permainan (call/check/fold/timer) efek suara.
Secara dasarnya, permainan diatur di sisi server, dan klien meminta pembaruan setiap detik untuk menampilkan permainan "realtime".
Screenshots
- Sign In
- Home
- Navigation View – disini pengguna dapat membeli chip (tombol + dan cart) dan memodifikasi foto profil dengan mengkliknya
- Create Game
- Seat Selection – panah-panah terlihat animasi dari atas ke bawah (bouncy) untuk membuat jelas bahwa pengguna harus memilih kursi
- Admin View – disini Anda melihat tombol start yang hanya dapat dilihat oleh admin (yang menciptakan permainan online) dan badge diatas tombol chat yang menunjukkan berapa banyak pesan baru yang datang.
- Game Start – disini Anda melihat progress bar lingkaran sekitar pemain saat ini, yang menghitung waktu untuk satu putaran sebelum habis waktu dan otomatis lipat
- Chat
- Winner – efek konfeti animasi yang dilihat oleh pemenang (dan hanya pemenang)
- Game Log