Суббота, 16 Ноября 2024, 06:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
SaiteiДата: Четверг, 28 Июня 2012, 20:54 | Сообщение # 501
старожил
Сейчас нет на сайте
Quote (Нохчи)
В .h пишешь прототип, в .cpp реализацию.

типа в .х
extern int Lol(int a, int b)?
НохчиДата: Четверг, 28 Июня 2012, 21:01 | Сообщение # 502
заслуженный участник
Сейчас нет на сайте
extern не нужен.

Многие вопросы по Windows отпадут, если посмотреть тут
maXimBestUAДата: Четверг, 28 Июня 2012, 23:26 | Сообщение # 503
почетный гость
Сейчас нет на сайте
Здраствуйте, у меня появилась небольшая проблема.
Вот кусок кода:
Code

         case 1:
             if(CheckBuilds==false)
             {
                 if(Grain-Farm.ValueGrain<0||Tree-Farm.ValueTree<0||Stone-Farm.ValueStone<0||
                     Iron-Farm.ValueIron<0||Gold-Farm.ValueGold<0)
                 CheckBuilds=false;
                 else if(Grain-Farm.ValueGrain>=0||Tree-Farm.ValueTree>=0||Stone-Farm.ValueStone>=0||
                     Iron-Farm.ValueIron>=0||Gold-Farm.ValueGold>=0)
                 CheckBuilds=true;
             }

             if(CheckBuilds==true)
             {
             if(Farm.TimeBuilds>0)
                 Farm.TimeBuilds--;
                 if(Farm.TimeBuilds==0)
                 {
                     Farm.level++;
                     Farm.TimeBuilds=5;
                     CheckBuilds=false;

                     for(int i=0;i<Farm.level;i++)
                     {
                         Farm.TimeBuilds*=1.5;
                         Farm.consumption*=1.5;
                         Farm.production*=1.5;
                     }
                 }
             }


А именно проблемма с переменной CheckBuild, в коде можно увидеть что сначала проверяется не работает ли уже эта переменная(не стоит ли true), если стоит false то должна произойти проверка, если при отнимании двух переменных число получается меньше нуля то должно вернуть false. С самого начала у меня стоит случай при вызове этого фрагмента кода при отнимании переменных получается число меньше 0 и возвращает false, все как надо. Но вот когда наступает случай что возвращает true то почемуто больше не возвращает false, даже если при отнимании переменных число меньше нуля почемуто возвращает true. В чем проблемма?
Надеюсь не сильно запутал smile
MatouДата: Четверг, 28 Июня 2012, 23:46 | Сообщение # 504
Исходный коТ
Сейчас нет на сайте
maXimBestUA, сильно запутал. Вот у тебя есть кусок кода, ужасный и кривой.
Code

              if(CheckBuilds==false)  
              {  
                  if(Grain-Farm.ValueGrain<0||Tree-Farm.ValueTree<0||Stone-Farm.ValueStone<0||  
                      Iron-Farm.ValueIron<0||Gold-Farm.ValueGold<0)  
                  CheckBuilds=false;  
                  else if(Grain-Farm.ValueGrain>=0||Tree-Farm.ValueTree>=0||Stone-Farm.ValueStone>=0||  
                      Iron-Farm.ValueIron>=0||Gold-Farm.ValueGold>=0)  
                  CheckBuilds=true;  
              }  

что ты от него хочешь получить?



maXimBestUAДата: Четверг, 28 Июня 2012, 23:59 | Сообщение # 505
почетный гость
Сейчас нет на сайте
Мне нужно чтобы при проверке первого условия if(Grain-
Farm.ValueGrain<0||Tree-
Farm.ValueTree<0||Stone-
Farm.ValueStone<0||
Iron-
Farm.ValueIron<0||Gold-
Farm.ValueGold<0)
CheckBuilds=false; возвращало false если условие верно, при первой проверке все правильно работает, но при повторных выполнениях возвращает почемуто true когда должно быть false


Сообщение отредактировал maXimBestUA - Пятница, 29 Июня 2012, 00:02
SaiteiДата: Пятница, 29 Июня 2012, 00:52 | Сообщение # 506
старожил
Сейчас нет на сайте
Здравствуйте. А есть материал по сбору движка? Двигатель - страсть и интерес. Ничего писать с 0 не буду, просто либы вместе подключить. Примеры там есть какие с коментами? Просто глянуть как всё это работает

