Esempio n. 1
0
class EntityTester(RuleBasedStateMachine):
    def __init__(self):
        super(EntityTester, self).__init__()
        self.e = Entity()

    @invariant()
    def event_queue(self):
        assert isinstance(self.e.event_queue, EventQueue)

    def precond_queue_not_empty(self):
        return len(self.e.event_queue.events) > 0

    @rule()
    @precondition(precond_queue_not_empty)
    def receive(self):
        event = self.e.event_queue.pop()
        assert event == self.e.recive()

    @rule(s=text(), o=text())
    def send(self, s, o):
        event = Event(s, o)
        self.e.send(event)
        assert self.e.event_queue.events[-1] == event

    @rule()
    def reset(self):
        self.e = Entity()
Esempio n. 2
0
class MainState:

    def __init__(self, screen, stack):
        self.stack = stack
        self.screen = screen
        self.engine = Engine()
        self.utilfu = UtilFunc()
        self.player = Entity()
        self.collision = CollisionResetSystem(self.engine)

        # Adding DrawSystems
        self.engine.addSystem(RectangleColorDrawSystem())
        self.engine.addSystem(UnitDrawSystem(self.engine, self.screen))

        # Adding LogicSystems
        self.engine.addSystem(PlayerMoveSystem(self.player, self.collision, self.engine))
        self.engine.addSystem(CollisionResetSystem(self.engine))
        self.engine.addSystem(PositionSyncSystem())
        self.engine.addSystem(ColorcartSystem(self.engine))

        self.player.addComponent(RectangleComponent(self.screen, 40, 40, 20, 20))
        self.player.addComponent(IsPlayer())
        self.player.addComponent(PositionComponent(10, 10))
        self.engine.addEntity(self.player)

    def update(self):
        self.engine.update()

    def draw(self):
        self.engine.draw()

    def loadLevel(self,level):
        self.utilfu.loadLevel(level, self.screen, self.engine)
Esempio n. 3
0
 def __init__(self):
     super(EntityTester, self).__init__()
     self.e = Entity()
Esempio n. 4
0
 def reset(self):
     self.e = Entity()
Esempio n. 5
0
    def createLevel(self, table, screen, engine):
        gp = Gameplay()
        x = 0
        y = 0
        width, height = screen.get_size()
        tab = []
        for x in range(0, 33):
            tile = Entity()
            tile.addComponent(ColorComponent(gp.colorNames[0]))
            tile.addComponent(CollisionComponent(True))
            tile.addComponent(
                RectangleComponent(
                    screen,
                    int(math.floor((x - 1) * width / 32)),
                    int(math.ceil(-height / 18)),
                    int(math.floor(width / 32)),
                    int(math.ceil(height / 18)),
                )
            )
            tile.addComponent(PositionComponent((x - 1) * width / 32, -height / 18))
            engine.addEntity(tile)
            tab.append(tile)
        for numb in table:
            if x > 31:
                x = 0
                y += 1
            if x == 0:
                tile = Entity()
                tile.addComponent(ColorComponent(gp.colorNames[0]))
                tile.addComponent(CollisionComponent(True))
                tile.addComponent(
                    RectangleComponent(
                        screen,
                        int(math.floor(width)),
                        int(math.ceil((y - 1) * height / 18)),
                        int(math.floor(width / 32)),
                        int(math.ceil(height / 18)),
                    )
                )
                tile.addComponent(PositionComponent(width, (y - 1) * height / 18))
                tab.append(tile)
                engine.addEntity(tile)

                tile = Entity()
                tile.addComponent(ColorComponent(gp.colorNames[0]))
                tile.addComponent(CollisionComponent(True))
                tile.addComponent(
                    RectangleComponent(
                        screen,
                        int(math.floor((x - 1) * width / 32)),
                        int(math.ceil(y * height / 18)),
                        int(math.floor(width / 32)),
                        int(math.ceil(height / 18)),
                    )
                )
                tile.addComponent(PositionComponent((x - 1) * width / 32, y * height / 18))
                tab.append(tile)
                engine.addEntity(tile)

            if numb < 9:
                tile = Entity()
                tile.addComponent(ColorComponent(gp.colorNames[numb]))
                tile.addComponent(
                    RectangleComponent(
                        screen,
                        int(math.floor(x * width / 32)),
                        int(math.ceil(y * height / 18)),
                        int(math.floor(width / 32)),
                        int(math.ceil(height / 18)),
                    )
                )
                tile.addComponent(PositionComponent(x * width / 32, y * height / 18))
                tile.addComponent(LinkingComponent())
                engine.addEntity(tile)
                tab.append(tile)

            x += 1

        for x in range(0, 33):
            tile = Entity()
            tile.addComponent(ColorComponent(gp.colorNames[0]))
            tile.addComponent(CollisionComponent(True))
            tile.addComponent(
                RectangleComponent(
                    screen,
                    int(math.floor((x - 1) * width / 32)),
                    int(math.ceil(18 * height / 18)),
                    int(math.floor(width / 32)),
                    int(math.ceil(height / 18)),
                )
            )
            tile.addComponent(PositionComponent((x - 1) * width / 32, 18 * height / 18))
            engine.addEntity(tile)
            tab.append(tile)

        for i, entity in enumerate(tab):
            if i > 33 and i < 646 and i % 34 != 0 and i % 34 != 33:
                entity.getComponent("LinkingComponent").links = [tab[i - 1], tab[i + 1], tab[i - 32], tab[i + 32]]
