forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Работа с массивом указателей (http://forum.boolean.name/showthread.php?t=15700)

ANIK123 23.10.2011 03:32

Работа с массивом указателей
 
Вложений: 2
Приветствую Вас, Булочники)
Эта проблемма наверн элементарно решается... но пока Мне, ламеру за призванием, это еще трудно дается:sorry:
В общем есть массив указателей в котором храняться адреса на обьекты - пули
При выстреле новые пули добавляются в массив - это дает возможность обрабатывать их в главном цикле
По истечении некоторого времени они самоуничтожаются - список сортируется так чтобы данную пулю "замять" т е заменить на следующую а последняя удаляется соответственно
Дело в том что программа наверное постоянно попадает при обработке в главном цикле на "пустое место" в списке - потому и крашится
Это уже чисто логическая задача но как Я уже писал выше - пока Мне такие проблемы решаются не спервого раза
А в этом случае и не с второго и даже не с третьего

Выкладываю два файла:
первый - проект целиком
второй - сам только код (для истинных джедаев (или просто интернет равликовый))
Помогите Пожалуйста и заранее Всем Вам гигантское Спасибо!!!)

.Squid 23.10.2011 03:58

Ответ: Работа с массивом указателей
 
Запусти дебаггер и сразу найдешь причину краша.
Честно хотел помочь, но увидел код, испугался и забился в угол.

ANIK123 23.10.2011 04:23

Ответ: Работа с массивом указателей
 
Насколько Я не понял причина в обращении программы к пустой ячейке списка т е получаю неинициализированный обьект - пустой сосуд об который программа жалко спотыкается

Цитата:

Сообщение от .Squid (Сообщение 206669)
Честно хотел помочь, но увидел код, испугался и забился в угол.

Спасибо! Но чем тебя код напугал? Неужели он настолько ужасен и кривой?:''((
Кстати - очень хотелось бы узнать Ваше Мнение о Моем коде - и заодно направить на Путь Истинный молодого бойца)

ANIK123 23.10.2011 08:22

Вложений: 1
Как глаголится на сия снг: "Пока не запостишь вопрос - ответ не свалит с твоего носа в твою зону видимости" (или тип того)
>O< Решение нашлось! - причем как и упоминалось в порвом посте - оно обидно-элементарное) Значит Моя тропинка к зарплате размером в 999 999 999уе остается для Меня тропинкой к зарплате в 999 999 999уе)
йохохо Я пипец крутой! :В (это для Меня Подвиг - каждая решенная Мною проблема в С++ дает мне больше гормона счастья чем от 100500 выпусков +100500):punk:
Проблема была в наркоманском удалении пули (см функцию killBullet)
Прикрепляю исправленный рабочий вариант хедера
И еще разочек: УУРРЯАААА!!!:compl:

(пишу в отдельном посте потому что просто так)
Оцените Мой код - за что заслуживаю похвалы и за что Меня можно убить - и вообще сам "проект" - т к первый раз делаю - не хочу запороться в самом начале
Мне Очень Важно Ваше Мнение

IGR 23.10.2011 12:56

Ответ: Работа с массивом указателей
 
код в тег кода, а то всем влом качать !!

ffinder 23.10.2011 14:32

Ответ: Работа с массивом указателей
 
аффтар, есть отличные саеты, которые специализируются именно на том, чтобы можно было удобно прочитать код:
например pastebin.com

Reks888 23.10.2011 14:43

Ответ: Работа с массивом указателей
 
Кроме того что убить надо за подпись, любовь к +100500 и смайлам стоило бы разделить все типы хотя бы по разным файлам. Хрен прочитаешь.
PS http://pastebin.com/T2XbZawm
PPS
Сначала
int zsp,xsp,bsp,smosp;
Потом:
float zspf=zsp; zspf=zspf/100; float xspf=xsp; xspf=xspf/100;//хреново что в классе можно держать только целые числа :(

Ох, так это классы во всем виноваты

ANIK123 23.10.2011 20:13

Ответ: Работа с массивом указателей
 
Цитата:

код в тег кода, а то всем влом качать !!
Код вроде великоват - думал удобнее будет скачать
Цитата:

