Example #1
0
    def load_level(self):
        for i in self.blocks:
            self.esys.remove_entity(i)
        self.blocks = []

        with open("Levels/"+str(self.level)+".json", "r") as f:
            datas = json.load(f)
        pos = Vec2()
        pos.coords = datas["player"]

        for k, v in datas["blocks"].items():
            if k == "grass":
                sprite = "Assets/Tiles/Grass.png"
            elif k == "treasure":
                sprite = "Assets/Tiles/Chest.png"
            elif k == "saw":
                sprite = "Assets/Obstacles/Saw.png"
            else:
                print("Unknown block : "+k)
                break
            for i in v:
                p = Vec2()
                p.coords = i
                self.blocks.append(Block(sprite, p))

        for i in self.blocks:
            self.esys.add_entity(i)
        self.player.set_pos(pos)
Example #2
0
 def test_size(self):
     self.assertEqual(
         self.widget.size,
         Vec2(self.widget.image.get_rect().width,
              self.widget.image.get_rect().height))
     self.widget.size = Vec2(10, 10)
     self.assertEqual(
         Vec2(self.widget.image.get_rect().width,
              self.widget.image.get_rect().height), Vec2(10, 10))
Example #3
0
 def __init__(self):
     super(Anim, self).__init__(
         Vec2(100, 200),
         ['Images/sprite0.png', 'Images/sprite1.png', 'Images/test.gif'],
         20, Vec2(50, 50))
     try:
         self.init()
     except AttributeError:
         pass
Example #4
0
def create_image(obj):
    image = obj.properties["Image"]
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    sizex = obj.properties["Taille X"]
    sizey = obj.properties["Taille Y"]
    if sizex != 0 and sizey != 0:
        return Image(Vec2(posx, posy), image, Vec2(sizex, sizey))
    else:
        return Image(Vec2(posx, posy), image)
Example #5
0
 def setUp(self):
     self.e = Entity()
     self.components = [
         PositionComponent(Vec2(10, 10)),
         SpriteComponent("files/sprite0.png"),
         PhysicsComponent(),
         LifeComponent(100),
         MoveComponent(Vec2(1, 1)),
         ControlComponent(ControlType.FOURDIRECTION)
     ]
Example #6
0
def create_button(obj):
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    sizex = obj.properties["Taille X"]
    sizey = obj.properties["Taille Y"]
    text = obj.properties["Texte"]
    image = obj.properties["Image"]
    return Button(Vec2(posx, posy),
                  text,
                  size=Vec2(sizex, sizey),
                  sprite=image)
Example #7
0
def create_anim(obj):
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    images = obj.properties["Images"]
    timer = obj.properties["Timer"]
    sizex = obj.properties["Taille X"]
    sizey = obj.properties["Taille Y"]
    if sizex == 0 or sizey == 0:
        return AnimatedImage(Vec2(posx, posy), images, timer)
    else:
        return AnimatedImage(Vec2(posx, posy), images, timer,
                             Vec2(sizex, sizey))
Example #8
0
def create_progress(obj):
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    sizex = obj.properties["Taille X"]
    sizey = obj.properties["Taille Y"]
    imf = obj.properties["Image Fond"]
    imb = obj.properties["Image Barre"]

    if imf is None or imb is None:
        return ProgressBar(Vec2(posx, posy), Vec2(sizex, sizey))
    else:
        return ProgressBar(Vec2(posx, posy), Vec2(sizex, sizey), (imf, imb))
Example #9
0
 def __init__(self):
     super(Tile, self).__init__(Vec2(400, 300), "Tilemaps/Tile/level.json",
                                1)
     try:
         self.init()
     except AttributeError:
         pass
Example #10
0
def create_checkbox(obj):
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    text = obj.properties["Texte"]
    check = obj.properties["Coché"]
    scale = obj.properties["Scale"]
    return Checkbox(Vec2(posx, posy), text, check, scale)
