|
23.10.2011, 03:32
|
#1
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Работа с массивом указателей
Приветствую Вас, Булочники)
Эта проблемма наверн элементарно решается... но пока Мне, ламеру за призванием, это еще трудно дается
В общем есть массив указателей в котором храняться адреса на обьекты - пули
При выстреле новые пули добавляются в массив - это дает возможность обрабатывать их в главном цикле
По истечении некоторого времени они самоуничтожаются - список сортируется так чтобы данную пулю "замять" т е заменить на следующую а последняя удаляется соответственно
Дело в том что программа наверное постоянно попадает при обработке в главном цикле на "пустое место" в списке - потому и крашится
Это уже чисто логическая задача но как Я уже писал выше - пока Мне такие проблемы решаются не спервого раза
А в этом случае и не с второго и даже не с третьего
Выкладываю два файла:
первый - проект целиком
второй - сам только код (для истинных джедаев (или просто интернет равликовый))
Помогите Пожалуйста и заранее Всем Вам гигантское Спасибо!!!)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
23.10.2011, 03:58
|
#2
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Работа с массивом указателей
Запусти дебаггер и сразу найдешь причину краша.
Честно хотел помочь, но увидел код, испугался и забился в угол.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.10.2011, 04:23
|
#3
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Работа с массивом указателей
Насколько Я не понял причина в обращении программы к пустой ячейке списка т е получаю неинициализированный обьект - пустой сосуд об который программа жалко спотыкается
Сообщение от .Squid
Честно хотел помочь, но увидел код, испугался и забился в угол.
|
Спасибо! Но чем тебя код напугал? Неужели он настолько ужасен и кривой?
Кстати - очень хотелось бы узнать Ваше Мнение о Моем коде - и заодно направить на Путь Истинный молодого бойца)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
23.10.2011, 08:22
|
#4
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Как глаголится на сия снг: "Пока не запостишь вопрос - ответ не свалит с твоего носа в твою зону видимости" (или тип того)
Решение нашлось! - причем как и упоминалось в порвом посте - оно обидно-элементарное) Значит Моя тропинка к зарплате размером в 999 999 999уе остается для Меня тропинкой к зарплате в 999 999 999уе)
йохохо Я пипец крутой! :В (это для Меня Подвиг - каждая решенная Мною проблема в С++ дает мне больше гормона счастья чем от 100500 выпусков +100500)
Проблема была в наркоманском удалении пули (см функцию killBullet)
Прикрепляю исправленный рабочий вариант хедера
И еще разочек: УУРРЯАААА!!!
(пишу в отдельном посте потому что просто так)
Оцените Мой код - за что заслуживаю похвалы и за что Меня можно убить - и вообще сам "проект" - т к первый раз делаю - не хочу запороться в самом начале
Мне Очень Важно Ваше Мнение
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
Последний раз редактировалось Randomize, 23.10.2011 в 14:58.
Причина: Объединяю посты потому что просто так
|
(Offline)
|
|
23.10.2011, 12:56
|
#5
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Работа с массивом указателей
код в тег кода, а то всем влом качать !!
|
(Offline)
|
|
23.10.2011, 14:32
|
#6
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Работа с массивом указателей
аффтар, есть отличные саеты, которые специализируются именно на том, чтобы можно было удобно прочитать код:
например pastebin.com
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.10.2011, 14:43
|
#7
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Работа с массивом указателей
Кроме того что убить надо за подпись, любовь к +100500 и смайлам стоило бы разделить все типы хотя бы по разным файлам. Хрен прочитаешь.
PS http://pastebin.com/T2XbZawm
PPS
Сначала
int zsp,xsp,bsp,smosp;
Потом:
float zspf=zsp; zspf=zspf/100; float xspf=xsp; xspf=xspf/100;//хреново что в классе можно держать только целые числа
Ох, так это классы во всем виноваты
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
23.10.2011, 20:13
|
#8
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Работа с массивом указателей
код в тег кода, а то всем влом качать !!
|
Код вроде великоват - думал удобнее будет скачать
аффтар, есть отличные саеты, которые специализируются именно на том, чтобы можно было удобно прочитать код:
например pastebin.com
|
спасибо
не знал про такую фишку
Кроме того что убить надо за подпись, любовь к +100500 и смайлам стоило бы разделить все типы хотя бы по разным файлам. Хрен прочитаешь.
|
1 - а чем подпись не нравится?)
2 - +100500 просто добавил к слову - если уже об этом заговорили - то видел Я его только 2 выпуска - не понравилось (а Мэддисон рулит)
3 - смайлы? О_О а чего тут плохого? Для чего созданы смайлы? Может для помощи в выражении эмоций? Не???
4 - типы по файлам? Для двух базовых и трех производных классов???
5 - Если есть "здравый" способ хранения не целых чисел в качестве переменной-члена или еще чего то милости прошу описать сие чудо
И в общем : не будьте такими злобными >
UPD: И вообще - не таких ответов Я ожидал
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
23.10.2011, 20:54
|
#9
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Работа с массивом указателей
Нормальная подпись. Не хуже моей.
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо FireOwl за это полезное сообщение:
|
|
23.10.2011, 23:56
|
#10
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Работа с массивом указателей
Да не ну Я серьезно
(хотел написать длинное сообщ но...)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
24.10.2011, 01:05
|
#11
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Работа с массивом указателей
Сообщение от ANIK123
1 - а чем подпись не нравится?)
2 - +100500 просто добавил к слову - если уже об этом заговорили - то видел Я его только 2 выпуска - не понравилось (а Мэддисон рулит)
3 - смайлы? О_О а чего тут плохого? Для чего созданы смайлы? Может для помощи в выражении эмоций? Не???
4 - типы по файлам? Для двух базовых и трех производных классов???
5 - Если есть "здравый" способ хранения не целых чисел в качестве переменной-члена или еще чего то милости прошу описать сие чудо
|
1) Ваще пофиг, не знаю почему прицепился)
2)...
4) В С++ нужно код класса разделять на *.h и *.cpp, в *.h хранятся только прототипы классов и функций, *.cpp объявляет их)
4)
class Lol
{
public:
float fScale;
double dGpsW;
...
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.10.2011, 01:11
|
#12
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Работа с массивом указателей
Да, действительно, если что-то шевелится в подписи то мы похожи на труъ имиджборду
Я такой злой потому что целый день про*бался над кодом и не люблю обзорщиков на фоне ковра
Последний раз редактировалось Randomize, 25.10.2011 в 02:51.
Причина: я тоже
|
(Offline)
|
|
24.10.2011, 15:05
|
#13
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Работа с массивом указателей
1) Ваще пофиг, не знаю почему прицепился)
2)...
4) В С++ нужно код класса разделять на *.h и *.cpp, в *.h хранятся только прототипы классов и функций, *.cpp объявляет их)
4)
class Lol
{
public:
float fScale;
double dGpsW;
...
|
1) Красивая подпись правда?)
4) Спасибо, не знал
5) Кстати Я попробовал - и получилось! Для тебя это идиотизм но мне кто-то был сказал что можно добавлять в членны класса только целочисленные значиния или логические "були"!
Павел - Спасибо за Дельный Ответ!
Я такой злой потому что целый день проебался над кодом и не люблю обзорщиков на фоне ковра
|
Хрен с ними)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
25.10.2011, 02:31
|
#14
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Работа с массивом указателей
итак:
1) жуткая каша - блиц стайл. про разделение на файлы уже говорили, рекомендую попробывать - забористая штука
2) индикаторы движения камеры должны лежать внутри камеры.
3) зачем ты хранишь id-шник внутри пули?
4) зачем ты сдвигаешь часть массива после удаленной пули? тебе важен порядок - нет. вот и меняй с последним.
5)
float speed=sp; speed=speed/100;
xMoveEntity(model,0,0,speed);
аналогично
xMoveEntity(model,0,0,sp/100);
компилятор скорее всего сгенерирует один и тот-же код, но все же, чтобы пальцы болели меньше - нужно писать компактнее.
int cBullet::getId()const{return id;} void cBullet::setId(unsigned int sid){id=sid;}
тут у тебя есть тривиальный геттер и сеттер. почему просто не открыл доступ к id?
ну и еще - класса, безполезнее чем cUnit я в жизни не видывал. почитай про виртуальные функции и абстрактные классы.
в остальном все круто - переменные стараешься инициализировать в инициализаторах класса, константность логически константных функций соблюдаешь, лишнего в открытом доступе нет. видно, что книгу уже читал молодец.
настроение хорошее. два наших проекта отправили в Сочи на ТЭФИ 2011
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
|
25.10.2011, 20:24
|
#15
|
Знающий
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений (для 49 пользователей)
|
Ответ: Работа с массивом указателей
итак:
1) жуткая каша - блиц стайл. про разделение на файлы уже говорили, рекомендую попробывать - забористая штука
2) индикаторы движения камеры должны лежать внутри камеры.
3) зачем ты хранишь id-шник внутри пули?
4) зачем ты сдвигаешь часть массива после удаленной пули? тебе важен порядок - нет. вот и меняй с последним.
5)
float speed=sp; speed=speed/100;
xMoveEntity(model,0,0,speed);
аналогично
xMoveEntity(model,0,0,sp/100);
компилятор скорее всего сгенерирует один и тот-же код, но все же, чтобы пальцы болели меньше - нужно писать компактнее.
|
1) Я что если сделать так: каждый класс в отдельном хедере - так вроде удобнее + для совместной работы то что надо) Ваше Мнение?
2) Ну Да)
3) А как еще узнать положение пули в массиве?
4) Да, это отличное решение, спасибо!)
5) Это было для того чтоб глаза мозолило по-сильнее - чтоб решение скорее нашлось) Как уже говорилось выше - Я не знал о возможности хранения членов любых типов в классе)
А книжку пока-что только до половины дочитал - как идиот сразу рвусь в бой) Мне бы закрепить текущие знания - а потом уже и новые приобретать) Спасибо Большое за дельную критику и советы) И отдельно спасибо за похвалу - теперь прибавилось еще больше энтузиазма и тяги к работе!)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:41.
|