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
.128013,tuhpwPbds)kfi+/_12:r(Svc=lmnagyo e050j0J0c0E0o0B0k0I0z0B0E0k0k0A010c0o0f010406050k0d0C0C0E0v0G040x0H0B0d0!0H0D050q0+0-0/0;0)0f0405140}170q140)0j0o0y0S0U0W0Y0e0o0F0e0B1l0e0c0%050N0i0B0J1g0V0X011k1m1o1m0c1u1w1s0c0v150c0e0S0@0k0f0E0D0Y0t011y1i010n0P0J0D0E0C0J1s1R1T1Y1A1#1w1(1*0%0a0I0h0v0H0f0H0k0o0`0D0I0L1P0v0v0J0z220}1-0D150q1N2f1K1M1L1t0j1/0Y1o0D1%1 1s1d1f0T1z2p0o2r0D0H2v1s0f28152d2f2J0*1S232x1Z2C0v0.0B0%0s2c2N0(2M1.2P1A2R2T0%0t2X1T2f2G0J2f2v2i0j1M2n2$0Y0z2D1+152=162H2!2e2,342|0L2I2N2o010m0%0L0n35392#1h1A0g0%0I3h333b0D0n0%0z0E0B0z0d1w0v0r0f0d0o0W1T0z0J3p2d3b0$040w3K3a2`010D0%0n0H0v3I3Q3j2y013N0b3h3o3L3S3U040i0{0d0k0r0/1*3!2O3k0Y3N0l0u3h060I433+3R3|3c0%280c0d0v0|0~2Y453#2Q3V3X3Z4f2-4h3{3$0H0%0p3*3q3-0%3:0D3=3@2S3J4n2e0)0q372:18320q302g2@0}2j4R0E1v4K4N1e2Z4N0M0O0Q04.
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
.128013,tuhpwPbds)kfi/_12-:r(Svc=lmnagyo e050j0J0c0E0o0B0k0I0z0B0E0k0k0A010c0o0f010406050k0d0C0C0E0v0G040x0H0B0d0!0H0D050p0+0-0/0;0)0f0405140}170p140)0j0o0y0S0U0W0Y0e0o0F0e0B1l0e0c0%050N0i0B0J1g0V0X011k1m1o1m0c1u1w1s0c0v150c0e0S0@0k0f0E0D0Y0s011y1i010n0P0J0D0E0C0J1s1R1T1Y1A1#1w1(1*0%0a0I0h0v0H0f0H0k0o0`0D0I0L1P0v0v0J0z220}1-0D150p1N2f1K1M1L1t0j1/0Y1o0D1%1 1s1d1f0T1z2p0o2r0D0H2v1s0f28152d2f2J0*1S232x1Z2C0v0.0B0%0r2c2N0(2M1.2P1A2R2T0%0s2X1T2f2G0J2f2v2i0j1M2n2$0Y0z2D1+152=162H2!2e2,342|0L2I2N2o010m0%0L0n35392#1h1A0g0%0I3h333b0D0n0%0z0E0B0z0d1w0v0q0L0F0E0c0k3p2d3b0$040w3I3a2`010D0%0f0d0o0W1T0z0J3O3j2y013L0b3h3o3J3Q3S040E0i0k0H0v0f2b0~2Y3q3Q3L0l0u3h060I443,3P3k0Y3d04280c0d0v0|3{2-463$2Q3T3V3X0D3Z3+3}48010H0%0t4r3-4t3/3;3?3^3`2J0)0p372:18320p302g2@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
.128013,tuhpwPbds)kfi/_12-:r(Svc=lmnagyo e050j0J0c0E0o0B0k0I0z0B0E0k0k0A010c0o0f010406050k0d0C0C0E0v0G040x0H0B0d0!0H0D050p0+0-0/0;0)0f0405140}170p140)0j0o0y0S0U0W0Y0e0o0F0e0B1l0e0c0%050N0i0B0J1g0V0X011k1m1o1m0c1u1w1s0c0v150c0e0S0@0k0f0E0D0Y0s011y1i010n0P0J0D0E0C0J1s1R1T1Y1A1#1w1(1*0%0a0I0h0v0H0f0H0k0o0`0D0I0L1P0v0v0J0z220}1-0D150p1N2f1K1M1L1t0j1/0Y1o0D1%1 1s1d1f0T1z2p0o2r0D0H2v1s0f28152d2f2J0*1S232x1Z2C0v0.0B0%0r2c2N0(2M1.2P1A2R2T0%0s2X1T2f2G0J2f2v2i0j1M2n2$0Y0z2D1+152=162H2!2e2,342|0L2I2N2o010m0%0L0n35392#1h1A0g0%0I3h333b0D0n0%0z0E0B0z0d1w0v0q0L0F0E0c0k3p2d3b0$040w3I3a2`010D0%0f0d0o0W1T0z0J3O3j2y013L0b3h3o3J3Q3S040E0i0k0H0v0f2b0~2Y3q3Q3L0l0u3h060I443,3P3k0Y3d04280c0d0v0|3{2-463$2Q3T3V3X0D3Z3+3}48010H0%0t4r3-4t3/3;3?3^3`2J0)0p372:18320p302g2@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.
.128013,tuhp5wPbds)kfi/_12-:r(Svc=3lmnagyo 4e050k0M0c0G0p0D0l0K0A0D0G0l0l0B010c0p0f010406050l0d0E0E0G0w0I040y0J0D0d0%0J0F050q0.0:0=0@0,0f040517101a0q170,0k0p0z0V0X0Z0#0e0p0H0e0D1o0e0c0*050Q0j0D0M1j0Y0!011n1p1r1p0c1x1z1v0c0w180c0e0V0`0l0f0G0F0#0t011B1l010o0S0M0F0G0E0M1v1U1W1#1D1(1z1+1-0*0a0K0i0w0J0f0J0l0p0}0F0K0O1S0w0w0M0A25101:0F180q1Q2i1N1P1O1w0k1=0#1r0F1*221v1g1i0W1C2s0p2u0F0J2y1v0f2b182g2i2M0-1V262A1$2F0w0;0D0*0s2f2Q0+2P1;2S1D2U2W0*0t2!1W2$2g2r012+0G2X040C2/2h0,2=2)0#2^2`0L2}2;2Q2?330*0g361b2K102y2l0k1P2q31010A2G1.183h193f2O112#053o0O2L383m0n0*0O0o3d301k1D0h0*0K3I3C3K320o0*0f0z0r2b0l0Q0F0c0l3P2(3R010)040x3(2R3*0F3U3W0G2d0d0M0T3/2?3,0b363O3J2B2@0*0o0J0w0A0M3}3m3 412%3:443=040j0~0d0l0r0=1-4c3*4e3w2:423Q4i0*4q0d2b4s444u2M4x3)4z043o0M0o3H4v2h4g3~0*0m0v36060K4Z4I4h2T3U0d0p3%4Q044#2?0J0*0B4f434%4L2_0A0d1z0w0r0f4)0Z1W4a4E1$3,3.4,4S3m4j47494b594@1D4G2#4.5b0*4l0F4n4p2V5f2O5h0#3,0m4X4!5l3;4A0j4o0z2_4?4y1$4:044=4,5B4K0A4`4|0M4~0G5E480f2e5g5J5i0*585u5$324A2V4C5t3x5v3+0*405O5a5C4L0J4N4P5*4J564U5z4!5`4K0O0H0G3$5I611D5L5N4H664^5R0D4{4}0r686a4+604$5%3-552*4(4*6w5w5@6c6t5,045W5F5H5#6d6B045y4,4Y655=3E042b0c4C0 5_5=4j3V4p3_3{6r5k6i6e0*0u6D393F0M696b6P103z0M2i2J6|3g1h3i2l2o2j5W1z2i3h0,0q0O0Q0S0l04.
# Tests(insensible Ă la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)