예제 #1
0
 def draw_paddle(self, screen, offset, paddle):
     if paddle != None:
         rect = sdl2.SDL_Rect(int((paddle.pos[0] - offset) * screen.height),
                              int(paddle.pos[1] * screen.height),
                              int(paddle.size[0] * screen.height),
                              int(paddle.size[1] * screen.height))
         sdl2.SDL_RenderFillRect(screen.renderer.sdlrenderer, rect)
예제 #2
0
def draw_rects(renderer):

    global current_alpha, current_color, cycle_direction

    rect = sdl2.SDL_Rect()
    viewport = sdl2.SDL_Rect()

    sdl2.SDL_RenderGetViewport(renderer, ctypes.byref(viewport))

    for i in range(0, NUM_OBJECTS):
        current_color = current_color + cycle_direction
        if current_color < 0:
            current_color = 0
            cycle_direction = -cycle_direction
        if current_color > 255:
            current_color = 255
            cycle_direction = -cycle_direction

        sdl2.SDL_SetRenderDrawColor(renderer, 255, current_color,
                                    current_color, current_alpha)

        rect.w = (int(random.random() * 65535) % int(viewport.h / 2))
        rect.h = (int(random.random() * 65535) % int(viewport.h / 2))

        rect.x = ((int(random.random() * 65535) %
                   (viewport.w * 2)) - viewport.w) - int(rect.w / 2)
        rect.y = ((int(random.random() * 65535) %
                   (viewport.h * 2)) - viewport.h) - int(rect.h / 2)

        sdl2.SDL_RenderFillRect(renderer, ctypes.byref(rect))
예제 #3
0
 def draw_ball(self, screen, offset, ball):
     if ball != None:
         rect = sdl2.SDL_Rect(int((ball.pos[0] - offset) * screen.height),
                              int(ball.pos[1] * screen.height),
                              int(ball.size[0] * screen.height),
                              int(ball.size[1] * screen.height))
         sdl2.SDL_RenderFillRect(screen.renderer.sdlrenderer, rect)
예제 #4
0
def draw_apple(game, renderer):
    global cell_size
    x = int(game.apple.x * cell_size + cell_size / 4)
    y = int(game.apple.y * cell_size + cell_size / 4)
    size = int(cell_size / 2)
    rect = sdl2.SDL_Rect(x, y, size, size)
    sdl2.SDL_SetRenderDrawColor(renderer, 255, 0, 0, 0)
    sdl2.SDL_RenderFillRect(renderer, rect)
예제 #5
0
 def render_npcs(self, renderer, screen_width, screen_height, entities):
     sdl2.SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255)
     for character in entities.characters:
         sdl2.SDL_RenderFillRect(
             renderer,
             sdl2.SDL_Rect(self.get_adjusted_x(character, screen_width),
                           self.get_adjusted_y(character, screen_height),
                           MiniMap.character_dot_size,
                           MiniMap.character_dot_size))
예제 #6
0
파일: render.py 프로젝트: sim1234/snowid
 def fill_color(self, color=None):
     if color is not None:
         tmp = self.color
         self.color = color
     ret = sdl2.SDL_RenderFillRect(self.sdlrenderer, None)
     if color is not None:
         self.color = tmp
     if ret == -1:
         raise sdl2.ext.SDLError()
예제 #7
0
    def paint_rectangle(self, x, y, w, h):
        """
        Paints the whole rectangle on the screen. (It will be filled).
        To only draw its outline, use the `sketch_rectangle` method.
        """
        x, y = self.transform[-1].position(x, y)
        w, h = self.transform[-1].size(w, h)

        rect = sdl2.SDL_Rect(int(x), int(y), int(w), int(h))
        sdl2.SDL_RenderFillRect(self.renderer, rect)
예제 #8
0
 def render_locations(self, renderer, screen_width, screen_height,
                      entities):
     sdl2.SDL_SetRenderDrawColor(renderer, 80, 80, 80, 255)
     for location in entities.locations:
         sdl2.SDL_RenderFillRect(
             renderer,
             sdl2.SDL_Rect(self.get_adjusted_x(location, screen_width),
                           self.get_adjusted_y(location, screen_height),
                           int(location.width * self.x_scale),
                           int(location.height * self.y_scale)))
