С текстовыми файлами все в порядке, но лучше использовать PNG или растровую графику. Пиксель может потенциально хранить до 4 байтов информации и может быть легко создан с использованием инструментов манипуляции с фотографиями.
Прежде всего, у вас должен быть класс "Entity" или "GameObject", который может наследовать все в вашей сцене. Пример:
public class Entity
{
public float x, y, width, height;
public void onStep() {}
public void onDraw() {}
public RectF getRectF()
{
RectF rect = new RectF();
rect.left = x;
rect.top = y;
rect.right = x + width;
rect.bottom = y + height;
return rect;
}
}
Во-вторых, у вас должно быть несколько разных классов, расширяющих класс Entity, таких как класс Player , класс Wall и, возможно, Coin * 1011. * класс:
public class Player extends Entity {...}
public class Wall extends Entity {...}
public class Coin extends Entity {...}
Следующим вашим шагом будет переопределение события шага Player, и в этом событии шага, выполните итерацию по всем настенным объектам следующим образом:
@Override public void onStep()
{
for (Entity e : my_active_entities)
{
if (e instanceof Wall)
{
Wall wall = (Wall) e;
if (RectF.intersects(wall.getRectF(), this.getRectF()))
{
// We now know that our player is intersecting with "e"
// We also know that "e" is a wall
wall.doSomething();
this.doSomething();
}
}
}
}
Наконец, было бы создать свой собственный загрузчик сцены. Это будет выполнять итерацию ваших графических объектов и объектов на экране в зависимости от цвета текущего пикселя.
Bitmap bitmap = getOurBitmapFromSomewhere();
for (int x = 0; x < bitmap.getWidth(); x++)
for (int y = 0; y < bitmap.getHeight(); y++)
{
int color = bitmap.getPixel(x, y);
switch (color)
{
case 0xFF00FF00:
// First byte is Alpha
// Second byte is Red
// Third byte is Green
// Fourth byte is Blue
Player player = new Player();
player.x = x * TILE_SIZE; // For example, 16 or 32
player.y = y * TILE_SIZE;
my_active_entities.add(player);
break;
}
}
Это завершает мои два цента обработки игровых объектов, обнаружения столкновений и загрузки уровней. Любой, кто спотыкается об этом, может использовать этот код или эту концепцию кода в своем программном обеспечении.