Если вы не хотите, чтобы весь след показывался, вы должны вести учет предыдущей позиции каждого персонажа (игрока) и договориться о том, чтобы написать пробел в старой позиции и правильную отметку в новой позиции. Если вы чувствуете себя модно, вы можете использовать цветной бланк, один цвет для каждого игрока, чтобы вы могли видеть, где они были, даже если текущие позиции помечены по-разному.
К сожалению, без упоминания окраски это похоже на то, что вы делаете.
Вы должны убедиться, что вы не используете -1
координаты; mvaddch()
, вероятно, не проверен на ошибку и будет вытащен за пределы, делая то, кто знает, какой урон. Не рискуй этим. (Подумайте об использовании 0, 0
в качестве старой позиции; не имеет значения, если вы пишете пробел поверх пробела. Единственное, что имеет значение, это то, что другой игрок не там, где вы пишете пробел.)
Обратите внимание, что крайне важно, чтобы только один процесс делал рисунок. Если у вас есть два процесса, пытающихся сделать это, вы потеряете одно или другое изображение в течение некоторого времени. Это одна из причин, почему трудно добавить часы, скажем, в верхний правый угол экрана терминала. Похоже, у вас есть два процесса, пытающихся записать на экран.
По стилю, вам нужно использовать больше функций. То есть каждый процесс должен иметь свой код в отдельной функции, чтобы было легче увидеть, что он делает. Наложение тесных скобок }
на глубину в три строки тоже не очень хороший стиль.