Example #11
0
 def outofwindow(self, e, pos):
     if e == self.player:
         with open("Levels/" + str(self.level) + ".json", "r") as f:
             datas = json.load(f)
         pos = Vec2()
         pos.coords = datas["player"]
         self.player.set_pos(pos)
Example #12
0
 def __init__(self):
     super(Multiline, self).__init__(
         Vec2(500, 300), "Ceci est un test\nnan ?\nMoi je suis d'accord !",
         Color(70, 169, 255), Font("arial", 20, False, False, False))
     try:
         self.init()
     except AttributeError:
         pass
Example #13
0
 def __init__(self):
     super(Label, self).__init__(Vec2(525, 525), "Mamadou",
                                 Color(255, 0, 4),
                                 Font("arial", 26, True, True, True))
     try:
         self.init()
     except AttributeError:
         pass
Example #14
0
    def outofwindow(self, obj, pos):
        # Si notre objet est le joueur 1
        if obj == self.j1:
            # On récupère le PositionComponent du J1 pour le "bloquer" dans l'écran
            position = self.j1.get_component(PositionComponent)
            if pos.y <= 0:
                position.position = Vec2(10, 0)
            else:
                position.position = Vec2(10, 350)

        # Si notre objet est le joueur 2
        elif obj == self.j2:
            # On récupère le PositionComponent du J2 pour le "bloquer" dans l'écran
            position = self.j2.get_component(PositionComponent)
            if pos.y <= 0:
                position.position = Vec2(770, 0)
            else:
                position.position = Vec2(770, 350)

        # Si notre objet est la balle
        else:
            # Si la balle sort de l'écran sur les cotés
            if pos.x < 10 or pos.x > 790:
                # On replace la balle au centre
                position = self.ball.get_component(PositionComponent)
                position.position = Vec2(390, 190)
                self.ball.get_component(MoveComponent).direction = Vec2(randint(1, 5), randint(1, 5))
            # Si la balle sort de l'écran par le haut
            else:
                # On inverse la direction y du movement de la base
                move = self.ball.get_component(MoveComponent)
                move.direction = Vec2(move.direction.x, -move.direction.y)
Example #15
0
 def __init__(self):
     super(Entry, self).__init__(Vec2(10, 500),
                                 200,
                                 color=Color(255, 255, 255),
                                 font=Font("arial", 15, False, False,
                                           False))
     try:
         self.init()
     except AttributeError:
         pass
