From 8a6e228c8c019ab1307ca6250dbda0b62d325971 Mon Sep 17 00:00:00 2001 From: Krisotfers-Solo Date: Fri, 11 Mar 2022 18:52:48 +0200 Subject: [PATCH] synced all enemy movement --- .../source/assets/images/explosionblue.png | Bin 272 -> 0 bytes .../source/assets/images/explosiongreen.png | Bin 287 -> 0 bytes .../source/assets/images/explosionpurple.png | Bin 272 -> 0 bytes .../sprites/enemies/enemy1/enemy1_2.png | Bin 692 -> 0 bytes .../sprites/enemies/enemy2/enemy2_2.png | Bin 743 -> 0 bytes .../sprites/enemies/enemy3/enemy3_2.png | Bin 842 -> 0 bytes .../{enemy2/enemy2_1.png => enemy_cyan.png} | Bin .../{enemy3/enemy3_1.png => enemy_lime.png} | Bin .../enemy1_1.png => enemy_magenta.png} | Bin .../source/assets/sprites/enemies/mystery.png | Bin 299 -> 0 bytes .../space_invaders/source/space_invaders.py | 51 +++++++++++------- 11 files changed, 31 insertions(+), 20 deletions(-) delete mode 100644 pygame/space_invaders/source/assets/images/explosionblue.png delete mode 100644 pygame/space_invaders/source/assets/images/explosiongreen.png delete mode 100644 pygame/space_invaders/source/assets/images/explosionpurple.png delete mode 100644 pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_2.png delete mode 100644 pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_2.png delete mode 100644 pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_2.png rename pygame/space_invaders/source/assets/sprites/enemies/{enemy2/enemy2_1.png => enemy_cyan.png} (100%) rename pygame/space_invaders/source/assets/sprites/enemies/{enemy3/enemy3_1.png => enemy_lime.png} (100%) rename pygame/space_invaders/source/assets/sprites/enemies/{enemy1/enemy1_1.png => enemy_magenta.png} (100%) delete mode 100644 pygame/space_invaders/source/assets/sprites/enemies/mystery.png diff --git a/pygame/space_invaders/source/assets/images/explosionblue.png b/pygame/space_invaders/source/assets/images/explosionblue.png deleted file mode 100644 index 13533503b104b7e8596a28cbfc0a2ed30ecd31ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^`9SQ$!VDxQUjA|#NNEN5gt!7}hW{TxBq8wX!dn)g z8orVszhH*{j7-cdtZW>d>|8v&S;{NU0A<=eT^vIy7?UOZ5=1zd7>%Uo-&t_kVwK?f zw3wvk$j2+(T2$-`t1@J+u2{0fWty9+uz0#E+a<=yo)J;2HZ#4HntE3&ZQF8*iHV8V z=IvfSePZ5H1rd!23&dKJ9oD%i|H@vnTVC|V62XZ@8MDJQ&&ziF@etsde<&;D@rMlN jo-7%+zkPwd%4`e__lA0qQuW)Nou`8^~kh!{I$r6`oZmPoK>8fm(7$k+8*5?e5YEA&(7SmG@-H7&0&jS$M6AbBuWk@}H-xpUXO@geCx7t5&c8 diff --git a/pygame/space_invaders/source/assets/images/explosionpurple.png b/pygame/space_invaders/source/assets/images/explosionpurple.png deleted file mode 100644 index d0b551b2b83105300fb1691ca3b588b9efe9598b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^`9SQ$!VDxQUjA|#NNEN5gt!9fOAP;kBtbCkC&wM2 zBEFI!zhH*{j7-cdtZW>d>|8v&S;{NU0A<=eT^vIy7?UOZ5=1zd7>%Uo-&t_kVwK?f zw3wvk$j2+(T2$-`t1@J+u2{0fWty9+uz0#E+a<=yo)J;2HZ#4HntE3&ZQF8*iHV8V z=IvfSePZ5H1rd!23&dKJ9oD%i|H@vnTVC|V62XZ@8MDJQ&&ziF@etsde<&;D@rMlN jo-7%+zkPwd%4`e_8f>Hj;{Wjw!3=C&1X@!Fa19Ab^otFGrms#`updHPv73Yxwbfy}gZLZP>e~P9MpIj?J<~WICz<{K&k|qdSJcv`JUw&AO3#NTi=-?H9vo<7X6KXH z@xQS+uF&GS>dV#Hi;6tsorR}@#lZ@GSI2BloPEvZtVzyhqo~$tk*$SLZ9wT~QQInY zH&2^B*^yf+Fxn@#cg3?5i|s1}r?v=7BaA=!VA>v&MNdUk{hROqNgv#aV@^4=k zCtYdr^|W$P@_#Qg)jQWD_D{-s1aTKgRqp#6R(E5Aw{I5D+n;7_u|@V|hV1I=oiqGQ z7a4E-dS&$?xHT39&&9W$*1rAKH*MG6-TdD#Y`6WE<3AJVw)3y1W;yR!u~vUu_}5iD zaNGIr+}{1xIp^%5)p`%@_UGJB`mMQVj=;tD0gMb6&0j1~Du3Azj4=jJS3j3^P6c5 zEBEiOym0R3!-tX=jxzlJV19U)+R6QT$M)X+|2N{&sRN(hhwa~~b@i0mwbPOpk7Xa) zyY1cUzf6VRt@vpvCPgvjFpZWM6|f>f6#%QN~aD^KXan;=z(qtwHBZ^JxhZ8f*I8OB-DbG9{xXk^{m`ttECsOKJ0gy zo_BO>>-6`p+n-;5dH3i0yO%%ze0yR!dJg zE7(x|{VH?!vxmxGZ=}8JT;1Y2xnye6kq$v+H%19V2&3oHOgVpF+v-L0(ic^J4BBh- z)oSs*CI5T&9G}*^?d`=kH!^nLYX)lQkuc;s2+|2;+`1k1Tkh<^ZB}#szBnQNY6e6U zV&3M19T!iov??y$w^+~S#M8cAMWwZ?^4xlu?#$ZtSs^lbxm?0ukQq?hfs83}7c|P( zeUe*Ju&#!2@zNt6NODIy0yny!oF2Dxg;u8YnpfWI(~=XGAZtFd;$DFIx>>y$QR{B; zhHlrC-MMRPhF`4g?Jp>*G#r+%zPGC?{bJ0ns{5hxIZE=ewO-#hWL&bf+x^Sv?TgjA vSGFHTan+F*zs0{E7JKzveCj3-hCfWzH+$w6NpZafMk#}*tDnm{r-UW|YGaFS diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_2.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_2.png deleted file mode 100644 index 97e26381cc7915e8de260bfe3f5e670fefae5811..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^mw|XX2Q!e|Auw+ukXjMo6XN>+|9^(RQEVR~SiVFu z{Ey;z6T$f=lJjjO$Ja&ig^3PM6cjK8Cpe?&=2N-8QU%F4=0 zNJudJixL+X2P!Z!GGhE2WoBk(YHA8p%+Jry@g|b#S0u;l2pJg}RaI4KX=#=Z;e332 zf`Wp=!or&G^X0x}X?)BFGPK_nsC>>9`<14wtSl-jYWl30`D+BwJ!)!dT3TAHA0nh& zqyGclY*7;A7tHYQ&By=GpFe;3kC6!o82|iaWMX9e$H>U^56EMD{`)zQ|CW)F@yqSA zCy!r#&cwL&Gf?K8Ci68W1_mZcPZ!6K3dXm$S(BCo2(&zu3zAlQ{BB+0^xyMyVjrduaiKNCOi+3R7WpRU;~vBJ|gD`@hpD@)W&SAv_m`h=5Rw#aa0)uD&k)FKBV3{zbPIr@=fBFyo6%Qtg;m+%3%H&XV;c>axTYi`45Ink}ArCfM%ufjIq%6~yVml9EAc z^Y`ysG3jn@zL9I1kGfa@`@^#iX9VMpCvA49IQD>9Ol)>))U0V)LBh+`Ok05%+K z_?g6!jfQe7l6rhAll>g#NKE$sW}kI`MzFy0!Z+8J&drB;_9f4e$Xm0P9h=i^VV*YY z&DM+a48;}ndTuh8N+t_?wH^-(|8~c;BfI)tR%pcI&Kxp{iI{We%nDL&zC*u#_OZ_1A&FFzgdA(tP0W;moD lk-{o}^KVT_pej diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_1.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy_cyan.png similarity index 100% rename from pygame/space_invaders/source/assets/sprites/enemies/enemy2/enemy2_1.png rename to pygame/space_invaders/source/assets/sprites/enemies/enemy_cyan.png diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_1.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy_lime.png similarity index 100% rename from pygame/space_invaders/source/assets/sprites/enemies/enemy3/enemy3_1.png rename to pygame/space_invaders/source/assets/sprites/enemies/enemy_lime.png diff --git a/pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_1.png b/pygame/space_invaders/source/assets/sprites/enemies/enemy_magenta.png similarity index 100% rename from pygame/space_invaders/source/assets/sprites/enemies/enemy1/enemy1_1.png rename to pygame/space_invaders/source/assets/sprites/enemies/enemy_magenta.png diff --git a/pygame/space_invaders/source/assets/sprites/enemies/mystery.png b/pygame/space_invaders/source/assets/sprites/enemies/mystery.png deleted file mode 100644 index 7f616811c0b5450d5d4729d28bdf21e1ca0e4ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^7lAmIg&9bmOq*8^q(lRJLR|m<|NmA-1&E&Lsk~7F zkwCWg>ixTc3Rp^l{DK)?KE7S}N$nVrf6&v#F{C2y?Tv$+ha3dl5|49D;yc2nj%X>jU(DZh?%8swc4fAg?uGo4wDI@^s83s>RKbLh*2~7a_34`DO diff --git a/pygame/space_invaders/source/space_invaders.py b/pygame/space_invaders/source/space_invaders.py index 52a63457..66a2b269 100644 --- a/pygame/space_invaders/source/space_invaders.py +++ b/pygame/space_invaders/source/space_invaders.py @@ -24,11 +24,12 @@ SPACESHIP = pygame.image.load(join(SPRITE_PATH, "playership.png")) # player PLAYER_MISSILE = pygame.image.load(join(SPRITE_PATH, "missiles", "playermissile.png")) # player missile # enemies -ENEMY_1 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy1", "enemy1_1.png")), (40, 35)) -ENEMY_2 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy2", "enemy2_1.png")), (40, 35)) -ENEMY_3 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy3", "enemy3_1.png")), (40, 35)) +ENEMY_1 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy_magenta.png")), (40, 35)) +ENEMY_2 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy_cyan.png")), (40, 35)) +ENEMY_3 = pygame.transform.scale(pygame.image.load(join(ENEMY_PATH, "enemy_lime.png")), (40, 35)) ENEMY_MISSILE = pygame.image.load(join(SPRITE_PATH, "missiles", "enemymissile.png")) # enemy missile +pygame.display.set_icon(ENEMY_3) # background BACKGROUND = pygame.transform.scale(pygame.image.load(join(BASE_PATH, "assets", "background.jpg")), (WIDTH, HEIGHT)) @@ -39,6 +40,7 @@ RED = (188, 2, 5) class Missile: + def __init__(self, x: int, y: int, img) -> None: self.x = x self.y = y @@ -59,9 +61,9 @@ class Missile: class Ship: - COOLDOWN = 30 + COOLDOWN = 30 # cooldown before shooting next missile - def __init__(self, x: int, y: int, lives: int = 5) -> None: + def __init__(self, x: int, y: int, lives: int = 3) -> None: self.x = x self.y = y self.lives = lives @@ -105,7 +107,8 @@ class Ship: class Player(Ship): - def __init__(self, x: int, y: int, lives: int = 5) -> None: + + def __init__(self, x: int, y: int, lives: int = 3) -> None: super().__init__(x, y, lives) self.ship_img = SPACESHIP self.missile_img = PLAYER_MISSILE @@ -145,30 +148,30 @@ class Enemy(Ship): def __init__(self, x: int, y: int, color: str) -> None: super().__init__(x, y) - self.ship_img = self.COLOR_MAP[color] self.missile_img = ENEMY_MISSILE + self.ship_img = self.COLOR_MAP[color] self.mask = pygame.mask.from_surface(self.ship_img) self.color = color - def move(self, vel_x: int, vel_y: int) -> None: + def move(self, vel_x: int, vel_y: int = 0) -> None: self.x += vel_x self.y += vel_y def main() -> None: + FPS = 60 run = True lost = False lost_count = 0 - FPS = 60 level = 0 enemies = [] player_vel = 7 - player_missile_vel = 7 + player_missile_vel = 15 enemy_x_vel = 2 + enemy_y_vel = 2 vel_x = enemy_x_vel - vel_y = 0 - enemy_missile_vel = 4 + enemy_missile_vel = 6 last_enemy_shot = 0 player = Player(WIDTH / 2, 650) @@ -217,11 +220,11 @@ def main() -> None: margin = 75 for x in range(margin, WIDTH - margin, margin): for y in range(margin, int(HEIGHT / 2), margin): - if y == margin: + if y == margin: # top row color = "magenta" - elif y == 2 * margin: + elif y == 2 * margin: # rows 2-3 color = "cyan" - elif y == 4 * margin: + elif y == 4 * margin: # rows 4-5 color = "lime" enemy = Enemy(x, y, color) enemies.append(enemy) @@ -244,14 +247,14 @@ def main() -> None: player.shoot() # enemies action - for enemy in enemies[:]: if enemy.x >= WIDTH - enemy.get_width(): + move(0, enemy_y_vel, enemies) vel_x = -enemy_x_vel - elif enemy.x <= 0: - vel_x = enemy_x_vel - enemy.move(vel_x, vel_y) + elif enemy.x <= 0: + move(0, enemy_y_vel, enemies) + vel_x = enemy_x_vel enemy.move_missiles(enemy_missile_vel, player) @@ -259,6 +262,9 @@ def main() -> None: player.score -= 10 player.lives -= 1 enemies.remove(enemy) + + move(vel_x, 0, enemies) + if pygame.time.get_ticks() - last_enemy_shot > 2000: choice(enemies).shoot() last_enemy_shot = pygame.time.get_ticks() @@ -271,6 +277,11 @@ set_font = lambda size, font=FONT: pygame.font.Font(font, size) # sets font siz collide = lambda obj1, obj2: obj1.mask.overlap(obj2.mask, (obj2.x - obj1.x, obj2.y - obj1.y)) != None # checks if 2 objs collide/overlap +def move(vel_x: int, vel_y: int, enemies: list) -> None: + for enemy in enemies: + enemy.move(vel_x, vel_y) + + def main_menu() -> None: while True: WINDOW.blit(BACKGROUND, (0, 0)) @@ -284,5 +295,5 @@ def main_menu() -> None: main() -if __name__ == '__main__': +if __name__ == "__main__": main_menu() \ No newline at end of file