Добавлено (29.06.2012, 00:52)
---------------------------------------------

Quote (Saitei)
Здравствуйте. А есть материал по сбору движка? Двигатель - страсть и интерес. Ничего писать с 0 не буду, просто либы вместе подключить. Примеры там есть какие с коментами? Просто глянуть как всё это работает

т.е. совмещать возможности либ, делать функции движка. Просто интересно, не более того (не только теория интересна, но и КОД)
ComentДата: Пятница, 29 Июня 2012, 01:24 | Сообщение # 507
почетный гость
Сейчас нет на сайте
maXimBestUA

А ты заметил как происходить проверка вхождения в if(CheckBuilds==false)? Ведь если у тебя стало true, то проверка просто невозможна и дальше следует
Code
if(CheckBuilds==true)     
                 {     
                 if(Farm.TimeBuilds>0)...


Поздновато уже, завтра покопаюсь с блоком смены бульевских значений, скорее всего косяки там. А еще лучше воспользуйся дебаггером и посмотри как меняются значения у CheckBuilds wink


Сообщение отредактировал Coment - Пятница, 29 Июня 2012, 01:35
maXimBestUAДата: Пятница, 29 Июня 2012, 01:39 | Сообщение # 508
почетный гость
Сейчас нет на сайте
Quote (Coment)
если у тебя стало true, то проверка просто невозможна

У меня так запланировано, если CheckBuild уже true, то значит постройка здания уже идет. Эта проверка нужна для самого первого шага при постройке, если сейчас здание не строится
Code

case 1:
if(CheckBuilds==false)
{

то происходит проверка хватает ли ресурсов для постройки
Code

                   if(Grain-Farm.ValueGrain<0||Tree-Farm.ValueTree<0||Stone-Farm.ValueStone<0||   
                       Iron-Farm.ValueIron<0||Gold-Farm.ValueGold<0)   
                   CheckBuilds=false;   
                       else
                   CheckBuilds=true;   

Если ресурсов не хватает то должно вернуть false либо вообще завершить функцию, но почемуто этого не происходит, и ресурсы идут в минус.


Сообщение отредактировал maXimBestUA - Пятница, 29 Июня 2012, 01:40
ComentДата: Пятница, 29 Июня 2012, 02:55 | Сообщение # 509
почетный гость
Сейчас нет на сайте
Ну сейчас первое что приходить в голову -- поставь break если хочешь завершить функцию.

Добавлено (29.06.2012, 01:58)
---------------------------------------------
Ммм... а что если допустим первая переменная пошла в минус а все остальные остались плюсовые? Условие соблюдено и вернуло false? теперь еще раз -- и получаем минус на минус, что дает плюс. Может в эту сторону копать? smile

Ну а вообще, реально, лучше бы вычисления вынести за рамки проверки. ИМХО

Добавлено (29.06.2012, 02:55)
---------------------------------------------
И можно еще проверить как у тебя ресурсы добавляются.

Сообщение отредактировал Coment - Пятница, 29 Июня 2012, 02:00
SaiteiДата: Пятница, 29 Июня 2012, 12:51 | Сообщение # 510
старожил
Сейчас нет на сайте
а есть инфа\уроки по созданию редактора партиклов?
DemeronДата: Пятница, 29 Июня 2012, 12:53 | Сообщение # 511
User created in C++
Сейчас нет на сайте
Quote (Saitei)
а есть инфа\уроки по созданию редактора партиклов?

Врядли) Разве что по созданию самих партиклов где-то завалялось. Это уже надо думать и делать самому или смотреть чужие исходники.
goldsphereДата: Пятница, 29 Июня 2012, 14:49 | Сообщение # 512
заслуженный участник
Сейчас нет на сайте
Как лучше сделать?Создать класс ресурсов и там объявить переменные ресурсов.А потом инициализировать их так:
Code
resource player;
player.gold = ...
player.wood =...
.....

или объявить 2 переменные
Code
resource gold;
resource wood;
gold.num=...
wood.num=...


Добавлено (29.06.2012, 14:13)
---------------------------------------------
и ещё вопрос.Лучше для каждого класса отдельный .h файл или для всех 1?

Добавлено (29.06.2012, 14:49)
---------------------------------------------
Первый вопрос снят.Для меня выгоднее использовать 1 вариант.


FinderX - Android Аркада

Сообщение отредактировал goldsphere - Пятница, 29 Июня 2012, 14:14
DemeronДата: Пятница, 29 Июня 2012, 14:51 | Сообщение # 513
User created in C++
Сейчас нет на сайте
Quote (goldsphere)
Как лучше сделать?Создать класс ресурсов и там объявить переменные ресурсов.А потом инициализировать их так:

По моему лучше этот способ.
Quote (goldsphere)
и ещё вопрос.Лучше для каждого класса отдельный .h файл или для всех 1?

В принципе без разницы.
maXimBestUAДата: Пятница, 29 Июня 2012, 22:57 | Сообщение # 514
почетный гость
Сейчас нет на сайте
Решил свою проблему)) Оказывается просто в этой строчке
Code

                    if(Grain-Farm.ValueGrain<0||Tree-Farm.ValueTree<0||Stone-Farm.ValueStone<0||    
                        Iron-Farm.ValueIron<0||Gold-Farm.ValueGold<0)    

