Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Работа с динамическим массивом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Путаница в условном операторе http://www.cyberforum.ru/cpp-beginners/thread1042101.html
Задача: Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y ...
C++ Провести побитовое кодирование слов английского языка Провести побитовое кодирование слов английского языка( мне нужно тока слово Alexandr), используя минимальное количество переменных, типа unsigned int. Помогите пожалуйста, т.к уже конец семетра, а... http://www.cyberforum.ru/cpp-beginners/thread1042091.html
Программа удаления информации о сотруднике C++
Всем привет, задание на лабораторной дали: Написать программу удаления информации о сотруднике с указанным возрастом вот собственно программа, написал. но выводит не то, что надо. преподаватель...
система счисления C++
Написать програму на С++, чтобы переводила 16 числа в двоичные. Можна в консоле можна из формами. Помогите пожалуста Добавлено через 4 часа 18 минут Кто поможет?
C++ Шаблоны классов. Обработка исключений http://www.cyberforum.ru/cpp-beginners/thread1042075.html
1. Описать шаблон класса АТД Стек. 2. Определить и реализовать в шаблоне класса конструкторы, деструктор, функции Input (ввод с клавиатуры) и Print (вывод на экран), перегрузить операцию...
C++ Арифметическая прогрессия Вывести на экран 7ой член прогрессии если числа находящиеся по соседству различаются в 5 раз, а первое число равен 3ем Добавлено через 10 часов 4 минуты ответьте пожалуйста.. подробнее

Показать сообщение отдельно
antonid
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 22

Работа с динамическим массивом - C++

15.12.2013, 18:01. Просмотров 206. Ответов 0
Метки (Все метки)

В программе есть динамический массив класса Enemy. И есть функция, которая при попадании стрелы во врага проверяет жив ли он после попадания, если мертв, то уменьшает переменную en_kol (количество врагов) на 1. Проблема в том, что если стрела пересекается с первым врагом (нулевым элементом массива), то количество врагов сразу падает до нуля. С остальными элементами все нормально. В чем может быть ошибка? Вот код столкновения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i =1 ;i<en_kol;i++){
            if (arrow.rect.top>en[i].rect.top-30 && arrow.rect.top< en[i].rect.top+30 && arrow.rect.left> en[i].rect.left-30 &&  arrow.rect.left< en[i].rect.left+30){/*условие столкновения*/
            arrow.fly = 0;
            arrow.rect.left = -800;
            arrow.rect.top = -800;
            en[i].hp -= 20;
        }
                        if (en[i].hp<=0){
                            en[i].checklive();
                            std::cout<<en_kol<<std::endl;
 
                        }
}
Вот код функции checklive

C++
1
2
3
4
5
6
void checklive(){
            en_kol--;
            rect.left = -200; /*координата по х*/
            rect.top = -200; /* координата по у*/
            live = 0; /*Враг объявляется мертвым*/
    }
Добавлено через 1 час 56 минут
актуально

Добавлено через 2 часа 10 минут
Актуально

Добавлено через 40 минут
PS. Цикл в первом коде начинается с нуля, тут опечатка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru