A python binding for the great C library raylib.
From PyPI, in the CLI:
$ pip install raylib-py
You can also download the wheel from the releases page and install it with pip locally:
$ pip install path/to/raylib_py-6.0.0-py3-none-any.whl
Try this (after installed raylib-py, create a new python file, save the code below into it, then run it):
from raylibpy import *
def main():
init_window(800, 450, "raylib [core] example - basic window")
set_target_fps(60)
while not window_should_close():
begin_drawing()
clear_background(RAYWHITE)
draw_text("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY)
end_drawing()
close_window()
if __name__ == '__main__':
main()
Please refer to DOCS.md for v6.0.0 for documentation on raylib-py 6.0.
PEP8 naming convention only:
Structure attributes are in snake_case, classes and other types in PascalCase.
Type annotation:
def get_ray_collision_mesh(ray: Ray, mesh: Mesh, transform: Matrix) -> RayCollision:
...
structures with functions as methods and properties:
sound = Sound.load('my/resorces/sound.wav') # same as load_sound(...)
position = Vector(4.0, 10.0)
# later...
sound.play() # same as play_sound(sound)
length = position.length # same as vector2length(position); uses raymath.h functions
# creates an array of 3 Vector2 structures
triangle = Vector2.array(Vector2(10.0, 10.0), Vector2(20.0, 30.0), Vector2(0.0, 30.0))
# creates an array of 24 Image structures, zero initialized
frames = Image.array(length=24)
Vector{2,3,4}, Rectangle and Color have attribute swizzling;
vec3 = Vector3(2.0, 5.0, 3.0)
vec2 = vec3.zxy # vec2 is a Vector2, not a sequence type
other_vec3 = vec2.xxy # same thing: other_vec3 is a Vector3
vec2.xy = vec3.y, other_vec3.z # sequences can be set as values
c_red = Color(255, 0, 0)
c_yellow = c_red.rrb
# Rectangles have aliases for width and height: w and h respectively:
rect = Rectangle(10.0, 10.0, 320.0, 240.0)
other_rect = rect.whxy # swizzling is only allowed when using four attributes, not 3 nor 2
Pretty printing: most structures implement __str__() and __repr__() in a friendly way;
Context managers: begin_* and end_* functions can be called as context managers:
Without context managers:
# this example shows a rendering step
begin_drawing()
begin_texture_mode(minimap_texture)
# render the "minimap"
draw_line(2, 2, 5, 5, RED)
end_texture_mode(minimap_texture)
begin_mode2d(main_camera)
# 2d drawing logic...
draw_texture(minimap_texture, 10, 10, WHITE)
end_mode2d()
end_drawing()
With context managers:
# this example shows a rendering step
with drawing():
with texture_mode(minimap_texture):
# render the minimap
draw_line(2, 2, 5, 5, RED)
with mode2d(main_camera):
# 2d drawing logic...
draw_texture(minimap_texture, 10, 10, WHITE)
Context managers for some structures: Camera{2,3}D, Shader and others;
Folowing the example above:
# this example shows a rendering step
with drawing():
with minimap_texture:
# render the minimap
draw_line(2, 2, 5, 5, RED)
with main_camera:
# 2d drawing logic...
draw_texture(minimap_texture, 10, 10, WHITE)
RLGL and RayMath functions exposed
Includes all symbols in raymath.h and rlgl.h
And more.
Python
100.0%
A python binding for the great C library raylib.
From PyPI, in the CLI:
$ pip install raylib-py
You can also download the wheel from the releases page and install it with pip locally:
$ pip install path/to/raylib_py-6.0.0-py3-none-any.whl
Try this (after installed raylib-py, create a new python file, save the code below into it, then run it):
from raylibpy import *
def main():
init_window(800, 450, "raylib [core] example - basic window")
set_target_fps(60)
while not window_should_close():
begin_drawing()
clear_background(RAYWHITE)
draw_text("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY)
end_drawing()
close_window()
if __name__ == '__main__':
main()
Please refer to DOCS.md for v6.0.0 for documentation on raylib-py 6.0.
PEP8 naming convention only:
Structure attributes are in snake_case, classes and other types in PascalCase.
Type annotation:
def get_ray_collision_mesh(ray: Ray, mesh: Mesh, transform: Matrix) -> RayCollision:
...
structures with functions as methods and properties:
sound = Sound.load('my/resorces/sound.wav') # same as load_sound(...)
position = Vector(4.0, 10.0)
# later...
sound.play() # same as play_sound(sound)
length = position.length # same as vector2length(position); uses raymath.h functions
# creates an array of 3 Vector2 structures
triangle = Vector2.array(Vector2(10.0, 10.0), Vector2(20.0, 30.0), Vector2(0.0, 30.0))
# creates an array of 24 Image structures, zero initialized
frames = Image.array(length=24)
Vector{2,3,4}, Rectangle and Color have attribute swizzling;
vec3 = Vector3(2.0, 5.0, 3.0)
vec2 = vec3.zxy # vec2 is a Vector2, not a sequence type
other_vec3 = vec2.xxy # same thing: other_vec3 is a Vector3
vec2.xy = vec3.y, other_vec3.z # sequences can be set as values
c_red = Color(255, 0, 0)
c_yellow = c_red.rrb
# Rectangles have aliases for width and height: w and h respectively:
rect = Rectangle(10.0, 10.0, 320.0, 240.0)
other_rect = rect.whxy # swizzling is only allowed when using four attributes, not 3 nor 2
Pretty printing: most structures implement __str__() and __repr__() in a friendly way;
Context managers: begin_* and end_* functions can be called as context managers:
Without context managers:
# this example shows a rendering step
begin_drawing()
begin_texture_mode(minimap_texture)
# render the "minimap"
draw_line(2, 2, 5, 5, RED)
end_texture_mode(minimap_texture)
begin_mode2d(main_camera)
# 2d drawing logic...
draw_texture(minimap_texture, 10, 10, WHITE)
end_mode2d()
end_drawing()
With context managers:
# this example shows a rendering step
with drawing():
with texture_mode(minimap_texture):
# render the minimap
draw_line(2, 2, 5, 5, RED)
with mode2d(main_camera):
# 2d drawing logic...
draw_texture(minimap_texture, 10, 10, WHITE)
Context managers for some structures: Camera{2,3}D, Shader and others;
Folowing the example above:
# this example shows a rendering step
with drawing():
with minimap_texture:
# render the minimap
draw_line(2, 2, 5, 5, RED)
with main_camera:
# 2d drawing logic...
draw_texture(minimap_texture, 10, 10, WHITE)
RLGL and RayMath functions exposed
Includes all symbols in raymath.h and rlgl.h
And more.
Python
100.0%