Example #16
0
    def __init__(self):
        # Création de la fenêtre de jeu de taille 800x400, de fond blanc et titre "Pong"
        self.window = Window(800, 400, Colors.WHITE.value)
        self.window.title = "Pong"

        # Définition du callback OUTOFWINDOW
        self.window.set_callback(WindowCallbacks.OUTOFWINDOW, self.outofwindow)

        # Création de l'entité pour la barre du joueur à gauche avec :
        #  - Un PositionComponent avec les positions 10, 175
        #  - Un SpriteComponent avec le sprite texture.png que l'on redimensionne en 20, 50
        #  - Un ControlComponent avec un ControlType UPDOWN auquel on définit les touches à Z et S (azerty)
        #  - Un PhysicsComponent sans l'affection par la gravité
        self.j1 = Entity()
        self.j1.add_component(PositionComponent(Vec2(10, 175)))
        spritej1 = self.j1.add_component(SpriteComponent("images/texture.png"))
        spritej1.size = Vec2(20, 50)
        controlj1 = self.j1.add_component(ControlComponent(ControlType.UPDOWN))
        controlj1.set_control(Controls.UPJUMP, const.K_w)
        controlj1.set_control(Controls.DOWN, const.K_s)
        self.j1.add_component(PhysicsComponent(False))

        # Création de l'entité pour la barre du joueur à droite avec :
        #  - Un PositionComponent avec les positions 770, 175
        #  - Un SpriteComponent avec le sprite texture.png que l'on redimensionne en 20, 50
        #  - Un ControlComponent avec un ControlType UPDOWN auquel on définit les touches aux flèches haut et bas
        #  - Un PhysicsComponent sans l'affection par la gravité
        self.j2 = Entity()
        self.j2.add_component(PositionComponent(Vec2(770, 175)))
        spritej2 = self.j2.add_component(SpriteComponent("images/texture.png"))
        spritej2.size = Vec2(20, 50)
        controlj2 = self.j2.add_component(ControlComponent(ControlType.UPDOWN))
        controlj2.set_control(Controls.UPJUMP, const.K_UP)
        controlj2.set_control(Controls.DOWN, const.K_DOWN)
        self.j2.add_component(PhysicsComponent(False))

        # Création de l'entité pour la balle avec :
        #  - Un PositionComponent avec les positions 390, 190
        #  - Un SpriteComponent avec le sprite texture.png que l'on redimensionne en 20, 20
        #  - Un PhysicsComponent sans l'affection par la gravité dont on définit le callback de collision
        #  - Un MoveComponent avec comme direction random
        self.ball = Entity()
        self.ball.add_component(PositionComponent(Vec2(390, 190)))
        spriteballe = self.ball.add_component(SpriteComponent("images/texture.png"))
        spriteballe.size = Vec2(20, 20)
        physball = self.ball.add_component(PhysicsComponent(False))
        physball.callback = self.collision
        self.ball.add_component(MoveComponent(Vec2(randint(20, 60), randint(20, 60))))

        # Ajout des entités au monde via l'EntitySystem
        entitysystem = self.window.world.get_system(EntitySystem)
        entitysystem.add_entity(self.j1)
        entitysystem.add_entity(self.j2)
        entitysystem.add_entity(self.ball)

        # Lancement du jeu
        self.window.run()
Example #17
0
def create_label(obj):
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    texte = obj.properties["Texte"]
    color = obj.properties["Couleur"]
    font = obj.properties["Font"]
    npolice = obj.properties["Nom Police"]
    tpolice = obj.properties["Taille Police"]
    ipolice = obj.properties["Italique"]
    gpolice = obj.properties["Gras"]
    spolice = obj.properties["Souligné"]
    if font is None:
        return Label(Vec2(posx, posy), texte,
                     Color(color[0], color[1], color[2]),
                     Font(npolice, tpolice, gpolice, ipolice, spolice))
    else:
        return Label(Vec2(posx, posy), texte,
                     Color(color[0], color[1], color[2]),
                     Font(npolice, tpolice, gpolice, ipolice, spolice),
                     Color(font[0], font[1], font[2]))
Example #18
0
 def test_management_entity(self):
     with self.assertRaises(NoObjectError):
         self.system.add_entity(self.e)
     self.e.add_component(PositionComponent(Vec2()))
     with self.assertRaises(NoObjectError):
         self.system.add_entity(self.e)
     self.e.add_component(SpriteComponent("files/sprite0.png"))
     self.system.add_entity(self.e)
     self.assertIn(self.e, self.system.entities.sprites())
     self.assertEqual(self.system.get_entity(0), self.e)
     self.assertEqual(self.system.has_entity(self.e), True)
     self.system.remove_entity(self.e)
     self.assertEqual(self.system.has_entity(self.e), False)
Example #19
0
    def __init__(self, window):
        super(Game, self).__init__(window)
        self.level = 1
        self.maxlevel = 2

        self.esys = self.get_system(EntitySystem)

        self.player = Player(self, Vec2(10, 10))
        self.esys.add_entity(self.player)

        self.blocks = []

        self.load_level()
