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()
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)
def __init__(self): super(EntityTester, self).__init__() self.e = Entity()
def reset(self): self.e = Entity()
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]]
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)
def reset(self): self.c = Component(Entity())
def __init__(self): super(ComponentTester, self).__init__() self.c = Component(Entity())