コード例 #1
0
ファイル: main.py プロジェクト: ChyrosNX/NephX7
    def __init__(self):
        log_file = "{}.log".format(self.__class__.__name__.lower())
        LoggingUtil.setup(log_path=log_file, log_level=logging.DEBUG)

        self._logger = logging.getLogger(self.__class__.__name__)
        self._stopped = False
        self._console = Console(self._on_command_event)
        self._server_sock = ServerSocket(self.COMMAND_PORT, self._on_socket_accept_event)
コード例 #2
0
def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("-g",
                        "--gui",
                        help="Initialize GUI version of the game.")
    parser.add_argument(
        "--file",
        help=
        "Path to file. Read the grid from file. Size arguments will be ignored.",
    )
    parser.add_argument(
        "--size",
        help=
        "Input grid size in format: X-Y or just X if it's a rectangle. Default 50-50",
        default="8-8",
    )
    parser.add_argument(
        "--max",
        help="Input the number of maximum generations. Default 100",
        type=int,
        default=100,
    )
    parser.add_argument(
        "--cell_size",
        help="Input cell size. Only for GUI version. Default 50",
        type=int,
        default=50,
    )

    args = parser.parse_args()

    if args.file:
        life = GameOfLife.from_file(args.file, args.max)
    else:
        grid_size = (int(args.size.split("-")[0]),
                     int(args.size.split("-")[1]))
        life = GameOfLife(
            size=grid_size,
            randomize=True,
            max_generations=args.max,
            cell_size=args.cell_size,
        )

    if args.gui:
        ui = GUI(life)
    else:
        ui = Console(life)

    ui.run()
コード例 #3
0
ファイル: main.py プロジェクト: ChyrosNX/NephX7
class Main(object):

    COMMAND_PORT = 7001

    def __init__(self):
        log_file = "{}.log".format(self.__class__.__name__.lower())
        LoggingUtil.setup(log_path=log_file, log_level=logging.DEBUG)

        self._logger = logging.getLogger(self.__class__.__name__)
        self._stopped = False
        self._console = Console(self._on_command_event)
        self._server_sock = ServerSocket(self.COMMAND_PORT, self._on_socket_accept_event)

    def run(self):
        self._logger.info("Started!")

        self._console.start_user_command_reader()
        self._server_sock.start_listening()

        while not self._stopped:
            time.sleep(0.1)

        self._logger.info("Ended!")

    def stop(self):
        self._console.message("This application is being shut down...")

        self._console.stop_clients()
        self._console.stop_user_command_reader()
        self._server_sock.stop_listening()

        self._stopped = True

    def _on_command_event(self, command, sender=None):
        """
        Called every time we receive a new user or client command.
        """
        if len(command.strip()) == 0:
            return

        if command in ["exit", "quit", "stop", "x", "q"]:
            self.stop()
        else:
            self._console.message("* From {}: {}".format(sender, command), sender=sender)

    def _on_socket_accept_event(self, sock, addr):
        """
        Called every time a new socket connection has been accepted.
        """
        self._console.add_client(sock, addr, self._on_command_event)