Handles mouse input (prototype)

This commit is contained in:
nejdetckenobi committed 2026-10-11 18:21:07 +03:00
1 parent fe9fc14849
commit 0e3f07938c
5 files changed
+76 -6

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
red_spice
yellow_spice
orange_spice
pink_spice
blue_spice
green_spice
purple_spice
+14 -3
View File
@@ -8,10 +8,11 @@ from components import (
SpaceShipMarker,
Target,
)
from random import randint, sample
from random import choice, randint, sample
from settings import (
MIN_PLANET_RADIUS,
MAX_PLANET_RADIUS,
PLANET_COLORS,
SCREEN_WIDTH,
SCREEN_HEIGHT,
SPACESHIP_COLOR,
@@ -58,8 +59,8 @@ def generate_random_planet(world: World) -> int:
radius: int = randint(MIN_PLANET_RADIUS, MAX_PLANET_RADIUS)
x: int = randint(radius, SCREEN_WIDTH - radius)
y: int = randint(radius, SCREEN_HEIGHT - radius)
color = (randint(0, 255), randint(0, 255), randint(0, 255), 255)
# color = (randint(0, 255), randint(0, 255), randint(0, 255), 255)
color = choice(PLANET_COLORS) + (255,)
return create_planet(world, x, y, radius, color)
@@ -94,3 +95,13 @@ def generate_random_spaceship(world: World) -> int:
_planet_sample = sample(planets, 2)
return create_travelling_spaceship(world, *_planet_sample)
def load_items(path: str) -> list[str]:
with open(path) as f:
data = [l.rstrip("\n") for l in f.readlines()]
return data
def normalize_name(name: str) -> str:
return name.replace("_", " ").title()
+30
View File
@@ -9,3 +9,33 @@ SPACESHIP_RADIUS = 5
SPACESHIP_COLOR = (255, 255, 255, 255)
SPACESHIP_PATH_COLOR = (127, 127, 127, 127)
SPACESHIP_SPEED = 500
PLANET_COLORS = (
# (0, 0, 0), # NO FULL BLACK PLANET ON BLACK BACKGROUND
(0, 0, 127),
(0, 0, 255),
(0, 127, 0),
(0, 127, 127),
(0, 127, 255),
(0, 255, 0),
(0, 255, 127),
(0, 255, 255),
(127, 0, 0),
(127, 0, 127),
(127, 0, 255),
(127, 127, 0),
(127, 127, 127),
(127, 127, 255),
(127, 255, 0),
(127, 255, 127),
(127, 255, 255),
(255, 0, 0),
(255, 0, 127),
(255, 0, 255),
(255, 127, 0),
(255, 127, 127),
(255, 127, 255),
(255, 255, 0),
(255, 255, 127),
(255, 255, 255),
)
+7
View File
@@ -0,0 +1,7 @@
from helpers import normalize_name, load_items
if __name__ == "__main__":
items = load_items("assets/goods.txt")
for item in items:
print(normalize_name(item))
+18 -3
View File
@@ -1,8 +1,9 @@
from random import randint
import pyglet
from pyglet.window.mouse import LEFT
from pyglet.shapes import Circle, Line
from components import PlanetMarker, SpaceShipMarker
from components import PlanetMarker, Position, Radius, SpaceShipMarker, Vector2D
from helpers import generate_random_planet, generate_random_spaceship
from libs.ecs.world import World
from libs.ecs.event import EventBus
@@ -42,11 +43,25 @@ def on_draw():
for _, component_storage in world.query(SpaceShipMarker):
component_storage[Line].draw()
for _, component_storage in world.query(SpaceShipMarker):
component_storage[Circle].draw()
for _, component_storage in world.query(PlanetMarker):
component_storage[Circle].draw()
for _, component_storage in world.query(SpaceShipMarker):
component_storage[Circle].draw()
@window.event
def on_mouse_release(x, y, button, modifiers):
if button == LEFT:
closest_entity, component_storage = min(
world.query(PlanetMarker),
key=lambda p: abs(p[1][Position] - Vector2D(x, y)),
)
pos = component_storage[Position]
if component_storage[Radius].value < abs(pos - Vector2D(x, y)):
print("NO PLANET")
else:
print("PLANET")
def on_update(dt):