Monday, 3 January 2022

Mario-Game-Program-In-Python

 Mario-Game-Program-In-Python 

Simple Mario Game: 

Code:


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()


Output:

Step 1:


Step 2:


Step 3:



Mario-Game-Program-In-Python

  Mario-Game-Program-In-Python  Simple Mario Game:   Code: import pygame import sys pygame.init() WINDOW_WIDTH = 1200 WINDOW_HEIGHT = 600 FP...