예제 #1
0
def StartSimulation():
    testMap = Map(
        100, 100, 1, 1, 50,
        np.loadtxt("saved data maps/notrand" + str(5) + ".txt")[:100])
    generator = PathGeneratorSmooth(0.2, (2, 5), (8, 12), 50)
    generator2 = PathGeneratorStraight(50)
    testPlanner = PrimitivePathPlanner(10, 1, [generator, generator2], testMap)
    testEntityManager = EntityManager()
    #    clock = pygame.time.Clock()
    testSimulation = SimulationData(testMap, testPlanner, testEntityManager)
    dk = []
    for ll in range(10):
        dk.append(testMap.getRandomPoint())
    for jj in range(10):  # putting targets into entitymanager
        e = testEntityManager.spawnEntity(EntityTarget, dk[jj], 0)
        e.moveSpeed = 0

    for i in range(4):
        agent = testEntityManager.spawnEntity(Agent, (10, 10), 0)
        agent.splitMapIndex = 1
        testPlanner.registerNewAgent(agent)
    for i in range(4):
        agent = testEntityManager.spawnEntity(Agent, (10, 10), 0)
        agent.generatorIndex = 1
        agent.splitMapIndex = 2
        testPlanner.registerNewAgent(agent)

    print(RunSimulation(testSimulation))
def run_threads(start_map, stop_map, num_threads):
    for i in range(start_map, stop_map): #33 maps
        taskList = []
        print('Adding map {} to the queue...'.format(i), end='')
        t = np.loadtxt("terrainmaps/0.txt")[:100]
        if i < 13:
            m = Map(100, 100, 1, 1, 50, np.loadtxt("saved data maps/notrand" + str(i + 1)+".txt")[:100], True, t)
        else:
            m = Map(100, 100, 1, 1, 50, np.loadtxt("saved data maps/rand" + str(i - 12)+".txt")[:100], True, t)
        for j in range(1): #10 sets of targets
            dk = []
            for ll in range(10): #10 agents
                dk.append(m.getRandomPoint())
            for k in range(1): # 3 sets of agent setup
                for l in range(1): # 20 trials per setup
                    for o in range(2): # split map or not
                        path_time, no_samples, replan_ratio = 50, 15, 0.5
                        generator = PathGeneratorSmooth(0.2, (1, 5), (8, 12), path_time) # straightChance, pathLengthRange, radiusRange, pathTime
                        #generator = PathGeneratorSmooth(0.2, (1, 10), (15, 25), path_time) # WIDE # straightChance, pathLengthRange, radiusRange, pathTime
                        #generator = PathGeneratorTerrainSmooth(0.0, (1,5), (8,12), path_time)
                        #generator = PathGeneratorTerrain(path_time)
                        generator2 = PathGeneratorStraight(path_time)
                        testPlanner = PrimitivePathPlanner(replan_ratio * path_time, no_samples, [generator, generator2], m) # replanTime, tries, generators, initialMap
                        testEntityManager = EntityManager()

                        for ii in range(10):  # setting each agent (10 of them)
                            agent = testEntityManager.spawnEntity(Agent, (50, 50), 0) #setting terrain code in Agent __init__
                            testPlanner.registerNewAgent(agent)
                            if ii < 5 : # <7 for primitive-spot_omni-details, <3
                                agent.mapSplitIndex = 2 #1, 2
                            else :
                                agent.mapSplitIndex = 1 #2, 1
                            if k == 0 :
                                if ii < 2 :
                                    agent.generatorIndex = 0
                                else :
                                    agent.generatorIndex = 1
                            elif k == 1 :
                                if ii < 5 :
                                    agent.generatorIndex = 0
                                else :
                                    agent.generatorIndex = 1
                            elif k == 2 :
                                if ii < 8 :
                                    agent.generatorIndex = 0
                                else :
                                    agent.generatorIndex = 1
                            if o == 0 :
                                agent.mapSplitIndex = 0

                        for jj in range(10): # putting targets into entitymanager (10 of them)
                            e = testEntityManager.spawnEntity(EntityTarget, dk[jj], 0)

                        taskList.append((SimulationData(m, testPlanner, testEntityManager),i,j,k,l,o))
        random.shuffle(taskList)
        print('OK')

        p = Pool(num_threads)
        p.map(run_simulations, taskList)
예제 #3
0
    def __init__(self, screen_size, resource_path):
        global _game
        _game = self

        self.mode = None
        self.running = False
        self.screen_size = screen_size

        pygame.mixer.pre_init(frequency=44100)
        pygame.init()
        pygame.display.set_caption('After You!')

        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(
            self.screen_size,
            pygame.OPENGL | pygame.DOUBLEBUF | pygame.HWSURFACE)

        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_component(MovementComponent())
        self.component_manager.register_component(ExampleComponent())
        self.component_manager.register_component(AnimationComponent())
        self.component_manager.register_component(DrawComponent())
        self.component_manager.register_component(InputMovementComponent())
        self.component_manager.register_component(DrawHitBoxComponent())
        self.component_manager.register_component(DrawCircleComponent())
        self.component_manager.register_component(SmokeScreenComponent())
        self.component_manager.register_component(PlayerCollisionComponent())
        self.component_manager.register_component(DecoyMovementComponent())
        self.component_manager.register_component(SelfDestructComponent())
        self.component_manager.register_component(SpawnDecoyComponent())
        self.component_manager.register_component(DrawScoreComponent())
        self.component_manager.register_component(MinefieldComponent())
        self.component_manager.register_component(DrawTimerComponent())
        self.component_manager.register_component(UpdateTimerComponent())
        self.component_manager.register_component(SpeedBoostComponent())
        self.component_manager.register_component(ButtonInterpreterComponent())
        self.component_manager.register_component(DrawActionsComponent())
        self.component_manager.register_component(SpawnVortexComponent())
        self.component_manager.register_component(DrawVortextComponent())
        self.component_manager.register_component(GrowVortextComponent())
        self.component_manager.register_component(TrapComponent())
        self.component_manager.register_component(HideComponent())
        self.component_manager.register_component(AIActionComponent())
        self.component_manager.register_component(AIMovementComponent())

        self.entity_manager = EntityManager()

        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('data', LoadEntityData)
        self.resource_manager.register_loader('image', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)

        self.input_manager = InputManager()

        self.renderer = GLRenderer()
        self.renderer.resize(self.screen_size)

        self.view = View([SimpleLayer('draw'), SimpleLayer('ui')])
예제 #4
0
 def __init__(self, x, y, img, scale):
     super().__init__(img, scale)
     EntityManager.add_entity(self)
     self.center_x = x
     self.center_y = y
     self.velocity_x = 0
     self.velocity_y = 0
     self.dt = 0
예제 #5
0
    def __init__(self, screen_size, resource_path):
        global _game
        _game = self
        
        self.mode = None
        self.running = False
        self.screen_size = screen_size
        
        pygame.mixer.pre_init(frequency=48000)
        pygame.init()
        pygame.display.set_caption("It's All Come to This")
                                   
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(self.screen_size, pygame.DOUBLEBUF | pygame.HWSURFACE)
        
        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_module(component)
        self.component_manager.register_module(event)
        self.component_manager.register_module(locationcomponets)
        
        self.entity_manager = EntityManager()
            
        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('entity', LoadEntityData)
        self.resource_manager.register_loader('image', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)
        self.resource_manager.register_loader('text', LoadText)
        self.resource_manager.register_loader('event', LoadEvent)

        self.input_manager = InputManager()
        self.view = View(pygame.display.get_surface(), [SolidBackgroundLayer((128,192,128,255)), 
                                                        SimpleLayer('draw-location'),
                                                        SimpleLayer('draw-human'), 
                                                        SimpleLayer('draw-ui')])
예제 #6
0
    def __init__(self, screen_size, resource_path):
        global _game
        _game = self
        
        self.mode = None
        self.running = False
        self.screen_size = screen_size
        
        pygame.mixer.pre_init(frequency=44100)
        pygame.init()
        pygame.display.set_caption('After You!')
                                   
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(self.screen_size, pygame.OPENGL | pygame.DOUBLEBUF | pygame.HWSURFACE)
        
        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_component(MovementComponent())
        self.component_manager.register_component(ExampleComponent())
        self.component_manager.register_component(AnimationComponent())
        self.component_manager.register_component(DrawComponent())
        self.component_manager.register_component(InputMovementComponent())
        self.component_manager.register_component(DrawHitBoxComponent()) 
        self.component_manager.register_component(DrawCircleComponent())
        self.component_manager.register_component(SmokeScreenComponent())
        self.component_manager.register_component(PlayerCollisionComponent())
        self.component_manager.register_component(DecoyMovementComponent())
        self.component_manager.register_component(SelfDestructComponent())
        self.component_manager.register_component(SpawnDecoyComponent())
        self.component_manager.register_component(DrawScoreComponent())
        self.component_manager.register_component(MinefieldComponent())
        self.component_manager.register_component(DrawTimerComponent())
        self.component_manager.register_component(UpdateTimerComponent())
        self.component_manager.register_component(SpeedBoostComponent())
        self.component_manager.register_component(ButtonInterpreterComponent())
        self.component_manager.register_component(DrawActionsComponent())
        self.component_manager.register_component(SpawnVortexComponent())
        self.component_manager.register_component(DrawVortextComponent())
        self.component_manager.register_component(GrowVortextComponent())
        self.component_manager.register_component(TrapComponent())
        self.component_manager.register_component(HideComponent())
        self.component_manager.register_component(AIActionComponent())
        self.component_manager.register_component(AIMovementComponent())
        
        self.entity_manager = EntityManager()
            
        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('data', LoadEntityData)
        self.resource_manager.register_loader('image', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)

        self.input_manager = InputManager()
        
        self.renderer = GLRenderer()
        self.renderer.resize(self.screen_size)
       
        self.view = View([SimpleLayer('draw'), SimpleLayer('ui')])
예제 #7
0
    def __init__(self, pygame):

        self.__player_1_scores = 0
        self.__player_2_scores = 0

        self.__entity_manager = EntityManager()

        self.__pygame = pygame
        self.__background_color = Color(0,0,0)

        #Initialize Everything
        self.__pygame.init()

        self.__fullscreen = OPTIONS['FULLSCREEN']

        screen_mode =  (RESIZABLE | DOUBLEBUF | FULLSCREEN) if OPTIONS['FULLSCREEN'] else (RESIZABLE | DOUBLEBUF)

        self.__screen = pygame.display.set_mode((OPTIONS['SCREEN_WIDTH'],
                                                 OPTIONS['SCREEN_HEIGHT']),
                                                 screen_mode)

        #pygame.display.set_icon(surface)
        pygame.display.set_caption(LOCALIZATION['TITLE'])
        pygame.mouse.set_visible(0)

        #Create The Backgound
        self.__background = pygame.Surface(self.__screen.get_size())
        self.__background = self.__background.convert()
        self.__background.fill((0, 0, 0))

        #Put Text On The Background, Centered
        if pygame.font:
            self.__font = pygame.font.Font(None, 36)

        #Display The Background
        self.__screen.blit(self.__background, (0, 0))
        pygame.display.flip()

        #Prepare Game Objects
        self.__clock = pygame.time.Clock()

        self.init_gameobjects()
예제 #8
0
파일: entity.py 프로젝트: mwinberg/bloatit
class Entity(object):
    objects = EntityManager()
    __metaclass__ = MetaEntity

    def __init__(self):
        # Useless. Here just for Pydev
        self.objects = None
        self._loaded = False

    def __getattribute__(self, name):
        if name is 'id' or name.startswith('_'):
            return object.__getattribute__(self, name)

        if not self._loaded:
            self._load()
            self._loaded = True

        return object.__getattribute__(self, name)

    def _load(self):
        server.server.load_entity(self)
예제 #9
0
    def __init__(self, screen_size, resource_path):
        self.mode = None
        self.screen_size = screen_size
        self.map_size = (128,128)
        self.tile_size = (32,32)
        self.world_size = (self.tile_size[0] * self.map_size[0], self.tile_size[1] * self.map_size[1])
        self.world_rooms = (8,8)

        pygame.init()
        
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(self.screen_size)
        
        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_component('MovementComponent', MovementComponent())
        self.component_manager.register_component('ExampleComponent', ExampleComponent())
        self.component_manager.register_component('AnimationComponent', AnimationComponent())
        self.component_manager.register_component('DrawComponent', DrawComponent())
        self.component_manager.register_component('InputMovementComponent', InputMovementComponent())
        self.component_manager.register_component('PlayerCollisionComponent', PlayerCollisionComponent())
        self.component_manager.register_component('ZombieAIComponent', ZombieAIComponent())
        self.component_manager.register_component('ZombieAIComponent', ZombieAIComponent())
        self.component_manager.register_component('CarComponent', CarComponent())
        self.component_manager.register_component('DrawHitBoxComponent', DrawHitBoxComponent()) 
        self.component_manager.register_component('AttackComponent', AttackComponent())
        self.component_manager.register_component('ItemComponent', ItemComponent())
        self.component_manager.register_component('InputActionComponent', InputActionComponent())
        self.component_manager.register_component('DeadComponent', DeadComponent())
        self.component_manager.register_component('ZombieCollisionComponent', ZombieCollisionComponent())
        
        self.entity_manager = EntityManager()
            
        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('definition', LoadEntityData)
        self.resource_manager.register_loader('sprite', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)

        self.input_manager = InputManager()
        self.input_manager.init_joysticks()
예제 #10
0
import asyncio
import binascii
import struct
import time
import zlib

from constants import *
from charactermanager import CharacterManager
from entitymanager import EntityManager
from groupserver import GroupServer
from usermanager import UserManager
from zoneserver import ZoneServer

characterManager = CharacterManager()
entityManager = EntityManager()
groupServer = GroupServer()
userManager = UserManager()
zoneServer = ZoneServer()


class GatewayServer(asyncio.Protocol):
    def connection_made(self, transport):
        self.transport = transport
        self.client = (
            transport.get_extra_info('peername')[0] + ":"  # IP
            + str(transport.get_extra_info('peername')[1]))  # port
        print("Connection from: " + self.client)

        self.msgSource = b'\xdd' + b'\x00\x7b'[::-1]
        self.msgDest = b'\x01' + b'\x00\x32'[::-1]
예제 #11
0
class Game(object):
    
    def __init__(self, screen_size, resource_path):
        global _game
        _game = self
        
        self.mode = None
        self.running = False
        self.screen_size = screen_size
        
        pygame.mixer.pre_init(frequency=48000)
        pygame.init()
        pygame.display.set_caption("It's All Come to This")
                                   
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(self.screen_size, pygame.DOUBLEBUF | pygame.HWSURFACE)
        
        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_module(component)
        self.component_manager.register_module(event)
        self.component_manager.register_module(locationcomponets)
        
        self.entity_manager = EntityManager()
            
        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('entity', LoadEntityData)
        self.resource_manager.register_loader('image', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)
        self.resource_manager.register_loader('text', LoadText)
        self.resource_manager.register_loader('event', LoadEvent)

        self.input_manager = InputManager()
        self.view = View(pygame.display.get_surface(), [SolidBackgroundLayer((128,192,128,255)), 
                                                        SimpleLayer('draw-location'),
                                                        SimpleLayer('draw-human'), 
                                                        SimpleLayer('draw-ui')])
        
    def run(self, mode):
        self.entity_manager.add_entity(Entity('camp'))
        self.entity_manager.add_entity(Entity('report'))
        
        origin = Vec2d(600, 200)
        num_humans = 6
        
        names = self.resource_manager.get('text','names.txt').split('\n')
        
        for i in range(num_humans):
            pos = Vec2d(100,0).rotated(360.0*i/(num_humans)) + origin
            image = random.choice(('male.png', 'female.png'))
            self.entity_manager.add_entity(Entity('human', name=random.choice(names), home_x=pos.x, home_y=pos.y, image=image))
        
        self.entity_manager.add_entity(Entity('mouse'))
        
        self.entity_manager.add_entity(Entity('farm'))
        self.entity_manager.add_entity(Entity('wall'))
        self.entity_manager.add_entity(Entity('well'))
        self.entity_manager.add_entity(Entity('rest-camp'))
        self.entity_manager.add_entity(Entity('work-camp'))
        self.entity_manager.add_entity(Entity('explore'))
        self.entity_manager.add_entity(Entity('infirmary'))
        
        self.entity_manager.add_entity(Entity('construction-site'))
        self.entity_manager.add_entity(Entity('dump'))
        self.entity_manager.add_entity(Entity('hospital'))
        self.entity_manager.add_entity(Entity('rival-camp'))
        self.entity_manager.add_entity(Entity('water-tower'))
        self.entity_manager.add_entity(Entity('forest'))
        
        self.entity_manager.add_entity(Entity("camp"))
        
        self.entity_manager.add_entity(Entity('camp-food-meter-ui'))
        self.entity_manager.add_entity(Entity('camp-defense-meter-ui'))
        self.entity_manager.add_entity(Entity('camp-shelter-meter-ui'))
        self.entity_manager.add_entity(Entity('camp-water-meter-ui'))
        self.entity_manager.add_entity(Entity('camp-medicine-meter-ui'))
        
        self.entity_manager.add_entity(Entity('button'))
        self.entity_manager.add_entity(Entity('info-window'))

        self.entity_manager.commit_changes()
        

        self.change_mode(mode)
        self.running = True

        self.entity_manager.commit_changes()
        
        while self.running:
            dt = self.clock.tick(60) / 1000.0
            
            events = self.input_manager.process_events()
            for event in events:
                if event.target == 'GAME':
                    if event.action == 'QUIT' and event.value > 0:
                        self.running = False
                    elif event.action == 'FULLSCREEN' and event.value > 0:
                        pygame.display.toggle_fullscreen()
                    elif event.action == 'RELOAD' and event.value > 0:
                        self.resource_manager.clear()
                else:
                    self.mode.handle_event(event)
            
            self.mode.update(dt)
            self.mode.draw()
            
            self.entity_manager.commit_changes()
            pygame.display.flip()
            
    def change_mode(self, new_mode):
        print self.mode, '->', new_mode
        if self.mode:
            self.mode.leave()
        self.mode = new_mode
        self.mode.enter()
        self.entity_manager.commit_changes()
예제 #12
0
class Game(object):
    
    def __init__(self, screen_size, resource_path):
        self.mode = None
        self.screen_size = screen_size
        self.map_size = (128,128)
        self.tile_size = (32,32)
        self.world_size = (self.tile_size[0] * self.map_size[0], self.tile_size[1] * self.map_size[1])
        self.world_rooms = (8,8)

        pygame.init()
        
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(self.screen_size)
        
        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_component('MovementComponent', MovementComponent())
        self.component_manager.register_component('ExampleComponent', ExampleComponent())
        self.component_manager.register_component('AnimationComponent', AnimationComponent())
        self.component_manager.register_component('DrawComponent', DrawComponent())
        self.component_manager.register_component('InputMovementComponent', InputMovementComponent())
        self.component_manager.register_component('PlayerCollisionComponent', PlayerCollisionComponent())
        self.component_manager.register_component('ZombieAIComponent', ZombieAIComponent())
        self.component_manager.register_component('ZombieAIComponent', ZombieAIComponent())
        self.component_manager.register_component('CarComponent', CarComponent())
        self.component_manager.register_component('DrawHitBoxComponent', DrawHitBoxComponent()) 
        self.component_manager.register_component('AttackComponent', AttackComponent())
        self.component_manager.register_component('ItemComponent', ItemComponent())
        self.component_manager.register_component('InputActionComponent', InputActionComponent())
        self.component_manager.register_component('DeadComponent', DeadComponent())
        self.component_manager.register_component('ZombieCollisionComponent', ZombieCollisionComponent())
        
        self.entity_manager = EntityManager()
            
        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('definition', LoadEntityData)
        self.resource_manager.register_loader('sprite', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)

        self.input_manager = InputManager()
        self.input_manager.init_joysticks()
        
    def run(self, mode):
        #pygame.display.toggle_fullscreen()
        self.mode = mode
        self.music = self.resource_manager.get('sound', 'Teamawesome_zombies_LOOP.wav')
        self.music.play(loops=-1)
        self.entity_manager.add_entity(Entity('car'))
        for e in [Entity('character1'), Entity('character2'), Entity('character3'), Entity('character4')]:
            self.entity_manager.add_entity(e)
        self.item_names = ["engine", "gas-can", "radiator", "steering-wheel-2", "tire", "steering-wheel", "toolbox", "tire", "tire", "tire"]

        for i in self.item_names:
            x_pos = (self.world_size[0]/self.world_rooms[0] * randint(0, self.world_rooms[0]-1)) + self.world_size[0]/self.world_rooms[0]/2
            y_pos = (self.world_size[1]/self.world_rooms[1] * randint(0, self.world_rooms[1]-1)) + self.world_size[1]/self.world_rooms[1]/2
            self.entity_manager.add_entity(Entity(i, x=x_pos, y=y_pos))
        
        self.entity_manager.add_entity(Entity('splashscreen'))

        self.renderer = Render(self)

        self.zombies = []
        for _ in range(50):
            x_pos = (self.world_size[0]/self.world_rooms[0] * randint(0, self.world_rooms[0]-1)) + self.world_size[0]/self.world_rooms[0]/2
            y_pos = (self.world_size[1]/self.world_rooms[1] * randint(0, self.world_rooms[1]-1)) + self.world_size[1]/self.world_rooms[1]/2
            self.entity_manager.add_entity(Entity("zombie", x=x_pos, y=y_pos))

        while True:
            dt = self.clock.tick(60) / 1000.0
            
            events = self.input_manager.process_events()
            for event in events:
                if event.target == 'GAME':
                    if event.action == 'QUIT' and event.value > 0:
                        sys.exit()
                    elif event.action == 'FULLSCREEN' and event.value > 0:
                        pygame.display.toggle_fullscreen()
                    elif event.action == 'RELOAD' and event.value > 0:
                        self.resource_manager.clear()
                else:
                    self.mode.handle_event(event)
            
            self.mode.update(dt)
            self.mode.draw()
            
            pygame.display.flip()
            pygame.display.set_caption('fps: %.0d' % self.clock.get_fps())
예제 #13
0
class Game(object):
    def __init__(self, screen_size, resource_path):
        global _game
        _game = self

        self.mode = None
        self.running = False
        self.screen_size = screen_size

        pygame.mixer.pre_init(frequency=44100)
        pygame.init()
        pygame.display.set_caption('After You!')

        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(
            self.screen_size,
            pygame.OPENGL | pygame.DOUBLEBUF | pygame.HWSURFACE)

        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_component(MovementComponent())
        self.component_manager.register_component(ExampleComponent())
        self.component_manager.register_component(AnimationComponent())
        self.component_manager.register_component(DrawComponent())
        self.component_manager.register_component(InputMovementComponent())
        self.component_manager.register_component(DrawHitBoxComponent())
        self.component_manager.register_component(DrawCircleComponent())
        self.component_manager.register_component(SmokeScreenComponent())
        self.component_manager.register_component(PlayerCollisionComponent())
        self.component_manager.register_component(DecoyMovementComponent())
        self.component_manager.register_component(SelfDestructComponent())
        self.component_manager.register_component(SpawnDecoyComponent())
        self.component_manager.register_component(DrawScoreComponent())
        self.component_manager.register_component(MinefieldComponent())
        self.component_manager.register_component(DrawTimerComponent())
        self.component_manager.register_component(UpdateTimerComponent())
        self.component_manager.register_component(SpeedBoostComponent())
        self.component_manager.register_component(ButtonInterpreterComponent())
        self.component_manager.register_component(DrawActionsComponent())
        self.component_manager.register_component(SpawnVortexComponent())
        self.component_manager.register_component(DrawVortextComponent())
        self.component_manager.register_component(GrowVortextComponent())
        self.component_manager.register_component(TrapComponent())
        self.component_manager.register_component(HideComponent())
        self.component_manager.register_component(AIActionComponent())
        self.component_manager.register_component(AIMovementComponent())

        self.entity_manager = EntityManager()

        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('data', LoadEntityData)
        self.resource_manager.register_loader('image', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)

        self.input_manager = InputManager()

        self.renderer = GLRenderer()
        self.renderer.resize(self.screen_size)

        self.view = View([SimpleLayer('draw'), SimpleLayer('ui')])

    def run(self, mode):
        p1 = Entity("player1")
        p2 = Entity("player2")
        self.entity_manager.add_entity(p1)
        self.entity_manager.add_entity(p2)
        self.entity_manager.add_entity(Entity("scoreui-player1"))
        self.entity_manager.add_entity(Entity("scoreui-player2"))
        self.entity_manager.add_entity(Entity("actionui-player1"))
        self.entity_manager.add_entity(Entity("actionui-player2"))
        self.entity_manager.add_entity(Entity("timerui"))

        self.renderer.createBackground()

        self.change_mode(mode)
        self.running = True

        self.entity_manager.commit_changes()

        while self.running:
            dt = self.clock.tick(60) / 1000.0

            events = self.input_manager.process_events()
            for event in events:
                if event.target == 'GAME':
                    if event.action == 'QUIT' and event.value > 0:
                        self.running = False
                    elif event.action == 'FULLSCREEN' and event.value > 0:
                        pygame.display.toggle_fullscreen()
                    elif event.action == 'RELOAD' and event.value > 0:
                        self.resource_manager.clear()
                else:
                    self.mode.handle_event(event)

            self.mode.update(dt)
            self.mode.draw()

            self.entity_manager.commit_changes()
            pygame.display.flip()

    def change_mode(self, new_mode):
        if self.mode:
            self.mode.leave()
        self.mode = new_mode
        self.mode.enter()
