Ejemplo n.º 1
0
    def _draw(self, target):
        if self._position in [
                MenuBarPosition.POSITION_TOP, MenuBarPosition.POSITION_LEFT
        ]:
            pos = (0, 0)
            if self._position == MenuBarPosition.POSITION_TOP:
                bar = sf.RectangleShape(sf.Vector2(target.width, self._size))
            elif self._position == MenuBarPosition.POSITION_LEFT:
                bar = sf.RectangleShape(sf.Vector2(self._size, target.height))
        elif self._position == MenuBarPosition.POSITION_BOTTOM:
            pos = (0, target.height - self._size)
            bar = sf.RectangleShape(sf.Vector2(target.width, self._size))
        elif self._position == MenuBarPosition.POSITION_RIGHT:
            pos = (target.width - self._size, 0)
            bar = sf.RectangleShape(sf.Vector2(self._size, target.height))
        else:
            raise Exception(
                "Bad Menu bar position value: Expected one of MenuBarPosition constant values."
            )
        bar.position = pos
        bar.fill_color = self._fill_color
        target.draw(bar)

        for itm in self._items:
            target.draw(itm)
Ejemplo n.º 2
0
def main():
    window = sf.RenderWindow(sf.VideoMode(640, 480),
                             'SFML RenderTexture example')
    window.framerate_limit = 60
    running = True

    rect0 = sf.RectangleShape((5, 5))
    rect0.position = (90, 50)
    rect0.fill_color = sf.Color.GREEN
    rect0.outline_color = sf.Color.BLUE
    rect0.outline_thickness = 2.0

    rect1 = sf.RectangleShape((20, 30))
    rect1.position = (50, 50)
    rect1.fill_color = sf.Color.CYAN

    rt = sf.RenderTexture(110, 110)
    rt.clear(sf.Color(0, 0, 0, 0))
    rt.draw(rect0)
    rt.draw(rect1)
    rt.display()
    s = sf.Sprite(rt.texture)
    s.origin = (55, 55)
    s.position = (320, 240)

    while running:
        for event in window.iter_events():
            if event.type == sf.Event.CLOSED:
                running = False

        window.clear(sf.Color.WHITE)
        s.rotate(5)
        window.draw(s)
        window.display()
    window.close()
Ejemplo n.º 3
0
    def __init__(self):
        self.window = sf.RenderWindow(sf.VideoMode(WIDHT, HEIGHT), TITLE,
                                      sf.Style.DEFAULT, settings)
        self.window.framerate_limit = FPS

        self.clock = sf.Clock()

        self.ball = sf.CircleShape(30)
        self.ball.origin = self.ball.radius, self.ball.radius
        self.ball.position = self.window.size / 2
        x = randint(1, 5)
        y = randint(1, 5)
        if randint(0, 1) % 2 == 0:
            x *= -1.0
        if randint(0, 1) % 2 == 0:
            y *= -1.0

        self.ball_vel = sf.Vector2(x, y)
        self.ball_sound = None

        #sol çubuk
        self.p_left = sf.RectangleShape((30, 200))
        x = self.p_left.size.x / 2
        y = (HEIGHT - self.p_left.size.y) / 2
        self.p_left.position = sf.Vector2(x, y)
        self.left_score = 0

        #sağ çubuk
        self.p_right = sf.RectangleShape((30, 200))
        x = WIDHT - (self.p_right.size.x * 1.5)
        y = (HEIGHT - self.p_left.size.y) / 2
        self.p_right.position = sf.Vector2(x, y)
        self.right_score = 0

        self.font = None
