Я делаю простую игру со змеем с графическим интерфейсом на QT.Голова и части тела - это просто круги разного цвета (голова: красная, тело: зеленая).Вот некоторый код, который я создаю для начальной змеи:
void MainWindow::initialize() {
dots = 3; //the initial snake will have 1 head, 2 body parts
//This is just some random coordinates for the head and body
for (int z = 0; z < dots; z++) {
x[z] = 50 - z * STEP;
y[z] = 50;
}
locateSnake();
timerId = startTimer(DELAY);
}
void MainWindow::locateSnake()
{
for (int z = 0; z < dots; z++) {
if (z==0) {
QBrush redBrush(Qt::red);
QPen redPen(Qt::red);
head_ = scene_->addEllipse(0, 0, STEP, STEP, redPen, redBrush);
head_->setPos(x[z],y[z]);
} else {
QBrush greenBrush(Qt::green);
QPen greenPen(Qt::green);
body_ = scene_->addEllipse(0, 0, STEP, STEP, greenPen, greenBrush);
body_->setPos(x[z],y[z]);
}
}
}
При перемещении змеи ее координаты также меняются, и я вызываю locateSnake () в конце функции moveSnake (), например:
void MainWindow::moveSnake() {
for (int i = dots; i > 0; i--) {
x[i] = x[(i - 1)];
y[i] = y[(i - 1)];
}
if (left_) {
x[0] -= STEP;
}
if (right_) {
x[0] += STEP;
}
if (up_) {
y[0] -= STEP;
}
if (down_) {
y[0] += STEP;
}
locateSnake();
}
Проблема в том, что программа продолжает добавлять кружки, даже не съедая еду.Я хочу, чтобы оно каким-то образом сохраняло количество точек и изменялось только тогда, когда змея ест пищу. Это то, что моя программа запускает прямо сейчас, я хочу, чтобы она имела только 3 круга (1 красный, 2 зеленых).Есть намеки?
![enter image description here](https://i.stack.imgur.com/IURo3.png)