From a8036b32a1d2c4bcffdbd3d52fb24cdc95ff4812 Mon Sep 17 00:00:00 2001 From: wojciech goralewski Date: Tue, 18 Apr 2023 21:38:22 +0200 Subject: [PATCH] health bar --- __pycache__/agent.cpython-39.pyc | Bin 1559 -> 3809 bytes __pycache__/archer_ork.cpython-39.pyc | Bin 0 -> 1002 bytes __pycache__/config.cpython-39.pyc | Bin 257 -> 257 bytes __pycache__/infantry_ork.cpython-39.pyc | Bin 0 -> 1015 bytes __pycache__/infantry_ork2.cpython-39.pyc | Bin 0 -> 1022 bytes __pycache__/map_add_ons.cpython-39.pyc | Bin 909 -> 930 bytes __pycache__/sauron.cpython-39.pyc | Bin 0 -> 973 bytes agent.py | 56 +++++++++++++++++------ main.py | 2 +- 9 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 __pycache__/archer_ork.cpython-39.pyc create mode 100644 __pycache__/infantry_ork.cpython-39.pyc create mode 100644 __pycache__/infantry_ork2.cpython-39.pyc create mode 100644 __pycache__/sauron.cpython-39.pyc diff --git a/__pycache__/agent.cpython-39.pyc b/__pycache__/agent.cpython-39.pyc index 1f547c61e2329036b641181a9bbb06ab878184cb..90d37a93428b3db40aad26ac2dda1d51c5ab430d 100644 GIT binary patch literal 3809 zcmZ`+&2Jn@6|d^A>G|~7@h;BhgDe|hXBE6sgv5u?l8|-0CSf*;jXZI~ z<*;6_F#LY~?~la0YmEJ!HfMhhHg~Yn_W=YGJYgMrS_$7_n@rfkdC7zmv4J(Pe`9wX z!M9n=>^OV+WCLa1?thrKIG!pGASWl_Pi zB&wo@r!VTFfoEAPi6)*Eu?({-%Dvl6mUHk~Abq_235@5=wEMQYMU<1Oe%pN!c zcjirrW*u9cO|7i7ie2DO?Hns-CG0C2Rt3FR)3A=W8?z;09TTmI-STV&dYZyMwm`X* z*|SybD_GUOk!k>M%-#aLBphvz_HPUKn8P;VUppr2YruW1HJpPD${H&RoHMvA=rr#L z(1R-ioZu?BSFo;Lp*ODy26t52lH+@i-dg|gNDQKG9DdjjMj$HL%R0FOt|Z^I zEG?-)%bw#JJ0T_Ue*ohzZGcle&KUe%vxzA#e?I~|Biu-$+@}CFYy>Qfzlz&)YZafS@ zaFTH-I_0~Y8||H7>t~y)oXK#M_QrCk+_W1eQODIxRob4&Uf9JeyGfj>S{h|Rcbtsn zesrk(K6WzdX3EjfO`@k!q8ij^$-l&v2e${J)! zSm`YQ#ywu)D^>;2v9Jvj0~=rfkNJ z8RglG=TFN#2e!io4syu-9=I8*(H&;VnXPwiYf4WJi zvZ~BIr~KjgX*9$~t15z##3BlY<6U_bXEQIZ07D#d-flAP?x)(3@)9_&xcml*l1mM^ zN%G$0K!jQJZQv;>VBDuaYlYlM&f-Tk<0d1x;3Vour%w6;n+&aC2DiN6Qx4p|%;Y*g z9&JMKeTQ(k!^=wFCr5c&#)r(~T*lhhxRKEgGcsk!Jk>H4tp_+{s=1!3)>DJbA9EQS zdVm`lt*2VJnBp4Kq2s^e^sTxqgP?56>?&pUfsE2L63TlJJlwdybI!f8PST|Z!Q-vX zPj-~^Ao%&Cxr^zgk3aoI8(o21tsH1g&pBLv3!Lv_<=(FFw|V2tDw47Yc9(oy{K(fX z);+BBF91^xe^~N~@w;xsXv#=1`-L?H9sWRy!Sg?vS_07+csd!qfxm`C9(VyYN0MNW zEhMPr5{C;1x?f+Q`!%GhTK5;HZ`SC|K|R+^?V2Q*e0?ghq;)rRG+dML_f6ZRif=V_ zI3$f$RX0sA&u85mR81nOi?%5#Uv+@c+oE13o3y9)p?`4-@%>}0l{uauGLU$Uz zeq06|tSVXt_gk0d*)4A)7feo9L)qPnWPtISs(L)?g`-R!nr&lYds~&#a3aT}hpIAv zNnV30T=YVk^71-1XgqO}D0>t=Qx$4zhNo(0wJn;utvsVzIiF49tmW$J=qyo51an)R zWlcD%r?c`E((O)F(~QRR4Uk67Bdqie0K;U~e-(${Ky}fKZt|w>o!i}9;LUeO%ZpWq ziMY@)se7JID7qjZV7QE<5O7IExX?lMEGp<+zOS#RMbOM3=Gv{V^0w}U!|?<$dJpR6 zlT_Zt_IFsR55UkL8dyh7bG~^LE|aGqQSR@}F@3Ly|Q zehN+~`Yqp#ct^JLBy|4BPY5G>XU?Ec zLzgv)Pe)GRAT;TG+rQ!0{i?t0|G+Q%p5~%(%it-mJ0A7ozMiDA3X0~wNvZOGWKQ}K L`8Xx@bpQK5jhaX> delta 433 zcmYjMO-sW-5Z%dc;#%4W5fMT^EJP&1izhEdkDl6#H$8+vmZr6_B}oOL=x+#%cvSy{ z2l1%Tn^(y}@a9#2fwK{67xvBD*_k(QJ{z}HGpN-n1kcZt6Ta)YIR+=c+GfYZ<@sA1 z=K1$rC-_>CA8=%cSn1jY>j$wYszG0zXMQ?K2APmu?U|n#kqAavB)imxri|z=IP!+> z$QSBecd&Ox?#TlIj6+~#s9~i0L?gapD#I}9Wrl??BR(xr50wS2mw=jY6g(bZh!}?_ zbxb6t0!zV~f^`HJl7`~V1=L$e3u8J7gG{uMr{&(jH47~H#U4SEclu_9{!JMWDqr=} zmQpF$nYc`sw3Jk`h2Y6U!=pXdkQ=7Ar&P=IQfX7qrz3Ho7EVfgc5ZzsW#Bn~_rh&GcN>2odRN{zG)vAh0D6}Z)$*Qz6UdOTP#9{3KiE^Vq zBsubL5XZg3C4YevGY%zLY2LoKJF~MpnsqA`o51+_`$SANLVlsx96E?ou=E*#AcDrk z!I{PMhFlP#3H_c3-6s)?v~QZD3)&?OV+r2mszDWf?jhYA48$o|S_klnLj`e|pn}~K zM-v)^>&iZpUf-8Ik#`PJFfP{@b;@d7jM0WX5>L2eS+IkSZUJNv=}wV&VXKoEF);c9x&Jf4ck_d@p= z-p}K)Hyws|&CxJuu;nQ{T4D(rOj6_s4Q2XY(<1;vOXuO$*REXbeoo08CGm&(&_HH zKbsHLxq^E@sfJK&D3#6mAQ9sjd71N1V>e#y66lqW}N^ literal 0 HcmV?d00001 diff --git a/__pycache__/config.cpython-39.pyc b/__pycache__/config.cpython-39.pyc index 7f7a30d2364d9df916430b32dde9af7435482780..4affd1a34718598bfe5ba965c36c2ff61f100a9e 100644 GIT binary patch delta 39 scmZo}0Irt_i~s-t delta 39 scmZofgc5ZzsW#BrQ94Jj=>6~uucHI+CbR2898g+hv&Ua%^yjMs5&oH(oo$S$^Y@YXrV;WBMS18Tjv=x~0D=gb z5Eo~b&`WYkgeLSGBJ_a7EY`kit}bYww2c*HlU|!D`q)QW9t^}WMAiZbh)V@=nV^E* z5LXi#Y}b|39S^*5E@wQIAACH-?Ldz40wVhXFsF0E$(+O_1_sCm48CZ&9viW_sLXLq zTQW-KEVo*qcy+G*V|H$Vt`+FOj{0Il&?Q#f1l3qx(;}YYD z`l1Ec6zd+Sw}rl>&=2|DC3f5aUWM3!-XyjQW(xyWc7+LQw>Z~5LE!e4-t}JR@LI%y zA9;sx|AR>s_`@{!I+JnOW~*bkwL}lvOj6_sZS6lV*b04KJ;9|trH9@qP&F?}cs7wy z9%QN>l`PJb8On4zfq613a?N#~GW$iovN(^%QO>!lUUpxf@P5}lQS^(VGi7{^L_SpJ zFo?oou8e5pg@MwO)Dv!_+k5%EcX{!SpI@Bu?weCp&80Wa2B{n=BlEo^aGi3Fs`RIF z;Q3JCeG=u$$%35wX#ze3Gi8OKWZ>sYFVIMWPeGzg;bBjBIC>T&16e^=8VFke--+CZ z>CZ#|=~chW-(H-*Iyt+%I+fl*zk5}-p);Au4M@fP*#iJVP1>YQW>XuO$u@wuXoEV; zfiE^Q>GgK`sdjE%>cLsSvN6~Wmf4(-QZY@CJDh)ky^BN;v#i(2e2+V%Jx literal 0 HcmV?d00001 diff --git a/__pycache__/infantry_ork2.cpython-39.pyc b/__pycache__/infantry_ork2.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..216bcbca1a044723442866bea24cac253f0b12a6 GIT binary patch literal 1022 zcmY*YO>fgc5ZzsW#Bt)Z4WTV?0VE`X)K@k2K zf+obpCrfCLoDiW2{fY=ZATf)zubQh1+9ge63E8C6q>4WAk**I0;s_#Z00hLPg1Agj z!LEp_2@RI(%4v`K-YAz-p2`m`A9ry*kYl`n$bJCK=!|eOBQc4A0kS@WH(IX8Mr_VY zGn~^FjFK74tp+Gwo@xJ>om-$Q1y*5&Gp`A{z=|87Hs@Qgc0;fQR;=gx{1)g6L^WhZ zmIK_GHvsEm)dTfyp)V-(L%zMhjyu515IfMD#CE}KVZh9;FhT7W`?@0te155Od2j#V zQpABDc?V#?-Z%>UL7IE5{qZPlvgHwcwnP(}Oj6_sP3=D~*b)wuEL%8rSLvZQ3{=HS z5}u7^ln0rrMQbK!EoFu>os2VOj;BSkxk^-Kw^*Po&ZAM3bFRw0_UmKbZM(;ceo=I) zjL(tC2g)1-Q8>tz5e>aCPiD#GaU#9FZu?^02{3soYmkctvWEbKnzT;q%%(Ol zlhuGX=q9bQD!j3oNiVl=T-g0FG_|5Eo!m9G@$vA literal 0 HcmV?d00001 diff --git a/__pycache__/map_add_ons.cpython-39.pyc b/__pycache__/map_add_ons.cpython-39.pyc index 8a55bcc0037c521037218e72d0adb518a1f36a30..2405d4310c7cc3c989fd9eee678015d30f250695 100644 GIT binary patch delta 380 zcmY+AJx;?g7=~>pL`F(7dS1QYC>Ac}ArHA-9Lgv}BMKny4sNZ1fJU|>QV zA}3(s4!jO5we-DupU>Zq>?ixh<{9T6!TJ6<5y>-ud-wn-sz^!{DM<+jWebLk(U|2< zX?3>JcSg@BQLJ%dQ0gk<-+7G#_D2oS!Mll|y`C6?cDp_FhJy8aV$_)3KG;VD1w+*( zNjZRbF*Fi?OEgb~*;6dk{-D<@XYej!hUKL6M(4F_dKDiIW|6J(!OyBHt?%Tr$?Nu= ze)0((Cqu|9kxBc=PNM)|A?jlYp%#tWFLpE4X_;)xygf6Hu3aPt>vpqVEDNc>PWoDm Z?b@+*u1lTs)kfS``2_{lCd8o*`voO$Qf&YL delta 359 zcmY*VJ5B>J6!d4a_I|u1AqmAsR5YA`21TMEJtv4F99CF_NSlSq5+|TQdjT&UqNkvy zrw^y#28=D5SbF1`(Ttw#SMe;=QmK^S{C=M3-ivyF`hc+1k_EBE5aStZxQR^9#nyYQ zW0Y9dh!NC6TK>@ZnUW%h#R4v!5_M3hwg?H2i;EmK}>)7cqgNQNP zV*sHsP1_%KHTHI0?!&ab;N@Jx+{M?M`}vsGu}$( diff --git a/__pycache__/sauron.cpython-39.pyc b/__pycache__/sauron.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6220f82b11b5d7e2320024ff9a6b2a6678dc6f73 GIT binary patch literal 973 zcmYjQ%Wl&^6rCAA;y6yzhCmAoR9F!tT8Sk>RS~MHKuJ+kHm1_ZcqXom6Nj+_q{@zd zNV4Q_5X;%ZCcnUndu=K*(mivI@5^&N4w_Au!20?7K)g2y`GsPAnII0q@<#xI2$~Wf zcb3v~a!iCF%xfY{NfMSA-wfXrbU?b+3ZhBBOErBQB3)k$#35MT0g%L}g7{2O!LEsK z2m{hhZ4ZK}%ElqKzgfu9UV`O60OoW~IGK}#B)|aKkiiq9FcT}W7qvP1j3uLF&I+dk zir44HKjsz==thYiWHc8Wf-bRQ3)JRf3vye6EwN&|Fc-H#H^97zl~GOL%|!>WEvg=< zZwqrtp&#-)OYFD}ybiVvy-DJh%oP@Rc7zRTr+lxwg21_J{j1L2{*_2%7zg`#IfA{( zIO?+1A)Hs?>AOr(~>|W-imAs^JVa5w-xn6SWK5pZnpni$RaSJv)7M^!ohbSOrf8 zy^EVc&eR43VP^gifKZ#ZX`8v!1!l7i;2pY2J?6m^m)Z2HRb9iqn`!i+Ka6G!gN4z! zoR2awO_6(?f0_nqaL|4ptK!k<6#^r4+EPB7`;|u V7bTX_&hx7A0p5ZfKe|I5_7_hK=fD5} literal 0 HcmV?d00001 diff --git a/agent.py b/agent.py index f26c158..7ad3f8a 100644 --- a/agent.py +++ b/agent.py @@ -29,9 +29,15 @@ class Agent(pygame.sprite.Sprite): self.rect.y = self.y self.level = 1 - self.health = 10000*self.level + + self.current_health = 500 + self.max_health = 1000 + self.health_bar_length = 300 + self.health_ratio = self.max_health/self.health_bar_length + def update(self): + self.health_bar() self.movement() self.collide_mob() @@ -46,13 +52,13 @@ class Agent(pygame.sprite.Sprite): def movement(self): keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and self.rect.x > 0: - self.x_change -= TILE_SIZE/2 + self.x_change -= TILE_SIZE if keys[pygame.K_RIGHT] and self.rect.x < 832 - 64: - self.x_change += TILE_SIZE/2 + self.x_change += TILE_SIZE if keys[pygame.K_UP] and self.rect.y > 0: - self.y_change -= TILE_SIZE/2 - if keys[pygame.K_DOWN] and self.rect.y < 832 - 64: - self.y_change += TILE_SIZE/2 + self.y_change -= TILE_SIZE + if keys[pygame.K_DOWN] and self.rect.y < 768 - 64: + self.y_change += TILE_SIZE def collide_blocks(self, direction): if direction == "x": @@ -87,37 +93,37 @@ class Agent(pygame.sprite.Sprite): if hits_archer_ork: - if self.game.archer_ork.level > self.level or self.game.archer_ork.damage > self.health: + if self.game.archer_ork.level > self.level or self.game.archer_ork.damage > self.current_health: self.kill() self.game.new() else: self.game.archer_ork.kill() - self.health=self.health-self.game.archer_ork.damage + self.get_damage(self.game.archer_ork.damage) self.level+=self.level #zmniejszenie życia o damage moba #level up if hits_infantry_ork: - if self.game.infantry_ork.level > self.level or self.game.infantry_ork.damage > self.health: + if self.game.infantry_ork.level > self.level or self.game.infantry_ork.damage > self.current_health: self.kill() self.game.new() else: self.game.infantry_ork.kill() - self.health=self.health-self.game.infantry_ork.damage + self.get_damage(self.game.infantry_ork.damage) self.level+=self.level #zmniejszenie życia o damage moba #level up if hits_infantry_ork2: - if self.game.infantry_ork2.level > self.level or self.game.infantry_ork2.damage > self.health: + if self.game.infantry_ork2.level > self.level or self.game.infantry_ork2.damage > self.current_health: self.kill() self.game.new() else: self.game.infantry_ork2.kill() - self.health=self.health-self.game.infantry_ork2.damage + self.get_damage(self.game.infantry_ork2.damage) self.level+=self.level #zmniejszenie życia o damage moba #level up if hits_sauron: - if self.game.sauron.level > self.level or self.game.sauron.damage > self.health: + if self.game.sauron.level > self.level or self.game.sauron.damage > self.current_health: self.kill() self.game.new() else: @@ -127,6 +133,30 @@ class Agent(pygame.sprite.Sprite): #zmniejszenie życia o damage moba #level up + + def get_damage(self,amount): + if self.current_health > 0: + self.current_health -= amount + if self.current_health <= 0: + self.current_health = 0 + + #zmienic potem na smierc oraz później trzeba będzie tutaj ująć wszystkie statystyki + #i ze statystyk obliczyć ile dmg dostanie agent + + def get_health(self, amount): + if self.current_health < self.max_health: + self.current_health += amount + if self.current_health >= self.max_health: + self.current_health = self.max_health + + def health_bar(self): + pygame.draw.rect(self.game.SCREEN, (255,0,0), (10,780,self.health_bar_length,25)) + pygame.draw.rect(self.game.SCREEN, (0,255,0), (10,780,self.current_health/self.health_ratio,25)) + pygame.draw.rect(self.game.SCREEN, (255,255,255), (10,780,self.health_bar_length, 25),2) + + + + # brakuje levelowania postaci gdy zabije moba, jest zrobione tylko, że jeśli za wysoki poziom, lub brak życia to ginie i od nowa zaczyna # brakuje dodania miejsca w którym agent się leczy diff --git a/main.py b/main.py index ec4a462..03c06e6 100644 --- a/main.py +++ b/main.py @@ -54,7 +54,7 @@ class Game: def map(self): # tworzenie mapy self.clock.tick(FRAMERATE) for x in range(0, WIDTH, TILE_SIZE): - for y in range(0, HEIGHT, TILE_SIZE): + for y in range(0, 768, TILE_SIZE): self.SCREEN.blit(self.BACKGROUND,(x,y)) self.rect = pygame.Rect(x, y, TILE_SIZE, TILE_SIZE) pygame.draw.rect(self.SCREEN, BLACK, self.rect, 1)