Proyek 1: Poker Dice-CS-149-F23

Proyek 1: Dadu poker

Poker Dice adalah permainan dadu yang mirip dengan Yazzi, bermain dengan lima dadu 6-sided dengan wajah “9”, “10”, “J”, “Q”, “K” dan “A”. Klik di sini untuk versi online yang dapat dimainkan untuk mempelajari game: komputer dadu poker.

Setiap pihak memiliki angka yang relevan:

permukaan nilai
‘9’ 9
’10’ 10
‘J’ 10
‘Q’ 10
‘K’ 10
‘A’ 11

Tabel berikut merangkum aturan penilaian dadu poker:

jenis Kategori penjelasan skor
1 Sat u-Pair Sepasang aspek yang cocok: 9, 9, 10, j, k Total nilai pertandingan
2 2 pasang Sepasang dua aspek yang cocok: 9, 9, 10, 10, k Total kedua nilai pasangan
3 Tiga jenis Setidaknya tiga aspek sama Jumlah dari tiga nilai yang cocok +10
4 Empat jenis Setidaknya empat aspek sama 4 Jumlah 4 Nilai +20
5 Lima jenis Kelima aspeknya sama 100 poin
6 Rumah penuh Tiga kartu dan satu pasangan (bagian depan dan belakang jelas) 9, 9, 9, a, a 50 poin + total dadu
7 Lurus kecil Wajah lebih dari 4 atau lebih: 9, 10, j, q 10, j, q, k j, q, k, a 70 poin
8 Lurus besar Semua 5 psiko semua dalam urutan 9, 10, j, q, k, 10, j, q, k, a 95 poin
9 peluang Tamasya apapun Total mata dadu

Kolom terakhir dari tabel menunjukkan skor ketika pemain memilih jenis skor yang sesuai. Misalnya, jika pemain memilih sat u-Pair dan [‘9’, ‘9’, ‘j’, ‘a’, ‘q’], skornya dua kali nilai pasangan. Catatan: Skor pasangan menghitung pasangan tertinggi. Bahkan jika mata dadu adalah [‘9’, ‘9’, ‘q’, ‘a’, ‘9’], skornya akan 18. Pertandingan yang gagal kembali 0.

Tujuan dari masalah ini adalah untuk membuat modul dadu, mengembangkan dan menguji fungsi yang menentukan skor dadu poker.

Provided Code¶

Mulailah dengan file sumber berikut:

  • dice. p y-kamu perlu membuatnya.
  • poker_dice. p y-do tidak mengedit.
  • Score_dice. p y-unnished.
  • test_score_dice. py –neninished

dice.py¶

Modul Dice menangani daftar dadu yang diekspresikan dalam string. Modul ini harus menangani tidak hanya jumlah dadu poker (5), tetapi juga sejumlah dadu dari 1 hingga 10. Modul ini berisi daftar yang ditentukan global, kamus yang ditentukan global, dan empat fungsi.

  1. Waja h-Daftar ini harus berisi kemungkinan wajah dalam urutan dari ‘9’ ke ‘A’.
  2. Face_values-kamus ini dipetakan dari string yang mewakili wajah ke nilai integer yang sesuai. Misalnya, ‘A’ harus dipetakan ke 11.
  3. Roll_dic e-Fungsi ini menerima dua parameter. Parameter pertama adalah int untuk menunjukkan jumlah dadu yang akan diayunkan. Parameter kedua adalah integer benih acak dan nilai default adalah 0 (perhatikan bahwa jika tidak ada yang ditentukan untuk argumen kedua, waktu sistem saat ini digunakan). Fungsi ini mengembalikan daftar yang berisi n dadu. Misalnya

& gt; & gt; 
& gt; & gt; 

Jika daftar dadu tidak valid (lihat Are_valid), return-1.

Jangan gunakan . count (). Untuk menjalankan fungsi ini, Anda harus menulis untuk loop. Tanda tangan tidak mengizinkan penggunaan metode daftar. count ().

poker_dice.py¶

Modul ini berisi game dadu poker berbasis terminal sederhana. Setelah skor_dice. py selesai, Anda dapat mencoba kode menggunakan driver ini.

Driver ini memanggil modul dice. py dan menggunakan fungsi roll_dice untuk mengembalikan dadu. Mungkin tidak berguna untuk menguji solusi Anda secara sistematis. Mekanisme utama untuk menguji kode Anda dalam proyek ini adalah test_score_dice. py yang dijelaskan di bawah ini.

score_dice.py¶

