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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 23.03.2012, 10:36   #1
SkyMD
AnyKey`щик
 
Регистрация: 20.03.2012
Сообщений: 10
Написано 2 полезных сообщений
(для 2 пользователей)
Создать/Разместить объект по условию

Ребят подскажите плз, как создать объект по условию


к примеру есть
Global Speed#=0.2,Score=0,TotalScore=0,Lives=5,Level=1

Hp = LoadMesh(".\media\model\EmergencyCube\HPCube.b3d");
Global BonusHP = CopyEntity(Hp)

FreeEntity Hp
. . .
Некоторое условие после которого увеличивается переменная Level
. . .

далее в главном цикле repeat

когда Level становится > 3 пытаюсь выполнить следующее

if Level > 3 Then
 ScaleEntity BonusHP,0.2,0.2,0.2
 PositionEntity BonusHP, Rnd(-20,20),0,Rnd(-20,20)
EndIf
теперь о проблеме когда условие срабатывает кубик(объект b3d) начинает рандомно появляется безпрерывно

я понимаю что сие дело в цикле но кто подскажет как это реализовать, потому что, планируется по исчезанию куба, потом его опять вызывать
за ранее спс
(Offline)
 
Ответить с цитированием
Старый 23.03.2012, 10:43   #2
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: Создать/Разместить объект по условию

ScaleEntity BonusHP,0.2,0.2,0.2
PositionEntity BonusHP, Rnd(-20,20),0,Rnd(-20,20)
Вызываешь там же где меняется Level , лучше иметь функцию для него.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SkyMD (23.03.2012)
Старый 23.03.2012, 12:45   #3
SkyMD
AnyKey`щик
 
Регистрация: 20.03.2012
Сообщений: 10
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Создать/Разместить объект по условию

я конечно извиняюсь хотел задать вопрос упростив его...
сложность в том что куб создаваться должен при срабатывании нескольких условий

функция то есть только куда ее совать ))
;Liv количество жизней 
;Spd# - текущая скорость движения
;lvl -  Текущий уровень

