Я пытаюсь реализовать Игру Жизни, используя C / ncurses.Одна из функций, которую я хочу, чтобы моя игра, состояла в том, чтобы взять координаты X, Y у пользователя и нарисовать фигуру на доске в этих координатах.У меня есть функция, которая рисует фигуры на доске и работает нормально.Заголовок для этой функции:
void draw_shape(int x, int y, int shape[3][3])
Нажатие клавиши для рисования фигуры обрабатывается в состоянии заголовка моей игры.Функция рисования фигур работает для рисования любых фигур.Моя единственная проблема - получение значений X, Y от пользователя.
Состояние заголовка моей игры: case TITLE: test = 0;int i, j;
for(i = 0; i < (WELL_WIDTH-1); i++)
for(j = 0; j < (WELL_HEIGHT-1); j++)
cells[i][j] = create_cell(x_offset + i, y_offset + j);
w = init_well(x_offset - 1, y_offset - 1, well_w, well_h);
draw_well(w);
mvprintw(y_offset + 5, x_offset + 10, "Welcome to the Game of Life!");
mvprintw(y_offset + 7, x_offset + 9, "Press 'S' to start a new game.");
mvprintw(y_offset + 8, x_offset + 9, "Press 'L' to load a saved game.");
mvprintw(y_offset + 12, x_offset + 20, "-OR-");
mvprintw(y_offset + 16, x_offset + 8, "Pick a shape to draw on the screen:");
mvprintw(y_offset + 18, x_offset + 9, "(A) Still life (B) Glider");
mvprintw(y_offset + 19, x_offset + 9, "(C) Oscillator (D) Random");
keystrokes = read_keys();
if (keystrokes == START_SAVE) {
state = INIT; }
if (keystrokes == LOADBOARD) {
state = LOADGAME;
}
if (keystrokes == STILL_LIFE) {
state = STILLIFE;
}
Когда нажата кнопка «A», состояние переключается на STILLLIFE.Здесь я хочу получить значения X, Y от пользователя и передать их в функцию drawshape.
case STILLLIFE:
w = init_well(x_offset - 1, y_offset - 1, well_w, well_h);
draw_well(w);
echo();
int x_cord, y_cord;
mvprintw(y_offset + 21, x_offset + 7, "Enter X, Y coordinates for your shape: ");
В идеале я хотел бы сделать что-то вроде: scanw("%d, %d", &x_cord, &y_cord);
, а затем draw_shape(x_cord, y_cord, shape);
Но когдаЯ попробовал это, это не похоже на работу.Я бы попытался отобразить значения x_cord и y_cord следующим образом: mvprintw(y_offset + 23, x_offset + 7, "%d, %d", x_cord, y_cord);
Но, когда я открыл свою игру, уже были фиктивные целочисленные значения для x_cord и y_cord, прежде чем я что-то набрал.Я пробовал много разных методов, я просто ищу что-то эквивалентное scanf.Любые предложения или рекомендации будут с благодарностью.Спасибо.