POO La Belote

La belote est un jeu qui se joue avec 32 cartes, chaque carte ayant une hauteur et une couleur. Les différentes hauteurs sont dans l'ordre 7, 8, 9, 10, Valet, Dame, Roi, As et les différentes couleurs sont « pique », « carreau », « cœur », « trèfle ».

On modélise un paquet de cartes, en programmation orientée objet, par deux classes: une classe Carte et une classe Paquet.

Les classes Carte et Paquet

Les classes Carte et Paquet sont définies ainsi :

classDiagram
direction RL
Paquet o-- Carte
class Paquet{
    list contenu
    __init__()
    cart_pos()
    taille()
    ajoute_carte()
} 
class Carte {
    __init__()
    int hauteur
    couleur_carte()
    hauteur_carte()
    int couleur   
}
  • Classe Carte :
méthode explication
init prend un entier h et un entier c et crée la carte correspondante
couleur_carte renvoie la couleur de la carte
hauteur_carte renvoie la hauteur de la carte
  • Classe Paquet :
méthode explication
init crée un paquet vide
carte_pos prend un entier n et renvoie la carte Ă  l'indice n
taille renvoie le nombre de cartes

Dans la classe Carte, les hauteurs et les couleurs sont repérées par les codes suivants :

Python
1
2
3
4
5
6
HAUTEURS = {
    1: 'As', 7: '7', 8: '8', 9: '9', 10: '10',
    11: 'Valet', 12: 'Dame', 13: 'Roi'
    }

COULEURS = {1 : "pique", 2 : "cœur", 3: "carreau", 4 : "trèfle"}
Exemple d'utilisation
Python
1
2
3
4
5
6
7
8
9
>>> jeu = Paquet()
>>> jeu.ajoute_carte(Carte(1, 3))  # Ajout de l'as de carreau
>>> c1 = jeu.carte_pos(0)
>>> c1.couleur_carte()
'carreau'
>>> c1.hauteur_carte()
'As'
>>> jeu.taille()
1

Avant chaque manche, on choisit une couleur d'atout parmi les quatre couleurs.

Chaque carte rapporte des points. Ces points dépendent de la hauteur de la carte, mais aussi du fait que la couleur soit l'atout ou non.

Les points hors atout sont les suivants :

7 8 9 10 Valet Dame Roi As
0 0 0 10 2 3 4 11

Les points Ă  l'atout sont les suivants :

7 8 9 10 Valet Dame Roi As
0 0 14 10 20 3 4 11
Calculs de points

On considère un paquet contenant les cartes suivantes : As de cœur (♥), 7 ♥, 9 de trèfle (♣), 9 de pique (♠), Valet ♣, Valet ♥, Dame de carreau (♦) et Roi ♦.

Si on choisit carreau comme atout, le décompte des points est le suivant :

As ♥ 7 ♥ 9 ♣ 9 ♠ Valet ♣ Valet ♥ Dame ♦ Roi ♦ Total
11 0 0 0 2 2 3 4 22

Si on choisit trèfle comme atout on obtient par contre :

As ♥ 7 ♥ 9 ♣ 9 ♠ Valet ♣ Valet ♥ Dame ♦ Roi ♦ Total
11 0 14 0 20 2 3 4 54

Les points des cartes sont stockés dans deux dictionnaires VALEURS et VALEURS_ATOUT. Le dictionnaire VALEURS_ATOUT est à compléter.

Écrire la fonction calculer_points qui :

  • prend en paramètres un objet jeu de la classe Paquet dĂ©crivant un jeu de cartes ainsi qu'une chaĂ®ne de caractères atout indiquant la couleur d'atout
  • et renvoie le total de points des cartes dans ce jeu.

On garantit que la variable jeu contient des cartes bien formées (couleur et hauteur valides) et que la valeur de atout fait partie de ('pique', 'cœur', 'carreau', 'trèfle').

