Welcome to my ninja jumper in python!

I am Dina. In this webpage you will find my game called "Ninja Jumper".

This game consists of moving the ninja to get the gems and the maximum score by jumping over differents platforms usig the keyboard arrows

This is the Python code:


# NINJA JUMPER
import time
import pygame
import random

WIDTH = 1000
HEIGHT = 600
blue = 150
blueforward = True
groundcolour = 0, 0, 139
floor = Rect((0, 580), (1000, 20))
# Ninja
ninja = Actor("jumper-1", (500, 250))
ninja_x_velocity = 0
ninja_y_velocity = 0
gravity = 1
jumping = False
jumped = False
allowx = True
timer = []
# platforms
platform1 = Rect((450, 500), (100, 10))
platform2 = Rect((300, 400), (100, 10))
platform3 = Rect((600, 400), (100, 10))
platform4 = Rect((200, 300), (100, 10))
platform5 = Rect((700, 300), (100, 10))
platform6 = Rect((100, 200), (100, 10))

plat61_x = 200
plat62_x = 700
platform61 = Rect((plat61_x, 200), (100, 10))
platform62 = Rect((plat62_x, 200), (100, 10))
platform7 = Rect((800, 200), (100, 10))  # ..moving out right(
platform8 = Rect((0, 100), (100, 10))  # top far left
platform9 = Rect((900, 100), (100, 10))  # top far rigth
platforms = [
    floor,
    platform1,
    platform2,
    platform3,
    platform4,
    platform5,
    platform6,
    platform7,
    platform8,
    platform9,
    platform61,
    platform62,
]  # list to platforms
plat61left = True
plat62left = False
# Gems
diamond_x = [950, 50, 850, 150, 750, 250, 650, 350, 500]
diamond_y = [70, 70, 170, 170, 270, 270, 370, 370, 470]
d_xy = random.randint(0, 8)
gem = Actor("diamond_s", (diamond_x[d_xy], diamond_y[d_xy]))
points = 0
# music
pygame.mixer.pre_init(22050, -16, 2, 1024)
pygame.init()
pygame.mixer.quit()
pygame.mixer.init(22050, -16, 2, 1024)
sounds.ninja_music.play(-1)


def draw():
    global platform61, platform62
    screen.fill((173, 216, blue))
    screen.blit("skyline_large", (0, 0))
    platform61 = Rect((plat61_x, 200), (100, 10))
    platform62 = Rect((plat62_x, 200), (100, 10))
    platforms[10] = platform61
    platforms[11] = platform62
    for i in platforms:
        screen.draw.filled_rect(i, groundcolour)
    ninja.draw()
    gem.draw()
    screen.draw.text(
        "Loot:",
        center=(50, 540),
        fontsize=40,
        shadow=(1, 1),
        color=(255, 255, 255),
        scolor="#202020",
    )
    screen.draw.text(
        str(points),
        center=(45, 570),
        fontsize=40,
        shadow=(1, 1),
        color=(255, 255, 255),
        scolor="#202020",
    )


def update():
    backgroundcolourfade()
    platform_mover()
    ninja_move()


def ninja_move():
    global ninja_x_velocity, ninja_y_velocity, jumping, gravity, jumped, allowx, timer, points, d_xy

    # facing the front
    if ninja_x_velocity == 0 and not jumped:
        ninja.image = "jumper-1"
    # gravity
    if collidecheck():
        gravity = 1
        ninja.y -= 1
        allowx = True
        timer = []
    if not collidecheck():
        ninja.y += gravity
        if gravity <= 20:
            gravity += 0.5
        timer.append(pygame.time.get_ticks())
        if len(timer) > 5 and not jumped:
            allowx = False
            ninja.image = "jumper-up"
            if len(timer) > 20:
                ninja.image = "jumper-fall"
                if len(timer) > 30:
                    ninja.image = "jumper-fall2"
    # print(timer)

    # left and right movement
    if (keyboard.left) and allowx:
        if (ninja.x > 40) and (ninja_x_velocity > -8):
            ninja_x_velocity -= 2
            ninja.image = "jumper-left"
            if (keyboard.left) and jumped:
                ninja.image = "jumper-jleft"
    if (keyboard.right) and allowx:
        if (ninja.x < 960) and (ninja_x_velocity < 8):
            ninja_x_velocity += 2

            ninja.image = "jumper-right"
            if (keyboard.right) and jumped:
                ninja.image = "jumper-jright"
    ninja.x += ninja_x_velocity
    print(allowx)
    # velocity
    if ninja_x_velocity > 0:
        ninja_x_velocity -= 1
    if ninja_x_velocity < 0:
        ninja_x_velocity += 1
    if ninja.x < 50 or ninja.x > 950:
        ninja_x_velocity = 0
    # jumping
    if (keyboard.up) and collidecheck() and not jumped:
        sounds.jump.play()
        jumping = True
        jumped = True
        clock.schedule_unique(jumpedrecently, 0.4)
        ninja.image = "jumper-up"
        ninja_y_velocity = 95
    if jumping and ninja_y_velocity > 25:
        ninja_y_velocity = ninja_y_velocity - ((100 - ninja_y_velocity) / 2)
        # print(ninja_y_velocity)
        ninja.y -= ninja_y_velocity / 3  # jump.height
    else:
        ninja_y_velocity = 0
        jumping = False
    # gem collisic

    if ninja.colliderect(gem):
        points += 1
        sounds.gem.play()

        old_d_xy = d_xy
        d_xy = random.randint(0, 8)
        while old_d_xy == d_xy:
            d_xy = random.randint(0, 8)
        gem.x = diamond_x[d_xy]
        gem.y = diamond_y[d_xy]


def platform_mover():
    global plat61_x, plat62_x, plat61left, plat62left
    # left platform
    if plat61left:
        plat61_x += 2
        if plat61_x == 400:
            plat61left = False
        if ninja.colliderect(platform61):
            ninja.x += 2
    else:
        plat61_x -= 2
        if plat61_x == 200:
            plat61left = True
        if ninja.colliderect(platform61):
            ninja.x -= 2
    # right platform
    if plat62left:
        plat62_x += 2
        if plat62_x == 700:
            plat62left = False
        if ninja.colliderect(platform62):
            ninja.x += 2
    else:
        plat62_x -= 2
        if plat62_x == 500:
            plat62left = True
        if ninja.colliderect(platform62):
            ninja.x -= 2


def collidecheck():
    collide = False
    for i in platforms:
        if ninja.colliderect(i):
            collide = True
    return collide


def jumpedrecently():
    global jumped
    jumped = False


def backgroundcolourfade():
    global blue, blueforward
    if blue < 255 and blueforward:
        blue += 1
    else:
        blueforward = False
    if blue > 130 and not blueforward:
        blue -= 1
    else:
        blueforward = True

This is a screenshot of the game