Ejemplo n.º 4
0
    def __init__(self, position, identity):
        self.hunger = 0
        self.proxAnt = 0
        self.memory = 0
        self.proxFood = [0, 0, 0, 0]
        self.proxWall = [0, 0, 0, 0]
        self.dirOut = 0
        self.direction = 0

        self.pos = position
        self.id = id
        #tells if previous action caused this ant to be inactive this time
        self.holding = 0
        self.age = 0
        self.offspring = []
        self.genScore = np.size(self.offspring)
        self.lifeSpan = 4

        #neural net
        self.neuralNet = net.Net()

        #rendering
        self.antShape = sf.RectangleShape((10, 10))

        self.antShape.position = (self.pos[0] * 10, self.pos[1] * 10)
    def __init__(self, world):
        self.window = sf.RenderWindow(sf.VideoMode(1024, 600),
                                      "Emergency Facility Location Problem")
        self.facilities = []
        self.world = []

        font = sf.Font.from_file("font.ttf")
        for x in xrange(world.shape[0]):
            for y in xrange(world.shape[1]):
                demand = sf.Text(str(world[x, y]), font)
                demand.character_size = 10
                demand.color = sf.Color.BLUE
                demand.position = (x * 20, y * 20)
                area = sf.RectangleShape()
                area.size = (20, 20)
                area.fill_color = sf.Color(0, 0, 0, world[x, y] / 10 * 255)
                area.position = (x * 20, y * 20)
                self.world.append((area, demand))

        self.stats = sf.Text(
            "Iterations :  0000000000000000000 \nFitness    : 0000000000000000000",
            font)
        self.stats.character_size = 14
        self.stats.color = sf.Color.MAGENTA
        self.stats.position = (self.window.size.x -
                               self.stats.local_bounds.width, 0)
Ejemplo n.º 6
0
    def render(self, renderer, game, state, character):
        anim_frame = int(character.animoffset)

        if not character.onground(game, state):
            anim_frame = 1

        if character.intel:
            anim_frame += 2

        sprite = self.sprites[anim_frame]

        if character.flip:
            sprite.ratio = sfml.system.Vector2(-1, 1)
            sprite.origin = self.spriteoffset_flipped
        else:
            sprite.ratio = sfml.system.Vector2(1, 1)
            sprite.origin = self.spriteoffset

        sprite.position = renderer.get_screen_coords(character.x, character.y)

        renderer.window.draw(sprite)

        #toggle masks
        if game.toggle_masks:
            rect_location = renderer.get_screen_coords(character.x,
                                                       character.y)

            rect_size = character.collision_mask.get_size()
            rect_mask = sfml.RectangleShape(rect_size)

            rect_mask.fill_color = (sfml.Color(255, 0, 0, 125))
            rect_mask.position = (rect_location)
            renderer.window.draw(rect_mask)
Ejemplo n.º 7
0
    def __init__(self, window, view, savedGame, allCardData):
        self.window = window
        self.view = view
        self.playField = []
        self.tokens = []
        self.equipment = []
        self.bossCard = self.getRandomCard(allCardData, "Creature")
        self.bossCard.x = 25
        self.bossCard.y = 110
        self.bossCard.getHoverImage()
        self.playerHP = 20
        self.enemyHP = 20

        #### CREATE GUI ELEMENTS HERE
        self.enemyHPBox = HPBox(900, 200, 100, 100, 20)
        self.playerHPBox = HPBox(900, 725, 100, 100, 20)
        self.divider = sf.RectangleShape()
        self.divider.size = (1500, 4)
        self.divider.outline_color = sf.Color.CYAN
        self.divider.position = (0, 700)
        self.divider.fill_color = sf.Color(0, 100, 255, 255)
        self.maxNumberOfTokens = 15
        self.HPBoxes = [self.enemyHPBox, self.playerHPBox]
        self.dice = Dice(self, self.tokens)
        self.dice.x, self.dice.y = (850, 25)
        self.dice.tables.createToken(4, 2)

        #self.equipment.append(Equipment(247337,0,0,x=55,y=685))
        self.equipment.append(Equipment(247337, 0, 0, x=55, y=715))
Ejemplo n.º 8
0
    def draw(self, hoveritem):
        self.window.draw(self.menubg)
        rect = sfml.RectangleShape((200, 600))
        rect.fill_color = self.color
        self.window.draw(rect)

        super(LobbyHandler, self).draw(hoveritem)
Ejemplo n.º 9
0
 def __init__(self, dData):
     Component.__init__(self, "BOX:%s" % (dData['componentID']), False, 1)
     self._box = sf.RectangleShape(
         (int(dData['width']), int(dData['height'])))
     self._box.position = (int(dData['x']), int(dData['y']))
     self._box.fill_color = sf.Color.WHITE
     self._box.outline_color = sf.Color.RED
     self._box.outline_thickness = 3.0
