Welcome to the reference manual.
                Once you are familiar with JoBase, use this page to discover all the JoBase features.
            
            
            
                Below is a list of built in colors.
                
                
            
            class Window(title = "JoBase", width = 640, height = 480, color = WHITE)
            
                This class is for managing the main window.
                Don't try to instance this class directly, use the inbuilt 
window variable instead.
                
import JoBase
window.color = BLUE
window.size = 300, 300
def loop():
    window.red += 0.01
run()
                
                title: str
                
                    The title of the window.
                
                red, color.r: float
                
                    The red color of the window.
                
                green, color.g: float
                
                    The green color of the window.
                
                blue, color.b: float
                
                    The blue color of the window.
                
                color: (float, float, float)
                
                    The color of the window.
                
                width, size.x: float
                
                    The width of the window in pixels.
                
                height, size.y: float
                
                    The height of the window in pixels.
                
                size: (float, float)
                
                    The dimensions of the window in pixels.
                
                resize: bool
                
                    Check if the window has been resized.
                
                close()
                
                    Close the window and terminate the program.
                
                maximize()
                
                    Maximize the window.
                    You can restore the maximized window with the 
restore method.
                
minimize()
                
                    Minimize the window.
                    You can restore the minimized window with the 
restore method.
                
restore()
                
                    Restore the window from maximized or minimized.
                    The window returns to its normal state.
                
                focus()
                
                    Give the window input focus.
                    It can be very disruptive to the user when the window is forced to the top - use this method sensibly.
                
            class Camera(x = 0, y = 0)
            
                This class is for managing the game camera.
                By moving it around, you can change your view of things on the screen.
                Don't try to instance this class directly, use the inbuilt 
camera variable instead.
                
x, pos.x, position.x: float
                
                    The x position of the camera.
                
                y, pos.y, position.y: float
                
                    The y position of the camera.
                
                pos, position: (float, float)
                
                    The position of the camera.
                
                top: float
                
                    The top of the viewport.
                
                bottom: float
                
                    The bottom of the viewport.
                
                left: float
                
                    The left of the viewport.
                
                right: float
                
                    The right of the viewport.
                
            class Cursor()
            
                This class represents the cursor.
                Don't try to instance this class directly, use the inbuilt 
cursor variable instead.
                
import JoBase
def loop():
    window.color = GOLD if cursor.hold else LIGHT_BLUE
run()
                
                x, pos.x, position.x: float
                
                    The x position of the cursor.
                
                y, pos.y, position.y: float
                
                    The y position of the cursor.
                
                pos, position: (float, float)
                
                    The position of the cursor.
                
                move: bool
                
                    The cursor has moved.
                
                enter: bool
                
                    The cursor has entered the window.
                
                leave: bool
                
                    The cursor has left the window.
                
                press: bool
                
                    A cursor button is pressed.
                
                release: bool
                
                    A cursor button is released.
                
                hold: bool
                
                    A cursor button is held down.
                
                [name]: bool
                
                    Access the state of a specific mouse button.
                    Below is a list of all the mouse button names.
                    Some buttons are not present on all devices.
                    
                        left
                        right
                        middle
                        _4
                        _5
                        _6
                        _7
                        _8
                    
                [name].press: bool
                
                    A cursor button is pressed.
                
                [name].release: bool
                
                    A cursor button is released.
                
                [name].hold: bool
                
                    A cursor button is held down.
                
                collide, collides_with(object) -> bool
                
                    Check if the cursor collides with the another object.
                
            class Key()
            
                This class is for detecting keyboard input.
                Don't try to instance this class directly, use the inbuilt 
key variable instead.
                
