from numpy import ndarray from pycat.core import Window, Sprite, Color from pycat.base import NumpyImage as np from pycat.base import Texture from pycat.base.event import MouseEvent from typing import List, TypeVar w = Window(is_sharp_pixel_scaling=True) w.set_clear_color(100, 100, 100) def sprite_array(row, col, file): array = np.get_array_from_file(file) m, n, _ = array.shape di = m // row dj = n // col result = [] for i in range(row): row = [] for j in range(col): row.append(array[i * di:(i + 1) * di, j * dj:(j + 1) * dj, :]) result.append(row) return result def create(w: Window, sub_array: List[List[ndarray]], scale=1, sprite_cls=Sprite): s, n = len(sub_array), len(sub_array[0]) grid: List[List[Sprite]] = []
from math import sqrt from pycat.core import Window, Sprite, Point, Color from pycat.base.event import MouseEvent w = Window() w.set_clear_color(126, 200, 80) hole = w.create_circle(700, 500, 30, Color.BLACK) SPEED = 0.05 FRICTION = 0.97 def dot(u: Point, v: Point): return u.x * v.x + u.y * v.y def project(u: Point, v: Point): return dot(u, v) * v / dot(v, v) def reflect(u: Point, v: Point): return u - 2 * project(u, v) class Ball(Sprite): def on_create(self): self.aim = w.create_line() self.scale = 0.1 self.image = "golfball.png" self.is_aimmimg = True self.speed = 0