Ejemplo n.º 10
0
    def __init__(self, window):
        self._bar = sf.RectangleShape()
        self._bar.position = (92, 0)
        self._orig_size = (settings.windowWidth - self._bar.position[0], 38)
        self._bar.size = (settings.windowWidth - self._bar.position[0], 38)
        self._bar.fill_color = sf.Color.GREEN

        self._window = window
Ejemplo n.º 11
0
 def add_button(self, system):
     x_offset = self.BUTTON_OFFSET_X + (len(self.buttons) * (self.BUTTON_WIDTH + self.BUTTON_RIGHT_MARGIN)) + self.BUTTON_RIGHT_MARGIN
     next_button_location = sf.Vector2(x_offset, self.BUTTON_OFFSET_Y)
     rectangle = sf.RectangleShape()
     rectangle.position = next_button_location
     rectangle.size = sf.Vector2(self.BUTTON_WIDTH, self.BUTTON_HEIGHT)
     rectangle.fill_color = self.SYSTEM_BUTTON_COLOR
     self.buttons.append(SystemButton(rectangle, system))
Ejemplo n.º 12
0
    def __init__(self, window):
        self._box = sf.RectangleShape()
        self._box.size = (92, 38)
        self._box.fill_color = sf.Color.WHITE

        self._text = sf.Text("00000", settings.monospaceFont, 30)
        self._text.color = sf.Color.BLACK

        self._window = window
Ejemplo n.º 13
0
    def __init__(self, x, y, start_number):
        Actor.__init__(self)

        self.start_number = start_number

        self.sprite = sf.RectangleShape()
        self.sprite.size = (50, 50)
        self.sprite.outline_color = sf.Color.BLUE
        self.sprite.outline_thickness = 2
        self.position = (x, y)
Ejemplo n.º 14
0
def make_button(x,y,w,h,rotate,color,outlineThickness,outlinecolor,scale = (1,1)):
    new_btn = sf.RectangleShape()
    new_btn.position = (sf.Vector2(x,y))
    new_btn.size = (sf.Vector2(w,h))
    new_btn.fill_color = (color)
    new_btn.outline_thickness = outlineThickness
    new_btn.outline_color = outlinecolor
    new_btn.rotation = (rotate)
    new_btn.ratio = (scale)
    return new_btn
Ejemplo n.º 15
0
    def __init__(self):
        self.window = sf.RenderWindow(sf.VideoMode(WIDHT, HEIGHT), TITLE,
                                      sf.Style.DEFAULT, settings)
        self.circle = sf.CircleShape(50)
        self.rectangle = sf.RectangleShape((150, 200))
        self.rectangle.position = 200, 100

        self.view = sf.View()
        self.view.reset(sf.Rectangle((0, 0), self.window.size))
        self.window.view = self.view
Ejemplo n.º 16
0
    def __init__(self, ship):
        self.ship = ship
        self.buttons = []  # A list of SystemButton objects
        
        self.unpowered_bar = sf.RectangleShape()
        self.unpowered_bar.size = sf.Vector2(32, 8)
        self.unpowered_bar.fill_color = sf.Color(0, 0, 0, 0)
        self.unpowered_bar.outline_thickness = 1
        self.unpowered_bar.outline_color = sf.Color(255, 255, 255, 255)
        
        self.powered_bar = sf.RectangleShape()
        self.powered_bar.size = sf.Vector2(32, 8)
        self.powered_bar.fill_color = self.BAR_POWERED_COLOR
        #self.powered_bar.outline_thickness = 3
        #self.powered_bar.outline_color = sf.Color(0, 0, 0, 0)

        self.add_button(self.ship.engine_system)
        self.add_button(self.ship.weapon_system)
        self.add_button(self.ship.shield_system)
Ejemplo n.º 17
0
    def __init__(self, x, array):

        self.pos = (x, 26)

        self.foodShape = sf.RectangleShape((10, 10))

        self.foodShape.fill_color = sf.Color(195, 132, 163)

        self.foodShape.position = (self.pos[0] * 10, self.pos[1] * 10)

        array[x][26] = 5
Ejemplo n.º 18
0
    def _create_renderables(self):
        size_x = int(self.l * self.window_x)
        size_y = 25
        rod = sf.RectangleShape(size=sf.Vector2(size_x, size_y))
        rod.fill_color = sf.Color.BLACK
        rod.origin = sf.Vector2(0, int(size_y / 2))

        weight = sf.CircleShape(self.circle_radius)
        weight.fill_color = sf.Color.BLUE
        weight.origin = sf.Vector2(self.circle_radius - size_x,
                                   self.circle_radius)

        pivot = sf.CircleShape(int(size_y / 2))
        pivot.fill_color = rod.fill_color
        pivot.origin = sf.Vector2(pivot.radius, pivot.radius)

        cart = sf.RectangleShape(size=sf.Vector2(size_x, 75))
        cart.fill_color = sf.Color.GREEN
        cart.origin = sf.Vector2(int(size_x / 2), 0)
        return [cart, rod, weight, pivot]
Ejemplo n.º 19
0
 def draw(self, target, states):
     dx = self.rect.width / self.max_points
     width = self.rect.width / (self.max_points + 1)
     for i in range(0, self.max_points):
         shape = sf.RectangleShape((width, self.rect.height))
         shape.outline_color = self.color
         shape.outline_thickness = 1
         if i < self.points:
             shape.fill_color = self.color
         else:
             shape.fill_color = sf.Color.TRANSPARENT
         shape.position = (self.rect.position.x + i * dx,
                           self.rect.position.y)
         target.draw(shape, states)
Ejemplo n.º 20
0
    def draw(self, hoveritem=None):
        x = self.offsetx
        y = self.offsety
        for item in self.menuitems:
            if item is hoveritem:
                width, height = self.font.stringSize(item[0])
                rect = sfml.RectangleShape((width, height))
                rect.fill_color = sfml.Color.RED
                rect.position = (x, y)
                self.window.draw(rect)
            self.font.renderString(item[0], self.window, x, y)
            y += self.spacing

        self.window.display()
Ejemplo n.º 21
0
    def __init__(self, x, y, width, height, hp):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.hp = hp
        self.hovered = False
        self.characterDead = False

        box = sf.RectangleShape()
        box.size = (self.width, self.height)
        box.outline_color = sf.Color.WHITE
        box.outline_thickness = 3
        box.fill_color = sf.Color.TRANSPARENT
        box.position = (self.x, self.y)
        self.box = box
Ejemplo n.º 22
0
    def __init__(self,
                 mainScreen,
                 ruleTables,
                 x=0,
                 y=200,
                 width=200,
                 height=75,
                 text="DEEP IQ's Turn"):
        self.tables = RuleTables(self, mainScreen)
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.text = text
        self.message = "DEEP IQ waits idly. "
        self.coolDown = sf.Clock()
        self.canBeClicked = True
        self.mainScreen = mainScreen
        box = sf.RectangleShape()
        box.size = (self.width, self.height)
        box.outline_color = sf.Color.WHITE
        box.outline_thickness = 3
        box.fill_color = sf.Color.TRANSPARENT
        box.position = (self.x, self.y)
        self.box = box

        buffers = [
            sf.SoundBuffer.from_file(
                os.path.join(os.getcwd(), "res", "dice0.ogg")),
            sf.SoundBuffer.from_file(
                os.path.join(os.getcwd(), "res", "dice0.ogg")),
            sf.SoundBuffer.from_file(
                os.path.join(os.getcwd(), "res", "dice1.ogg")),
            sf.SoundBuffer.from_file(
                os.path.join(os.getcwd(), "res", "dice2.ogg")),
            sf.SoundBuffer.from_file(
                os.path.join(os.getcwd(), "res", "dice3.ogg")),
            sf.SoundBuffer.from_file(
                os.path.join(os.getcwd(), "res", "dice4.ogg"))
        ]

        self.sounds = []
        for buffer in buffers:
            sound = sf.Sound()
            sound.buffer = buffer
            self.sounds.append(sound)
Ejemplo n.º 23
0
def main():
    window = sf.RenderWindow(sf.VideoMode(800, 600), 'Shape example')
    window.framerate_limit = 60
    running = True
    clock = sf.Clock()

    custom_shapes = [CustomShape()]
    rectangles = []
    circles = []

    for i in range(30):
        circle = sf.CircleShape(randint(5, 20))
        circle.fill_color = random_color()
        circle.position = random_position(window)
        circles.append(circle)

    for i in range(100):
        rectangle = sf.RectangleShape((randint(10, 30), randint(10, 30)))
        rectangle.position = random_position(window)
        rectangle.fill_color = random_color()
        rectangle.outline_color = random_color()
        rectangle.outline_thickness = randint(1, 2)
        rectangles.append(rectangle)

    while running:
        for event in window.iter_events():
            if event.type == sf.Event.CLOSED:
                running = False

        frame_time = clock.restart().as_milliseconds()

        for r in rectangles:
            r.rotate(frame_time * 0.3)

        window.clear(sf.Color.WHITE)

        for shape in custom_shapes + rectangles + circles:
            window.draw(shape)

        window.display()

    window.close()
 def setUp(self):
     lineString = "move 200		400		100		50		0	0	0	0.0		400		300		1"
     space = pm.Space()
     line = lineString.split()
     dynamic_body = pm.Body(pm.inf, pm.inf)
     dynamic_body.position = int(line[1]), int(line[2])
     
     my_shape = pm.Poly.create_box(dynamic_body, (int(line[3]),int(line[4])))
     my_shape.friction = float(line[8])
     my_shape.collision_type = 2
     space.add(my_shape)
     
     my_graphic = sf.RectangleShape()
     my_graphic.size = (int(line[3]), int(line[4]))
     my_graphic.origin = my_graphic.size / 2
     my_graphic.fill_color = sf.Color(int(line[5]),int(line[6]),int(line[7]))
     my_graphic.position = (int(line[1]), int(line[2]))
     
     self.block = MovingBlock(dynamic_body, my_shape, my_graphic,
             pm.Vec2d(int(line[9]), int(line[10])), float(line[11]))
Ejemplo n.º 25
0
    def _create_window(self, x, y):
        pX = x * (self._windowWidth + self._borderWeight) + self._borderWeight
        pY = y * (self._windowHeight + self._borderWeight) + self._borderWeight

        window = sf.RectangleShape(
            sf.Vector2(self._windowWidth, self._windowHeight))
        window.fill_color = self._houseColor

        window.position = sf.Vector2(pX, pY) + self._house_position

        self._windows[x][y] = {
            "window": window,
            "status": False,
            "create_time": datetime.now(),
            "energyConsumption": 0,
            "animating": None,
            "a_creation_time": datetime.now(),
            "isDrawn": False,
            "hasBread": False,
            "bread_creation_time": datetime.now()
        }
Ejemplo n.º 26
0
    def __init__(self, name, size, shadowtext="Type here"):
        base.BaseComponent(self, name)
        self.events.update({
            'OnFocus': None,
            'OnBlur': None,
        })
        self.shadowtext = shadowtext
        self.x_rect = sf.RectangleShape()
        self.x_rect.size = size
        self.focused = False
        self.hovered = False
        self.font_color = sf.Color.BLACK
        self.shadow_color = sf.Color(200, 200, 200)

        self.text = ""

        self.fontsize = 10
        self.forefont = None
        self.shadowfont = None

        self._run_event('OnCreate')
Ejemplo n.º 27
0
    def __init__(self, position, size, bgcolor, fgcolor, linecolor, linesize,
                 lable, font, fontsize):
        self._position = position
        self._size = size
        self._bgcolor = bgcolor
        self._fgcolor = fgcolor
        self._linecolor = linecolor
        self._linesize = linesize
        self._lable = lable
        self._font = font
        self._fontsize = fontsize

        #def RecShape():
        #RectangleShape
        self._recShape = sf.RectangleShape()
        self._recShape.position = self._position
        self._recShape.size = self._size
        self._recShape.fill_color = self._bgcolor
        self._recShape.outline_color = self._linecolor
        self._recShape.outline_thickness = self._linesize

        #def Rec():
        #Rectangle
        self._rec = sf.Rectangle(self._position, self._size)

        #def Text():
        #text
        self._text = sf.Text()
        self._text.string = self._lable
        self._text.font = self._font
        self._text.character_size = self._fontsize
        self._text.style = sf.Text.BOLD
        textpos = sf.Vector2(
            (self._size[0] - self._text.local_bounds.size[0]) / 2,
            self._size[1] - self._fontsize) + self._position
        textpos = sf.Vector2(
            textpos[0], (textpos[1] - (self._text.local_bounds.size[1] / 5)))
        self._text.position = textpos
        self._text.color = self._fgcolor