Exemples
Python
>>> jeu = Paquet()
>>> jeu.ajoute_carte(Carte(1, 2))
>>> jeu.ajoute_carte(Carte(7, 2))
>>> jeu.ajoute_carte(Carte(9, 4))
>>> jeu.ajoute_carte(Carte(9, 1))
>>> jeu.ajoute_carte(Carte(11, 4))
>>> jeu.ajoute_carte(Carte(11, 2))
>>> jeu.ajoute_carte(Carte(12, 3))
>>> jeu.ajoute_carte(Carte(13, 3))
>>> calculer_point(jeu, "carreau")
22
>>> calculer_point(jeu, "trèfle")
54
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5
.128013cm,s7- 3k/8R=t14T5Oy_i92S0+vD)hVfEobLan6p{AlgPU[u]e}r:j.d(w050)0Z0o0M0w0S0e0h0b0S0M0e0e0n010o0w0P010406050e0X0c0c0M0#0u040z0J0S0X0 0J0N050k16181a1c140P04051s1l1v0k1s140)0w0C0@0_0{0}0_0N0T0X0M0T0Z0g0P0u0o0F1j0h0F0w0T0F0S1X0F0o12050/0K0S0Z1E0`0|011W1Y1!1Y0o1*1,1(0o0#1t1S0@1f0e0P0M0N0}0y011.1G010H0;0Z0N0M0c0Z1(23252a1:2d1,2g2i120a0h0U0#0J0P0J0e0w1i0N0h0-210#0#0Z0b2D1l2l0N1t0k1S2Q1}1 1~1)0)2n1H0w0N2f2A1(1B1D0^1/2!2$0N0J2*1(0P2J1t2O2Q2`15242E2,2b2:0#190S1(0M1V2J0H0}030v0v0b2;0Z1!2/0J0g0i0g0p120h0p1l0M2{2~132}2m301:323436380Z3a013c3e3g3i2%3l0g28040h0y3s3u253w2O2Z013B0M351t370F393b3d3f0-3L2:3N0i3p0i3T2N3v143X3z0}3!3$053(3*3H3,3K2#3M3m0q3p0q3^1m3`3x2 1F3A0J333#3D3)3F3+3J3.473:3m0s3p0s4d2`3{2~3Y3 4n433I3-3h4t3k3m0O3p0O4z4f3|4i3~4k3C3%3E3G4H463j3N0f3p0f4Q3V4B3y4T3Z4V4m4X4o4Z454s4$3m0l3p0l4+2P4-4h2-4:4l40424p444r4J4{0g0x3p0x503W4C3}554W414Y4q4I3/4L3n0A120p0A5i524D4;575p5a5r4K3N0p3o045J5z4g5B564F594!4`483n3P0p3S0k3t3_4,5O5l4E4?4G4_5c5V0p3=5L3@5!3U515(4/5*5o4@5q4#5/4a5L4c5@5$5_4S545|584^5b5s5I4w5L4y654e5%68315C5R6c5G5d0p4N5L4P6j4A5`696o5+5S5-6e3m0p4(5L4*6x4R5k5{6B5}5,6d5H6G4}5L4 6L6l6N6A5Q6C6q604u3n5f5L5h6Y676!6n6$6Q6D6S5d0y5v046{5N6m4j6?6b5 5U6*0y5K776 6;715n735F6)5t0y3P7i5i1w2^1l2*2T0)1 2Y5l4I2)1C1t2@0Z2_3v661t4I7B2m0w0)0}3d2O5I3D7I7K6_5/292r0Z7Q6r7S2Q5#703~120G0R0L0I0V0m0z7D0h6z2b0J120n7/7;1:11040Q7D7`0}0e3P010R0e017 7#017|0$7_890c0w5w3r6k2P808a120d8d7b81834(888q8m048c8j3Q8l8f125y8z8l7|8o8z7:898212014}8u4.548b8p8R2b8C048E2|898H8U532b8M04015f8Q8(7{128y2`8K8v8X8Z7C8#8n8%3Y8*015x878F8|8x8~5l8X5x8.3Y8$8J8l900G3#0.938!8v8T9e8e8g6}9b5l9d8?9f830D2h2j9s4/9n9v9p125?9l8V8:048I9E8v900m0J8g9B8S8;974/8X649I8/0}7|0!7D14944C7P017L2~3N3P5o9-6E6T3O7T9z7W7g9;1(65890N7%7)7+7-0v0R0r0t0V0r9W547?047^9o9m127~8z9*9!0h9@0v7M3m5;9?7J9.7R6*3=0h7U9}755tav5@0haJ8@9J8r8N859k8{ak96ajaM01998iap9t8}an9barat0g62awaE5.6*4aaC9|ay7Xa/a03taKaL9#01908t9+aV9D3va|3Y8_9T2b9u4fb12Ea(9:4v7Oax9^5d4wa;2ia-6F0g6g3Ta{9w8N8Pbc9c9VaUa}b7bxa!9L9)a%biasbf0g6ua,a?9~4M9{bnbOaF3NbMaIaKbu8+8-bD9Cbz9NaV999ZaRb2a#6ybxbe254%bhbo9_4(bm7VbTa.5t6IbsbY8L8392b89K8=b48B9q9ab$9UbFa$b;bIa)6VbNbj5V4}b|b_5dclbXaJbZ019h1,1%c79$b(ca9F6}8`3V8Gb/bbapb=0N3N6,cmaz5t5fcqb~bpcQcub55l909y2scB8wc93Vc!9X9q9Hb-a}ba5%ci7Qa)924Xara@5t92cVcn6*c{c2cvc48N9Q9Sceb9cDc,cb12b,cI959McLc;aqcjbK5Jb^cW9_dqd1cS5I5K3^959(chcMdob?6G9=37c}bP5WbRb}d2c 9=5@aodmcN5IavdIbIc~dVdMcr5/aH3tdSdi9,dEcO6Ga+dXd$d3a:aDds6sa+a18v0j120-0Hc)0+3pc)0N0H120b3#0b0X1,0#0v2z2#0oc)7|0*e5120%0Z0XejcKdea2120M0o0J1her040Ec+5_c^ayc`brd;d_5/bld^dO6fa_3Qc38va304eg0N0o0eae7=7@e!1:bCb:dDc_dpbMeJeO6G4NdvdZe;eQbt89d~040H4ke%7$040wf0010Je3f21kbA4D0K120#251NeAeldb3Aenepc)ag0(em040/0;1,fh0EeCbGeF9/dF3nc1e/dw6Gb{eNfFfCe_a{eSaVeUe90#0o0Zf4agaib)a}eUeoeqfj0}fofqfQfSef2Afhfqf3f$8w0Efye+eGdpclfEe@3ncpfIf}0pcta`fMd6d}120we1fa5)e81afSfn12fpf;fPey1,0Xeef*fTf;ekf?gb4/fVfWcEeTevexezgrddeEf^fAd.6+dre:gJe?dK0pcYg4g5e`gzeV9ReXeZguafe$gZ3112eWeYfU120Bf4eU7(7*7,0za8aaaceA0Wf)gegqaZgvghfq0F0M1hepgog}fv0Yf@dTd-9;6|cRf}6{d#eK76hfcZgTaVe|3h0eg~dmbEeD3wfzbJfB77gKfJhBgNbU3mhB7ZeRgSfNfYg(gWg*g$1:fVg.hOehgYfX3Yagg-hRf1g:a67.gD04g{gjgdfRhtd+aVf(h.04h3h5gn3eh8h+0*0EhadChce,hAdHdnd=7h28hFb 9;dQgRc-54e|2J0ognf9hYgcgVhWhbcI0k7F7m7A7o7x1l0o7riA2W2R0M1+ix0k7p9*0-fs0=04.