Я начал кодировать несколько недель назад и сейчас тестировал чек-игру. Я создал класс под названием «фигура», а затем массив (рисунок [значение]). Я создал 2D-массив в main.cpp и заполнил его цифрами для каждого рисунка []. EG:Шашки перемещаются (в SFML)
(main.cpp)
figure Figure[33]; //Figure-array
for (int i = 0; i < 33; i++)
{
Figure[i].id = i;
}
int field[7][7] = { // (I messed the ID's up a little, just ignore it
{0, 0, 1, 2, 3, 0, 0},
{0, 0, 4, 5, 6, 0, 0},
{7, 8, 9, 10, 11, 12, 13}
{14, 15, 16, 17, 18, 19, 20},
{21, 22, 23, 24, 25, 26, 27},
{0, 0, 28, 29, 30, 0, 0},
{0, 0, 31, 32, 33, 0, 0}
};
for (int y = 0; y < 7; y++) //Field gets filled with figure-values {
for (int x = 0; x < 7; x++)
{
if (field[y][x] != 0)
{
Figure[field[y][x] - 1].setPosition(Vector2i(x + 1, y + 1));
}
}
}
Теперь я хочу сделать функцию обновления, чтобы заставить их прыгать друг на друга, и т.д. Моя проблема в том, что я не знаю, как сделать это правильно, я не знаю, как написать эту функцию полностью .Здесь это то, что я уже:
(Updatefunction)
void figure::update(int (&field)[7][7], RenderWindow &window) {
Vector2i mouseCoords;
mouseCoords.x = int(Mouse::getPosition(window).x/114);
mouseCoords.y = int(Mouse::getPosition(window).y/85);
if ((field[mouseCoords.y][mouseCoords.x] != 0) && (Mouse::isButtonPressed(Mouse::Left)))
{
if ((field[mouseCoords.y][mouseCoords.x] != 0) && !(Mouse::isButtonPressed(Mouse::Left)))
{
selected = true; //selected defined in figure.h
}
}
Vector2i newMouseCoords;
newMouseCoords.x = int(Mouse::getPosition(window).x/114);
newMouseCoords.y = int(Mouse::getPosition(window).y/85);
if (selected = true)
{
if ((newMouseCoords.x == mouseCoords.x + 2) && (field[newMouseCoords.y][newMouseCoords.x + 2] != 0))
{
}
}
}
Я не знаю, как продолжить здесь, советы очень ценятся!
У вас также есть семантические ошибки в коде C++. 'selected = true', поскольку последний оператор' if' будет присваивать 'true'' selected' и всегда будет оценивать значение 'true' (поскольку оператор присваивания возвращает значение, которое было назначено). Измените эту строку на 'if (selected == true)' или более идиоматически, измените ее на 'if (selected)', тогда у вас не будет этой проблемы. –