import arcade CELL = 25 HEIGHT = 600 WIDTH = 900 images = [ ["res/tiles_0.png", 0, 0, 75, 100], ["res/tiles_0.png", 75, 0, 75, 100], ["res/tiles_1.png", 0, 0, 75, 100], ] positions = [ [9, 1], [14, 1], [19, 1], [24, 1], [9, 7], [14, 7], [19, 7], [24, 7], [9, 13], [14, 13], [19, 13], [24, 13], [9, 19], [14, 19], [19, 19], [24, 19], ] textures = None deselected_tiles = [] selected_tiles = [] class Window(arcade.Window): def __init__(self): super().__init__(WIDTH, HEIGHT, "OGS Memory") arcade.set_background_color(arcade.color.WHITE) self.all_sprites = arcade.SpriteList() textures = load_textures(images) deselected_tiles = create_deselected_tiles(positions, textures) for t in deselected_tiles: self.all_sprites.append(t) #selected_tiles = create_selected_tiles(positions, textures) def on_draw(self): arcade.start_render() self.all_sprites.draw() def on_mouse_press(self, x, y, button, key_modifiers): print("click", x, y) sprites = arcade.get_sprites_at_point([x, y], self.all_sprites) if len(sprites) == 1: print("selected: ", sprites[0].guid) def on_update(self, delta): self.all_sprites.update_animation() def load_textures(images): ts = [] for (id, img) in enumerate(images): tex = arcade.load_texture(img[0], x = img[1], y = img[2], width = img[3], height = img[4]) ts.append(tex) return ts def create_deselected_tiles(positions, textures): tiles = [] for (id, p) in enumerate(positions): tile = arcade.AnimatedTimeBasedSprite() tiles.append(tile) tile.guid = id tile.texture = textures[0] # Animation between two textures. a1 = arcade.sprite.AnimationKeyframe(0, 700, textures[0]) a2 = arcade.sprite.AnimationKeyframe(1, 700, textures[1]) tile.frames.append(a1) tile.frames.append(a2) # Position. tile.center_x = CELL * 2 + p[0] * CELL tile.center_y = HEIGHT - CELL * 2 - p[1] * CELL return tiles