From 8b4d27bc95be9c8f700fa945da0cc91b33d99dbb Mon Sep 17 00:00:00 2001 From: Skullheadx <704277@pdsb.net> Date: Mon, 11 Jul 2022 20:41:58 -0400 Subject: [PATCH] particles --- Actors.py | 5 ++++- Assets/enemy/Goon_Run.gif | Bin 0 -> 2964 bytes Assets/enemy/Pirate_Goon.png | Bin 0 -> 1408 bytes Assets/skeleton/skele_ATTAK.gif | Bin 0 -> 2041 bytes Enemy.py | 30 +++++++++++++++--------------- Game.py | 7 +++++++ Levels/Level5.txt | 6 +++--- Particle.py | 28 ++++++++++++++++++++++++++++ Player.py | 17 ++++++++++++++++- Setup.py | 4 ++++ main.py | 1 + 11 files changed, 78 insertions(+), 20 deletions(-) create mode 100644 Assets/enemy/Goon_Run.gif create mode 100644 Assets/enemy/Pirate_Goon.png create mode 100644 Assets/skeleton/skele_ATTAK.gif create mode 100644 Particle.py diff --git a/Actors.py b/Actors.py index 27634b0..49dd46a 100644 --- a/Actors.py +++ b/Actors.py @@ -2,6 +2,7 @@ from datetime import datetime, timedelta import threading from Setup import * +from Particle import Dust # from PhysicsBody import PhysicsBody from Block import Block @@ -19,6 +20,7 @@ class Actor: terminal_velocity = 15 invincibility_time = 150 + def __init__(self, pos, collision_layer, collision_mask): self.position = pg.Vector2(pos) self.velocity = pg.Vector2(0, 0) @@ -39,7 +41,7 @@ class Actor: self.jumping = False self.coyote_time = datetime.utcnow() self.hold_jump = datetime.utcnow() - self.stun_time = 750 + self.stun_time = 1000 self.attacked = False self.invincibility_frames = 0 @@ -47,6 +49,7 @@ class Actor: if self.jumping: if self.on_ground: self.jumping = False + Dust(pg.Vector2(self.get_collision_rect().midbottom) + pg.Vector2(-16,-15), 32, 0) self.stun_time -= delta self.stun_time = max(self.stun_time, 0) diff --git a/Assets/enemy/Goon_Run.gif b/Assets/enemy/Goon_Run.gif new file mode 100644 index 0000000000000000000000000000000000000000..3377434995c1189aeb6cab3d1c549da467c3ca6b GIT binary patch literal 2964 zcmZ?wbh9u|bYO5`C}&_${Lk&@8WQa67~pE8XTZ$Jz`&sRlZBIufq_AXfq{Vmq^yO3 zfx*+WUqi#=+_`g~K79&}j0_D4vC`E(FuS5<(z<0Gx#6izMYU5-p4j>6<0B{g$oS|c zB?S{9ZUI*fn>9v8NeT)Mc9D^Gfgl61Vb=c&3VkV=^DA;QsOy(q!K;n5WDrYn`)65J8X8ndhu_}dwU53X%I|0r`Nn_J7#?8u~f4jLjI zjy7(~@BgmW<>sz!Eos!^>1t_f?a(Oa;_2z--whDQ#}%RhqbSPwLW5C0h<0tk_t6cEySPDmy#Q?&IcLG=t&D zzMHporZqpF{y>|XUqC?cjo>rwm#^Nwd9U&D)$7k+RlooE{H0OFXNE(gQ!6`%;G^h_ zgNODvFms1RcnHqtX#e$yV~;{ol53Z;!M4jMCLVF`R&jA-GGV{ea;jD*?ofzgk=ogb zX2A((Ru-%J3yU`Wvk9DVC_vb?f0{%@(8`WR;aOT!9YUKfua4N9b@$ZP)z{Z29PX0! z-u9+L01LZ@zzaCn$tzJmNWccVUGE zPeI3$b)L0MOSh;U`gvrV&;u5yg$_J>))dTG<2G50d#lYGHiLH`ci!<0Gx$`+$sNbh zno?d|!CkJ}s@pn&i=nfiyhnLLp!Q7VqWb3Y6s4JcvzJcJn$N3LyJWfAgt>{Ulv9?N z%u!lduzJQ$W%BSl|h=}rk`tn{pu7sS_zSco^6j zgc&r6h>fD!DdDM2Cy_D|axPL*Fp0Dabg+xWmWe=OtS1x{`j$w{NngpNp~aDXlZ#n! zww~`B^WS0zW-TmdkmGBXYO1hNtMp+py2-2}#L=o`xFSyc!D@3xz3%+`pB~95uU_97 z*L0BM@YAScQ_mg9e$K;N6j9lj%+XQO)ZEd*mmJ>9(VtNeF==W6&kRF;fmyS?&F9UZ zR=8MTG-yjyU%EeUbzyg zd{tEZx{~<4+jkg59zRstFZ`6@`OCeR9_|%-cU|y{pq3&zNtx2XdjKtkX0hq4-j{Kk ziz#RFCIf-(b6>Y4@QW=F?Xy1oq0~Z-uUR%}WmVK-r>s|<4Q^Xkx-cyaP+?1$QgKjh zxqo(<^+&ybdq{RfWCI(lFh!^y)(j$O!y zgz1HgnU}9#zj;9Pl8~6vjr$L8KT#8X^X9bDTT$`%4C3EDe-ZihMd_OGABI1SOP2M? zZ7uwxq|viMg@w{Ub+E%yv^&`oF51a0A6P8+@GbUyQc=NI$9$}ib?!g6AGfO$xZ>(s zIk>C2I|^0nbldtmdAKW8+H|HXm2mU$Fib6NFLGO1npK4Iv=45Ol4@1cs*7G& zsC=|dj=714(?P*gNX=imZ^eP2r5)uWF-#4bn`K?5zE!)UqPcK+i;yBxRZDz%jhx6w zk*00(W$}n%!<`r8vszTEIhHWYb4jnnR z?}V_J($ST>_FvGtvYla*_)P}!`*-e&KEA7TSOipJAG~(=;Q6OQpM{VM?9s3zIqa+f D3WAB$ literal 0 HcmV?d00001 diff --git a/Assets/enemy/Pirate_Goon.png b/Assets/enemy/Pirate_Goon.png new file mode 100644 index 0000000000000000000000000000000000000000..6211e081719c443a7050cc6d7c4185442a3c8439 GIT binary patch literal 1408 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEk44ofy`glX=O&z-r~` z;uumf=k3gV59xH7YdUpJEe3r&#K8k z)i(7umWI?O7gk=igyTAN>_Rk+DCI)}{=qS)Qi_wMU(VsJCQh!GIpSRv5&?>gDmdKE=vUM=T%J7)ZDnNU$(i$n>>z{5XH{RnDYcck@=>emm{Z z!wn*Q?Mr8FtXp~e>7?6t^}>&_26>0{GaP#VZ+^kYorjBV$DMrmXk~lm0vkP*D`E@6 z(kK6Ed7gjAhohc>gRMCuFHf&Rbb;6E&7N7MW}e-_&P6XK$1luP4yb05ulX_a&6A5S zwr5m4+}iRwJ~p12VbAw#Gn?ERUrpAQWp7w}mUm0RYOoEj-U?aFJsxyS%!wyd{9wv+ z#s!Dcjt4#AWGH<8|82#s6>1Jg%)=*f^&(t37Yf#1z@sWuHQtijwNo{eI8qPlmqwwakf zi8qU@TPbHZKR(aD=ZoPJxv0fiq6&UKJzrF(7|%c7fAIQzx8&sHV;gOq<0{X@U3Kye z5p>8jC`?IO(tlEQ{?x7a<4$J2vRUv*X-5A;ujk^++qgE_UfaUO!qnJO7M{LbrAtXC zH8t$%&u`qxv)*#7+{?#&V>6clPxGWtMFu>=v!Y_!e>nVBSfJG)^j-V?sr{|D1ufG&g0`l`Lk;s zL|jdMPDx&!;um-HwtkPH`|GHnNxzPKyv+G_hT=Y5G1rY&V%>ik8B9%06C$r!+1c$| zJgs(SfG+ElzzM5AGZcJ2#>H?T!{pRCW(N}~-bx#}SJ{kPW4y%{Y}+PR|L?2zysA$} zr|e4=o&Bu9;!H?r=wDujw9S$eJy;fLELyUpB}*kEh&3zw^~Q?aX&?XpvEBSHTH$F` z#pz@I{{EkB&d+9ScwSi`!#*u_rF&Ca>Vywx%Qt7bT9kjA^yF(5Yx6;d?xRh2@5WA< zHZ4fJv5Vp5r+7~_L575ynmK|jjB1lPn-l{2StrzaFgqy2M-o(i4Wvb zbJ(WA(2!x0CC0*d^ypEAB$aN3E+v=1JK-rZD>wokeXU{@0!efnP2yDg^8LHF&gn%f zR&c0Iep$CqNhX4kA)&hZ_8dQ!?xRf8QW+c8h^ozd{#ol~2+NM$+m0}N{N(PHu&Yjm z*F(#v{#Tuo{rceYxz0aF$>}d2VN6D|11s@pDUtIX5{UobgjQ zTIpmZc1t5fC8$_2p<8>VxxH7~3xDl*b%UBSIUhU;NXZ0xbxgGCxGPi5xG2_DQb zi>{b=KhVnF%Bspf{`a@PdIkmt397HEZRQotdoH>9YS+Vu4<}su=zs0nrE{hG*7-%5 zACGSk3tN}{uW-t%mh@_x-Q= z?I-NGz02hPas|<&+7{Ve%Fz=8j_sWEJN@FVdQ I&MBb@0L%E7LI3~& literal 0 HcmV?d00001 diff --git a/Assets/skeleton/skele_ATTAK.gif b/Assets/skeleton/skele_ATTAK.gif new file mode 100644 index 0000000000000000000000000000000000000000..21f3bf3777ed55ecf492477aa0adcc711de0d5c8 GIT binary patch literal 2041 zcmZ?wbhEHbG-5DfXpvyh*Vp%PcMtUO2@4C0ii(Pjjm^!?&CAQn&(AL?C@3r}EGjB0 zE-o%9DJd;2Eh{T4FE6jGtgNlAt*fh>K7IP~<;%Bk-+t`avHv)L;(u;G*N|Xm#{gF& zJp*P&1_lPje|$dvJ_^C1!NHLVPLAG=42nNlIJp?)8FUyJ7#KhfV_-e}K)o*|b6&=( zbvdv173iEV$-Q5(?tRVs|JL0Xm~wdAk6sO&5yHuMJ}t|0%A&q&nM)_lRobo2^<#@n zx1RVbiM?w%w!h}zI?J{GR({@hqbMN`My9ZuS|wI-M&{BMC%%l9>i&K{7S=SeycyhS z!osP^!a_pg+_U8;gb51>39zkL;kin1={l7S4vPf%`PsHAZ?|79z|EGvEpj#gvJD3g z3J4!Neqz7sS>H2h+poFaxOp{g`TcvB3ZGOzdV1yMtAtxO&)n8g#OAM)WcbUI(eb;p zrXWZ2yP}evDYviqTL)~2+a~&OTdc+HmAQP}O=abkxp__8-1!~iE_?!fY;4J)$^ybu zv!=@n3kb{(i>^`$rG*t{HhLGBG@D&hkCQ<8Tm9pL8QvwgqN z*_o$zE)Y1Pdi2Wvbnah z`A(_vK-8uXt;G!6yHx~^sh;Xk;1IdseetPNM1+3GqoofDZp;>s7j=p+uH$A4Dh?5s zujT9Pif<`a5)crc=-KTwRe8E_dGS1D;hD2seKdrGJ3J@HsS62ou&uL;YtaxCK7rxyxp&vR#qwJ6iK~+Y|2Unq+wvMpmXq zO)*hXXGX@3PPI&BaTbLM!Q;*2v@^X2DGT%a^Jd9L^}Rnb**d)KJcifvNq5l!mZ zwt32)&HE>BJ*eEX>xg{!@gs|lte$$}{PJ^iu3R{HY4Nq|dv4y^fA8L!hY!>qEqLZ?23UfxxGKJ)#%k8j>Se)izuCq1lD`48ETZwsmFbFVIrPh z?k?UISg6coR*@jq)|A1>qTOIpDB3?^0%Nb^yuP3=Mn={t>eEa!RGC;=x%pOP#jfDv zTOhx~zOX}Mn}F&{gMz&pLIMJ8Y+1^6>O#W8LPBiZr?bRWZl1p^bnX6)TgUDm=Vv?N zbzAAxo#RhlKGM7_@J?RngYuj6XMU>w`lIpXFLQ>I!a-3sem0#I1&Mpwc;ua?{76(d z(ju%G71Ck&*s5OccOy@vVUmaQKNhoX9E{lF{ylQIyk|OJlDoLO=6%|~pL^!=Njwqk zHkUP8=@KkLRYOftxT9!eb6#h)c)KzqqfWW0*hFz9CPo&fV$EpzS>jU`YBc32PnoIR&>Qs~lUmE+ggZr(b7lI`xj zC0B(`u3vcI`HRQ*W(&z*6n}T~_z8h8FC)G$5&C-hmu9z{-vi5{r(2FXYX~GBO5l?= zS`s$lk#*zWv=+kYA4d%orPJl)5b~8puk-Ay_a`p>(wXXY`u5{>Cv3egWyHL;bGEn&3kYu7RlFWl7qwRxZxi4?enNS-!#4iVEf?(t1cW!2v 0: self.display = self.run_frames[math.floor(frame)] - self.display_offsets["enemy"] = pg.Vector2(-40, -35) + self.display_offsets["enemy"] = pg.Vector2(-60, -35) elif self.velocity.x <= 0: self.display = pg.transform.flip(self.run_frames[math.floor(frame)], True, False) - self.display_offsets["enemy"] = pg.Vector2(-55, -35) - + self.display_offsets["enemy"] = pg.Vector2(-60, -35) + if frame % 4 == 0 and self.on_ground: + Dust(pg.Vector2(self.get_collision_rect().midbottom) + pg.Vector2(math.copysign(1, self.velocity.x) * -self.width/2,-15), 16, self.direction) self.current_frame = (self.current_frame + 0.5) % self.run_gif.n_frames @@ -78,7 +78,7 @@ class Enemy(Actor): def draw(self, surf): self.weapon.draw(surf) - # super(Enemy, self).draw(surf) + super(Enemy, self).draw(surf) surf.blit(self.display, get_display_rect(self.get_collision_rect()).topleft + self.display_offsets["enemy"]) # for b in self.buffer: diff --git a/Game.py b/Game.py index 3eaee72..a5ff4f3 100644 --- a/Game.py +++ b/Game.py @@ -67,6 +67,9 @@ class Game: self.collision_layer["enemy"].remove(enemy) self.collision_layer["body"].add(self.enemies[i]) + for particle in particles: + particle.update(delta) + self.world.update(delta) self.fade = self.Transition.fade @@ -90,6 +93,10 @@ class Game: pass; self.world.draw(surf) + + for particle in particles: + particle.draw(surf) + for enemy in self.enemies: enemy.draw(surf) diff --git a/Levels/Level5.txt b/Levels/Level5.txt index 0e324a7..1695f1c 100644 --- a/Levels/Level5.txt +++ b/Levels/Level5.txt @@ -1,6 +1,6 @@ -none|none|none|none|none|none|none|none|none|none|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world -1250.0,750.0|1200.0,750.0|1350.0,750.0|1350.0,700.0|1450.0,750.0|1450.0,700.0|1450.0,650.0|1450.0,600.0|1450.0,550.0|1250.0,700.0|50.0,800.0|100.0,800.0|150.0,800.0|200.0,800.0|250.0,800.0|300.0,800.0|350.0,800.0|400.0,800.0|450.0,800.0|500.0,800.0|550.0,800.0|600.0,800.0|650.0,800.0|700.0,800.0|750.0,800.0|800.0,800.0|850.0,800.0|900.0,800.0|950.0,800.0|1000.0,800.0|1050.0,800.0|1100.0,800.0|1150.0,800.0|1200.0,800.0|1250.0,800.0|1300.0,800.0|1350.0,800.0|1400.0,800.0|1450.0,800.0|1500.0,800.0|1550.0,800.0|1600.0,800.0|1650.0,800.0|1700.0,800.0|1750.0,800.0|1800.0,800.0|1850.0,800.0|1900.0,800.0|1950.0,800.0|2000.0,800.0|2050.0,800.0|2100.0,800.0|2150.0,850.0|2100.0,850.0|2050.0,850.0|2000.0,850.0|1950.0,850.0|1900.0,850.0|1850.0,850.0|1800.0,850.0|1750.0,850.0|1700.0,850.0|1650.0,850.0|1600.0,850.0|1550.0,850.0|1500.0,850.0|1450.0,850.0|1400.0,850.0|1350.0,850.0|1300.0,850.0|1250.0,850.0|1200.0,850.0|1150.0,850.0|1100.0,850.0|1050.0,850.0|1000.0,850.0|950.0,850.0|900.0,850.0|850.0,850.0|800.0,850.0|750.0,850.0|700.0,850.0|650.0,850.0|600.0,850.0|550.0,850.0|500.0,850.0|450.0,850.0|400.0,850.0|350.0,850.0|300.0,850.0|250.0,850.0|200.0,850.0|150.0,850.0|100.0,850.0|50.0,850.0|0.0,850.0|0.0,800.0|0.0,750.0|0.0,700.0|0.0,650.0|0.0,600.0|0.0,550.0|0.0,400.0|0.0,350.0|0.0,300.0|0.0,250.0|0.0,200.0|0.0,150.0|0.0,100.0|0.0,50.0|0.0,0.0|2200.0,850.0|2200.0,800.0|2200.0,750.0|2200.0,700.0|2200.0,650.0|2200.0,600.0|2150.0,400.0|2200.0,200.0|2200.0,150.0|2200.0,100.0|2200.0,50.0|2200.0,0.0|2150.0,0.0|2150.0,50.0|2150.0,100.0|2150.0,150.0|2150.0,200.0|2150.0,250.0|2150.0,350.0|2150.0,300.0|2200.0,250.0|2200.0,300.0|2200.0,350.0|2200.0,400.0|2200.0,550.0|2150.0,550.0|2150.0,600.0|2150.0,650.0|2150.0,700.0|2150.0,750.0|2150.0,800.0|300.0,600.0|0.0,450.0|2200.0,450.0|2150.0,450.0|2150.0,500.0|2200.0,500.0|0.0,500.0|1900.0,550.0|1900.0,600.0|1900.0,650.0|1900.0,700.0|1900.0,750.0|2050.0,700.0 -GOLDCOIN|BRONZECOIN|PEDESTAL|INTERDIMENSIONALPOWDER|PILLAR_|PILLAR_|PILLAR_|PILLAR_|PILLAR_|SILVERCOIN|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLAYER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|ENEMY +none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world +1250.0,750.0|1200.0,750.0|1350.0,750.0|1350.0,700.0|1450.0,750.0|1450.0,700.0|1450.0,650.0|1450.0,600.0|1450.0,550.0|1250.0,700.0|1900.0,550.0|1900.0,600.0|1900.0,650.0|1900.0,700.0|1900.0,750.0|50.0,800.0|100.0,800.0|150.0,800.0|200.0,800.0|250.0,800.0|300.0,800.0|350.0,800.0|400.0,800.0|450.0,800.0|500.0,800.0|550.0,800.0|600.0,800.0|650.0,800.0|700.0,800.0|750.0,800.0|800.0,800.0|850.0,800.0|900.0,800.0|950.0,800.0|1000.0,800.0|1050.0,800.0|1100.0,800.0|1150.0,800.0|1200.0,800.0|1250.0,800.0|1300.0,800.0|1350.0,800.0|1400.0,800.0|1450.0,800.0|1500.0,800.0|1550.0,800.0|1600.0,800.0|1650.0,800.0|1700.0,800.0|1750.0,800.0|1800.0,800.0|1850.0,800.0|1900.0,800.0|1950.0,800.0|2000.0,800.0|2050.0,800.0|2100.0,800.0|2150.0,850.0|2100.0,850.0|2050.0,850.0|2000.0,850.0|1950.0,850.0|1900.0,850.0|1850.0,850.0|1800.0,850.0|1750.0,850.0|1700.0,850.0|1650.0,850.0|1600.0,850.0|1550.0,850.0|1500.0,850.0|1450.0,850.0|1400.0,850.0|1350.0,850.0|1300.0,850.0|1250.0,850.0|1200.0,850.0|1150.0,850.0|1100.0,850.0|1050.0,850.0|1000.0,850.0|950.0,850.0|900.0,850.0|850.0,850.0|800.0,850.0|750.0,850.0|700.0,850.0|650.0,850.0|600.0,850.0|550.0,850.0|500.0,850.0|450.0,850.0|400.0,850.0|350.0,850.0|300.0,850.0|250.0,850.0|200.0,850.0|150.0,850.0|100.0,850.0|50.0,850.0|0.0,850.0|0.0,800.0|0.0,750.0|0.0,700.0|0.0,650.0|0.0,600.0|0.0,550.0|0.0,400.0|0.0,350.0|0.0,300.0|0.0,250.0|0.0,200.0|0.0,150.0|0.0,100.0|0.0,50.0|0.0,0.0|2200.0,850.0|2200.0,800.0|2200.0,750.0|2200.0,700.0|2200.0,650.0|2200.0,600.0|2150.0,400.0|2200.0,200.0|2200.0,150.0|2200.0,100.0|2200.0,50.0|2200.0,0.0|2150.0,0.0|2150.0,50.0|2150.0,100.0|2150.0,150.0|2150.0,200.0|2150.0,250.0|2150.0,350.0|2150.0,300.0|2200.0,250.0|2200.0,300.0|2200.0,350.0|2200.0,400.0|2200.0,550.0|2150.0,550.0|2150.0,600.0|2150.0,650.0|2150.0,700.0|2150.0,750.0|2150.0,800.0|300.0,600.0|0.0,450.0|2200.0,450.0|2150.0,450.0|2150.0,500.0|2200.0,500.0|0.0,500.0|2050.0,700.0 +GOLDCOIN|BRONZECOIN|PEDESTAL|INTERDIMENSIONALPOWDER|PILLAR_|PILLAR_|PILLAR_|PILLAR_|PILLAR_|SILVERCOIN|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLAYER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|PLACEHOLDER|ENEMY diff --git a/Particle.py b/Particle.py new file mode 100644 index 0000000..ba16287 --- /dev/null +++ b/Particle.py @@ -0,0 +1,28 @@ +import Setup +from Setup import * + +class Dust: + dust_gif = Image.open("Assets/player/DUSTCLOUD.gif") + dust_frames = [] + for i in range(dust_gif.n_frames): + dust_frames.append(pil_to_game(get_gif_frame(dust_gif, i))) + + def __init__(self, pos, dust_size, direction): + self.position = pg.Vector2(pos) + self.dust_size = dust_size + self.velocity = pg.Vector2(0,0) + self.direction = -direction + self.current_frame = 0 + self.display = self.dust_frames[math.floor(self.current_frame)] + Setup.particles.append(self) + + def update(self, delta): + self.position += self.velocity + self.velocity = pg.Vector2(self.direction * delta / 64, -self.current_frame * delta / 256) + self.display = pg.transform.scale(self.dust_frames[math.floor(self.current_frame)], (self.dust_size, self.dust_size)) + self.current_frame = (self.current_frame + 0.25) + if math.floor(self.current_frame) >= self.dust_gif.n_frames-1: + del Setup.particles[Setup.particles.index(self)] + + def draw(self, surf): + surf.blit(self.display, get_display_point(self.position)) diff --git a/Player.py b/Player.py index d945aaf..a104df1 100644 --- a/Player.py +++ b/Player.py @@ -7,9 +7,11 @@ from Actors import Actor from datetime import datetime, timedelta from Potion import Potion from Weapon import Sword +from Particle import Dust class Player(Actor): + friction = 0.2 scale = 100 factor = 640 / scale crop = pg.Rect(179, 169, 170, 401) @@ -81,6 +83,12 @@ class Player(Actor): # print('a') def update(self, delta): + + if self.attacked: + self.friction = 0.9 + else: + self.friction = 0.2 + super().update(delta) # Get and handle input @@ -155,6 +163,9 @@ class Player(Actor): self.display = pg.transform.flip(self.run_frames[math.floor(frame)], True, False) self.display_offsets["player"] = pg.Vector2(-65, -35) + if frame % 2 == 0 and self.on_ground: + Dust(pg.Vector2(self.get_collision_rect().midbottom) + pg.Vector2(math.copysign(1, self.velocity.x) * -self.width/2,-15), 16, self.direction) + self.current_frame = (self.current_frame + 0.5) % self.run_gif.n_frames if self.state == "RUN": @@ -255,7 +266,11 @@ class Player(Actor): surf.blit(pg.transform.flip(self.weapon.img, False, True), get_display_rect(self.get_collision_rect()).topleft + pg.Vector2(0, 55) + self.display_offsets["weapon"]) - surf.blit(self.display, get_display_rect(self.get_collision_rect()).topleft + self.display_offsets["player"]) + + a = get_display_rect(self.get_collision_rect()) + b = a.topleft + self.display_offsets["player"] + if pg.Rect(b,a.size).colliderect(screen_rect): + surf.blit(self.display, b) # # for b in self.buffer: # pg.draw.rect(surf,(0,0,255),get_display_rect(b),3) diff --git a/Setup.py b/Setup.py index a0bc8d8..c6ed120 100644 --- a/Setup.py +++ b/Setup.py @@ -13,6 +13,8 @@ SCREEN_WIDTH, SCREEN_HEIGHT = 1080, 640 dimensions = (SCREEN_WIDTH, SCREEN_HEIGHT) center = pg.Vector2(dimensions) / 2 +screen_rect = pg.Rect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT) + pg.display.set_caption("Jam") # icon = pg.transform.scale(pg.image.load("logo.ico"), (32, 32)) # pg.display.set_icon(icon) @@ -59,3 +61,5 @@ def pil_to_game(img): def get_gif_frame(img, frame): img.seek(frame) return img.convert(FORMAT) + +particles = [] diff --git a/main.py b/main.py index eda163a..eb0597e 100644 --- a/main.py +++ b/main.py @@ -51,5 +51,6 @@ while is_running: pg.display.update() delta = clock.tick(fps) + print(clock.get_fps()) pg.quit() -- 2.54.0