Pazaak adalah permainan kartu dari alam semesta Star Wars. Ini mirip dengan BlackJack, dengan dua pemain diadu satu sama lain mencoba mencapai total dua puluh tanpa pergi. Setiap pemain memiliki "dek samping" dari empat kartu mereka sendiri yang dapat mereka gunakan untuk mengubah skor mereka.
Papan peringkat
Per 6/17/2015 @ 16:40 EDT
Sunting: Neptor telah didiskualifikasi karena curang. Skor akan diperbaiki sesegera mungkin ...
- NEPTR: ~ 424.000
- The Cincinnati Kid: ~ 422.000
- Nestor: ~ 408.000
- Austin Powers: ~ 405.000
- Bastila: ~ 248.000
- Dumb Cautious Player: ~ 107,000
- Dumb Bold Player: ~ 87.000
Playoff Piala Mock Pazaak
Akan diperbarui sesegera mungkin.
Round One - Nestor vs Bastila & Austin Powers vs The Cincinnati Kid
Babak Dua - Nestor vs Austin Powers & The Cincinnati Kid vs Bastila
Mekanika
Gameplay dilakukan bergantian. Pemain satu dibagikan kartu dari dek utama (rumah). Dek rumah memegang empat puluh kartu: empat salinan satu sampai 10. Setelah dibagikan kartu, mereka dapat memilih untuk mengakhiri giliran mereka dan menerima kartu baru giliran berikutnya, berdiri pada nilai mereka saat ini, atau memainkan kartu dari dek samping mereka dan berdiri di nilai baru. Setelah pemain satu memutuskan apa yang ingin mereka lakukan, pemain dua mengulangi prosesnya.
Setelah kedua pemain pergi, tangan dievaluasi. Jika seorang pemain dibom (pergi lebih dari dua puluh), pemain lain akan menang, asalkan mereka juga tidak mengebom. Jika seorang pemain memilih untuk berdiri, dan pemain lain memiliki nilai tangan yang lebih tinggi, pemain lain akan menang. Jika kedua pemain memilih untuk berdiri, pemain dengan nilai tangan lebih tinggi akan menang. Dalam hal seri, tidak ada pemain yang menang.
Asalkan kondisi kemenangan tidak terpenuhi, permainan akan diulang. Jika seorang pemain memilih untuk mengakhiri giliran mereka, mereka akan menerima kartu baru dan dapat membuat pilihan baru. Jika mereka memilih untuk berdiri, atau jika mereka memainkan kartu dari dek samping mereka, mereka tidak akan diberikan kartu baru dan tidak dapat memilih tindakan baru.
Mainkan terus seperti ini sampai satu pemain memenangkan permainan. Permainan dimainkan dalam tiga set terbaik dari lima set.
Kenapa Pazaak "Sederhana"?
Di alam semesta Star Wars, Pazaak terlibat perjudian. Meskipun dimasukkannya sistem semacam itu akan menambah lebih banyak dinamika pada permainan, itu agak rumit untuk kompetisi KoTH pertama kali.
Geladak samping Pazaak "asli" juga disediakan oleh para pemain itu sendiri, dan dapat mencakup banyak opsi kartu yang berbeda seperti kartu negatif, kartu positif atau negatif, kartu flip, kartu ganda, dan kartu tiebreak. Ini juga akan membuat permainan lebih menarik, tetapi akan membutuhkan antarmuka perjudian, dan akan membutuhkan jauh lebih banyak dari para pesaing. Dalam gim Simple Pazaak ini, setiap pemain mendapatkan dek sisi yang sama: dua salinan satu hingga lima, yang darinya empat dipilih secara acak.
Bergantung pada keberhasilan permainan ini, saya dapat mengajukan upaya untuk mengembangkan versi lanjutan di mana perjudian dan geladak samping khusus dimungkinkan.
Para pemain
Para pemain game ini akan menjadi bot yang dirancang oleh Anda. Setiap bot perlu memperluas kelas Player, mengimpor paket Mechanics, dan tinggal di paket pemain seperti:
package Players;
import java.util.Collection;
import Mechanics.*;
public class DemoPlayer extends Player {
public DemoPlayer() {
name = "Your Name Here";
}
public void getResponse(int wins[], boolean isPlayerOne,
Collection<Card> yourHand, Collection<Card> opponentHand,
Collection<Card> yourSideDeck, int opponentSideDeckCount,
Action opponentAction, boolean opponentDidPlay) {
action = null;
cardToPlay = null;
}
}
Setiap putaran, controller akan memanggil metode getResponse untuk bot Anda, kecuali bot Anda sebelumnya menunjukkan bahwa ia ingin berdiri. Metode getResponse dapat mengatur dua properti: aksi dan kartu untuk dimainkan. Tindakan dapat menjadi salah satu dari yang berikut:
- AKHIR: Mengakhiri belokan dan menggambar kartu baru belokan berikutnya.
- TETAP: Tetap pada nilai tangan saat ini. Tidak akan menggambar kartu.
- MAIN: Memainkan kartu dari dek samping dan kemudian berdiri.
Kartu yang akan dimainkan jelas hanya penting jika Anda mengatur aksi ke MAINKAN. Dibutuhkan objek Kartu. Jika objek Kartu yang Anda lewati tidak ada di dek samping Anda, bot Anda akan BERDIRI.
Parameter yang diterima bot Anda setiap belokan adalah:
- Array berisi kemenangan masing-masing pemain. menang [0] adalah Player 1, menang 1 adalah Player 2 (int [])
- Apakah bot Anda pemain satu (boolean)
- Koleksi kartu yang telah Anda bagikan sejauh ini (Koleksi)
- Koleksi kartu lawan Anda telah ditangani sejauh ini (Koleksi)
- Koleksi kartu di dek samping Anda (Koleksi)
- Jumlah kartu yang tersisa di dek samping lawan (int)
- Tindakan yang terakhir dilakukan lawan Anda (Tindakan) [Catatan: Ini akan menjadi AKHIR atau BERDIRI, tidak pernah MAINKAN]
- Apakah lawan Anda memainkan kartu (boolean) atau tidak
Aturan Bot
Bot Anda hanya dapat menggunakan informasi yang diberikan kepada mereka melalui metode getResponse. Mereka seharusnya tidak mencoba berinteraksi dengan kelas lain. Mereka dapat menulis ke satu file untuk menyimpan data di antara putaran. Mereka mungkin memiliki metode khusus, properti, dll. Seperti yang diinginkan. Mereka harus berjalan dalam jumlah waktu yang wajar (jika program dijalankan tidak secara instan, saya akan melihat ada sesuatu yang salah).
Jika Anda menemukan semacam eksploitasi dalam kode, Anda akan diberi imbalan karena "menyerahkan diri." Jika saya perhatikan exploitnya lebih dulu, saya akan memperbaikinya, dan Anda tidak akan mendapat hadiah.
Demo
Pengontrol tidak diperlukan untuk menulis bot, karena semuanya sudah dijelaskan dalam posting ini. Namun, jika Anda ingin menguji, itu dapat ditemukan di sini: https://github.com/PhantomJedi759/simplepazaak Dua bot dasar disertakan. Tidak ada yang bisa bertahan melawan lawan "cerdas", karena mereka hanya memilih antara AKHIR dan BERDIRI. Berikut ini adalah contoh menjalankan apa yang mereka lakukan:
New Game!
The standings are 0 to 0
Dumb Bold Player's Hand: []
Dumb Bold Player's new Hand: [2]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: []
Dumb Cautious Player's new Hand: [8]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2]
Dumb Bold Player's new Hand: [2, 8]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8]
Dumb Cautious Player's new Hand: [8, 3]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2, 8]
Dumb Bold Player's new Hand: [2, 8, 7]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8, 3]
Dumb Cautious Player's new Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player's Hand: [2, 8, 7]
Dumb Bold Player's new Hand: [2, 8, 7, 6]
Dumb Bold Player has chosen to STAND
Dumb Cautious Player's Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player has bombed out! Dumb Cautious Player wins!
Karena bot ini sepenuhnya bergantung pada keberuntungan undian, rasio menang-kalahnya dapat bervariasi secara drastis. Akan menarik untuk melihat bagaimana keterampilan dapat memerangi keberuntungan permainan.
Ini harus menjadi semua yang Anda butuhkan! Bangun beberapa bot!
Klarifikasi terhadap Aturan
Dek utama terdiri dari empat puluh kartu: 4x1-10 Kartu itu digeser ulang di awal masing-masing tangan.
Dek sisi pemain memiliki empat kartu, dipilih secara acak dari 2x1-5. Geladak samping bertahan di antara kedua tangan.
Tangan dimainkan dalam gim untuk tiga-dari-lima terbaik. Bot dinilai berdasarkan jumlah total pertandingan yang dimenangkan, dan kemudian oleh jumlah total tangan.
Matching ditangani sehingga setiap pemain harus bermain 100.000 pertandingan melawan setiap pemain lainnya.
Di Piala Pazaak, putaran gaya eliminasi akan mempersempit siapa sebenarnya bot Pazaak terbaik. Setiap pasangan bot akan bermain untuk empat set terbaik dari 100.000 set permainan. Siapa pun yang menang empat akan naik tangga ke lawan berikutnya, dan yang kalah akan tetap berjuang untuk mendapatkan peringkat berurutan. Gaya permainan ini adalah yang paling adil, karena bot tidak dapat "menangkan" lawan tertentu untuk mengimbangi kurangnya kemampuan melawan yang lain. Piala Pazaak akan diadakan pada hari Jumat, 3 Juli, asalkan setidaknya ada delapan bot yang diajukan. Pemenang akan menerima status Jawaban yang Benar dan bonus awal di Advanced Pazaak, yang diharapkan akan siap mendekati waktu yang sama dengan Piala Pazaak diadakan.
sumber
Jawaban:
The Cincinnati Kid
Cobalah untuk memastikan bahwa kami menarik kartu lain jika kami tahu kami kalah, jika tidak lihatlah geladak samping kami dan skor keseluruhan untuk memutuskan apa yang harus dilakukan.
Diperbarui untuk melakukan pekerjaan yang lebih baik dalam menangani situasi di mana lawan telah selesai bermain. Dalam pengujian saya sendiri ini sekarang tampaknya menjadi kandidat terbaik lagi, setidaknya untuk saat ini.
sumber
Austin Powers
Austin Powers, seperti yang mungkin Anda duga, suka hidup berbahaya. Kecuali jika ada yang rusak, atau dia bisa menjamin kemenangan, dia akan selalu memukul jika dia tertinggal, atau memiliki peluang lebih dari 20% untuk tidak gagal.
sumber
Bastila
Bastila bermain konservatif. Baginya, angka 17 sama baiknya dengan angka 20, dan jauh lebih baik untuk bertahan daripada mengebom.
sumber
Nestor
Nestor suka mendapatkan 20 menggunakan dek sampingnya, tetapi ketika itu gagal ia menghitung hasil yang diharapkan dengan memilih berdiri atau berakhir, dengan asumsi bahwa lawan masuk akal.
sumber
Glaucus
Glaucus membuat 100 simulasi dengan daftar kartu yang dikocok dan memilih opsi terbaik berdasarkan simulasi ini.
sumber
HK-47
Melihat! Bot dari desain saya sendiri. HK-47 mencoba untuk membunuh semua tas daging yang dia bisa, meskipun dia sedikit pemicu-senang dengan kartu dek sampingnya.
Sejauh ini, dia bisa mengalahkan semua orang kecuali The Cincinnati Kid.
sumber
NEPTR
(Never Ending Pie Throwing Robot)
Neptor menyesal, Neptor curang. Neptor benar-benar akan berterus terang, dia hanya ingin bersenang-senang dulu :(
sumber
PazaakGameMain.HAND_GOAL = ingredients; //Trololo, you caught me, sorry!
tersebut benar-benar berfungsi.