Я хочу реализовать игровой цикл (действующий как сервер) в Erlang, но я не знаю, как справиться с отсутствием увеличивающихся переменных.
Что я хочу сделать, описано в коде Java:
class Game {
int posX, posY;
int wall = 10;
int roof = 20;
public void newPos(x,y) {
if(!collision(x,y)) {
posX = x;
posY = y;
}
}
public boolean collision(x,y) {
if(x == wall || y == roof) {
// The player hit the wall.
return true;
}
return false;
}
public sendStateToClient() {
// Send posX and posY back to client
}
public static void main(String[] args) {
// The game loop
while(true) {
// Send current state to the client
sendStateToClient();
// Some delay here...
}
}
}
Если клиент перемещается, вызывается функция newPos(). Эта функция изменяет некоторые координатные переменные, если столкновения не происходит. Игровой цикл продолжается бесконечно и просто отправляет текущее состояние обратно клиенту, чтобы клиент мог его нарисовать.
Теперь я хочу реализовать эту логику в Erlang, но не знаю, с чего начать. Я не могу установить переменные posX и posY так же, как здесь... Моя единственная мысль - это какой-то рекурсивный цикл, где координаты являются аргументами, но я не знаю, правильный ли это путь. ..