Beispiel #1
0
class Framework:

    QUEUE_SIZE = 100
    CHECK_SUBPROCESS_STATE_IN_SECONDS = 0.5
    MAX_HANGING_TIME = 3.0

    def __init__(self, profiling=False):

        self.logger = logging.getLogger(self.__class__.__name__)
        self.profiling = profiling

        self.game_state = Manager().dict()
        self.field = Manager().dict()

        self.ai_queue = Queue(maxsize=Framework.QUEUE_SIZE)
        self.referee_queue = Queue(maxsize=Framework.QUEUE_SIZE)
        self.ui_send_queue = Queue(maxsize=Framework.QUEUE_SIZE)
        self.ui_recv_queue = Queue(maxsize=Framework.QUEUE_SIZE)

        self.engine_watchdog = Manager().Value('f', time.time())
        self.engine = Engine(self)
        self.coach_watchdog = Manager().Value('f', time.time())
        self.coach = Coach(self)

    def start(self):

        self.engine.start()
        self.coach.start()

        sleep = create_fps_timer(Framework.CHECK_SUBPROCESS_STATE_IN_SECONDS)

        try:
            while self.coach.is_alive() and self.engine.is_alive():
                sleep()

        except SystemExit:
            pass
        except KeyboardInterrupt:
            self.logger.debug('Interrupted.')
        except BrokenPipeError:
            self.logger.exception('A connection was broken.')
        except:
            self.logger.exception('An error occurred.')
        finally:
            self.stop_game()

    def stop_game(self):
        self.logger.critical('Framework stopped.')

        try:
            os.kill(self.engine.pid, signal.SIGINT)
        except ProcessLookupError:
            pass

        try:
            os.kill(self.coach.pid, signal.SIGINT)
        except ProcessLookupError:
            pass
        
        sys.exit()
Beispiel #2
0
def test_get_logs():
    e = Engine()
    e.print_v("test1", "test2")
    e.print_v("test3")
    logs = e.get_logs()
    assert logs == "test1 test2\ntest3"

    logs = e.get_logs(sep="_")
    assert logs == "test1 test2_test3"
Beispiel #3
0
    def __init__(self, profiling=False):

        self.logger = logging.getLogger(self.__class__.__name__)
        self.profiling = profiling

        self.game_state = Manager().dict()
        self.field = Manager().dict()

        self.ai_queue = Queue(maxsize=Framework.QUEUE_SIZE)
        self.referee_queue = Queue(maxsize=Framework.QUEUE_SIZE)
        self.ui_send_queue = Queue(maxsize=Framework.QUEUE_SIZE)
        self.ui_recv_queue = Queue(maxsize=Framework.QUEUE_SIZE)

        self.engine_watchdog = Manager().Value('f', time.time())
        self.engine = Engine(self)
        self.coach_watchdog = Manager().Value('f', time.time())
        self.coach = Coach(self)
Beispiel #4
0
def test_print_v(capsys):
    with capsys.disabled():
        e = Engine()

    e.verbose = True
    e.print_v("test")
    captured = capsys.readouterr()
    assert captured.out == "test; \n"

    e.verbose = False
    e.print_v("second_test")
    captured = capsys.readouterr()
    assert captured.out == ""

    logs = e.log
    assert logs[2:] == ['test; ', 'second_test; ']
Beispiel #5
0
def test_react_to_keyword():
    e = Engine()
    e.reactive_keyword = ["apple", "banana"]
    verif = e.react_to_keyword("apple")
    assert verif == True
    verif = e.react_to_keyword("ban")
    assert verif == True
    verif = e.react_to_keyword("bananana")
    assert verif == False
Beispiel #6
0
width = 1280
height = 720
screen = pygame.display.set_mode((width, height))

white = (255, 255, 255)
screen.fill((white))
running = True

sc = Screen(width, height)

clock = pygame.time.Clock()

camera = Camera(None, 0, 0, -100, width / 2, height / 2)

engine = Engine(sc, camera, Light(1, 1, 1))
camera.engine = engine

engine.addComponent(Axis(engine, 1000))

#nastavenim hodnoty promenne col se zviditelni hranicni kostky
col = (145, 20, 200)
#engine.addComponent(Cube(engine, -50,0,0,30,col))
#engine.addComponent(Cube(engine, 50,0,0,30,col))
engine.addComponent(Cube(engine, 0, -50, 0, 30, col))
#engine.addComponent(Cube(engine, 0,50,0,30,col))

engine.addComponent(Pyramid(engine, 0, 20, 0, 1, 1, "rainbow", True))
for i in range(0, 10):
    #cb = DuhovyBoxik(engine,i*3-10,20,0,1,"rainbow", True)
    cb = Creature(engine, 0, i * 6 + 40, 0, (255, 0, 255))
Beispiel #7
0
width = 1280
height = 720
screen = pygame.display.set_mode((width, height))