Ejemplo n.º 28
0
 def __init__(self, multiverseID, power, toughness, x=0, y=0, extraText=""):
     self.multiverseID = multiverseID
     self.x = x
     self.y = y
     self.alive = True
     self.outlineWidth = 700
     self.outlineHeight = 16
     self.power = str(power)
     self.toughness = str(toughness)
     self.hoverTexture = None
     self.hoverSprite = None
     self.canDisplayImage = False
     self.defaultColor = sf.Color.WHITE
     self.altColor = sf.Color.RED
     self.currentColor = self.defaultColor
     self.outline = sf.RectangleShape()
     self.outline.size = (self.outlineWidth, self.outlineHeight)
     self.outline.outline_color = self.currentColor
     self.outline.outline_thickness = 2
     self.outline.fill_color = sf.Color.TRANSPARENT
     self.outline.position = (self.x, self.y)
     self.extraText = extraText
     self.textContent = (self.power + " / " + self.toughness + "  " +
                         extraText)
Ejemplo n.º 29
0
# -*- coding:utf-8 -*-
import sfml as sf

WIDTH = 800
HEIGHT = 480
TITLE = "Cindiii"

window = sf.RenderWindow(sf.VideoMode(WIDTH, HEIGHT), TITLE)
alpha = 255
circle = sf.CircleShape(50)
circle.origin = circle.radius, circle.radius
circle.fill_color = sf.Color(18, 74, 34, alpha)

rectangle = sf.RectangleShape((50, 50))
rectangle.fill_color = sf.Color.BLUE
rectangle.origin = rectangle.size.x / 2, rectangle.size.y / 2
rectangle.position = 200, 200
while window.is_open:
    for event in window.events:
        if type(event) is sf.CloseEvent:
            window.close()
        if type(event) is sf.MouseWheelEvent:
            alpha += event.delta
            if not 0 <= alpha <= 255:
                print "Al kırdın kırdııın!"
                alpha = 0
            circle.fill_color = sf.Color(18, 74, 34, alpha)
        if type(event) is sf.KeyEvent:
            if event.released and event.code is sf.Keyboard.ESCAPE:
                window.close()
    circle.position = sf.Mouse.get_position(window)