Esempio n. 6
0
    def draw(self):
        for entity in self.targets:
            mc1 = random.randint(1,255)
            mc2 = random.randint(1,255)
            mc3 = random.randint(1,255)
            red = (255,0,0)
            green = (0,255,0)
            blue = (0,0,255)
            orange =(255,100,100)
            yellow =(255,255,0)
            position = entity.getComponent("PositionComponent")
            rectangle = entity.getComponent("RectangleComponent")
            space = 0
            playerpos = (rectangle.rect[0]+10,rectangle.rect[1]+10)
            key = pygame.key.get_pressed()
            if key[pygame.K_SPACE]:
                space = 1
                for omg in range(0, 1000):
                    ent = Entity()
                    ent.addComponent(PositionComponent(random.randint(0,1600),random.randint(0, 900)))
                    ent.addComponent(RectangleComponent(self.screen, 0, 0, 10, 10))
                    ent.addComponent(ColorComponent(self.gameplay.colorNames[random.randint(0,8)]))
                    self.engine.addEntity(ent)
            if space:
                mousepos = pygame.mouse.get_pos()
                distance = math.sqrt((mousepos[0]-playerpos[0])*(mousepos[0]-playerpos[0]) + (mousepos[1]-playerpos[1])*(mousepos[1]-playerpos[1]))
                x = distance
                if distance > 300:
                    x = 300
                iterator = range(1, int(x))
                if len(iterator) < 2:
                    iterator = [(0,0),(1,1)]
                pointlist=[]
            #print (playerpos.width)
                longvec = ((mousepos[0] - playerpos[0]),(mousepos[1] - playerpos[1]))
                longveclen = math.sqrt(longvec[0]*longvec[0] + longvec[1]*longvec[1])
                if longveclen != 0:
                    vec = (longvec[0]/longveclen,longvec[1]/longveclen)
                else:
                    vec = (0,0)
                orvec = (vec[1],-vec[0])
                for i in iterator:
                    displacement = (0.1*int(distance)*math.log(i)*math.sin((i+self.lolmantis)/33.0)*orvec[0], 0.1*int(distance)*math.log(i)*math.sin((i+self.lolmantis)/33.0)*orvec[1])
                    direction = (i*vec[0], i*vec[1])
                    pointlist.append((playerpos[0]+direction[0]+displacement[0],playerpos[1]+direction[1]+displacement[1]))
            #print(pointlist)
            #print("lol")
                pointlist2=[]
                pointlist3=[]  
                pointlist4=[]
                pointlist5=[]
                pointlist5=[]
                pointlist6=[]
                pointlist7=[]
                pointlist8=[]
                pointlist9=[]
                for value in pointlist:
                    pointlist2.append((value[0]-2,value[1]-2))
                    pointlist3.append((value[0]-1,value[1]-1))
                    pointlist4.append((value[0],value[1]))
                    pointlist5.append((value[0]+1,value[1]+1))
                    pointlist6.append((value[0]+2,value[1]+2))
                    pointlist8.append((value[0]+3,value[1]+3))
                    pointlist9.append((value[0]+4,value[1]+4))
                pygame.draw.aalines(rectangle.screen, red, False, pointlist, 1) 
                pygame.draw.aalines(rectangle.screen, orange, False, pointlist2, 1)
                pygame.draw.aalines(rectangle.screen, yellow, False, pointlist3, 1)           
                pygame.draw.aalines(rectangle.screen, green, False, pointlist4, 1)
                pygame.draw.aalines(rectangle.screen, blue, False, pointlist4, 1) 
                pygame.draw.aalines(rectangle.screen, blue, False, pointlist4, 1) 
                #pygame.draw.aalines(rectangle.screen, (mc1, mc2, mc3), False, pointlist5, 1)  

                self.lolmantis = self.lolmantis + math.pi

                pygame.draw.rect(rectangle.screen, (mc1, mc2, mc3), rectangle, 0)
                #main.loadLevel("2")

            else:
                pygame.draw.rect(rectangle.screen, (255, 255, 255), rectangle, 0)
Esempio n. 7
0
 def reset(self):
     self.c = Component(Entity())
Esempio n. 8
0
 def __init__(self):
     super(ComponentTester, self).__init__()
     self.c = Component(Entity())