Gameloop для j2me “основанной на повороте” игры

Используйте Series.isin с ~ для фильтрации значений, отсутствующих в df1[0] - в первом столбце с DataFrame.loc и boolean indexing [118 ]:

import pandas as pd

#create DataFrame from first file
df1 = pd.read_csv(file1, sep=";", header=None)
print (df1)
    0     1   2
0  x1  10.0  a1
1  x2  10.0  a2
2  x3  11.0  a1
3  x4  10.5  a2
4  x5  10.0  a3
5  x6  12.0  a3

#create DataFrame from second file
df2 = pd.read_csv(file2, header=None, sep='|')
print (df2)
    0
0  x1
1  x4
2  x5

s = df1.loc[~df1[0].isin(df2[0]), 0]
print (s)
1    x2
2    x3
5    x6
Name: 0, dtype: object

#write to file
s.to_csv('new.csv', index=False, header=False)

6
задан gnat 2 November 2011 в 20:39
поделиться

2 ответа

Я постарался бы не распараллеливать для игровой логики как поточная обработка J2ME, в зависимости от производителя, конечно, не делает отличной работы по совместному использованию ограниченных ресурсов. Вы будете часто видеть паузы, в то время как поток делает тяжелую обработку. Я только рекомендовал бы потоки для загрузки или функций сетевого соединения как в этом случае, Вы будете просто давать пользователю основную "Загрузку..." обратная связь.

Для обработки этого у меня не было бы подциклов для обновления каждого AI в одном кадре. Я сделал бы что-то как следующее в функции выполнения:

public void run() {
    while(true) {
        // Update the Game
        if(gameManager.isUsersTurn()) {
            // Collect User Input
            // Process User Input
            // Update User's State
        }
        else {
            // Update the active NPC based on their current state
            gameManager.updateCurrentNPC();
        }

        // Do your drawing
    }
}

Вы не хотите обновлять все в одном кадре как 1), обновление могло бы быть медленным, не приводя ни к какой непосредственной визуальной обратной связи для пользователя 2) Вы не можете анимировать каждый отдельный NPC, поскольку они делают свое действие. С этой установкой у Вас могли быть состояния NPC, NPC_DECIDE_MOVE и NPC_ANIMATING, который позволит Вам дальнейшее управление того, что делает NPC. NPC_ANIMATING в основном поместил бы игру в состояние ожидания для анимации для происхождения, избежав дальше обрабатывающий, пока анимация не завершена. Затем это могло идти дальше к очереди следующего NPC.

Кроме того, у меня просто был бы gameManager.update (), и gameManager.paint (g) (краску назовут от краски), который обработал бы все и сохранил бы метод выполнения тонким.

Наконец, Вы изучали flushGraphics ()? С GameCanvas Вы обычно создаете Графический объект, тянете все к этому и затем называете flushGraphics (), затем ожидаете. Метод, который Вы упоминаете, является способом заняться им для класса Холста. Просто мысль я упомянул бы это и отправил бы ссылку: Игровые Основы Холста

3
ответ дан 16 December 2019 в 21:46
поделиться

Хотя не j2me конкретно необходимо получить ввод данных пользователем, общая стратегия состоит в том, чтобы поставить вход в очередь он до его времени для обработки входа.

input ---> queue <---> Manager(loop)

Таким образом, можно даже написать сценарий входа в целях отладки.

Таким образом, Вам не нужен новый поток. Каждый раз, когда пользователь нажимает клавишу, Вы храните их в буфере и затем обрабатываете содержание буфера при необходимости. Если буфер плеера не имеет никакого входа, менеджер должен пропустить весь геймплей, сделать анимации и затем запуститься по (так как игра не является экшн-игрой).

5
ответ дан 16 December 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: