Mario Game In Python With Source Code
The Mario Game In Python is written in Python, This Mario Game Code In Python is designed in Graphical User Interface (GUI) that uses the PyGame library.
When talking about the Mario Game, it’s a single-player game, where the player (Mario) has to dodge fireballs coming out from a dragon.
Each level comes with more difficulties, the area gets smaller and smaller as soon as there’s an increment in level. In this Super Mario Python Tutorial, you can learn how to make a Super Mario Game in Python.
A Mario Game Program In Python simple and clean GUI is provided for easy gameplay. The gameplay design is so simple that the user won’t find it difficult to use and understand. Different images are used in the development of this game project, the gaming environment is just like the Mario game.
Mario Game In Python: Project Information
Project Name: | Mario Game In Python |
Language/s Used: | Python (GUI) Based |
Python version (Recommended): | 2.x or 3.x |
Database: | None |
Type: | Python App |
Developer: | IT SOURCECODE |
Updates: | 0 |
Anyway, if you want to level up your knowledge in programming especially games in Python, try this new article I’ve made for you Code For Game in Python: Python Game Projects With Source Code
This Super Mario In Python also includes a downloadable Mario Game In Python source code for free, just find the downloadable source code below and click to start downloading.
To start creating a Mario Game In Python, make sure that you have PyCharm IDE installed on your computer.
By the way, if you are new to Python programming and don’t know what Python IDE to use, I have here a list of the Best Python IDE for Windows, Linux, and Mac OS that will suit you.
I also have here How to Download and Install the Latest Version of Python on Windows.
Steps on how to create a Mario Game In Python
Mario Game In Python With Source Code
- Step 1: Create a project name.
First, open Pycharm IDE and then create a “project name.” After creating a project name click the “create” button.
- Step 2: Create a python file.
Second, after creating a project name, “right click” your project name and then click “new” After that click the “python file“.
- Step 3: Name your python file.
Third, after creating a Python file, Name your Python file after that click “enter“.
- Step 4: The actual code.
You are free to copy the code given below and download the full source code below.
The Code Given Below Is For Importing Modules
import pygame
import sys
The code is given which is importing all modules.
The Code Given Below Is For The Starting Game Of Mario
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()
In this module which is the starting game of Super Mario.
This Will Be The Output
The Code Given Below Is For The Level Of The Game
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
In this module which is the level of the game if you pass the challenge of the given level.
The Code Given Below Is For The Main Module Of The Game
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)
This Module is the main module of the game that consists of boolean and other loops and conditions.
The Code Given Below Is For The Interface of The Game Over
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()
In This Module which is the interface of the game over.
The Output
Complete Source 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()
Downloadable Source Code
I have here the list of Best Python Projects with Source code free to download for free, I hope this can help you a lot.
Summary
The Mario Game In Python is written in Python programming language, Python is very smooth to research the syntax emphasizes readability and it is able to reduce time ingesting in developing.
Also, this tutorial is the simplest way for beginners or students to enhance their logical skills in programming.
Related Articles
- Hangman Game In Python With Source Code
- Aircraft War Game in Python with Source Code
- Snake Game In Python Code
- How to Make Bouncing Ball Game in Python with Source Code
- How to Create Rock-Paper-Scissor Game in Python
Inquiries
If you have any questions or suggestions about Mario Game In Python, please feel free to leave a comment below.
what is the front end
and back end details
There is a error in the Line 29 of the final code “https://itsourcecode.com/free-projects/python-projects/mario-game-in-python-with-source-code/”. Please go through the changes immediately.
did not work for me, i do what you had done but did not work.
I think you need to give us he link for image you reference. Eg. Mario character, that need to be downloaded.
I am not able to download the source code and also there is a error in line 27.Some one please help me with download.
I am not able to download the source code and also there is a error in line 27.Some one please help me with download.i want to learn ..
the images are required too
please
IT DOSENT WORK