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)
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 __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
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 __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 __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()
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)
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()
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]
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()
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())
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()
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()
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()
def __new__(cls, name, bases, dct): dct['objects'] = EntityManager(name, dct['__module__']) return type.__new__(cls, name, bases, dct)