Созданные ответы форума
-
АвторСообщения
-
Можно в класс Enemy добавить поле с текстом и отрисовывать этот текст в цикле отрисовки врагов
Организовать запись в файл всех параметров при выходе, и считывание их при запуске
Постараюсь помочь теоретически.
Итак. Попробуем нарисовать двумерную радугу. За основу возьмем окружность (для простоты).
Общее уравнение окружности выглядит так: (x-x0)^2*(y-y0)^2=r*r, где (x0,y0) – центр окружности, r – радиус. Но нам нужна не только окружность, но и внутренняя часть круга Чтобы нарисовать круг, пройдем в циклах по квадрату размером 2r на 2r и немного изменим формулу:
(x-x0)^2*(y-y0)^2<r*rC++123456for (int i = -r; i< r; i++){for (int j = -r; j< r; j++){if ((j*j) + (i*i) <(r*r)) cout << "A"; else cout << ".";}cout << endl;}Теперь нам нужен верхний полукруг. Очень просто. Проходим цикл по i до нуля, а не до r.
Заготовка под радугу готова. Теперь разобьем на цвета и вырежем лишнюю часть внизу. Это можно сделать с помощью дополнительных радиусов.
Вот пример кодаC++12345678910for (int i = -r; i< 0; i++){for (int j = -r; j< r; j++){if ((j*j) + (i*i) < (r2*r2)) cout << "."; else{if (((j*j) + (i*i) < (r1*r1)))cout << "b"; else {if (((j*j) + (i*i) < (r*r))) cout << "!"; else cout << ".";}}}cout << endl;}В принципе радуга готова. Вам осталось подстроить под свою реализацию.
Конечно не совсем то, что Вы просили, но все же.Вложения:
You must be logged in to view attached files.Ничего конкретного сказать не могу, но могу посоветовать.
Банально в цикле выводить всю информацию по каждому врагу и смотреть, что происходит не так.Как пример
if (enemy.rect.intersects(player.rect)){
enemy.life=false;
}
…
if(enemy.life) window.draw(enemy.sprite);Наверное уже не актуально, но быть может кому-то пригодится.
Первое что пришло в голову – скорость разделить на массу.
player.x += (0.1/M)*time*(pos.x – player.x) / distance;
В таком случае скорость не станет отрицательной.
При желании большей реалистичности, можно заглянуть в учебник по физике) -
АвторСообщения