color = (255, 255, 255)
screen.fill((color))
running = True

sc = Screen(width, height, color)

clock = pygame.time.Clock()

camera = Camera(None, 0, 0, -20, width / 2, height / 2)

engine = Engine(sc, camera, Light(1, 1, 1))
camera.engine = engine

engine.addComponent(Axis(engine, 1000))

#cube = Cube(engine, 0, 0, 0, 1, "rainbow", False)
engine.addComponent(Cube(engine, 0, 0, 0, 1, "rainbow", False))
#K - pyramida poskoci nahoru
#L - pyramida poskoci "doprava"
#J - pyramida poskoci "doleva"
engine.addComponent(Pyramid(engine, 0, 10, 0, 1, -1, (255, 0, 0), True))
engine.addComponent(Cube(engine, 0, -20, 0, 10, (255, 255, 255), False))

while running:
    tm = time.time()
Beispiel #8
0
from Engine.engine import Engine
from Engine.vector import Vector

from Engine.object import Object
from Engine.objects.cube import Cube
from Engine.objects.pyramid import Pyramid
from Engine.objects.penguin import Penguin
from Engine.objects.terrain import Terrain
import time
import random

engine = Engine()

cube1 = Cube(Vector(-5, -5, 0), 1)
#engine.addObject(cube1)

pyramid = Pyramid(Vector(-5, 0, 0), 2, color=(200, 30, 30))
#engine.addObject(pyramid)

#loadedObject = Object(Vector(0, 0, -10))
#loadedObject.loadMesh("Engine/meshes/penguin.json")
#engine.addObject(loadedObject)

penguin = Penguin(Vector(0, 0, -10), 1, engine)
#engine.addObject(penguin)

terrain = Terrain(Vector(0, 0, -10), scale=1, width=20, height=20)
engine.addObject(terrain)

heights = []
for x in range(100):
Beispiel #9
0
width = 1280
height = 720
screen = pygame.display.set_mode((width, height))

color = (255, 255, 255)
screen.fill((color))
running = True

sc = Screen(width, height, color)

clock = pygame.time.Clock()

camera = Camera(None, 0, 0, -50, width / 2, height / 2)

engine = Engine(sc, camera, Light(1, 1, 1))
camera.engine = engine

engine.addComponent(Axis(engine, 1000))

#engine.addComponent(Cube(engine, 0, 0, 0, 1, "rainbow", False))

for x in range(-10, 10):
    for y in range(-10, 10):
        z = x + y
        engine.addComponent(Cube(engine, x, z, y, 0.5, (255, 0, 0), False))

while running:
    tm = time.time()

    try:
Beispiel #10
0
width = 1280
height = 720
screen = pygame.display.set_mode((width, height))

color = (255, 0, 120)
screen.fill((color))
running = True

sc = Screen(width, height, color)

clock = pygame.time.Clock()

camera = Camera(None, 0, 0, -20, width / 2, height / 2)

engine = Engine(sc, camera, Light(1, 1, 1))
camera.engine = engine

cube = Cube(engine, 0, -5, 0, 1, "rainbow", False)

engine.addComponent(cube)

bc = Image.open("Snejky\\background_test.png")
pixels = bc.convert("RGB").load()

mk = MakeVideo()
up = True

frameNumber = 0
fps = 60
seconds = 1
Beispiel #11
0
width = 1280
height = 720
screen = pygame.display.set_mode((width, height))

white = (255, 255, 255)
screen.fill(white)
running = True

sc = Screen(width, height, (179, 229, 252))

clock = pygame.time.Clock()

camera = Camera(None, 0, 0, -400, width / 2, height / 2)

engine = Engine(sc, camera, Light(1, 1, 1))
camera.engine = engine

#engine.addComponent(Axis(engine, 1000))
#cube = Cube(engine, 0, 0, 0, 1, "rainbow", False)
"""engine.addComponent(DuhovyBoxik(engine, 0,0,0,1,"rainbow", True))
engine.addComponent(DuhovyBoxik(engine, 10,0,0,1,"rainbow", True))
engine.addComponent(DuhovyBoxik(engine, -20,10,0,1,"rainbow", True))"""

col = None  #(145,20,200)
engine.addComponent(Cube(engine, -600, 0, 0, 300, col))
engine.addComponent(Cube(engine, 600, 0, 0, 300, col))
engine.addComponent(Cube(engine, 0, -400, 0, 300, (104, 159, 56)))
engine.addComponent(Cube(engine, 0, 0, -600, 300, col))
engine.addComponent(Cube(engine, 0, 0, 600, 300, col))
Beispiel #12
0
def test_purify_name():
    e = Engine()
    purified = e.purify_name("test")
    assert purified == "test"
    purified = e.purify_name("test>test|test<test?test!test")
    assert purified == "test_test_test_test_test_test"