аффтар, есть отличные саеты, которые специализируются именно на том, чтобы можно было удобно прочитать код:
например pastebin.com
спасибо
не знал про такую фишку
Цитата:

Кроме того что убить надо за подпись, любовь к +100500 и смайлам стоило бы разделить все типы хотя бы по разным файлам. Хрен прочитаешь.
1 - а чем подпись не нравится?)
2 - +100500 просто добавил к слову - если уже об этом заговорили - то видел Я его только 2 выпуска - не понравилось (а Мэддисон рулит)
3 - смайлы? О_О а чего тут плохого? Для чего созданы смайлы? Может для помощи в выражении эмоций? Не???
4 - типы по файлам? Для двух базовых и трех производных классов???
5 - Если есть "здравый" способ хранения не целых чисел в качестве переменной-члена или еще чего то милости прошу описать сие чудо

И в общем : не будьте такими злобными >:)

UPD: И вообще - не таких ответов Я ожидал

FireOwl 23.10.2011 20:54

Ответ: Работа с массивом указателей
 
Нормальная подпись. Не хуже моей.
__________________

ANIK123 23.10.2011 23:56

Ответ: Работа с массивом указателей
 
Да не ну Я серьезно
(хотел написать длинное сообщ но...)
:(

Reizel 24.10.2011 01:05

Ответ: Работа с массивом указателей
 
Цитата:

Сообщение от ANIK123 (Сообщение 206724)
1 - а чем подпись не нравится?)
2 - +100500 просто добавил к слову - если уже об этом заговорили - то видел Я его только 2 выпуска - не понравилось (а Мэддисон рулит)
3 - смайлы? О_О а чего тут плохого? Для чего созданы смайлы? Может для помощи в выражении эмоций? Не???
4 - типы по файлам? Для двух базовых и трех производных классов???
5 - Если есть "здравый" способ хранения не целых чисел в качестве переменной-члена или еще чего то милости прошу описать сие чудо

1) Ваще пофиг, не знаю почему прицепился)
2)...
4) В С++ нужно код класса разделять на *.h и *.cpp, в *.h хранятся только прототипы классов и функций, *.cpp объявляет их)
4)
class Lol
{
public:
float fScale;
double dGpsW;
...

Reks888 24.10.2011 01:11

Ответ: Работа с массивом указателей
 
Да, действительно, если что-то шевелится в подписи то мы похожи на труъ имиджборду
Я такой злой потому что целый день про*бался над кодом и не люблю обзорщиков на фоне ковра

ANIK123 24.10.2011 15:05

Ответ: Работа с массивом указателей
 
Цитата:

1) Ваще пофиг, не знаю почему прицепился)
2)...
4) В С++ нужно код класса разделять на *.h и *.cpp, в *.h хранятся только прототипы классов и функций, *.cpp объявляет их)
4)
class Lol
{
public:
float fScale;
double dGpsW;
...
1) Красивая подпись правда?)
4) Спасибо, не знал
5) Кстати Я попробовал - и получилось! Для тебя это идиотизм но мне кто-то был сказал что можно добавлять в членны класса только целочисленные значиния или логические "були"!
Павел - Спасибо за Дельный Ответ!
Цитата:

Я такой злой потому что целый день проебался над кодом и не люблю обзорщиков на фоне ковра
Хрен с ними)

HolyDel 25.10.2011 02:31

Ответ: Работа с массивом указателей
 
итак:
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 :)

ANIK123 25.10.2011 20:24

Ответ: Работа с массивом указателей
 
Цитата:

итак:
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) Это было для того чтоб глаза мозолило по-сильнее - чтоб решение скорее нашлось) Как уже говорилось выше - Я не знал о возможности хранения членов любых типов в классе)

А книжку пока-что только до половины дочитал - как идиот сразу рвусь в бой) Мне бы закрепить текущие знания - а потом уже и новые приобретать) Спасибо Большое за дельную критику и советы) И отдельно спасибо за похвалу - теперь прибавилось еще больше энтузиазма и тяги к работе!)
Ого! Удачи Вам!)


Часовой пояс GMT +4, время: 19:39.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot