Combat RPG
Dans ce jeu de rôle, on souhaite calculer les points de vie (PV) restants d'un personnage après avoir reçu une attaque.
Le calcul dépend de la force de l'attaquant, de son arme, et de l'armure du défenseur.
Force de frappe
La puissance d'une attaque dépend de la force naturelle du héros et du bonus apporté par son épée.
La formule est une simple addition :
\[ \text{Puissance} = \text{Force} + \text{Bonus Arme} \]
Écrire la fonction calculer_puissance qui prend en paramètres :
force (nombre entier) ;
bonus_arme (nombre entier).
Elle renvoie la puissance totale de l'attaque.
Console Python>>> calculer_puissance(80, 20)
100
.128013lap:f2 icbemtnrP_=y)o(+h/dgS,s1kvwu050A0l0n0c0i0b0E0h0j0b0c0E0E0s010n0i0d010406050E0J0m0m0c0p0t040C0v0b0J0!0v0o050z0+0-0/0;0)0d0405140}170z140)0A0i0H0S0U0W0Y0y0i0B0y0b1l0y0n0%050N0k0b0l1g0V0X011k1m1o1m0n1u1w1s0n0p150n0y1y1i010f0P0l0o0c0m0l010S0@0E0d0c0o0Y0g1s1$1(1P1A1S1w1V1X0%0a0h0q0p0v0d0v0E0i0`0o0h0L1!0p0p0l0j220}1-0o150z1N2f1K1M1L1t0A1/0Y1o0o1U1 1s1d1f0T1z2p0i2r0o0v2v1s0d28152d2f2J0*1%232x1Q2C0p0.0b0%0F2c2N0(2M1.2P1A2R2T0%0g2X1(2f2G0l2f2v2i0A1M2n2$0Y0j2D1Y152=162H2!2e2,342|0L2I2N2o010G0%0L0f35392#1h1A0I0%0h3h333b0o0f0%0j0c0b0j0J1w0p0r0d0J0i0W1(0j0l3p2d3b0$040w3K3a2`010o0%0f0v0p3I3Q3j2y013N0D3h3o3L3S3U040k0{0J0E0r0/1X3!2O3k0Y3N0u0e3h060h433+3R3|3c0%280n0J0p0|0~2Y453#2Q3V3X3Z4f2-4h3{3$0v0%0x3*3q3-0%3:0o3=3@2S3J4n2e0)0z372:18320z302g2@0}2j4R0c1v4K4N1e2Z4N0M0O0Q04.
Réduction des dégâts
L'armure de la cible absorbe une partie du choc. Cette absorption est calculée grâce à un coefficient de réduction.
\[ \text{Absorption} = \text{Armure} \times \text{Coeff} \]
Exemple : Si j'ai 50 points d'armure et un coefficient de 0.5, j'absorbe \(50 \times 0.5 = 25\) points de dégâts.
Écrire la fonction calculer_absorption qui prend en paramètres :
armure (entier) ;
coeff (nombre flottant, ex: 0.5).
Elle renvoie le nombre de points de dégâts absorbés.
Console Python>>> calculer_absorption(50, 0.5)
25.0
.128013lap:f2 icbemtnrP_=y)o(h/dgS,s1k-vwu050z0l0n0c0i0b0D0h0j0b0c0D0D0s010n0i0d010406050D0J0m0m0c0p0t040B0v0b0J0!0v0o050y0+0-0/0;0)0d0405140}170y140)0z0i0H0S0U0W0Y0x0i0A0x0b1l0x0n0%050N0k0b0l1g0V0X011k1m1o1m0n1u1w1s0n0p150n0x1y1i010f0P0l0o0c0m0l010S0@0D0d0c0o0Y0g1s1$1(1P1A1S1w1V1X0%0a0h0q0p0v0d0v0D0i0`0o0h0L1!0p0p0l0j220}1-0o150y1N2f1K1M1L1t0z1/0Y1o0o1U1 1s1d1f0T1z2p0i2r0o0v2v1s0d28152d2f2J0*1%232x1Q2C0p0.0b0%0E2c2N0(2M1.2P1A2R2T0%0g2X1(2f2G0l2f2v2i0z1M2n2$0Y0j2D1Y152=162H2!2e2,342|0L2I2N2o010F0%0L0f35392#1h1A0I0%0h3h333b0o0f0%0j0c0b0j0J1w0p0r0L0A0c0n0D3p2d3b0$040w3I3a2`010o0%0d0J0i0W1(0j0l3O3j2y013L0C3h3o3J3Q3S040c0k0D0v0p0d2b0~2Y3q3Q3L0u0e3h060h443,3P3k0Y3d04280n0J0p0|3{2-463$2Q3T3V3X0o3Z3+3}48010v0%0G4r3-4t3/3;3?3^3`2J0)0y372:18320y302g2@0}2j4R3;1w2;1e2Z4N0M0O0Q04.
Dégâts réels
Les dégâts réellement subis par le personnage sont la puissance de l'attaque moins ce qui a été absorbé par l'armure.
\[\text{Dégâts} = \text{Puissance} - \text{Absorption}\]
Écrire la fonction calculer_degats qui prend en paramètres puissance et absorption et renvoie le résultat de la soustraction.
(Pour cet exercice, on considère que l'absorption n'est jamais supérieure à la puissance).
Console Python>>> calculer_degats(100, 25)
75
.128013lap:f2 icbemtnrP_=y)o(h/dgS,s1k-vwu050z0l0n0c0i0b0D0h0j0b0c0D0D0s010n0i0d010406050D0J0m0m0c0p0t040B0v0b0J0!0v0o050y0+0-0/0;0)0d0405140}170y140)0z0i0H0S0U0W0Y0x0i0A0x0b1l0x0n0%050N0k0b0l1g0V0X011k1m1o1m0n1u1w1s0n0p150n0x1y1i010f0P0l0o0c0m0l010S0@0D0d0c0o0Y0g1s1$1(1P1A1S1w1V1X0%0a0h0q0p0v0d0v0D0i0`0o0h0L1!0p0p0l0j220}1-0o150y1N2f1K1M1L1t0z1/0Y1o0o1U1 1s1d1f0T1z2p0i2r0o0v2v1s0d28152d2f2J0*1%232x1Q2C0p0.0b0%0E2c2N0(2M1.2P1A2R2T0%0g2X1(2f2G0l2f2v2i0z1M2n2$0Y0j2D1Y152=162H2!2e2,342|0L2I2N2o010F0%0L0f35392#1h1A0I0%0h3h333b0o0f0%0j0c0b0j0J1w0p0r0L0A0c0n0D3p2d3b0$040w3I3a2`010o0%0d0J0i0W1(0j0l3O3j2y013L0C3h3o3J3Q3S040c0k0D0v0p0d2b0~2Y3q3Q3L0u0e3h060h443,3P3k0Y3d04280n0J0p0|3{2-463$2Q3T3V3X0o3Z3+3}48010v0%0G4r3-4t3/3;3?3^3`2J0)0y372:18320y302g2@0}2j4R3;1w2;1e2Z4N0M0O0Q04.
Points de vie restants
C'est le moment de tout combiner !
On veut savoir combien de PV il reste au personnage après l'attaque.
La fonction finale pv_restants doit prendre en paramètres :
pv_actuels (La vie du personnage avant le coup)
force (La force de l'attaquant)
bonus_arme (Le bonus de l'épée)
armure (L'armure du défenseur)
coeff (Le coefficient de protection)
Objectif : Vous devez calculer la puissance, puis l'absorption, en déduire les dégâts et enfin soustraire ces dégâts aux PV actuels.
⚠️ Impératif : Vous devez réutiliser les fonctions calculer_puissance, calculer_absorption et calculer_degats.
Console Python>>> pv_restants(200, 80, 20, 50, 0.5)
125.0
Explication : Attaque de 100, Absorption de 25. Dégâts subis = 75. Vie restante = 200 - 75 = 125.
.1280133lap4:f2 icbemtnrP_=y)o(h/5dgS,s1k-vwu050C0n0p0d0k0c0G0j0l0c0d0G0G0u010p0k0e010406050G0M0o0o0d0r0v040E0x0c0M0%0x0q050A0.0:0=0@0,0e040517101a0A170,0C0k0K0V0X0Z0#0z0k0D0z0c1o0z0p0*050Q0m0c0n1j0Y0!011n1p1r1p0p1x1z1v0p0r180p0z1B1l010h0S0n0q0d0o0n010V0`0G0e0d0q0#0i1v1)1+1S1D1V1z1Y1!0*0a0j0s0r0x0e0x0G0k0}0q0j0O1%0r0r0n0l25101:0q180A1Q2i1N1P1O1w0C1=0#1r0q1X221v1g1i0W1C2s0k2u0q0x2y1v0e2b182g2i2M0-1*262A1T2F0r0;0c0*0H2f2Q0+2P1;2S1D2U2W0*0i2!1+2$2g2r012+0d2X040b2/2h0,2=2)0#2^2`0f2}2;2Q2?330*0B361b2K102y2l0C1P2q31010l2G1#183h193f2O112#053o0O2L383m0I0*0O0h3d301k1D0L0*0j3I3C3K320h0*0e0K0t2b0G0Q0q0p0G3P2(3R010)040y3(2R3*0q3U3W0d2d0M0n0T3/2?3,0F363O3J2B2@0*0h0x0r0l0n3}3m3 412%3:443=040m0~0M0G0t0=1!4c3*4e3w2:423Q4i0*4q0M2b4s444u2M4x3)4z043o0n0h3H4v2h4g3~0*0w0g36060j4Z4I4h2T3U0M0k3%4Q044#2?0x0*0u4f434%4L2_0l0M1z0r0t0e4)0Z1+4a4E1T3,3.4,4S3m4j47494b594@1D4G2#4.5b0*4l0q4n4p2V5f2O5h0#3,0w4X4!5l3;4A0m4o0K2_4?4y1T4:044=4,5B4K0l4`4|0n4~0d5E480e2e5g5J5i0*585u5$324A2V4C5t3x5v3+0*405O5a5C4L0x4N4P5*4J564U5z4!5`4K0O0D0d3$5I611D5L5N4H664^5R0c4{4}0t686a4+604$5%3-552*4(4*6w5w5@6c6t5,045W5F5H5#6d6B045y4,4Y655=3E042b0p4C0 5_5=4j3V4p3_3{6r5k6i6e0*0J6D393F0n696b6P103z0n2i2J6|3g1h3i2l2o2j5W1z2i3h0,0A0O0Q0S0G04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)