Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create MarioVerse #1048

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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