Example #20
0
def create_entry(obj):
    posx = obj.properties["Position X"]
    posy = obj.properties["Position Y"]
    wid = obj.properties["Largeur"]
    image = obj.properties["Image"]
    color = obj.properties["Couleur"]
    npolice = obj.properties["Nom Police"]
    tpolice = obj.properties["Taille Police"]
    ipolice = obj.properties["Italique"]
    gpolice = obj.properties["Gras"]
    spolice = obj.properties["Souligné"]

    return Entry(Vec2(posx, posy), wid, image,
                 Color(color[0], color[1], color[2]),
                 Font(npolice, tpolice, gpolice, ipolice, spolice))
Example #21
0
def create_tilemap(obj):
    pos_x = obj.properties["Position X"]
    pos_y = obj.properties["Position Y"]
    file = obj.properties["Fichier JSON"]
    scale = obj.properties["Scale"]
    tilemap = Tilemap(Vec2(pos_x, pos_y), file, scale)

    tiles = []
    for i in tilemap.tiles:
        entity = Entity()
        entity.pos = i.get_component(PositionComponent).position.coords
        entity.image = i.image
        tiles.append(entity)

    return tiles
Example #22
0
    def __init__(self):
        self.window = Window(800, 400, Colors.WHITE.value)
        self.window.title = "Pong"

        self.window.set_callback(WindowCallbacks.OUTOFWINDOW, self.outofwindow)

        self.j1 = Entity()
        self.j1.add_component(PositionComponent(Vec2(10, 175)))
        spritej1 = self.j1.add_component(SpriteComponent("images/sprite0.png"))
        spritej1.size = Vec2(20, 50)
        controlj1 = self.j1.add_component(
            ControlComponent(ControlType.UPDOWN, 3))
        controlj1.set_control(Controls.UPJUMP, const.K_w)
        controlj1.set_control(Controls.DOWN, const.K_s)
        self.j1.add_component(PhysicsComponent(False))

        self.j2 = Entity()
        self.j2.add_component(PositionComponent(Vec2(770, 175)))
        spritej2 = self.j2.add_component(SpriteComponent("images/sprite0.png"))
        spritej2.size = Vec2(20, 50)
        controlj2 = self.j2.add_component(
            ControlComponent(ControlType.UPDOWN, 3))
        controlj2.set_control(Controls.UPJUMP, const.K_UP)
        controlj2.set_control(Controls.DOWN, const.K_DOWN)
        self.j2.add_component(PhysicsComponent(False))

        self.ball = Entity()
        self.ball.add_component(PositionComponent(Vec2(390, 190)))
        spriteballe = self.ball.add_component(
            SpriteComponent("images/sprite0.png"))
        spriteballe.size = Vec2(20, 20)
        physball = self.ball.add_component(PhysicsComponent(False))
        physball.callback = self.collision
        self.ball.add_component(
            MoveComponent(Vec2(randint(50, 100), randint(50, 100))))

        entitysystem = self.window.world.get_system(EntitySystem)
        entitysystem.add_entity(self.j1)
        entitysystem.add_entity(self.j2)
        entitysystem.add_entity(self.ball)

        self.window.run()
Example #23
0
    def __init__(self, window):
        super(Win, self).__init__(window)
        self.window = window

        self.uisys = self.get_system(UISystem)

        self.ltitle = Label(Vec2(), "BRAVO", font=Font(size=45))
        self.ltitle.position = Vec2(
            self.window.width / 2 - self.ltitle.rect.width / 2, 50)
        self.bplay = Button(Vec2(self.window.width / 2 - 100, 170), "Rejouer",
                            self.replay, Vec2(200, 70))
        self.bplay.label.font = Font(size=25)
        self.bstop = Button(Vec2(self.window.width / 2 - 100, 320), "Quitter",
                            self.stop, Vec2(200, 70))
        self.bstop.label.font = Font(size=25)

        self.uisys.add_widget(self.ltitle)
        self.uisys.add_widget(self.bplay)
        self.uisys.add_widget(self.bstop)
