2014-11-29 4 views
0

Я пытаюсь сделать простую игру с точками и боксами в erlang, где два процесса играют в игру. Я пытаюсь сохранить состояние стен в массиве булевы, как это,Erlang dots and boxes, stuck

Rooms = array:new([{default, false}, {size, ?SIZE}]). 

, но я не уверен, как графически отображать состояние платы. Я хочу нарисовать сетку и пробел, если логические значения являются ложными, а _ или | если они верны. Дело в том, что я не знаю, как это сделать. Документация по формату io: fwrite или io: меньше, чем полезно, и я действительно не понимаю ее. Я также не уверен, что я пойду по этому пути правильно. Это даже практично делать с помощью массива булевых элементов? Я хотел использовать массивы, поскольку они изменяемы, а все остальное - нет. Может кто-нибудь, пожалуйста, предоставит некоторую помощь или совет, как это сделать? Благодарю.

+1

Сначала попробуйте что-то проще, а затем, как сделать это с неизменным состоянием, будет иметь больше смысла. Подсказка: каждый «поворот» игры - это вход в функцию, которая делает .... что? Подумайте о каждой итерации как о своем собственном полностью независимом фрагменте времени, и состояние вещей будет иметь больше смысла. До тех пор, пытаясь написать это и беспокоиться о проблемах с дисплеем, преждевременно. – zxq9

ответ

0

Согласен с zxq9, я думаю, что печать состояния должна заканчиваться. Перед этим вам нужно будет настроить процессы, чтобы «играть», сервер, поддерживающий игру, решить, как планировать игру ... Приятно, что вы должны иметь возможность тестировать каждый элемент по отдельности. При этом вы увидите, какая структура данных лучше всего подходит для вашей программы.

Обратите внимание, что массивы не изменяются. следующая последовательность показывает это:

1> A = array:new(). 
{array,0,10,undefined,10} 
2> B = array:set(0,a,A). % create a new array adding an element to A 
{array,1,10,undefined, 
     {a,undefined,undefined,undefined,undefined,undefined, 
      undefined,undefined,undefined,undefined}} 
3> B = array:set(0,b,B). % attempting to change the element 0 of B will fail 
** exception error: no match of right hand side value 
        {array,1,10,undefined, 
          {b,undefined,undefined,undefined,undefined, 
           undefined,undefined,undefined,undefined, 
           undefined}} 
4> C = array:set(0,b,B). % but it is possible to modify the element and store the resulting array in a new variable 
{array,1,10,undefined, 
     {b,undefined,undefined,undefined,undefined,undefined, 
      undefined,undefined,undefined,undefined}} 
5>