예제 #14
0
class PingPong():

    def __init__(self, pygame):

        self.__player_1_scores = 0
        self.__player_2_scores = 0

        self.__entity_manager = EntityManager()

        self.__pygame = pygame
        self.__background_color = Color(0,0,0)

        #Initialize Everything
        self.__pygame.init()

        self.__fullscreen = OPTIONS['FULLSCREEN']

        screen_mode =  (RESIZABLE | DOUBLEBUF | FULLSCREEN) if OPTIONS['FULLSCREEN'] else (RESIZABLE | DOUBLEBUF)

        self.__screen = pygame.display.set_mode((OPTIONS['SCREEN_WIDTH'],
                                                 OPTIONS['SCREEN_HEIGHT']),
                                                 screen_mode)

        #pygame.display.set_icon(surface)
        pygame.display.set_caption(LOCALIZATION['TITLE'])
        pygame.mouse.set_visible(0)

        #Create The Backgound
        self.__background = pygame.Surface(self.__screen.get_size())
        self.__background = self.__background.convert()
        self.__background.fill((0, 0, 0))

        #Put Text On The Background, Centered
        if pygame.font:
            self.__font = pygame.font.Font(None, 36)

        #Display The Background
        self.__screen.blit(self.__background, (0, 0))
        pygame.display.flip()

        #Prepare Game Objects
        self.__clock = pygame.time.Clock()

        self.init_gameobjects()

    def init_gameobjects(self):

        ball = Ball(self.__pygame, {'X':self.__screen.get_width()/2,
                                    'Y':self.__screen.get_height()/2})

        ball.rand_velocity()

        left_racket = Racket(self.__pygame, {'X':20,'Y':20, 'side':'left','ball':ball})
        right_racket = Racket(self.__pygame, {'X': self.__screen.get_width() - 20*2,
                                              'Y':20,'side':'right', 'ball':ball})

        self.__entity_manager.add('leftracket',left_racket)
        self.__entity_manager.add('rightracket',right_racket)


        self.__entity_manager.add('ball',ball)

    def toggle_fullscreen(self):
        self.__pygame.display.set_mode()

    def tick(self):
        self.delta = self.__clock.tick(OPTIONS['TARGET_FPS'])

    def update(self):

        ball = self.__entity_manager.get('ball')

        for gameobject in self.__entity_manager.as_list():
            gameobject.update(self.delta)

        if ball.outside() == 'right':
            self.__player_1_scores += 1


        if ball.outside() == 'left':
            self.__player_2_scores += 1

        if ball.outside():
            ball.reset().rand_velocity()

    def render(self):
        self.__screen.blit(self.__background, (0, 0))
        self.__background.fill((50, 50, 5))

        score_player_one = self.__font.render( str(self.__player_1_scores), 1, (250, 250, 250))
        score_player_two = self.__font.render( str(self.__player_2_scores), 1, (250, 250, 250))

        textpos = score_player_one.get_rect(centerx=20)
        self.__background.blit(score_player_one, textpos)

        textpos = score_player_two.get_rect(centerx=OPTIONS['SCREEN_WIDTH']-20)
        self.__background.blit(score_player_two, textpos)

        for gameobject in self.__entity_manager.as_list():
            gameobject.render(self.__background)

        self.__pygame.display.flip()