Example #24
0
    def __init__(self):
        # Création de la fenêtre. Taille : 300x200. Fond : Blanc. Title : "Menu".
        self.window = Window(300, 200, Colors.WHITE.value)
        self.window.title = "Menu"

        # Création de deux World : un pour le menu, l'autre pour le jeu
        self.gworld = World(self.window)
        self.mworld = World(self.window)

        # Création du jeu :
        #  - Un label "JEU" en 10, 10 de couleur noire et écrit en arial 18
        #  - Un bouton "Retour" en 10, 100 qui retourne au menu
        #  - Un bouton "Quitter" en 150, 100 qui quitte le jeu
        self.labeljeu = Label(Vec2(10, 10), "JEU", Colors.BLACK.value,
                              Font("arial", 18))
        self.button1jeu = Button(Vec2(10, 50), "Retour", self.menu)
        self.button2jeu = Button(Vec2(150, 50), "Quitter", self.quitter)

        # Récupération de l'UISystem du monde du jeu et ajout des widgets
        self.uisystemjeu = self.gworld.get_system(UISystem)
        self.uisystemjeu.add_widget(self.labeljeu)
        self.uisystemjeu.add_widget(self.button1jeu)
        self.uisystemjeu.add_widget(self.button2jeu)

        # Création du menu :
        #  - Un label "Menu" en 10, 10 de couleur noire et écrit en arial 18 gras
        #  - Un bouton "Jouer" en 10, 100 qui va au jeu
        #  - Un bouton "Quitter" en 150, 100 qui quitte le jeu
        self.labelmenu = Label(Vec2(10, 10), "MENU", Colors.BLACK.value,
                               Font("arial", 18, True))
        self.button1menu = Button(Vec2(10, 50), "Jouer", self.jouer)
        self.button2menu = Button(Vec2(150, 50), "Quitter", self.quitter)

        # Récupération de l'UISystem du monde du menu et ajout des widgets
        self.uisystemmenu = self.mworld.get_system(UISystem)
        self.uisystemmenu.add_widget(self.labelmenu)
        self.uisystemmenu.add_widget(self.button1menu)
        self.uisystemmenu.add_widget(self.button2menu)

        # Définition du World actuel à celui du menu et lancement de la fenêtre
        self.window.world = self.mworld
        self.window.run()
Example #25
0
    def outofwindow(self, obj, pos):
        if obj == self.j1:
            position = self.j1.get_component(PositionComponent)
            if pos.y <= obj.rect.height / 2:
                position.position = Vec2(10, obj.rect.height / 2)
            else:
                position.position = Vec2(10, 400 - obj.rect.height / 2)

        elif obj == self.j2:
            position = self.j2.get_component(PositionComponent)
            if pos.y <= obj.rect.height / 2:
                position.position = Vec2(770, obj.rect.height / 2)
            else:
                position.position = Vec2(770, 400 - obj.rect.height / 2)

        else:
            if pos.x < 10 or pos.x > 790:
                position = self.ball.get_component(PositionComponent)
                position.position = Vec2(390, 190)
                self.ball.get_component(MoveComponent).direction = Vec2(
                    randint(50, 100), randint(50, 100))
            else:
                move = self.ball.get_component(MoveComponent)
                move.direction = Vec2(move.direction.x, -move.direction.y)
Example #26
0
 def collision(self, entity, others, space, data):
     move = entity.get_component(MoveComponent)
     move.direction = Vec2(-move.direction.x, move.direction.y)
Example #27
0
 def __init__(self, window):
     super(Console, self).__init__(window, Vec2(200, 700), 500)
     try:
         self.init()
     except AttributeError:
         pass
Example #28
0
 def __init__(self):
     super(Progress, self).__init__(Vec2(400, 100), Vec2(200, 20))
     try:
         self.init()
     except AttributeError:
         pass
Example #29
0
 def setUp(self):
     self.tilemap = Tilemap(Vec2(), "files/tilemap/TESTMAP.json")
Example #30
0
 def setUp(self):
     super(ImageTests, self).setUp()
     self.widget = Image(Vec2(10, 10), "files/sprite0.png")