Читать из файла в плей - PullRequest
       1

Читать из файла в плей

1 голос
/ 02 февраля 2012

Вот глупый вопрос.

Как вы читаете файлы в игровой игре? Я попытался использовать File и Scanner, как обычно в стандартной Java-программе:

    void readFromFile(){

    int x;
    int y;
    int pixel;
    int[][] board;

    try{

        Scanner scan = new Scanner(new File(in));

        x = scan.nextInt();
        y = scan.nextInt();
        pixel = scan.nextInt();
        Point start = new Point(scan.nextInt(), scan.nextInt());
        Point dir = new Point(scan.nextInt(), scan.nextInt());
        Point end = new Point(scan.nextInt(), scan.nextInt());
        int antRoads = scan.nextInt();

        board = new int[x][y];  

        for (int i = 0; i < y; i++){
            for (int j = 0; j < x; j++){
                board[i][j] = scan.nextInt();
            }
        }


        lev = new Level(board, start, dir, end, antRoads, pixel, x, y);


    } catch(FileNotFoundException e){
        System.out.println(e);
    }
}

Я протестировал File.canRead (), canWrite () и can Execute (), и все они вернули false.

Должен ли я использовать assetMannager (). GetText () или что-то еще? Если это так, может кто-нибудь сказать мне, как это работает? (или как и как работает ResourceCallback?)

Моя цель состоит в том, чтобы папка с именем «Карты» была заполнена картами в обычном текстовом формате, точно так же как в стандартной папке изображений.

С уважением, Torgeir

1 Ответ

5 голосов
/ 02 февраля 2012

Нельзя выполнить обычный файловый ввод / вывод в игре PlayN, поскольку игры компилируются в JavaScript и запускаются в браузере (при использовании бэкэнда HTML5), а браузер не поддерживает файловый ввод / вывод (по крайней мере, не файл ввода / вывода общего назначения, который вам понадобится для этих целей).

Браузеры также даже не поддерживают идею потока байтов или какого-либо бинарного ввода-вывода (это может в конечном итоге произойти, но пройдет много лет, прежде чем оно будет поддерживаться всеми браузерами).

Таким образом, вы должны использовать AssetManager.getText для чтения файлов данных. Вы можете закодировать их в JSON, если хотите, и использовать PlayN.json() для их декодирования, или вы можете использовать свой собственный строковый формат.

Если вы не планируете развертывать с использованием бэкэнда HTML5, вы можете создать интерфейс «LevelReader» и внедрить этот интерфейс в бэкэнд для Android или iOS и использовать собственные возможности файлового ввода-вывода на этих платформах.

...