예제 #9
0
 def render_player(self, renderer, screen_width, screen_height, entities):
     sdl2.SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255)
     sdl2.SDL_RenderFillRect(
         renderer,
         sdl2.SDL_Rect(
             int(
                 self.get_adjusted_x(entities.player, screen_width) -
                 MiniMap.player_dot_size / 2),
             int(
                 self.get_adjusted_y(entities.player, screen_height) -
                 MiniMap.player_dot_size / 2), MiniMap.player_dot_size,
             MiniMap.player_dot_size))
예제 #10
0
    def render_roads(self, renderer, screen_width, screen_height, entities):
        sdl2.SDL_SetRenderDrawColor(renderer, 48, 48, 48, 255)
        for road in entities.map_elements:
            if road.type != MapElementType.ROAD:
                continue

            sdl2.SDL_RenderFillRect(
                renderer,
                sdl2.SDL_Rect(self.get_adjusted_x(road, screen_width),
                              self.get_adjusted_y(road, screen_height),
                              int(road.width * self.x_scale),
                              int(road.height * self.y_scale)))
예제 #11
0
    def fillRect(self, x, y, w, h):
        ''' Рисует залитый прямоугольник
        * @param  {number} x - Координата X левого верхнего угла
        * @param  {number} y - Координата Y левого верхнего угла
        * @param  {number} w - Ширина
        * @param  {number} h - Высота
        * @returns {self}
        '''
        rect = SDL.SDL_Rect(int(x), int(y), int(w), int(h))

        SDL.SDL_RenderDrawRect(self.ctx, rect)
        SDL.SDL_RenderFillRect(self.ctx, rect)

        return self
예제 #12
0
 def draw_score(self, screen, scores):
     size = 20
     offset = 0
     for score in map(bitfont, scores):
         side = offset == 0
         offset = self.from_center(screen, len(score), size, side)
         for digit in score:
             offset_x = offset
             offset_y = size
             for i in range(len(digit)):
                 if i > 0 and i % 3 == 0:
                     offset_y += size
                     offset_x = offset
                 if digit[i]:
                     rect = sdl2.SDL_Rect(offset_x, offset_y, size, size)
                     sdl2.SDL_RenderFillRect(screen.renderer.sdlrenderer,
                                             rect)
                 offset_x += size
             offset = offset_x + size
         offset += 2 * size
예제 #13
0
def updown_render(screen,
                  scrno,
                  data,
                  colours=[(96, 210, 255, 255), (200, 200, 200, 255),
                           (200, 000, 000, 255)]):
    width, height = screen.dimensions
    sect_width = width / len(data[0]) * scrno
    bars_each = int(len(data[0]) / scrno)
    screen.setcolour(colours[0])
    for i, channel in enumerate(data):
        for j, datum in enumerate(channel[screen.n * bars_each:(screen.n + 1) *
                                          bars_each]):
            screen.setcolour(
                colours[j % 2 if sect_width > RECOMMENDED_WIDTH else 0])
            bar = sdl2.SDL_Rect(
                int(j * sect_width), height // 2,
                int(sect_width) + 1,
                int((-1)**i * datum * height // 2 // SCALE_DOWN))
            sdl2.SDL_RenderFillRect(screen.sdlrenderer, bar)
    screen.setcolour(colours[2])
    sdl2.SDL_RenderDrawLine(screen.sdlrenderer, 0, height // 2, width,
                            height // 2)
예제 #14
0
def fill(renderer, x0, y0, x1, y1):
    rect = sdl2.SDL_Rect(x0, y0, x1 - x0, y1 - y0)
    sdl2.SDL_RenderFillRect(renderer, rect)
예제 #15
0
파일: app.py 프로젝트: alexd2580/kikori
 def rect_on(display, rect, r, g, b, a):
     renderer = App.windows[display]["renderer"]
     sdl2.SDL_SetRenderDrawColor(renderer, r, g, b, a)
     sdl2.SDL_RenderFillRect(renderer, rect)
예제 #16
0
def main():
    sdl2.sdl2_load(
        ctypes.util.find_library('SDL2'),  # '/usr/local/lib/libSDL2.dylib'
        ttf_libpath=ctypes.util.find_library('SDL2_ttf'))
    sdl2.SDL_Init(sdl2.SDL_INIT_EVERYTHING)

    WINDOW_W = 640
    WINDOW_H = 360
    window = sdl2.SDL_CreateWindow(b"Minimal SDL_TTF Test via python-sdl2", 0,
                                   0, WINDOW_W, WINDOW_H,
                                   sdl2.SDL_WINDOW_OPENGL)

    renderer = sdl2.SDL_CreateRenderer(window, -1, 0)

    rect = sdl2.SDL_Rect()
    rect.x = 0
    rect.y = 0
    rect.w = WINDOW_W
    rect.h = WINDOW_H

    sdl2.TTF_Init()
    rwops_ptr = sdl2.SDL_RWFromFile(
        bytes(sys.argv[1], 'utf-8'), b"rb"
    )  # rwops = ctypes.cast(rwops_ptr, ctypes.POINTER(sdl2.SDL_RWops)).contents
    font = sdl2.TTF_OpenFontRW(rwops_ptr, 0, 42)

    fg = sdl2.SDL_Color()
    fg.r = 96
    fg.g = 96
    fg.b = 96
    fg.a = 255

    bg = sdl2.SDL_Color()
    bg.r = 0xE0
    bg.g = 0xE0
    bg.b = 0xE0
    bg.a = 255

    pos = [
        sdl2.SDL_Rect(),
        sdl2.SDL_Rect(),
    ]
    pos[0].x = 20
    pos[0].y = 120
    pos[0].w = 600
    pos[0].h = 60

    pos[1].x = 20
    pos[1].y = 180
    pos[1].w = 600
    pos[1].h = 60

    surfaces = [
        sdl2.TTF_RenderUTF8_Shaded(font, bytes("志於道、據於徳、依於仁、游於藝", 'utf-8'), fg,
                                   bg),
        sdl2.TTF_RenderUTF8_Shaded(font, bytes("SCORE 123456780", 'utf-8'), fg,
                                   bg),
    ]

    texture = [
        sdl2.SDL_CreateTextureFromSurface(renderer, surfaces[0]),
        sdl2.SDL_CreateTextureFromSurface(renderer, surfaces[1]),
    ]

    sdl2.SDL_SetRenderDrawColor(renderer, bg.r, bg.g, bg.b, bg.a)
    sdl2.SDL_RenderFillRect(renderer, ctypes.byref(rect))
    sdl2.SDL_RenderCopy(renderer, texture[0], None, ctypes.byref(pos[0]))
    sdl2.SDL_RenderCopy(renderer, texture[1], None, ctypes.byref(pos[1]))

    sdl2.SDL_RenderPresent(renderer)

    sdl2.SDL_FreeSurface(surfaces[0])
    sdl2.SDL_FreeSurface(surfaces[1])

    fpsdelay = 100
    count = 0
    event = sdl2.SDL_Event()
    done = False
    while not done:
        while sdl2.SDL_PollEvent(ctypes.byref(event)) != 0:
            # 'type' and 'timestamp' are common members for all SDL Event structs.
            event_type = event.common.type
            event_timestamp = event.common.timestamp
            # print("Event : type=0x%s, timestamp=%s" % (event_type, event_timestamp) )

            if event_type == sdl2.SDL_KEYDOWN:
                if event.key.keysym.sym == sdl2.SDLK_ESCAPE:
                    done = True

        sdl2.SDL_Delay(fpsdelay)

    sdl2.TTF_Quit()
    sdl2.SDL_DestroyRenderer(renderer)
    sdl2.SDL_DestroyWindow(window)
    sdl2.SDL_Quit()
예제 #17
0
def draw_board(wsize, renderer):
    rect = sdl2.SDL_Rect(0, 0, wsize, wsize)
    sdl2.SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0)
    sdl2.SDL_RenderFillRect(renderer, rect)