From 0edb884f2160a04d39f75672b886a0a4ade8244e Mon Sep 17 00:00:00 2001 From: Shannonmarie <69419374+Shanonbaker@users.noreply.github.com> Date: Sat, 1 Oct 2022 11:27:36 +0530 Subject: [PATCH] Create MarioVerse --- MarioVerse | 250 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 MarioVerse diff --git a/MarioVerse b/MarioVerse new file mode 100644 index 00000000..bed50a1b --- /dev/null +++ b/MarioVerse @@ -0,0 +1,250 @@ +import pygame +import sys +pygame.init() + +WINDOW_WIDTH = 1200 +WINDOW_HEIGHT = 600 +FPS = 20 +BLACK = (0, 0, 0) +GREEN = (0, 255, 0) +ADD_NEW_FLAME_RATE = 25 +cactus_img = pygame.image.load('cactus_bricks.png') +cactus_img_rect = cactus_img.get_rect() +cactus_img_rect.left = 0 +fire_img = pygame.image.load('fire_bricks.png') +fire_img_rect = fire_img.get_rect() +fire_img_rect.left = 0 +CLOCK = pygame.time.Clock() +font = pygame.font.SysFont('forte', 20) + +canvas = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) +pygame.display.set_caption('Mario') + + +class Topscore: + def __init__(self): + self.high_score = 0 + def top_score(self, score): + if score > self.high_score: + self.high_score = score + return self.high_score + +topscore = Topscore() + + +class Dragon: + dragon_velocity = 10 + + def __init__(self): + self.dragon_img = pygame.image.load('dragon.png') + self.dragon_img_rect = self.dragon_img.get_rect() + self.dragon_img_rect.width -= 10 + self.dragon_img_rect.height -= 10 + self.dragon_img_rect.top = WINDOW_HEIGHT/2 + self.dragon_img_rect.right = WINDOW_WIDTH + self.up = True + self.down = False + + def update(self): + canvas.blit(self.dragon_img, self.dragon_img_rect) + if self.dragon_img_rect.top <= cactus_img_rect.bottom: + self.up = False + self.down = True + elif self.dragon_img_rect.bottom >= fire_img_rect.top: + self.up = True + self.down = False + + if self.up: + self.dragon_img_rect.top -= self.dragon_velocity + elif self.down: + self.dragon_img_rect.top += self.dragon_velocity + + +class Flames: + flames_velocity = 20 + + def __init__(self): + self.flames = pygame.image.load('fireball.png') + self.flames_img = pygame.transform.scale(self.flames, (20, 20)) + self.flames_img_rect = self.flames_img.get_rect() + self.flames_img_rect.right = dragon.dragon_img_rect.left + self.flames_img_rect.top = dragon.dragon_img_rect.top + 30 + + + def update(self): + canvas.blit(self.flames_img, self.flames_img_rect) + + if self.flames_img_rect.left > 0: + self.flames_img_rect.left -= self.flames_velocity + + +class Mario: + velocity = 10 + + def __init__(self): + self.mario_img = pygame.image.load('maryo.png') + self.mario_img_rect = self.mario_img.get_rect() + self.mario_img_rect.left = 20 + self.mario_img_rect.top = WINDOW_HEIGHT/2 - 100 + self.down = True + self.up = False + + def update(self): + canvas.blit(self.mario_img, self.mario_img_rect) + if self.mario_img_rect.top <= cactus_img_rect.bottom: + game_over() + if SCORE > self.mario_score: + self.mario_score = SCORE + if self.mario_img_rect.bottom >= fire_img_rect.top: + game_over() + if SCORE > self.mario_score: + self.mario_score = SCORE + if self.up: + self.mario_img_rect.top -= 10 + if self.down: + self.mario_img_rect.bottom += 10 + + +def game_over(): + pygame.mixer.music.stop() + music = pygame.mixer.Sound('mario_dies.wav') + music.play() + topscore.top_score(SCORE) + game_over_img = pygame.image.load('end.png') + game_over_img_rect = game_over_img.get_rect() + game_over_img_rect.center = (WINDOW_WIDTH/2, WINDOW_HEIGHT/2) + canvas.blit(game_over_img, game_over_img_rect) + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + pygame.quit() + sys.exit() + music.stop() + game_loop() + pygame.display.update() + + +def start_game(): + canvas.fill(BLACK) + start_img = pygame.image.load('start.png') + start_img_rect = start_img.get_rect() + start_img_rect.center = (WINDOW_WIDTH/2, WINDOW_HEIGHT/2) + canvas.blit(start_img, start_img_rect) + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + pygame.quit() + sys.exit() + game_loop() + pygame.display.update() + + +def check_level(SCORE): + global LEVEL + if SCORE in range(0, 10): + cactus_img_rect.bottom = 50 + fire_img_rect.top = WINDOW_HEIGHT - 50 + LEVEL = 1 + elif SCORE in range(10, 20): + cactus_img_rect.bottom = 100 + fire_img_rect.top = WINDOW_HEIGHT - 100 + LEVEL = 2 + elif SCORE in range(20, 30): + cactus_img_rect.bottom = 150 + fire_img_rect.top = WINDOW_HEIGHT - 150 + LEVEL = 3 + elif SCORE > 30: + cactus_img_rect.bottom = 200 + fire_img_rect.top = WINDOW_HEIGHT - 200 + LEVEL = 4 + + + + + +def game_loop(): + while True: + global dragon + dragon = Dragon() + flames = Flames() + mario = Mario() + add_new_flame_counter = 0 + global SCORE + SCORE = 0 + global HIGH_SCORE + flames_list = [] + pygame.mixer.music.load('mario_theme.wav') + pygame.mixer.music.play(-1, 0.0) + while True: + canvas.fill(BLACK) + check_level(SCORE) + dragon.update() + add_new_flame_counter += 1 + + if add_new_flame_counter == ADD_NEW_FLAME_RATE: + add_new_flame_counter = 0 + new_flame = Flames() + flames_list.append(new_flame) + for f in flames_list: + if f.flames_img_rect.left <= 0: + flames_list.remove(f) + SCORE += 1 + f.update() + + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP: + mario.up = True + mario.down = False + elif event.key == pygame.K_DOWN: + mario.down = True + mario.up = False + if event.type == pygame.KEYUP: + if event.key == pygame.K_UP: + mario.up = False + mario.down = True + elif event.key == pygame.K_DOWN: + mario.down = True + mario.up = False + + score_font = font.render('Score:'+str(SCORE), True, GREEN) + score_font_rect = score_font.get_rect() + score_font_rect.center = (200, cactus_img_rect.bottom + score_font_rect.height/2) + canvas.blit(score_font, score_font_rect) + + level_font = font.render('Level:'+str(LEVEL), True, GREEN) + level_font_rect = level_font.get_rect() + level_font_rect.center = (500, cactus_img_rect.bottom + score_font_rect.height/2) + canvas.blit(level_font, level_font_rect) + + top_score_font = font.render('Top Score:'+str(topscore.high_score),True,GREEN) + top_score_font_rect = top_score_font.get_rect() + top_score_font_rect.center = (800, cactus_img_rect.bottom + score_font_rect.height/2) + canvas.blit(top_score_font, top_score_font_rect) + + canvas.blit(cactus_img, cactus_img_rect) + canvas.blit(fire_img, fire_img_rect) + mario.update() + for f in flames_list: + if f.flames_img_rect.colliderect(mario.mario_img_rect): + game_over() + if SCORE > mario.mario_score: + mario.mario_score = SCORE + pygame.display.update() + CLOCK.tick(FPS) + + +start_game() + +#Its By Shanonmarie