Ejemplo n.º 30
0
def run():
    window = sf.RenderWindow(sf.VideoMode(WWIDTH, WHEIGHT), WTITLE)
    window.framerate_limit = 60

    # Background
    bg_texture = sf.Texture.from_file("assets/images/background.png")
    background = sf.Sprite(bg_texture)

    # Ball
    b_texture = sf.Texture.from_file("assets/images/ball.png")
    ball = sf.CircleShape(35)
    ball.texture = b_texture
    ball.origin = 35, 35
    ball.position = WWIDTH / 2.0, WHEIGHT / 2.0

    speed = sf.Vector2(randint(-5, 5), randint(-5, 5)) * 50.0

    # Paddle 1
    paddle_1 = sf.RectangleShape((50, 175))
    paddle_1.origin = 25.0, 82.5
    paddle_1.position = 50, WHEIGHT / 2.0

    # Paddle 2
    paddle_2 = sf.RectangleShape((50, 175))
    paddle_2.origin = 25.0, 82.5
    paddle_2.position = WWIDTH - 50, WHEIGHT / 2.0

    # Scores
    scored = False
    p1_score, p2_score = 0, 0

    # Font
    font = sf.Font.from_file("assets/fonts/kenvector.ttf")

    # Texts
    p1_score_text = sf.Text(str(p1_score))
    p1_score_text.font = font
    p1_score_text.character_size = 72
    p1_score_text.color = sf.Color.WHITE
    p1_score_text.position = 170, 100

    p2_score_text = sf.Text(str(p2_score))
    p2_score_text.font = font
    p2_score_text.character_size = 72
    p2_score_text.color = sf.Color.WHITE
    p2_score_text.position = 570, 100

    # Sound
    s_buffer = sf.SoundBuffer.from_file("assets/sounds/tone1.ogg")

    sound = sf.Sound(s_buffer)

    # Clock
    clock = sf.Clock()

    while window.is_open:
        for event in window.events:
            if type(event) is sf.CloseEvent:
                window.close()
        # Close
        if sf.Keyboard.is_key_pressed(sf.Keyboard.ESCAPE):
            window.close()

        elapsed = clock.elapsed_time.seconds
        clock.restart()

        # Inputs
        if sf.Keyboard.is_key_pressed(sf.Keyboard.W):
            paddle_1.move(sf.Vector2(0, -PADDLE_SPEED))

            if paddle_1.position.y < paddle_1.origin.y:
                paddle_1.position = sf.Vector2(paddle_1.position.x,
                                               paddle_1.origin.y)

        if sf.Keyboard.is_key_pressed(sf.Keyboard.S):
            paddle_1.move(sf.Vector2(0, PADDLE_SPEED))

            if paddle_1.position.y > WHEIGHT - paddle_1.origin.y:
                paddle_1.position = sf.Vector2(paddle_1.position.x,
                                               WHEIGHT - paddle_1.origin.y)

        if sf.Keyboard.is_key_pressed(sf.Keyboard.UP):
            paddle_2.move(sf.Vector2(0, -PADDLE_SPEED))

            if paddle_2.position.y < paddle_2.origin.y:
                paddle_2.position = sf.Vector2(paddle_2.position.x,
                                               paddle_2.origin.y)

        if sf.Keyboard.is_key_pressed(sf.Keyboard.DOWN):
            paddle_2.move(sf.Vector2(0, PADDLE_SPEED))

            if paddle_2.position.y > WHEIGHT - paddle_2.origin.y:
                paddle_2.position = sf.Vector2(paddle_2.position.x,
                                               WHEIGHT - paddle_2.origin.y)

        if scored:
            speed = sf.Vector2(randint(-5, 5), randint(-5, 5)) * 50.0
            ball.position = WWIDTH / 2.0, WHEIGHT / 2.0
            paddle_1.position = 50, WHEIGHT / 2.0
            paddle_2.position = WWIDTH - 50, WHEIGHT / 2.0
            scored = False

        ball.move(speed * elapsed)

        if ball.position.x < ball.origin.x or ball.position.x > WWIDTH - ball.origin.x:
            scored = True

            if ball.position.x < ball.origin.x:
                p2_score += 1
            else:
                p1_score += 1

            p1_score_text.string = str(p1_score)
            p2_score_text.string = str(p2_score)

        if ball.position.y < ball.origin.y or ball.position.y > WHEIGHT - ball.origin.y:
            speed = sf.Vector2(speed.x, speed.y * -1.0)

        p1_col = ball.global_bounds.intersects(paddle_1.global_bounds)
        if p1_col:
            sound.play()
            if p1_col.top + p1_col.height / 2.0 > paddle_1.position.y:
                y = (-1.0, 1.0)[speed.y > 0]
            else:
                y = (1.0, -1.0)[speed.y > 0]

            x_factor = (1.0, 1.05)[-MAX_BALL_SPEED < speed.x < MAX_BALL_SPEED]

            speed = sf.Vector2(speed.x * -1.0 * x_factor, speed.y * y)

        p2_col = ball.global_bounds.intersects(paddle_2.global_bounds)
        if p2_col:
            sound.play()
            if p2_col.top + p2_col.height / 2.0 > paddle_2.position.y:
                y = (-1.0, 1.0)[speed.y > 0]
            else:
                y = (1.0, -1.0)[speed.y > 0]

            x_factor = (1.0, 1.05)[-MAX_BALL_SPEED < speed.x < MAX_BALL_SPEED]

            speed = sf.Vector2(speed.x * -1.0 * x_factor, speed.y * y)

        # Rendering
        window.clear(sf.Color.BLACK)

        window.draw(background)
        window.draw(ball)
        window.draw(paddle_1)
        window.draw(paddle_2)
        window.draw(p1_score_text)
        window.draw(p2_score_text)

        window.display()