при подсчете отнимает ресурсы без учета уровня постройки, и получается true, а когда уже дело доходит до нормального отнимания ресурсов то там у меня уже учитывается уровень здания и отнимало в минус. Вообщем исправил проблемку)
M1ghtMortalДата: Суббота, 30 Июня 2012, 07:31 | Сообщение # 515
участник
Сейчас нет на сайте
Quote (goldsphere)
и ещё вопрос.Лучше для каждого класса отдельный .h файл или для всех 1?

Зависит от их количества и размера. Просто если они будут большие, то будет не так удобна вносить изменения в .h файл. А если они маленькие, то можно по не сколько в один файл, что бы не создавать кучу файлов.


Java/C++/Unity(C#) Programmer.
Мой блог MightMortal.RU
SaiteiДата: Суббота, 30 Июня 2012, 20:49 | Сообщение # 516
старожил
Сейчас нет на сайте
Вызубрил все основы С++ (ну почти все, кое-где теряюсь). Решил поискать статьи по созданию двигов (на английском). Что-то находил, но на дельфи. Вбивал вот что: "how to make game engine c++". Помогите найти. Буду читать. Спасибо
ComentДата: Суббота, 30 Июня 2012, 21:32 | Сообщение # 517
почетный гость
Сейчас нет на сайте
Saitei

Здесь смотрел? Мне поначалу понравилось, но сейчас больше Java увлекся
Создать свой движок на С++?


Сообщение отредактировал Coment - Суббота, 30 Июня 2012, 21:34
SaiteiДата: Суббота, 30 Июня 2012, 23:14 | Сообщение # 518
старожил
Сейчас нет на сайте
Coment, "Where To Start With Game Programming?"
Может быть я ленивец, но про двиги не нашёл
ComentДата: Воскресенье, 01 Июля 2012, 03:06 | Сообщение # 519
почетный гость
Сейчас нет на сайте
Нууу... каюсь там конкретно не написано что и как делать что бы написать свой двиг (сорьь), а вот подача того что надо знать -- хотя бы приблизительно, для создания таких вещей -- присутствует. Не прими в обиду, но на данном портале-форуме очень много людей писали(создавали) темы о творении своего движка, при знании С++ на 100%. А самая банальная задачка по указателям увы -- "высший матан", "никому не нужные вещи" и все такое. Давайте будем реалистами -- хочешь создать свой болид Ф-1, изволь сделать пару кругов на уже присущем. А если такое не по нраву, то и скорее портал для подсказок надо выбирать другой.
Все написанное не относится конкретно к тебе smile


Сообщение отредактировал Coment - Воскресенье, 01 Июля 2012, 03:08
SaiteiДата: Воскресенье, 01 Июля 2012, 20:08 | Сообщение # 520
старожил
Сейчас нет на сайте
Coment, я понимаю, не обижаюсь. Мне бы вообще посмотреть на каком принципе их пишут)))
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг