示例#1
0
def create_sprite_grid(w: Window, x0, y0, m, n, scale=1, sprite_cls=Sprite):
    grid: List[List[Sprite]] = []
    for i in range(m):
        row = []
        for j in range(n):
            s = w.create_sprite(sprite_cls)
            s.scale = scale
            s.x = x0 + j * (1 + s.width)
            s.y = y0 + i * (1 + s.height)
            row.append(s)
        grid.append(row)
示例#2
0
def create_level(n, m, scale, x0, y0, w: Window, Csprite=Sprite):
    rows, cols = n, m
    grid = []
    for i in range(rows):
        row = []
        for j in range(cols):
            q = w.create_sprite(Csprite)
            q.scale = scale
            q.x = x0 + j * (2 + q.width)
            q.y = y0 + i * (2 + q.height)
            r = row.append(q)
        grid.append(r)
示例#3
0
def create_sprite(splited, scale, x0, y0, w: Window, Csprite=Sprite):
    rows, cols = len(splited), len(splited[0])
    grid = []
    for i in range(rows):
        row = []
        for j in range(cols):
            p = w.create_sprite(Csprite)
            p.texture = ni.get_texture_from_array(splited[i][j])
            p.scale = scale
            p.x = x0 + j * (2 + p.width)
            p.y = y0 + i * (2 + p.height)
            r = row.append(p)
        grid.append(r)
示例#4
0
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]] = []
    for i in range(s):
        row = []
        for j in range(n):
            s = w.create_sprite(sprite_cls)
            s.texture = np.get_texture_from_array(sub_array[i][j])
            s.scale = scale
            s.x = s.width / 2 + (j * s.width)
            s.y = s.height / 2 + (i * s.height)
            row.append(s)
        grid.append(row)
示例#5
0
    def __init__(self,
                 w: Window,
                 rows: int,
                 cols: int,
                 x: float = None,
                 y: float = None,
                 scale: float = 10,
                 cell_gap: float = 1,
                 cell_cls: Callable[..., T] = Sprite):

        self.__x = scale / 2 if x is None else x
        self.__y = scale / 2 if y is None else y
        self.__scale = scale
        self.__cell_gap = cell_gap
        self.__rows = rows
        self.__cols = cols
        self.__cells = [[w.create_sprite(cell_cls) for j in range(cols)]
                        for i in range(rows)]
        self.__update_cells()
示例#6
0
from pycat.core import Window, Sprite, KeyCode

window = Window(background_image='img/sea.png')


class Player(Sprite):
    def on_create(self):
        self.image = 'img/owl.png'

    def on_update(self, dt):
        self.move_forward(10)
        if window.is_key_down(KeyCode.UP):
            self.rotation = 90
        if window.is_key_down(KeyCode.DOWN):
            self.rotation = 270
        if window.is_key_down(KeyCode.LEFT):
            self.rotation = 180
        if window.is_key_down(KeyCode.RIGHT):
            self.rotation = 0

        if self.x > 1225:
            print("You Win!")
            window.close()

        if self.is_touching_any_sprite():
            print("You Lose!")
            window.close()


s = window.create_sprite()
s.image = "img/beach.png"
示例#7
0
from pycat.core import Window
from pycat.base import NumpyImage as Image

w = Window()
image01 = Image.get_array_from_file("4_0.jpg")
image02 = Image.get_array_from_file("10_0.jpg")
image03 = Image.get_array_from_file("11_0.jpg")
image04 = Image.get_array_from_file("16_0.jpg")
image06 = Image.get_array_from_file("22_0.jpg")

rows1, cols1, channels1 = image01.shape
rows2, cols2, channels2 = image02.shape
rows3, cols3, channels3 = image03.shape
rows4, cols4, channels4 = image04.shape
rows6, cols6, channels6 = image06.shape

isprite1 = w.create_sprite()
isprite1.scale = 1.6
isprite1.texture = Image.get_texture_from_array(image01)
isprite1.position = (430, 460)

isprite2 = w.create_sprite()
isprite2.scale = 1.6
isprite2.texture = Image.get_texture_from_array(image02)
isprite2.position = (860, 460)

isprite3 = w.create_sprite()
isprite3.scale = 1.6
isprite3.texture = Image.get_texture_from_array(image03)
isprite3.position = (360, 290)
示例#8
0
from pycat.core import Window, Sprite, Color
from pycat.label import Label

w = Window()


class Cell(Sprite):
    def on_create(self):
        self.height = 80
        self.width = 80
        self.color = Color.RED

    def create_label(self, value):
        self.value = value
        self.label = w.create_label()
        self.label.text = str(value)
        self.label.x = self.x
        self.label.y = self.y

    def set_color(self, max, min):
        scale = (self.value - min) / (max - min)
        self.color = Color(255, (1 - scale) * 255, (1 - scale) * 255)


my_list = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

list_min = list_max = my_list[0][0]
for i in range(3):
    for j in range(4):
        v = my_list[i][j]
        if v < list_min:
示例#9
0
    "c":Color.AMBER,
    "d":Color.BLACK,
    
}

my_list = [
    "wwwwwww",
    "ppppppp",
    "pbpppbp",
    "ppppppp",
    "ppwwwpp",
]

current_color = Color.WHITE

w = Window(width=len(my_list[0])*PIXEL+100, height=len(my_list)*PIXEL)

class Pixel(Sprite):
    def on_create(self):
        self.scale = PIXEL

class ColorChoice(Sprite):
    def on_create(self):
        self.scale = PIXEL
    def on_left_click(self):
        global current_color
        current_color = self.color

for i in range(len(my_list)):
    for j in range(len(my_list[i])):
        p = w.create_sprite(Pixel)
示例#10
0
from pycat.core import Window
from pycat.base import NumpyImage

w = Window()
original_image = NumpyImage.get_array_from_file("view.PNG")
print(original_image.shape)

sub = original_image[:386, :567, :]
sub2 = original_image[386:, 567:, :]
# sub3 = original_image[386:, :567, :]
# sub4 = original_image[:386, 567:, :]

s = w.create_sprite(x=250, y=200)
s.texture = NumpyImage.get_texture_from_array(sub)
s2 = w.create_sprite(x=900, y=400)
s2.texture = NumpyImage.get_texture_from_array(sub2)
w.run()
from pycat.core import Window, Sprite, KeyCode
from pycat.base import NumpyImage as Image
import random
w = Window()
original_image = Image.get_array_from_file("baboon.jpeg")


def get_max_rgb_image():
    rows, cols, channels = original_image.shape
    new_image = Image(rows, cols)
    for i in range(rows):
        for j in range(cols):
            r, g, b, a = original_image[i][j]
            new_image[i][j] = max(r, g, b)
    return new_image


def get_luminance_image():
    rows, cols, channels = original_image.shape
    luminance_image = Image(rows, cols)
    for i in range(rows):
        for j in range(cols):
            r, g, b, a = original_image[i][j]
            luminance_image[i][j] = .299 * r + .587 * g + .114 * b
    return luminance_image


def get_complement_image():
    rows, cols, channels = original_image.shape
    complement_image = Image(rows, cols, channels)
    for i in range(rows):
示例#12
0
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]] = []
示例#13
0
from pycat.core import Window, Sprite, Label
import random

w = Window(width=1000)

ima = [
    'squirrel.jpg',
    'bird.jpg',
    'sheep.jpg',
    'cow.jpg',
    'seal.jpg',
    'cat.jpg',
    'hedgehog.jpg',
    'meerkat.jpg',
]

texts = [
    'Red squirrel',
    'Pheasant',
    'Sheep',
    'Cow',
    'Seal',
    'Cat',
    'Hedgehog',
    'Meerkat',
]

imnum = 0
text0 = Label('', 400, 50)
w.add_label(text0)
w.background_image = ima[imnum]
示例#14
0
from typing import List
from pycat.base.color import Color
from pycat.core import Window, Sprite
from pyglet.gl.glext_arb import GL_EXT_x11_sync_object

ROW = 6
COL = 10
CELL_SIZE = 100

w = Window(width=COL * CELL_SIZE, height=ROW * CELL_SIZE)


class Cell(Sprite):
    def on_create(self):
        self.scale = CELL_SIZE - 1
        self.color = Color.RED

    def set_ij(self, i, j):
        self.i = i
        self.j = j

    def change_color(self):
        if self.color == Color.GREEN:
            self.color = Color.RED
        else:
            self.color = Color.GREEN

    def change_neighbors(self):
        i = self.i
        j = self.j
        if i > 0:
示例#15
0
from pycat.core import Window, Sprite
w = Window()
s = w.create_sprite(scale=200, position=w.center)
w.run()
示例#16
0
}

ccolor = {
    Color.BLACK,
    Color.BLUE,
    Color.CYAN,
    Color.GREEN,
    Color.MAGENTA,
    Color.ORANGE,
    Color.YELLOW,
    Color.RED
}

PIXEL_SIZE = 100

w = Window(width= (len(list0[0])+2)*PIXEL_SIZE,
           height= len(list0)*PIXEL_SIZE)

ncolor = Color.WHITE

class PixelR(Sprite):

    def on_create(self):
        self.scale = PIXEL_SIZE
        

x0 = PIXEL_SIZE/2
y0 = w.height - PIXEL_SIZE/2

for i in range (len(list0)):
    for j in range (len(list0[0])):
        p = w.create_sprite(PixelR)
示例#17
0
from pycat.core import Window, Sprite, Color
from random import randint

window = Window()
s = window.create_sprite()


class Bat(Sprite):
    def on_create(self):
        s.image = "bat-b.png"
        self.goto_random_position()

s1 = window.create_sprite(Bat)
s2 = window.create_sprite(Bat)
s3 = window.create_sprite(Bat)
for i in range(200):
    s = window.create_sprite(Bat)
    s.opacity = 200
    s.color = Color.random_rgb()
    s.rotation = randint(0,360)
    s.width = randint(0,10)
    s.height = randint(5,10)




window.run()
示例#18
0
from pycat.core import Window
from pycat.base import NumpyImage as Image

window = Window()
image_rgb = Image(255, 255, 3)
for i in range(image_rgb.rows):
    for j in range(image_rgb.cols):
        if j < 85:
            image_rgb[i][j] = [255, 0, 0]
        elif j < 170:
            image_rgb[i][j] = [0, 255, 0]
        else:
            image_rgb[i][j] = [0, 0, 255]

sprite = window.create_sprite()
sprite.texture = image_rgb.texture
sprite.position = window.center
sprite.x -= sprite.width / 2

image_rgba = Image(255, 255, 4)
for i in range(image_rgba.rows):
    for j in range(image_rgba.cols):
        if j < 85:
            image_rgba[i][j] = [255, 0, 0, i]
        elif j < 170:
            image_rgba[i][j] = [0, 255, 0, i]
        else:
            image_rgba[i][j] = [0, 0, 255, i]

sprite = window.create_sprite()
sprite.texture = image_rgba.texture
示例#19
0
from pycat.core import Window, Sprite
from pycat.base import NumpyImage

window = Window()


class ImageSprite(Sprite):
    def on_create(self):
        self.image = "baboon.jpeg"
        self.scale = 2
        self.y = window.height / 2


input_sprite = window.create_sprite(ImageSprite)
input_sprite.x = (window.width - input_sprite.width) / 2
output_sprite = window.create_sprite(ImageSprite)
output_sprite.x = (window.width + output_sprite.width) / 2

image = NumpyImage.get_array_from_texture(input_sprite.texture)
rows, cols, channels = image.shape

img = NumpyImage(rows, cols)
for i in range(rows):
    for j in range(cols):
        intensity = (j * 255) // (cols - 1)
        img[i, j] = intensity

# for i in range(rows):
#     for j in range(cols):
#         channel_sum = 0
#         # print(image[i][j])
示例#20
0
from pycat.core import Window, Point, Color
from math import sqrt

window = Window()

A = Point(600,300)
B = Point(800,300)

c = A.x - B.x
a = c/2
b = sqrt(c**2 - a**2)

C = Point((A.x + B.x)/2,A.y + b)

window.create_line(A.x, A.y, B.x, B.y, width = 1000, color = Color.CYAN)
window.create_line(B.x, B.y, C.x, C.y, width = 1000, color = Color.GREEN)
window.create_line(C.x, C.y, A.x, A.y, width = 1000, color = Color.ORANGE)


window.run()
示例#21
0
from enum import Enum, auto
from pycat.base.color import Color
from pycat.base.event.key_event import KeyCode
from pycat.core import Window, KeyCode
from pycat.sprite import Sprite
from typing import List
from shapes import S, Z, I, O, J, L, T
from random import choice

w = Window()
TOP_Y = 500
GAP = 3
SCALE = 30
ROWS = 15
GROUND_Y = TOP_Y-(ROWS-1)*(GAP+SCALE)

SHAPES = [S, Z, I, O, J, L, T]

class Game(Sprite):
    def on_create(self):
        self.is_visible = False
        self.shape = Shape()
        

    def left(self):
        for cell in self.shape.cells:
            if cell.state is Cell.State.FALL:
                cell.x -= cell.x_speed

    def right(self):
        for cell in self.shape.cells:
示例#22
0
from turtle import position, window_height, window_width
from pycat.base import NumpyImage
from pycat.core import Window

w = Window(width=600, height=400)

oimage = NumpyImage.get_array_from_file("hummmm.png")
print(oimage.shape)

image01 = NumpyImage.get_texture_from_array(oimage[:84, :150:])
image02 = NumpyImage.get_texture_from_array(oimage[:84, 150::])
image03 = NumpyImage.get_texture_from_array(oimage[84:, :150:])
image04 = NumpyImage.get_texture_from_array(oimage[84:, 150::])

x0y0 = w.create_sprite(x=225, y=158)
x1y0 = w.create_sprite(x=375, y=158)
x0y1 = w.create_sprite(x=225, y=242)
x1y1 = w.create_sprite(x=375, y=242)

x0y0.texture = image01
x1y0.texture = image02
x0y1.texture = image03
x1y1.texture = image04

w.run()
示例#23
0
from pycat.core import Window, Sprite, KeyCode, RotationMode, Scheduler
from random import random
from pycat.geometry.point import Point

from pyglet.image import create

CELL_SIZE = 48
TREE_PROB = 0.95

window = Window(height=700, width=700, is_sharp_pixel_scaling=True)


class Wall(Sprite):
    def on_create(self):
        self.scale = 2.8
        self.image = 'terrain/wall_1.png'
        self.add_tag('wall')


class Grass(Sprite):
    def on_create(self):
        self.scale = 3
        self.image = 'terrain/grass_1.png'


class Tree(Sprite):
    def on_create(self):
        self.scale = 2.9
        self.image = 'terrain/tree.png'
        self.layer = 5
        self.add_tag("tree")
示例#24
0
    @cell_gap.setter
    def cell_gap(self, val: float):
        self.__cell_gap = val
        self.__update_cells()

    @property
    def rows(self):
        return self.__rows

    @property
    def cols(self):
        return self.__cols


w = Window(is_sharp_pixel_scaling=True, enforce_window_limits=False)
current_texture: Texture = None
selection_grid = SpriteGrid(rows=7, cols=12, scale=30, cell_cls=SelectionCell)
selection_grid.split_sprite_sheet('pattern.png')
level_grid = SpriteGrid(rows=20,
                        cols=40,
                        scale=15,
                        x=600,
                        cell_gap=1,
                        cell_cls=LevelCell)


class GridController(Sprite):
    def on_update(self, dt):
        if w.is_key_pressed(KeyCode.W):
            level_grid.y += 5
示例#25
0
import random
from pycat.core import Window, Sprite

w = Window()

rest = 0

