This repository has been archived on 2025-06-21. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
raylib-python-cffi/examples/shapes/shapes_following_eyes.py
2024-11-16 20:11:08 +00:00

90 lines
2.8 KiB
Python

"""
raylib [shapes] example - Following Eyes
"""
from pyray import *
from math import (
atan2,
cos,
sin
)
# Initialization
# ----------------------------------------------------------------------------------
screenWidth = 800
screenHeight = 450
init_window(screenWidth, screenHeight, "raylib [shapes] example - following eyes")
scleraLeftPosition = Vector2(screenWidth / 2.0 - 100.0, screenHeight / 2.0)
scleraRightPosition = Vector2(screenWidth / 2.0 + 100.0, screenHeight / 2.0)
scleraRadius = 80.0
irisLeftPosition = Vector2(screenWidth / 2.0 - 100.0, screenHeight / 2.0)
irisRightPosition = Vector2(screenWidth / 2.0 - 100.0, screenHeight / 2.0)
irisRadius = 24.0
angle = 0.0
dx, dy, dxx, dyy = 0.0, 0.0, 0.0, 0.0
set_target_fps(60)
# ----------------------------------------------------------------------------------
# Main game loop
while not window_should_close(): # Detect window close button or ESC key
# Update
# ----------------------------------------------------------------------------------
irisLeftPosition = get_mouse_position()
irisRightPosition = get_mouse_position()
# Check not inside the left eye sclera
if not check_collision_point_circle(irisLeftPosition, scleraLeftPosition, scleraRadius - 20):
dx = irisLeftPosition.x - scleraLeftPosition.x
dy = irisLeftPosition.y - scleraLeftPosition.y
angle = atan2(dy, dx)
dxx = (scleraRadius - irisRadius)*cos(angle)
dyy = (scleraRadius - irisRadius)*sin(angle)
irisLeftPosition.x = scleraLeftPosition.x + dxx
irisLeftPosition.y = scleraLeftPosition.y + dyy
# Check not inside the right eye sclera
if not check_collision_point_circle(irisRightPosition, scleraRightPosition, scleraRadius - 20):
dx = irisRightPosition.x - scleraRightPosition.x
dy = irisRightPosition.y - scleraRightPosition.y
angle = atan2(dy, dx)
dxx = (scleraRadius - irisRadius)*cos(angle)
dyy = (scleraRadius - irisRadius)*sin(angle)
irisRightPosition.x = scleraRightPosition.x + dxx
irisRightPosition.y = scleraRightPosition.y + dyy
# ----------------------------------------------------------------------------------
# draw
# ----------------------------------------------------------------------------------
begin_drawing()
clear_background(RAYWHITE)
draw_circle_v(scleraLeftPosition, scleraRadius, LIGHTGRAY)
draw_circle_v(irisLeftPosition, irisRadius, BROWN)
draw_circle_v(irisLeftPosition, 10, BLACK)
draw_circle_v(scleraRightPosition, scleraRadius, LIGHTGRAY)
draw_circle_v(irisRightPosition, irisRadius, DARKGREEN)
draw_circle_v(irisRightPosition, 10, BLACK)
draw_fps(10, 10)
end_drawing()
# De-Initialization
close_window() # Close window and OpenGL context