press: bool
                
                    A key is pressed down.
                
                release: bool
                
                    A key is released.
                
                repeat: bool
                
                    When the user holds a key down, a series of events are fired.
                
                hold: bool
                
                    A key is held down.
                
                [name]: bool
                
                    Access the state of a specific key.
                    Below is a list of all the key names.
                    
                        space
                        apostrophe
                        comma
                        minus
                        period
                        slash
                        _0
                        _1
                        _2
                        _3
                        _4
                        _5
                        _6
                        _7
                        _8
                        _9
                        semicolon
                        equal
                        a
                        b
                        c
                        d
                        e
                        f
                        g
                        h
                        i
                        j
                        k
                        l
                        m
                        n
                        o
                        p
                        q
                        r
                        s
                        t
                        u
                        v
                        w
                        x
                        y
                        z
                        left_bracket
                        backslash
                        right_bracket
                        backquote
                        escape
                        enter
                        tab
                        backspace
                        insert
                        delete
                        right
                        left
                        down
                        up
                        page_up
                        page_down
                        home
                        end
                        caps_lock
                        scroll_lock
                        num_lock
                        print_screen
                        pause
                        f1
                        f2
                        f3
                        f4
                        f5
                        f6
                        f7
                        f8
                        f9
                        f10
                        f11
                        f12
                        f13
                        f14
                        f15
                        f16
                        f17
                        f18
                        f19
                        f20
                        f21
                        f22
                        f23
                        f24
                        f25
                        pad_0
                        pad_1
                        pad_2
                        pad_3
                        pad_4
                        pad_5
                        pad_6
                        pad_7
                        pad_8
                        pad_9
                        pad_decimal
                        pad_divide
                        pad_multiply
                        pad_subtract
                        pad_add
                        pad_enter
                        pad_equal
                        left_shift
                        left_ctrl
                        left_alt
                        left_super
                        right_shift
                        right_ctrl
                        right_alt
                        right_super
                        menu
                    
                [name].press: bool
                
                    The key is pressed.
                
                [name].release: bool
                
                    The key is released.
                
                [name].repeat: bool
                
                    When the key is held down, a series of events are fired.
                
                [name].hold: bool
                
                    The key is held down.
                
            class Base()
            
                This is the base class for all drawing primitives.
                The attributes of this class are shared with other objects.
                Some of the attributes are only useful when the object is added to the 
physics engine.
                Do not try to instance this class directly.
                
x, pos.x, position.x: float
                
                    The x position of the object.
                
                y, pos.y, position.y: float
                
                    The y position of the object.
                
                pos, position: (float, float)
                
                    The position of the object.
                
                left: float
                
                    The left position of the object.
                
                top: float
                
                    The top position of the object.
                
                right: float
                
                    The right position of the object.
                
                bottom: float
                
                    The bottom position of the object.
                
                scale.x: float
                
                    The horizontal scale of the object.
                
                scale.y: float
                
                    The vertical scale of the object.
                
                scale: (float, float)
                
                    The scale of the object.
                
                anchor.x: float
                
                    The horizontal origin of the object.
                
                anchor.y: float
                
                    The vertical origin of the object.
                
                anchor: (float, float)
                
                    The rotational origin of the object.
                
                angle: float
                
                    The angle of the object.
                
                red, color.r: float
                
                    The red color of the object.
                
                green, color.g: float
                
                    The green color of the object.
                
                blue, color.b: float
                
                    The blue color of the object.
                
                alpha, color.a: float
                
                    The transparency of the object.
                
                color: (float, float, float, float)
                
                    The color of the object.
                
                body: Body
                
                    The body that the object is attached to.
                    This attribute is used to give your object physics properties.
                    See the 
Body documentation to learn more about this feature.
                
mass, weight: float
                
                    The weight of the object in a physics environment - high means heavy.
                
                elasticity: float
                
                    The bounciness of the object in a physics environment.
                    It is best to keep this value between 0 (not bouncy) and 1 (perfectly bouncy).
                
                friction: float
                
                    The roughness of the object in a physics environment.
                    It is best to keep this value between 0 (slippery) and 1 (rough).
                
                collide, collides_with(object) -> bool
                
                    Check if the object collides with the another object.
                
                draw()
                
                    Draw the object on the screen.
                
            class Rectangle(x = 0, y = 0, width = 50, height = 50, angle = 0, color = BLACK)
            
                This class is for drawing rectangles.
                Because it extends the 
Base class, it contains the same attributes.
                
