forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Создать/Разместить объект по условию (http://forum.boolean.name/showthread.php?t=16523)

SkyMD 23.03.2012 10:36

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


к примеру есть
Код:

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) начинает рандомно появляется безпрерывно

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

is.SarCasm 23.03.2012 10:43

Ответ: Создать/Разместить объект по условию
 
Цитата:

ScaleEntity BonusHP,0.2,0.2,0.2
PositionEntity BonusHP, Rnd(-20,20),0,Rnd(-20,20)
Вызываешь там же где меняется Level , лучше иметь функцию для него.

SkyMD 23.03.2012 12:45

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

функция то есть только куда ее совать ))
PHP код:

;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 и т д..

когда создаю функцию в этом языке, не нужно указывать ей тип, какое значение она возвращает? или как...? сори за нубство :wallbash:

RBK 23.03.2012 13:22

Ответ: Создать/Разместить объект по условию
 
Простой способ: сделать еще одну переменную для контроля установки бонуса.
Код:

;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, найдешь много полезного.

SkyMD 23.03.2012 13:47

Ответ: Создать/Разместить объект по условию
 
ну да это понятно! Не понятно где ее вызывать в каком месте цикла

RBK 23.03.2012 14:06

Ответ: Создать/Разместить объект по условию
 
Я полагаю вызывать нужно в главном цикле. Только если таких бонусов(или других проверок) будет много, нужно разнести их на несколько проходов цикла. (надеюсь понятно написал)

SkyMD 23.03.2012 14:10

Ответ: Создать/Разместить объект по условию
 
заработало спс!
Поясните последнее пожалуйста.

Markova 23.03.2012 14:26

Ответ: Создать/Разместить объект по условию
 
да
Function FunctionU(A,b)
U=A*b
Return U
End Function
Text 10,10,FunctionU(9,9)

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

PHP код:

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 


SkyMD 23.03.2012 14:32

Ответ: Создать/Разместить объект по условию
 
да я не ушел!
просто выполнил пару примеров на блитце и офигел от простоты

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

к примеру в визуал студии v* чтоб даже окно 3д инициализировать нужно написать намного больше строк кода чем тут. Да и в общем чувствуется что когда создавали двиг этот, то создавался он для людей ,а не как другие программные продукты

RBK 23.03.2012 14:36

Ответ: Создать/Разместить объект по условию
 
Код:


Global numPass=1

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

Select numPass

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

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

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

End Select

;Конец главного цикла

Вот так можно делать проверки каждый третий проход цикла.

SkyMD 23.03.2012 14:47

Ответ: Создать/Разместить объект по условию
 
опа

PHP код:

Select numPass 

это же Switch =)

mr.DIMAS 24.03.2012 01:11

Ответ: Создать/Разместить объект по условию
 

Цитата:

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


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

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