Tugas utama dari tugas ini adalah mengimplementasikan fungsi SCORE_DICE. CALCULATE_SCORE sesuai dengan dokumentasi. Untuk mendapatkan semua unit, fungsi Anda yang sudah selesai harus memenuhi persyaratan berikut:

  • Untuk membedakan skor yang berbeda, Anda harus menggunakan kondisi bersarang.
  • Gunakan fungsi helper yang sesuai untuk membagi masalah menjadi fragmen yang lebih kecil dan lebih mudah dikelola.
  • Gunakan fungsi add_values ​​dari modul dice dan fungsi num_faces.
  • Kode Anda harus menggunakan konstanta yang disebutkan (FACE_VALUES) yang dinyatakan di awal Dice. py. Hindari menggunakan nilai literal hardcoded.
  • Fungsi calcalate_score hanya memiliki satu pernyataan pengembalian.

test_score_dice.py¶

Anda harus menulis tes unit skor_dice. py. Anda harus menulis beberapa tes kecil yang menangani kasus yang berbeda, daripada menulis fungsi test_score_dice yang sangat panjang. File yang disediakan berisi dua fungsi tes.

Perhatikan bahwa nam a-nama fungsi ini mewakili situasi pengujian. Misalnya, test_calculate_score_one_pair_no_match:

  • Te s-Ini menunjukkan bahwa fungsi ini adalah untuk pengujian.
  • Calcalate_scor e-fungsi yang diuji.
  • One_pair_no_matc h-Ini adalah tes.

File tes dan score_dice. py harus didokumentasikan dengan benar. Biasanya, dokumen fungsi pengujian tidak diperlukan.

Kategori yang akan diuji adalah sebagai berikut (ini adalah templat file test_score_dice. py):

  • Skor tes satu set ketidakrataan
  • Skor tes 1 pasangan 1 pertandingan
  • Pasangan skor tes 2 tidak cocok
  • Skor tes 2 pasangan 1 pertandingan
  • Skor tes tiga pertandingan acind
  • Skor Tes Tiga dari Acinde Nomatch
  • Skor tes empat pertandingan akaka
  • Skor tes empat dari Akind No Match
  • Skor tes lima pertandingan aksen
  • Skor tes lima pertandingan aksen
  • Pertandingan lurus kecil
  • Skor Tes Small Straight No Match
  • Skor tes pertandingan lurus besar
  • Skor tes besar lurus tanpa kecocokan
  • Pertandingan Peluang Skor Tes

Part A – Readiness Quiz and dice.py (30 points)¶

1) Lakukan kuis siap (10 poin) di kanvas.

Sebelum batas waktu Bagian A, baca dokumen ini dengan cermat dan lihat kode starter di atas. Jika Anda memahami dengan jelas bahwa tugas ini diharapkan, jawab kuis persiapan kanvas (10 poin). Penilaian tes kecil ini dilakukan oleh semua atau tidak ada, dan jika Anda melakukan kesalahan, Anda akan mendapatkan 0 poin.

Jika Anda tidak lulus kuis persiapan, Anda tidak akan dapat memperoleh unit unit A dan bagian B.

2) Lengkapi file dice. py (20 poin) dan kirimkan ke gradescope pada batas waktu setiap bagian.

Pengajuan Kode Bagian A dibatasi hingga 10.

Part B – Code (60 points score_dice.py and 10 points test_score_dice.py)¶

Unggah score_dice. py dan test_score_dice. py ke gradescope. Jangan sertakan poker_dice. py dalam file yang dikirimkan.

Pastikan untuk menyelesaikan langka h-langkah berikut sebelum mengunggah pengiriman ke Gradescope:

  • Uji jawabannya dengan seksama.
  • Pastikan bahwa poker_dice. py berfungsi seperti yang diharapkan dengan kode yang sudah selesai.
  • Periksa panduan gaya kursus dan pastikan kode Anda memenuhi persyaratan gaya.
  • Jalankan Flake8 dan hapus semua peringatan.
  • Tinjau dan perbarui komentar Anda sesuai kebutuhan.

Kirim hingga 10 kali ke Bagian B ke Gradescope.

PA1 Attribution¶

Jika Anda menerima dukungan dari siswa lain, sumber informasi online, alat yang kompatibel AI, atau sumber informasi lainnya mengenai masalah ini, jelaskan secara singkat isinya.

Acknowledgments¶

Tugas ini dibuat oleh Alvin Chao. Bagian dari dadu poker yang disebutkan di atas dipinjam dari halaman poker dadu wikipedia. Artikel Wikipedia dan halaman penugasan ini dilisensikan di bawah Creative Commons Display-Inheritance License 3. 0.