width, size.x: float
                
                    The width of the rectangle in pixels.
                
                height, size.y: float
                
                    The height of the rectangle in pixels.
                
                size: (float, float)
                
                    The dimensions of the rectangle in pixels.
                
            class Image(name = MAN, x = 0, y = 0, angle = 0, width = 0, height = 0, color = WHITE)
            
                This class is for drawing images.
                Because it extends the 
Rectangle class, it contains the same attributes.
                The 
name is a string of the filepath to the image.
                JoBase contains the following built in images.
                
                The example below loads an image and renders it to the screen.
                
import JoBase
enemy = Image(ENEMY)
def loop():
    enemy.draw()
run()
                
            class Text(content = "Text", x = 0, y = 0, font_size = 50, angle = 0, color = BLACK, font = DEFAULT)
            
                This class is for drawing text.
                Because it extends the 
Rectangle class, it contains the same attributes.
                
content: str
                
                    The string content of the text.
                
                font: str
                
                    The filepath to the font family of the text.
                    JoBase contains the following built in fonts.
                    
                        CODECode
                        DEFAULTDefault
                        HANDWRITINGHandwriting
                        JOINEDJoined
                        PENCILPencil
                        SERIFSerif
                        TYPEWRITERTypewriter
                     
                    The example below loads the pencil font and draws the text.
                    
import JoBase
text = Text("Pencil Font", font = PENCIL)
text.font_size = 80
def loop():
    text.draw()
run()
                    
                font_size: float
                
                    The size of the font.
                
            class Circle(x = 0, y = 0, diameter = 50, color = BLACK)
            
                This class is for drawing circles.
                Because it extends the 
Base class, it contains the same attributes.
                
diameter: float
                
                    The diameter of the circle.
                
                radius: float
                
                    The radius of the circle (half of the diameter).
                
            class Shape(points = ((0, 25), (25, -25), (-25, -25)), x = 0, y = 0, angle = 0, color = BLACK)
            
                This class is for drawing polygons.
                Because it extends the 
Base class, it contains the same attributes.
            
points: ((float, float), ...)
            
                The coordinates that define the shape.
                Setting this attribute can be computationally expensive, beware of using this feature on large batches of shapes.
            
            class Line(points = ((-25, -25), (25, 25)), width = 2, x = 0, y = 0, angle = 0, color = BLACK)
            
                This class is for drawing lines.
                Because it extends the 
Shape class, it contains the same attributes.
                
width: float
                
                    The thickness of the line.
                
            class Physics(gravity_x: 0, gravity_y: -500)
            
                This class is a physics engine environment.
                Add objects to give them realistic physics.
                You can run a basic demo by typing the following command into the terminal.
                
python -m JoBase.examples.physics
                The example below creates a box that bounces on the ground.
                
import JoBase
engine = Physics()
box = Rectangle(y = 300, angle = 10)
box.body = engine.body()
floor = Rectangle(width = window.width, height = 20)
floor.body = engine.body(STATIC)
floor.bottom = camera.bottom
def loop():
    engine.update()
    floor.draw()
    box.draw()
run()
                
                gravity.x: float
                
                    The horizontal gravity.
                
                gravity.y: float
                
                    The vertical gravity.
                    A negative number makes the objects fall to the bottom.
                
                gravity: (float, float)
                
                    The gravity in the physics environment.
                
                group() -> object
                
                    Create a group for the physics environment.
                    Check the 
Group documentation to learn how to use this feature.
                
body(int = DYNAMIC) -> object
                
                    Create a body for the physics environment.
                    The body type can be 
DYNAMIC (default) or 
STATIC.
                    Check the 
Body documentation to learn how to use this feature.
                