예제 #15
0
class Game(object):
    
    def __init__(self, screen_size, resource_path):
        global _game
        _game = self
        
        self.mode = None
        self.running = False
        self.screen_size = screen_size
        
        pygame.mixer.pre_init(frequency=44100)
        pygame.init()
        pygame.display.set_caption('After You!')
                                   
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode(self.screen_size, pygame.OPENGL | pygame.DOUBLEBUF | pygame.HWSURFACE)
        
        self.component_manager = componentmanager.ComponentManager()
        self.component_manager.register_component(MovementComponent())
        self.component_manager.register_component(ExampleComponent())
        self.component_manager.register_component(AnimationComponent())
        self.component_manager.register_component(DrawComponent())
        self.component_manager.register_component(InputMovementComponent())
        self.component_manager.register_component(DrawHitBoxComponent()) 
        self.component_manager.register_component(DrawCircleComponent())
        self.component_manager.register_component(SmokeScreenComponent())
        self.component_manager.register_component(PlayerCollisionComponent())
        self.component_manager.register_component(DecoyMovementComponent())
        self.component_manager.register_component(SelfDestructComponent())
        self.component_manager.register_component(SpawnDecoyComponent())
        self.component_manager.register_component(DrawScoreComponent())
        self.component_manager.register_component(MinefieldComponent())
        self.component_manager.register_component(DrawTimerComponent())
        self.component_manager.register_component(UpdateTimerComponent())
        self.component_manager.register_component(SpeedBoostComponent())
        self.component_manager.register_component(ButtonInterpreterComponent())
        self.component_manager.register_component(DrawActionsComponent())
        self.component_manager.register_component(SpawnVortexComponent())
        self.component_manager.register_component(DrawVortextComponent())
        self.component_manager.register_component(GrowVortextComponent())
        self.component_manager.register_component(TrapComponent())
        self.component_manager.register_component(HideComponent())
        self.component_manager.register_component(AIActionComponent())
        self.component_manager.register_component(AIMovementComponent())
        
        self.entity_manager = EntityManager()
            
        self.resource_manager = ResourceManager(resource_path)
        self.resource_manager.register_loader('data', LoadEntityData)
        self.resource_manager.register_loader('image', LoadImage)
        self.resource_manager.register_loader('inputmap', LoadInputMapping)
        self.resource_manager.register_loader('sound', LoadSound)

        self.input_manager = InputManager()
        
        self.renderer = GLRenderer()
        self.renderer.resize(self.screen_size)
       
        self.view = View([SimpleLayer('draw'), SimpleLayer('ui')])
        
    def run(self, mode):
        p1 = Entity("player1")
        p2 = Entity("player2")
        self.entity_manager.add_entity(p1)
        self.entity_manager.add_entity(p2)
        self.entity_manager.add_entity(Entity("scoreui-player1"))
        self.entity_manager.add_entity(Entity("scoreui-player2"))
        self.entity_manager.add_entity(Entity("actionui-player1"))
        self.entity_manager.add_entity(Entity("actionui-player2"))
        self.entity_manager.add_entity(Entity("timerui"))
        
        
        
        self.renderer.createBackground()

        self.change_mode(mode)
        self.running = True

        self.entity_manager.commit_changes()
        
        while self.running:
            dt = self.clock.tick(60) / 1000.0
            
            events = self.input_manager.process_events()
            for event in events:
                if event.target == 'GAME':
                    if event.action == 'QUIT' and event.value > 0:
                        self.running = False
                    elif event.action == 'FULLSCREEN' and event.value > 0:
                        pygame.display.toggle_fullscreen()
                    elif event.action == 'RELOAD' and event.value > 0:
                        self.resource_manager.clear()
                else:
                    self.mode.handle_event(event)
            
            self.mode.update(dt)
            self.mode.draw()
            
            self.entity_manager.commit_changes()
            pygame.display.flip()
            
    def change_mode(self, new_mode):
        if self.mode:
            self.mode.leave()
        self.mode = new_mode
        self.mode.enter()
예제 #16
0
파일: entity.py 프로젝트: mwinberg/bloatit
    def __new__(cls, name, bases, dct):

        dct['objects'] = EntityManager(name, dct['__module__'])

        return type.__new__(cls, name, bases, dct)