Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 23.10.2011, 03:32   #1
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Радость Работа с массивом указателей

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

Выкладываю два файла:
первый - проект целиком
второй - сам только код (для истинных джедаев (или просто интернет равликовый))
Помогите Пожалуйста и заранее Всем Вам гигантское Спасибо!!!)
Вложения
Тип файла: rar DATAR.rar (5.27 Мб, 363 просмотров)
Тип файла: rar code.rar (2.3 Кб, 392 просмотров)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 23.10.2011, 03:58   #2
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Работа с массивом указателей

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

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mr.DIMAS (23.10.2011)
Старый 23.10.2011, 04:23   #3
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 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
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Стрелка

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

(пишу в отдельном посте потому что просто так)
Оцените Мой код - за что заслуживаю похвалы и за что Меня можно убить - и вообще сам "проект" - т к первый раз делаю - не хочу запороться в самом начале
Мне Очень Важно Ваше Мнение
Вложения
Тип файла: rar objects.rar (2.0 Кб, 392 просмотров)
__________________
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
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Работа с массивом указателей

код в тег кода, а то всем влом качать !!
(Offline)
 
Ответить с цитированием
Старый 23.10.2011, 14:32   #6
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Работа с массивом указателей

аффтар, есть отличные саеты, которые специализируются именно на том, чтобы можно было удобно прочитать код:
например pastebin.com
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (23.10.2011)
Старый 23.10.2011, 14:43   #7
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 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;//хреново что в классе можно держать только целые числа

Ох, так это классы во всем виноваты
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (23.10.2011)
Старый 23.10.2011, 20:13   #8
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 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
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Работа с массивом указателей

Нормальная подпись. Не хуже моей.
__________________
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо FireOwl за это полезное сообщение:
ANIK123 (24.10.2011), dsd (24.10.2011), Reks888 (24.10.2011)
Старый 23.10.2011, 23:56   #10
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 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
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (24.10.2011)
Старый 24.10.2011, 01:11   #12
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Работа с массивом указателей

Да, действительно, если что-то шевелится в подписи то мы похожи на труъ имиджборду
Я такой злой потому что целый день про*бался над кодом и не люблю обзорщиков на фоне ковра
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>

Последний раз редактировалось Randomize, 25.10.2011 в 02:51. Причина: я тоже
(Offline)
 
Ответить с цитированием
Старый 24.10.2011, 15:05   #13
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 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
HolyDel
 
Регистрация: 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 за это полезное сообщение:
ANIK123 (25.10.2011), Reizel (25.10.2011)
Старый 25.10.2011, 20:24   #15
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (26.10.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com