update()
                
                    Calculate the next step for the physics engine.
                    It's good practice to call this in the game loop.
                
            class Body()
            
                
                    This object represents a body in a physics environment.
                    A body can have multiple shapes attached.
                    Don't try to instance this class directly, call the Physics.body() method instead.
                
                
                    # TODO
                
                type: int
                
                    The body type in a physics environment.
                    When it is DYNAMIC, the body can move about.
                    If you set the type to STATIC, the body acts as a solid wall that can't move.
                
                speed, velocity: (float, float)
                
                    The speed of the body in a physics environment.
                
                torque: float
                
                    The rotational force applied to the body in a physics environment.
                
             
            class Group()
            
                
                    This object represents a group in a physics environment.
                    Shapes with the same group don't have collisions with each other.
                    Don't try to instance this class directly, call the Physics.group() method instead.
                
                
                    # TODO
                
             
            class Joint()
            
                
                    This is the base class for all joint objects.
                    A joint is a constraint between two bodies.
                
                red, color.r: float
                
                    The red color of the joint.
                
                green, color.g: float
                
                    The green color of the joint.
                
                blue, color.b: float
                
                    The blue color of the joint.
                
                alpha, color.a: float
                
                    The transparency of the joint.
                
                color: (float, float, float, float)
                
                    The color of the joint.
                
                width: float
                
                    The thickness of the joint when rendered.
                
                draw()
                
                    Draw the joint on the screen.
                
             
            class Pin(a: object, b: object, length = 0, width = 2, color = BLACK)
            
                
                    This class constrains two bodies at a fixed distance from each other.
                    It is an extension of the Joint class.
                    Parameters a and b must be instances of Base.
                    If length is 0, the distance will be calculated automatically.
                
                start: (float, float)
                
                    The anchor of the joint on the first body.
                
                end: (float, float)
                
                    The anchor of the joint on the second body.
                
                
                length: float
                
                    The distance to set between the two bodies.
                
             
            class Spring(a: object, b: object, length = 0, stiffness = 10, damping = .5, width = 2, color = BLACK)
            
                
                    This class constrains two bodies with a spring joint.
                    It is an extension of the Joint class.
                    Parameters a and b must be instances of Base.
                    If length is 0, the distance will be calculated automatically.
                
                start: (float, float)
                
                    The anchor of the joint on the first body.
                
                end: (float, float)
                
                    The anchor of the joint on the second body.
                
                length: float
                
                    The resting length of the spring.
                
                stiffness: float
                
                    The strength of the spring.
                
                damping: float
                
                    This reduces the bounciness of the spring.
                    It is best to keep this attribute between 0 (bouncy) and 1 (smooth).
                
             
            class Groove(a: object, b: object, start = (50, 0), end = (100, 0), width = 2, color = BLACK)
            
                
                    This class links a body to a groove on another body.
                    It is an extension of the Joint class.
                    Parameters a and b must be instances of Base.
                    The groove is attached to body a.
                
                
import JoBase
engine = Physics()
floor = Rectangle(width = window.width, height = 20)
floor.elasticity = 0.9
floor.bottom = camera.bottom
floor.body = engine.body(STATIC)
a = Rectangle(50, 100, color = GRAY)
a.elasticity = 0.9
a.body = engine.body()
b = Rectangle(0, 300, color = LIGHT_BLUE)
b.elasticity = 0.9
b.body = engine.body()
groove = Groove(a, b, width = 10)
def loop():
    engine.update()
    a.draw()
    b.draw()
    floor.draw()
    groove.draw()
run()
                
                start: (float, float)
                
                    The anchor of the joint on the first body.
                
                end: (float, float)
                
                    The anchor of the joint on the second body.
                
                groove: (float, float)
                
                    The ending position of the groove in relation to the first body.
                
             
            def run()
            
                Run the game and display the window.
                Always call this method at the bottom of your code.
            
            def random(float, float) -> float
            
                Find a random decimal between two numbers.
            
            def randint(int, int) -> int
            
                Find a random integer between two whole numbers inclusively.
            
            def sin(float) -> float
            
                Find the sine of a number.
            
            def cos(float) -> float
            
                Find the cosine of a number.
            
            def tan(float) -> float
            
                Find the tangent of a number.
            
            def asin(float) -> float
            
                Find the inverse sine of a number.
            
            def acos(float) -> float
            
                Find the inverse cosine of a number.
            
            def atan(float) -> float
            
                Find the inverse tangent of a number.
            
            def sqrt(float) -> float
            
                Find the square root of a number.
            
            def cbrt(float) -> float
            
                Find the cube root of a number.
            
            def ceil(float) -> float
            
                Round up to the nearest whole number
            
            def floor(float) -> float
            
                Round down to the nearest whole number