From 13d1482f85e5a17e6e7a455a40aa960a87e9eafb Mon Sep 17 00:00:00 2001 From: Elizaveta Ivanova Date: Mon, 29 Jan 2024 08:13:59 +0000 Subject: [PATCH] Upload files to "/" --- bullet.py | 17 ++++++++ controls.py | 112 +++++++++++++++++++++++++++++++++++++++++++++++++ enemy.py | 28 +++++++++++++ gun.py | 28 +++++++++++++ highscores.txt | 1 + 5 files changed, 186 insertions(+) create mode 100644 bullet.py create mode 100644 controls.py create mode 100644 enemy.py create mode 100644 gun.py create mode 100644 highscores.txt diff --git a/bullet.py b/bullet.py new file mode 100644 index 0000000..007abc6 --- /dev/null +++ b/bullet.py @@ -0,0 +1,17 @@ +import pygame + +class Bullet (pygame.sprite.Sprite): + def __init__(self, screen, gun): + self.screen = screen + super(Bullet, self).__init__() + self.rect=pygame.Rect(0,0,4,12) + self.rect.centerx = gun.rect.centerx + self.rect.top = gun.rect.top +18 + self.color = 0,0,0 + self.speed = 1 + self.rect.y + def update(self): + self.rect.y -= self.speed + def draw_bullet(self): + pygame.draw.rect(self.screen, self.color, self.rect) + \ No newline at end of file diff --git a/controls.py b/controls.py new file mode 100644 index 0000000..01a9f46 --- /dev/null +++ b/controls.py @@ -0,0 +1,112 @@ +import pygame, sys +import time +from bullet import Bullet +from enemy import Enemy + +def events(gun, screen, bullets): + for event in pygame.event.get(): + if event.type == pygame.QUIT: + sys.exit() + elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_RIGHT: + gun.mright = True + elif event.key == pygame.K_LEFT: + gun.mleft = True + elif event.key == pygame.K_SPACE: + new_bullet = Bullet(screen, gun) + bullets.add(new_bullet) + elif event.type == pygame.KEYUP: + if event.key == pygame.K_RIGHT: + gun.mright = False + elif event.key == pygame.K_LEFT: + gun.mleft = False + + +def update(bg_color, screen, gun, enemies, bullets, stats, scores): + screen.fill(bg_color) + gun.output() + enemies.draw(screen) + scores.score_output() + for bullet in bullets.sprites(): + bullet.draw_bullet() + pygame.display.flip() + +def update_bullets(bullets, enemies, screen, stats, scores): + bullets.update() + for bullet in bullets.copy(): + if bullet.rect.bottom <= 0: + bullets.remove(bullet) + collisions=pygame.sprite.groupcollide(bullets, enemies, True, True) + if collisions: + for enemies in collisions.values(): + stats.score += 10 * len(enemies) + scores.image_score() + high_score_check(stats, scores) + scores.image_guns() + if len(enemies)==0: + bullets.empty() + create_army(screen, enemies) + + + + +def create_army(screen, enemies): + enemy = Enemy(screen) + enemy_width = enemy.rect.width + enemy_height = enemy.rect.height + number_enemy_y = int((500 - 100 - 2 * enemy_height)/ enemy_height) + number_enemy_x = int((500 -2 * enemy_width)/ enemy_width) + + for j in range (number_enemy_y): + for i in range(number_enemy_x): + enemy = Enemy(screen) + enemy.rect.x = enemy_width + enemy_width * i + enemy.y = enemy_height + enemy_height * j + enemy.rect.y = enemy.y + enemies.add(enemy) + + + +def update_enemies(stats,screen, gun, enemies, bullets, scores): + enemies.update() + if pygame.sprite.spritecollideany(gun, enemies): + gun_kill(stats,screen, gun, enemies, bullets, scores) + enemies_check(stats,screen, gun, enemies, bullets, scores) + + + + +def gun_kill(stats,screen, gun, enemies, bullets, scores): + if stats.guns_left>0: + stats.guns_left -= 1 + scores.image_guns() + enemies.empty() + bullets.empty() + create_army(screen, enemies) + gun.create_gun() + time.sleep(2) + else: + stats.run_game==False + sys.exit() + + +def enemies_check(stats,screen, gun, enemies, bullets, scores): + screen_rect = screen.get_rect() + for enemy in enemies.sprites(): + if enemy.rect.bottom >= screen_rect.bottom: + gun_kill(stats,screen, gun, enemies, bullets, scores) + break + +def high_score_check(stats, scores): + if stats.score >= stats.high_score: + stats.high_score = stats.score + scores.image_high_score() + with open("highscore.txt", "w") as f: + f.write(str(stats.high_score)) + + + + + + + \ No newline at end of file diff --git a/enemy.py b/enemy.py new file mode 100644 index 0000000..84e4d2f --- /dev/null +++ b/enemy.py @@ -0,0 +1,28 @@ +import pygame + + +class Gun(pygame.sprite.Sprite): + def __init__(self, screen): + super(Gun, self).__init__() + self.screen= screen + self.image=pygame.image.load("image/flower.png") + self.rect=self.image.get_rect() + self.screen_rect=screen.get_rect() + self.rect.centerx=self.screen_rect.centerx + self.rect.bottom=self.screen_rect.bottom + self.mright = False + self.mleft = False + + + def output(self): + self.screen.blit(self.image, self.rect) + + def update_gun(self): + if self.mright and self.rect.right < self.screen_rect.right: + self.rect.centerx += 2 + elif self.mleft and self.rect.left > 0: + self.rect.centerx -= 2 + + def create_gun(self): + self.rect.centerx=self.screen_rect.centerx + \ No newline at end of file diff --git a/gun.py b/gun.py new file mode 100644 index 0000000..84e4d2f --- /dev/null +++ b/gun.py @@ -0,0 +1,28 @@ +import pygame + + +class Gun(pygame.sprite.Sprite): + def __init__(self, screen): + super(Gun, self).__init__() + self.screen= screen + self.image=pygame.image.load("image/flower.png") + self.rect=self.image.get_rect() + self.screen_rect=screen.get_rect() + self.rect.centerx=self.screen_rect.centerx + self.rect.bottom=self.screen_rect.bottom + self.mright = False + self.mleft = False + + + def output(self): + self.screen.blit(self.image, self.rect) + + def update_gun(self): + if self.mright and self.rect.right < self.screen_rect.right: + self.rect.centerx += 2 + elif self.mleft and self.rect.left > 0: + self.rect.centerx -= 2 + + def create_gun(self): + self.rect.centerx=self.screen_rect.centerx + \ No newline at end of file diff --git a/highscores.txt b/highscores.txt new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/highscores.txt @@ -0,0 +1 @@ +0 \ No newline at end of file