class Tur(Sprite):

    global rest
    def on_create(self):
        self.position = w.center
        # self.x -= 100
        # self.y -= 100
    def on_update(self, dt):
        pass

    def draw_forward(self,res):
        rest = res
        x1 = self.x
        y1 = self.y
        self.move_forward(rest)
        w.create_line(x1,y1,self.x,self.y)

    def draw_rect(self,width,height):
        self.draw_forward(width)
        self.rotation += 90
        self.draw_forward(height)  
        self.rotation += 90
        self.draw_forward(width)
        self.rotation += 90
示例#26
0
        self.opacity *= 0.95
        self.move_forward(3)
        if self.touching_window_edge() or self.time > 2:
            self.delete()


class CreateButton(Sprite):
    def on_left_click(self):
        for _ in range(10):
            window.create_sprite(Particle)


class ExplodeButton(Sprite):
    def on_left_click(self):

        for p in window.get_sprites_with_tag('particle'):
            for r in range(0, 360, 30):
                q = window.create_sprite(ExplosionParticle)
                q.position = p.position
                q.rotation = r
            p.delete()


window = Window()

bb = window.create_sprite(CreateButton, x=100, y=100, scale=75)
bb.color = [0, 0, 255]
rb = window.create_sprite(ExplodeButton, x=100, y=200, scale=75)
rb.color = [255, 0, 0]

window.run()
示例#27
0
from pycat.base.color import Color
from pycat.base.event.mouse_event import MouseEvent
from pycat.core import Sprite, Window
from enum import Enum, auto

from pyglet.gl.gl import GL_RED

window = Window(background_image="Galaxy.png")
window.background_sprite.scale = 1.5


class PlayerState(Enum):
    WAITING_FOR_CLICK = auto()
    JUMPING = auto()
    RESETTING = auto()


class Player(Sprite):
    def on_create(self):
        self.image = "frank-a.png"
        self.reset()

    def reset(self):
        self.x = 300
        self.y = 300
        self.scale = 0.3
        self.x_speed = 0
        self.y_speed = 0
        self.rotation = 0
        self.state = PlayerState.JUMPING
示例#28
0
PIXEL = 48

color = {
    "p":"tiles/tile_000.png",
    "w":"tiles/tile_001.png",
    "b":"tiles/tile_002.png",
}

my_list = [
    "wwwwwww",
    "ppppppp",
    "pbpppbp",
    "ppppppp",
    "ppwwwpp",
]
w = Window(width=len(my_list[0])*PIXEL, height=len(my_list)*PIXEL)
class Pixel(Sprite):

    def on_create(self):
        self.scale = 3

for i in range(len(my_list)):
    for j in range(len(my_list[i])):
        p = w.create_sprite(Pixel)
        
        p.image = color[my_list[i][j]]
        p.scale = 3
        p.x = j*(p.width+1) + p.width/2
        p.y = w.height - p.height/2 - i*(p.height+1)
        # if my_list[i][j] == "p":
        #     p.color = Color.PURPLE
示例#29
0
from pycat.core import Color, KeyCode, Sprite, Window, Scheduler
import random

window = Window()


class Player(Sprite):
    def on_create(self):
        self.color = Color.AMBER
        self.scale = 30
        self.speed = 10
        self.add_tag("player")

    def on_update(self, dt):
        if window.get_key(KeyCode.W):
            self.y += self.speed
        if window.get_key(KeyCode.A):
            self.x -= self.speed
        if window.get_key(KeyCode.S):
            self.y -= self.speed
        if window.get_key(KeyCode.D):
            self.x += self.speed

    def on_left_click_anywhere(self):
        window.create_sprite(Bullet)


player = window.create_sprite(Player)


class Bullet(Sprite):
示例#30
0
from pycat.core import Window
window = Window()
animal = window.create_sprite()
anwser = input("What animal do you like?")
animal.x = 620
animal.y = 320

if anwser == "pico":
    animal.image = "pico-c.png"

if anwser == "squirrel":

    animal.image = "squirrel.png"

if anwser == "starfish":
    animal.image = "starfish.png"

if anwser == "cat":
    animal.image = "Cat.png"
anwser0 = input("Do you want your animal big or small?")

if anwser0 == "big":
    animal.scale = 10

if anwser0 == "small":
    animal.scale = 0.5

window.run()