Function Bonus(Liv,Spd#,lvl)
    
If(Liv 3Then
        
If(Spd# > 2.0) Then
            
If(lvl 3)Then

                ScaleEntity BonusHP
,0.2,0.2,0.2
                PositionEntity BonusHP
Rnd(-20,20),0,Rnd(-20,20)
    
            EndIf
        EndIf    
    EndIf    
End Function 
пс: И еще в С++ есть типы void int float и т д..

когда создаю функцию в этом языке, не нужно указывать ей тип, какое значение она возвращает? или как...? сори за нубство
(Offline)
 
Ответить с цитированием
Старый 23.03.2012, 13:22   #4
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создать/Разместить объект по условию

Простой способ: сделать еще одну переменную для контроля установки бонуса.
;Liv - количество жизней 
;Spd# - текущая скорость движения
;lvl -  Текущий уровень

Global isBonus=false

Function Bonus(Liv,Spd#,lvl)
    If(Liv < 3) and isBonus=false Then ;или можно and not isBonus
        If(Spd# > 2.0) Then
            If(lvl > 3)Then

                ScaleEntity BonusHP,0.2,0.2,0.2
                PositionEntity BonusHP, Rnd(-20,20),0,Rnd(-20,20)
                isBonus=true

            EndIf
        EndIf    
    EndIf    
End Function
пс: И еще в С++ есть типы void int float и т д..
Здесь используются специальные символы в конце имени переменной или функции: int - % , float - # , string - $

Почитай FAQ по B3D, найдешь много полезного.
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Старый 23.03.2012, 13:47   #5
SkyMD
AnyKey`щик
 
Регистрация: 20.03.2012
Сообщений: 10
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Создать/Разместить объект по условию

ну да это понятно! Не понятно где ее вызывать в каком месте цикла
(Offline)
 
Ответить с цитированием
Старый 23.03.2012, 14:06   #6
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создать/Разместить объект по условию

Я полагаю вызывать нужно в главном цикле. Только если таких бонусов(или других проверок) будет много, нужно разнести их на несколько проходов цикла. (надеюсь понятно написал)
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SkyMD (23.03.2012)
Старый 23.03.2012, 14:10   #7
SkyMD
AnyKey`щик
 
Регистрация: 20.03.2012
Сообщений: 10
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Создать/Разместить объект по условию

заработало спс!
Поясните последнее пожалуйста.
(Offline)
 
Ответить с цитированием
Старый 23.03.2012, 14:26   #8
Markova
ПроЭктировщик
 
Аватар для Markova
 
Регистрация: 11.10.2011
Адрес: Мурманск
Сообщений: 154
Написано 74 полезных сообщений
(для 218 пользователей)
Ответ: Создать/Разместить объект по условию

да
Function FunctionU(A,b)
U=A*b
Return U
End Function
Text 10,10,FunctionU(9,9)

А что, ты с С++ на блитз ушел обычно на оборот =)

Type Generate
     Field GenerateUPS
    End Type

Global GenerateUPS%
Function 
Generate(GUPS,GPriod,GRndM)
Gperiod=GPriod/GUPS
Gtime
=MilliSecs()-Gperiod
    Repeat
        Gelapsed
=MilliSecs()-Gtime
Local G
.Generate=New Generate
     G
\GenerateUPS=Rnd(0,GRndM)
      
Until Gelapsed
End 
Function 

   
Graphics 1024,768,32,2
   SetBuffer BackBuffer
()
   
SetFont LoadFont("courier",14,1)

Global 
GenerateEnter%
;
или;Generate(1000,60,8)    
Repeat

If KeyDown (2)  

Generate(1000,60,8)    
For 
G.GenerateEach Generate
using
=G\GenerateUPS
usingX
=G\GenerateUPS
usingY
=G\GenerateUPS
Next
For G.GenerateEach Generate
Delete G
Next

EndIf

    
Cls 
    
 Color 100
,100,100
If using>0 Then Texts$="1 using"  
If using>4 Then Texts$="2 using" 
If using>2 Then Texts$="3 using" 
If using>3 Then Texts$="4 using" 
If using>5 Then Texts$="5 using"  
If using>6 Then Texts$="6 using" 
If using>7 Then Texts$="7 using" 
If using>8 Then Texts$="8 using" 
Text usingX*50,usingY*50,Texts$

 
Flip

Forever
For v.GenerateEach Generate
    Delete G
Next
End 
__________________
Острый психоз- это когда вы разговариваете с кошкой.
Острый галлюцинаторный психоз - вы говорите с кошкой, которой не существует.
Паранойя - вы боитесь ляпнуть лишнего при кошке.
Шизофрения - иногда у вас появляется кошка, которая разговаривает.
Неврастения - вы жалуетесь кошке, она молчит, игнорирует вас и это для вас невыносимо!!!
Навязчивый невроз - вы уверены, что кошка не одна и они что-то замышляют!

Последний раз редактировалось Markova, 23.03.2012 в 23:59.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SkyMD (23.03.2012)
Старый 23.03.2012, 14:32   #9
SkyMD
AnyKey`щик
 
Регистрация: 20.03.2012
Сообщений: 10
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Создать/Разместить объект по условию

да я не ушел!
просто выполнил пару примеров на блитце и офигел от простоты

Вот и решил учить и осваивать.
пс работаю в с++ Билдере 2010
ну а так, можете взглянуть, это я для наших ребят уроки преподавал
вот один из них
С++ Урок 4 By SkyMD

к примеру в визуал студии v* чтоб даже окно 3д инициализировать нужно написать намного больше строк кода чем тут. Да и в общем чувствуется что когда создавали двиг этот, то создавался он для людей ,а не как другие программные продукты
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (24.03.2012)
Старый 23.03.2012, 14:36   #10
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создать/Разместить объект по условию

Global numPass=1

;Начало главного цикла 

Select numPass

Case 1:
  numPass=2 ;
  ;Здесь вызываем функции

Case 2:
  numPass=3 ;
  ;Здесь вызываем функции

Case 3:
  numPass=1 ;
  ;Здесь вызываем функции

End Select

;Конец главного цикла
Вот так можно делать проверки каждый третий проход цикла.
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SkyMD (23.03.2012)
Старый 23.03.2012, 14:47   #11
SkyMD
AnyKey`щик
 
Регистрация: 20.03.2012
Сообщений: 10
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Создать/Разместить объект по условию

опа

Select numPass 
это же Switch =)
(Offline)
 
Ответить с цитированием
Старый 24.03.2012, 01:11   #12
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Создать/Разместить объект по условию


к примеру в визуал студии v* чтоб даже окно 3д инициализировать нужно написать намного больше строк кода чем тут. Да и в общем чувствуется что когда создавали двиг этот, то создавался он для людей ,а не как другие программные продукты
А еще есть Blitz3D SDK. Как раз для C++. Но из него выдрана сетевая часть. К тому же, куча багов( например, невозможно позиционировать слушателя в пространстве ). Не переходи на него.
__________________

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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