> Свободная база знаний SFML > Уроки SFML > Разработка 2D Игр > Уроки от legozaur > Приложение 4: Собственные алгоритмы > Алгоритм сражения 1
Данных алгоритм ещё не проверялся, но я думаю он идеально описывает алгоритмы боя из других игр
1. Общая функция
1 2 3 4 5 6 7 8 |
void function0(float time) { switch(current_status) { case 1: function1(time); break; // current_status == 1 - время между ударами case 2: function2(time); break; // current_status == 2 - время удара } } |
2. Время между ударами
1 2 3 4 5 6 7 8 9 10 |
void function1(float time) { if(time1 <= 0) {//Если время между ударами кончилось time2 = time2max + time1; // поправка на остаточное время current_status = 2; // изменяем статус } else { time1 -= time; } } |
3. Замах(время удара) и удар
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void function2(float time) { if(isAttack == true) { // Если можно атаковать if(time2 <= 0) {// если время удара кончилось attack(); // выполняем атаку time1 = time1max + time2; // поправка на остаточное время current_status = 1; // изменяем статус } else { time2 -= time; } } } |
4. Отмена атаки
1 2 3 4 |
void cancelAttack() { time2 = time2max; // атака была отменена, замах должен быть произведён заного } |