From cfd4c1bf863b9b816919f0ddd75f23afeb552a9b Mon Sep 17 00:00:00 2001 From: Stephen Deaton Date: Tue, 16 Jul 2024 13:58:02 -0400 Subject: [PATCH] added shooting --- PyGame/practice/gameprac/hybrid.py | 30 +++++++++++++++++++++++++++--- PyGame/practice/gameprac/img/bullet.png | Bin 0 -> 3716 bytes 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 PyGame/practice/gameprac/img/bullet.png diff --git a/PyGame/practice/gameprac/hybrid.py b/PyGame/practice/gameprac/hybrid.py index 8714795..6840030 100644 --- a/PyGame/practice/gameprac/hybrid.py +++ b/PyGame/practice/gameprac/hybrid.py @@ -26,20 +26,43 @@ class Spaceship(pygame.sprite.Sprite): self.rect.center = [x,y] self.health_start = health self.health_remaining = health + self.last_shot = pygame.time.get_ticks() def update(self): speed = 8 + cooldown = 500 # millisconds key = pygame.key.get_pressed() if key[pygame.K_a] and self.rect.left > 0: # Why zero not width tried width would not move self.rect.x -= speed # why speed not pixal + or - like others?? if key[pygame.K_d] and self.rect.right < WIDTH: self.rect.x += speed + + time_now = pygame.time.get_ticks() + + # shoot + if key[pygame.K_w] and time_now - self.last_shot > cooldown: + bullet = Bullets(self.rect.centerx, self.rect.top) + bullet_group.add(bullet) + self.last_shot = time_now pygame.draw.rect(screen, RED, (self.rect.x, (self.rect.bottom +10), self.rect.width, 15)) if self.health_remaining > 0: pygame.draw.rect(screen, GREEN, (self.rect.x, (self.rect.bottom +10), int(self.rect.width * (self.health_remaining / self.health_start)), 15) ) + +class Bullets(pygame.sprite.Sprite): + def __init__(self,x ,y): + pygame.sprite.Sprite.__init__(self) # review init function + self.image = pygame.image.load("img/bullet.png") + self.rect = self.image.get_rect() + self.rect.center = [x, y] + def update(self): + self.rect.y -= 5 + + + # create sprite groups spaceship_group = pygame.sprite.Group() +bullet_group = pygame.sprite.Group() # create player spaceship = Spaceship(int(WIDTH / 2), HEIGHT - 100, 3) @@ -63,8 +86,7 @@ clock = pygame.time.Clock() running = True while running: clock.tick(FPS) - - #draw background + draw_bg() # event handlers @@ -74,9 +96,11 @@ while running: running = False spaceship.update() + + bullet_group.update() # draw sprite groups on screen spaceship_group.draw(screen) - + bullet_group.draw(screen) pygame.display.update() # Go over it again FLIP vs UPDATE Which to use When diff --git a/PyGame/practice/gameprac/img/bullet.png b/PyGame/practice/gameprac/img/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..af0101e917d16d983b7f3c6f3e8ae35c2ede1fbd GIT binary patch literal 3716 zcmV-~4tw#5P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3#ra^yG;h5z#ua|CYSavZJ^bAvhle4vzarpxZ` zi5O>9N~S~-d=Gd4Y}SANz0JS)2|jxhC6`oFvi!svt8d&Cd;Qe&?QA^X*H6E%?sMEc z4?IJGYq);R?S8*8E?*N~d$|5NZp!_{mwTbt&i8^rclO-OcOx11*SL%KLUmm?sh0e1 zYWLT5+%Fze?*Ad5rJqIgck@0FGbl~rt>FC%E?B;OxGf0R|EA-7+aSE>LOmnFa0wyZ zmH^1d@m^PJ-vRmr|GqQd(SPo~f$!Tr9=>6jUaX~`A2|6L`~&gZ#^JHZe?F-Gafm-a z-g}n4*LAuU6NskUqpW$MqjPwXMPfM95}(X};Xa>F`T+C4B^qaRJ#O<3mIRL*tH~sd_e{fY8lmm0& zfX()6i7xKTx5D8$@SbqJqQaRx?*)K}y#-@jfB~Ca5SN_I-e>2)u|QD6av!4aFyKV| z#7G|r4R5k9UiW5BcIRC$K6xERn;=3$3K?#QDaeXZ@ShwDKGY;g6pYg?(?k51x96>}n5x4qT#joCCBkHeA^?~{0Y z`^VSSd>{Db>WCO!%T0}-6-ZtZmfwA3C>kxBAv>2neNT;$ZG?I{bNfV$iSUJsH-dC> zIGH=fc=YDkgN5@p~hHSFFuN)q1gJ6mUbYU1&oq19K6v$Tmysz~^)z8^P7 z8-35YCrVdK?-Q|_J!W{?)g`v(L>r^vBB62j`YGr-?pmj#z^3|q&}SlHvYv^qZnm!X z9`5a4CR24qViN`3lf%ShWNa5oc2(9~B#T|~W26l2>#Qmo%3^0Oy_BITL8`~8tIe+$ zV*<`(hHE{GEYV4+0}8=Hd6lD9%bML~)Z_|g6nsizxfQC|4`DKI3UytRiUM*{2I+yS z?;#ZKg4X*&rf_)US|dd1MZI7)D*wqbQ&nt03lGb)wcMqQUC9P{!ZoE_w>9@v76xfJ z5}!REf_vKHWYZntA~H+#Lnhu#F7cdZWmp@O84?P}2`u`0h^Z7kcn`HsT&aQ_^$oY? zSWwP)ue*9(Q+z+{y^t0XQVc8ERVRh}_42TsJ*b)JZg8eQKodJ7tSKZojhfPS=#HY8 zDCljqgT3Q0PFBX{2Du7M!$eNUu;wMZze{P(7h%KZ!M&hFjn=2ym&|di)f_U+mQ48gjTC6uVLgFZNH*DPXgL#YN?3B6qN*DExFjEOH?)ItyrA+ zMHD5gf`{5?un!f~_G+iCg|8F1i3;V4q)R))}{i)fGYA*8%O3=*55NnCL)6s z+K3t|#1|B~R(<4;BcVazCE7ogEarV+SS4aiS2Zir!)@gmiIz+VkL5LlF=*~0saFRM zg(4&**~|2zu<1!qy92IIn~VhU<%K1heV}a0-g(WT$*r%3(YBz-H5uy4iT+XTEHq|P z2n(Us6;|CnPS7CcSq^d1iUrNqC|AziSVgnaP>e=EiU|@t79&WAFgt?CAwQ440)jy? z=}|T}FJ#qS5c6=?prch^{4!~mT##UXQj%V(m^|{Z>C^qzo=@_!y zQ(6C69;-N>TS7*&%qc6z>#@01hbnlyK(Xz{36F4nSr_aZ9GB0n54>^<#e`e#qRivc z2cSe1=qSUG#U37zk_UK8_)r*4|KNmYk=V>@_GlC`O+L_J+Yj)F*n#ZK4Gk364b>p7 zNnnM%wn&4TF0?(FcHXsHVRv`AL~;)}_T=A}+WCaA)IhVSHM*&o+TSp(C*RY?pb+TH z*^WZew#s?4dJ5ed`NI#z>nI!%gdeE{UK*YEot+P)`OB~H@4jkUHq6sKv5-2LbW{vy zM*!6!@2d;?hsSz)8YvUF@+VyRgys{O_)npZ>-#tt?Si?S%7gx~L!)e$LT`{x;IS-4 zh)XZL^!&B5rwRe3G~Hyg{z&cB*o9;B6%&AdBlfg3G{y%f{UZlOIz?k!6Z0s&`sHQj zFWf9IxGeL+D%~*{|A@gxRa=Jn7KJ38R~RNu5%Skjm^Qvd14D?2f}=sGfFHbu`xPTT zT7z88ul32j;wwFRboahjo&Yc!=yp#&QHWbrQVcB#$&4sWM4|J9IOH9gj8+;Kqd0T; zDgs$+AQ-N3z;%@~oAm2I=KvHhfVAu{^x)0x3!wY}bjbm|facIsT+BC!R0HAzQO+!{ z5EakSuE-Pm!>xh0s9rPm@uN}x)%9FGX#I$&=W6^FS~xWcRZfq0x5hNg`2|Y!{l;n5 zqOELAp?y?fh6F=4w_6)LwRn{Tqj(R#Lp78VeV+z7h2D;2y>x+7*3}ZOQZOId3?c$b z>0CJ6@HSi)^}5JuO}^ozq5~!6uFI*w#!lF43Wc6sFM#q}%%MI35!b(yRPD8#J%1ZW z>Mrr1@SfPruNm*Ul5(%mDiC|3?MszVtXI{F9|4Pf8{t>2H4t+B)79PVlHpUN_)zSF z{{ZLdlFez8$r)cRl(ly|NSv)NByiwwdb9~)wnN#D2bsTfAs}XXi1^{$n+DbV7mM7U z8lxppkpKVzg=s@WP)S2WAaHVTW@&6?004NLeUUv#!$2IxUt4RXR7C6`;*g;_Sr9Ga zC{-+ih0<1N)xqS_FKE(`q_{W=t_24_7OM^}&bm6d3WDGVh?Ap}qKlOHzogJ2#)IR2 zyu0_fdk1)%Ri+p{lYpX{dO8soa`{yu@QNV(7(@)cA~UpPW-$xb@pTUmU+T@+I&0sPzc5r#S2A3uIf?|9kVFasB-Bws6(*vz zs-zf5(|+8=KVth+9gLEbIH& zvRWsA?-{sKJN{Y|nEfQZ(a|DDz`!YT&7=F@3U9=@1O>eOXyr0oG<$x1rrS9|0003) zNklOZ& zlpdaH;KEp6&8v^E>iBRy`uA-gUvEQuKn2JNsDQaKt5^2^9;t0~&+Yi6Iq{lSLo6 zLCmnz4yNU~qXGUpaV+AL%zP*cC5s8kP~OU>HOgCH2ed^DW