Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
250 changes: 250 additions & 0 deletions MarioVerse
Original file line number Diff line number Diff line change
@@ -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