Manual Español - Blitz3D
Manual Español - Blitz3D
NDICE
2D - Categoras Bsico Matemticos Cadenas Texto Entrada Banco Ficheros Ficheros/Flujos Network TCP (Network) UDP (Network) DirectPlay DirectShow Sonido/Msica Grficos Imagen Tiempo Windows/Debug Pag. 2 21 31 36 40 51 55 61 70 71 73 75 86 87 93 111 131 133 3D - Categoras Global Textura Pincel Malla Superficie Cmara Luz Pivote Sprite MD2 BSP Plano Espejo Terreno Oyente/Sonido Movimiento de Entidades Animacin de Entidades Control de Entidades Estado de Entidades Colisin de Entidades Modo Grfico Pag. 137 146 154 158 166 170 177 178 178 179 183 184 185 186 195 195 201 203 207 214 219
SCANCODES
TECLA DEL TECLADO ESCAPE 1 2 3 4 5 6 7 8 9 0 Menos (-) Igual (=) Backspace Tab Q W E R T Y U I O P Corchete Izq. ([) Corchete Der. (]) Intro Control Izq A S D F G H J K L Punto y coma (;) Apstrofe (') Grave Shift Izq Barra invertida (\) Z X C V B N M Coma (,) Punto (.) Barra (/) Shift Der Asterisco (*) Alt Izq/Men SCANCODE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 COMENTARIOS TECLA DEL TECLADO Espacio Capital F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 NumLock Scroll Lock NumPad 7 NumPad 8 NumPad 9 Menos (-) NumPad 4 NumPad 5 NumPad 6 Ms (+) NumPad 1 NumPad 2 NumPad 3 NumPad 0 Punto (.) OEM_102 F11 F12 F13 F14 F15 Kana ABNT_C1 Accent Grave Convert NoConvert Yen ABNT_C2 SCANCODE 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 86 87 88 100 101 102 112 115 121 123 125 126 COMENTARIOS TECLA DEL TECLADO Stop AX Unlabeled Next Track Intro Control Der Mute Calculator Play/Pause Media Stop Volume Down Volume Up Web Home Comma (,) Divide (/) On Numeric Keypad SysReq Right Alt/Menu Pause Home Up Page Up/Prior Left On Numeric Keypad On UK/Germany Keyboards Right End Down (NEC PC98) (NEC PC98) (NEC PC98) Japanese Keyboard /? on Portugese (Brazil) keyboards Japanese Keyboard Japanese Keyboard Japanese Keyboard Numpad on Portugese (Brazil) keyboards = on numeric key pad (NEC PC98) Previous Track (NEC PC98) (NEC PC98) (NEC PC98) Japanese Keyboard Next Insert Delete Left Windows Right Windows Apps Power Sleep Wake Web Search Web Favorites Web Refresh Web Stop Web Forward Web Back My Computer Mail Media Select SCANCODE 149 150 151 153 156 157 160 161 162 164 174 176 178 179 181 183 184 197 199 200 201 203 205 207 208 209 210 211 219 220 221 222 223 227 229 230 231 232 233 234 235 236 237 COMENTARIOS (NEC PC98) Japan AX (J3100) Next Track ENTER on Numeric Keypad Mute Calculator Play/Pause Media Stop Volume Volume + Web Home On Numeric Keypad(NEX PC98) On Numeric Keypad Right Alt Pause Home on Arrow Pad Up Arrow on Arrow Keypad Page Up on Arrow Keypad Left Arrow on Arrow Keypad Right Arrow on Arrow Keypad End Key on Arrow Keypad Down Key on Arrow Keypad Next Key on Arrow Keypad Insert Key on Arrow Keypad Delete Key on Arrow Keypad Left Windows Key Right Windows Key Apps Menu Key System Power System Sleep System Wake
On Numeric Keypad
Igual On Main keyboard On Main Keyboard On Numeric Keypad PrevTrack AT Dos puntos (:) Underline Kanji
2D - Categoras
BASICO If
Definicin:
Comprueba una condicin y ejecuta un cdigo si la condicin es verdadera.
Ejemplo:
; Ejemplo IF THEN ; Introduce el nombre del usuario name$=Input$("Cmo te llamas? ") If name$ = "Sergio" Then Print "Te he reconocido, Sergio! Bienvenido!" Else Print "No eres Sergio! No importa, tambin eres bienvenido!" End If
Then
Definicin:
Parte de una estructura condicional IF.
Ejemplo:
Ver Ejemplo IF THEN
Else
Definicin:
Comienzo del cdigo que ser ejecutado si la condicin del IF falla.
Ayuda Blitz Basic If name$="Sergio" then Print "Hola Sergio!" Else Print "No tengo ni idea de quin eres!" End If
ElseIf
Definicin:
Aade una condicin IF ... THEN en el interior de una estructura condicional.
Ejemplo:
; Ejemplo ELSEIF ; Introduce el nombre del usuario name$=Input$("Cmo te llamas? ") ; Se llama Sergio? If name$ = "Sergio" Then Print "Te he reconocido, Sergio! Bienvenido!" ElseIf name$="Xtreme" then Print "Te he reconocido, Xtreme! Bienvenido!" Else Print "No s quin eres! No importa, tambin eres bienvenido!" ; Fin de la comprobacin de la condicin End If
Else If
Definicin:
Aade una condicin IF ... THEN en el interior de una estructura condicional.
Ejemplo:
; Ejemplo ELSE IF ; Introduce el nombre del usuario name$=Input$("Cmo te llamas? ") ; Se llama Sergio? If name$ = "Sergio" Then Print "Te he reconocido, Sergio! Bienvenido!" Else If name$="Xtreme" then Print "Te he reconocido, Xtreme! Bienvenido!" Else Print "No s quin eres! No importa, tambin eres bienvenido!" ; Fin de la comprobacin de la condicin End If
EndIf
Definicin:
Otra versin aceptable de END IF.
Ejemplo:
; Ejemplo IF THEN ; Introduce el nombre del usuario name$=Input$("Cmo te llamas? ") ; No es el nombre del usuario igual a SERGIO? If name$ = "Sergio" Then Print "Te he reconocido, Sergio! Bienvenido!" Else Print "No eres Sergio! No importa, tambin eres bienvenido!" ; Fin de la condicin EndIf
End If
Definicin:
Cierra una condicin IF/THEN.
Ejemplo:
Ver Ejemplo IF THEN
Select variable
Definicin:
Ejecuta comandos dependiendo del valor de la variable especificada.
Ejemplo:
; Ejemplo SELECT/CASE/DEFAULT/END SELECT ; Signa un nmero aleatorio entre 1-10 mission=Rnd(1,10)
Ayuda Blitz Basic ; Comienza el proceso de seleccin basado en el valor de 'mission' Select mission ; es mission = 1? Case 1 Print "Tu misin es coger el plutonio y ponerlo a salvo." ; es mission = 2? Case 2 Print "Tu misin es destruir todos los enemigos." ; es mission = 3? Case 3 Print "Tu misin es robarle al enemigo los plaos del edificio." ; Qu hacer si ninguno de los casos se ha cumplido? Default Print "Las misiones -10 no estn disponibles todava." ; Fin del proceso de seleccin End Select
Case valor
Definicin:
Comienza un grupo de comandos de una estructura SELECT si el valor de la variable SELECT es igual que el valor especificado como parmetro.
Ejemplo:
Ver Ejemplo SELECT
Default
Definicin:
Especifica un juego de comandos que se ejecutarn en una estructura Select si ninguno de los CASE's ha sido reconocido.
Ejemplo:
Ver Ejemplo SELECT
End Select
Definicin:
Cierra una estructura SELECT.
Ejemplo:
Ver Ejemplo SELECT
And
Definicin:
Operador lgico comparativo para expresiones condicionales.
Ejemplo:
; Ejemplo AND name$=Input$("Introduce tu nombre:") pw$=Input$("Password:") if name$="Sergio" and pw$="www.blitzbasico.tk" then print "Acceso concedido! Bienvenido!" else print "Tu nombre o tu password no fue reconocido" end if
Or
Definicin:
Conjuncin entre dos valores para derivar un valor booleano.
Ejemplo:
; Ejemplo OR myNum1=Rnd(0,10) myNum2=Rnd(0,10) If myNum1 = 0 OR myNum2 = 0 then print "Uno de mis nmeros es un 0" end if
Not
Definicin:
Operador lgico para comprobar si una condicin es falsa.
Ejemplo:
; Ejemplo NOT ; Bucle hasta que se pulse ESC
Ayuda Blitz Basic While Not KeyHit(1) ; Mientras no se pulse ESC ... Print "Pulsa ESC para salir!" Wend
Repeat
Definicin:
Primer comando de un bucle REPEAT ... UNTIL.
Ejemplo:
; Se repite hasta que el usuario pulse la tecla ESC Repeat print "Pulsa ESC para quitar esto!" Until KeyHit(1)
Until condition
Definicin:
El comando de cierre de un bucle REPEAT ... UNTIL.
Ejemplo:
Ver Ejemplo REPEAT
Forever
Definicin:
Se usa en un bucle REPEAT para crear un bucle infinito.
Ejemplo:
; Ejemplo FOREVER Repeat If KeyHit(1) Then Exit Print "Ests atrapado en un bucle infinito! Pulsa ESC!" Forever Print "El bucle infinito ha acabado!"
While condition
Definicin:
Comienza un bucle condicional WHILE/WEND.
Ejemplo:
; Ejemplo While/Wend ; La condicin del bucle est al PRINCIPIO del bucle While Not KeyHit(1) ; Tanto tiempo como el usuario est sin pulsar ESC... Print "Pulsa ESC para acabar!" ; Print this Wend ; Vuelve al inicio del bucle WHILE
Wend
Definicin:
Comando de cierre de un bucle WHILE/WEND.
Ejemplo:
Ver Ejemplo WHILE
For variable
Definicin:
Primer comando de un bucle FOR ... NEXT.
Ejemplo:
; Imprime nmeros del 10 al 1 For t = 1 To 10 Print t Next ; Imprime los valores 1,3,5,7,9 For t = 1 To 10 Step 2 Print t Next
To
Definicin:
Dicta el rango de valores en un bucle FOR ... NEXT.
Ejemplo:
; Imprime nmeros del 10 al 1 For t = 10 to 1 Step -1 Print t Next
Step
Definicin:
Establece el incremento de un bucle FOR ... NEXT.
Ejemplo:
; Print 1 through 100, by tens For t = 1 To 100 Step 10 Print t Next
Next
Definicin:
El comando de cierre de un bucle FOR ... NEXT.
Ejemplo:
; Imprime For t = 1 Print t Next ; Imprime For t = 1 Print t Next nmeros del 10 al 1 To 10
10
Exit
Definicin:
Sale de un bucle inmediatamente.
Ejemplo:
; Ejemplo EXIT For t = 1 To 100 Print t If t = 50 Then Exit Next
Goto label
Definicin:
Desva la ejecucin de un programa a la etiqueta especificada.
Ejemplo:
Print "El programa empieza..." Goto label1 Print "Esta lnea jams ser imprimida..." End .label1 Print "Hemos saltado aqu!" ; espera que pulses ESC para acabar While Not KeyHit(1) Wend
Gosub label
Definicin:
Desva la ejecucin de un programa a la etiqueta especificada con la intencin de volver a la llamada original.
Ejemplo:
Print "El programa comienza..." Gosub label1 Print "El programa acaba..."
Ayuda Blitz Basic ; espera que pulses ESC para acabar While Not KeyHit(1) Wend End .label1 Print "Podramos hacer todo lo que quisieramos en esta parte del programa..." Print "Pero volveremos donde fuimos llamados..." Return
11
.label
Definicin:
Establece una etiqueta a la que se puede llamar en el interior de tu programa.
Ejemplo:
; The program starts here, but we'll branch to other labels Gosub start Gosub label3 Gosub label2 ; Let's wait for ESC to be pressed before ending While Not KeyHit(1) Wend End .start Print "We start here ..." Return .label2 Print "This is label 2" Return .label3 Print "This is label 3" Return
Return value
Definicin:
Sale inmediatamente de una funcin con un valor opcional o resume la ejecucin de una subrutina llamada con Gosub.
12
Ejemplo:
; RETURN example ; Set result to the return value of the function 'testme' result=testme(Rnd(0,10)); ; The program effectively ends here. ; The actual function Function testme(test); ; If the random number passed = 0 If test=0 Then Print "Value was 0" Return False ; The Function ends immediately Else Print "The value was greater than 0" Return True ; The Function ends immediately End If Print "This line never gets printed!" End Function
Function name
Definicin:
Comienza un fragmento de cdigo independiente para llamar desde tu programa.
Ejemplo:
; Function Example ; Get the user's name name$=Input$("Enter Your Name:") ; Call a function to print how many letters the name has numletters(name$); ; Let's get something BACK from the function thefirst$=firstletter(name$) ; Now print results Print "Was the first letter an 'S'? (1=True/0=False)" + thefirst$ ;The program basically ends here, because functions don't run unless called. ; The actual function Function numletters(passedname$) Print "Your name has " + Len(passedname$) + " letters in it." End Function ; Function to see if the first letter is S Function firstletter(passedname$) ; If the first letter is an 'S' then return from the function a true value If Left$(passedname$,1) = "S" Then Return True
Ayuda Blitz Basic ; Otherwise, return false Else Return False End If End Function
13
End Function
Definicin:
Marca el final de una estructura Function.
Ejemplo:
; End Function Example ; Get the user's name name$=Input$("Enter Your Name:") ; Call a function to print how many letters the name has numletters(name$); ;The program basically ends here, because functions don't run unless called. ; The actual function Function numletters(passedname$) Print "Your name has " + Len(passedname$) + " letters in it." End Function
Const variablename
Definicin:
Declara una variable como una constante y le asigna un valor.
Ejemplo:
; Ejemplo CONST Const scrWidth=640 Const scrHeight=480 Const alienscore=100 Graphics scrWidth,scrHeight Print "Los puntos por disparar a un alien son siempre " + alienscore
Global variable
Definicin:
Declara variables globales para usar en tu programa.
14
Ejemplo:
Global player1score ; Declare player 1's score as global Global graph.Cursor ; Declare the Cursor TYPE as global
Local variable
Definicin:
Declara una variable como local.
Ejemplo:
; Local example ; set lives to 5 for the main program loop Local lives=5 ; Call a function while not keyhit(1) showlives() Wend Function showlives() ; For this function, lives will be 10! Local lives=10 Print lives End Function
Dim variable(elements)
Definicin:
Crea un array de variables para almacenar datos.
Ayuda Blitz Basic segundo elemento es la localizacin X e Y de ese alien (el elemento 0 sera la coordenada X y el 1 la coordenada Y). As, para establecer la posicin del alien 57 a X=640, Y=480 se hara esto: alien(57,0)=640 alien(57,1)=480 DrawImage imgAlien,alien(57,0),alien(57,1) De acuerdo, los TYPE's son mucho mejor mtodo para manejar estos mltiples valores con pocas rutinas. Los arrays son muy buenos para alamacenar colecciones de objetos con un elemento comn, pero a veces los TYPE's son ms tiles.
15
Ejemplo:
; DIM example ; Create a collection of 100 random numbers ; Declare our array Dim nums(100) ; Fill each element with a random number For T = 1 to 100 nums(t) = Rnd(1,100) Next
Type variable
Definicin:
Define un objeto con una coleccin de variables.
Ejemplo:
; Define el Type CHAIR (SILLA) Type CHAIR Field X Field Y
; Crea 100 nuevas sillas usando un bucle FOR ... NEXT sobre una coleccin llamada ROOM (HABITACION) For tempx = 1 to 10 For tempy = 1 to 10 room.chair = New Chair room\x = tempx room\y = tempy room\height = Rnd(0,10) ; establece la altura aleatoriamente entre 0 t 10 Next Next ; Las mueve todas una posicin (como en la descripcin del ejemplo) For room.chair = Each chair room\x = room\x + 1 Next
Field variable
Definicin:
Asigna una variable para usar dentro de una estructura de objetos TYPE.
Ejemplo:
Ver Ejemplo TYPE
End Type
Definicin:
El ltimo comando de la creacin de un objeto TYPE ... END TYPE.
Ejemplo:
Ver Ejemplo TYPE
New type_variable
Definicin:
Crea un nuevo objeto TYPE.
Ejemplo:
Ver Ejemplo TYPE
17
Each type_variable
Definicin:
Usado para moverse a travs de una coleccin de objetos TYPE.
Ejemplo:
Ver Ejemplo TYPE
First type_variable
Definicin:
Mueve el puntero de objetos Type al primer objeto de la coleccin.
Ejemplo:
Ver Ejemplo TYPE
Last type_variable
Definicin:
Mueve el el puntero de objeto al ltimo objeto de la coleccin Type.
Ejemplo:
Ver Ejemplo TYPE
Before custom_type_variable
Definicin:
Mueve el puntero del obeto al anterior objeto en la coleccin Type.
Ejemplo:
Ver Ejemplo TYPE
18
After custom_type_variable
Definicin:
Mueve el puntero del obeto al siguiente objeto en la coleccin Type.
Ejemplo:
Ver Ejemplo TYPE
Delete custom_type_name
Definicin:
Borra un objeto de una coleccin TYPE personalizada.
Ejemplo:
; Las mueve una posicin (como en la descripcin del ejemplo en el comando TYPE) ; Si la silla no esta en pantalla, se elimina For room.chair = Each chair room\x = room\x + 1 if room\x > 640 then Delete room Next
True
Definicin:
Una expresin booleana usada en comparaciones. Actualmente devuelve un valor de 1.
Ejemplo:
; Ejemplo TRUE ; Asigna a test un nmero aleatorio (1 o 0) test= Rnd(0,1) ; TRUE est implicado; Esta lnea significa REALLMENTE: si test es igual a 1 de verdad (TRUE) entonces continua If test=1 Then Print "Test es igual a 1" End If ; Establezcamos test a TRUE
Ayuda Blitz Basic test=True If test=True Then Print "Test es true" End If
19
False
Definicin:
Una expresin booleana usada en las comparaciones. Actualmente devuelve un valor de 0.
Ejemplo:
; Ejemplo FALSE ; Asigna a test un numero aleatorio de 1 o 0 test= Rnd(0,1) ; FALSE esta implicado porque esta el NOT If not test=1 Then Print "Test es igual a 0" End If ; Establezcamos a 'tst' como FALSE test=False If test=False Then Print "Test es FALSE" else print "Test es TRUE" End If
Null
Definicin:
Indica un valor nulo o vaco.
Ejemplo:
; Ejemplo Null strHello$="Hola Mundo" Print strHello$ strHello$=Null
Data list_of_values
Definicin:
Crea una lista de valores constantes para ser usados en tu programa.
20
Ejemplo:
Print "All vamos!" ; Restaura al inicio las declaraciones Data Restore startData ; Obtiene el primer numero el cual es el total de usuarios Read Users ; Imrpimelos todos! For T = 1 To Users Read firstname$ Read age Read accuracy# Read lastname$ Print firstname$ + " " + lastname$ + " tiene " + age + " aos con " + accuracy# + " accuracy!" Next While Not KeyHit(1) Wend End .startData Data 3 Data "Sergio", 14, 33.3333, "Padrino" Data "Bob", 28, 12.25, "Smith" Data "Roger", 54, 66.66, "Rabbit"
Read variable
Definicin:
Obtiene el siguiente lote de valores de un estamento Data.
Ejemplo:
; Ejemplo de read/restore/data/label ; Pongamos el puntero data al segundo data Restore seconddata ; Imprimamos todos en la pantalla For t = 1 To 10 Read num ; Obtiene el siguiente valor data Print num Next
Ayuda Blitz Basic ; Ahora el primer data Restore firstdata ; Imrpimamo todo en la pantalla For t = 1 To 10 Read num ; Obtiene el siguiente valor del data Print num Next ; Este es el primer grupo data .firstdata Data 1,2,3,4,5,6,7,8,9,10 ; Este es el segundo grupo data .seconddata Data 11,12,13,14,15,16,17,18,19,20
21
Restore label
Definicin:
Mueve el puntero Data a la etiqueta seleccionada.
Ejemplo:
Ver Ejemplo READ
Include filename
Parmetros:
filename - nombre del archivo .bb para incluir
Descripcin:
Incluye el contenido del .bb especificado al actual archivo de cdigo. Nota: los archivos .bb slo pueden ser incluidos una vez.
Ejemplo:
; Ejemplo Include ; --------------Include "print.bb"
MATEMTICOS Pi
Definicin:
Devuelve el valor de Pi.
Ejemplo:
Int (value)
Parmetros:
value - algn valor o variable vlida
Descripcin:
Este valor redondea al nmero entero ms cercano y lo devuelve.
Ejemplo:
; Int Example ; ----------Print Int(0.25) ; = 0 Print Int(0.5) ; = 0 Print Int(0.75) ; = 1
Float variable/value
Definicin:
Convierte un valor entero en uno de coma flotante (real).
Ejemplo:
; Float example a=100 b#=2.5 c#=Float a Print b# + c#
Floor# (float)
Definicin:
Redondea una variable decimal a la baja.
Ejemplo:
; Ejemplo Floor#/Ceil# ; Creo una variable de coma flotante myVal#=0.5 ; La redondeo hacia arriba Print Floor#(myval) ;La redondeo hacia abajo Print Ceil#(myval)
23
Ceil# (float)
Definicin:
Redondea un valor decimal al nmero ms cercano a la alta.
Ejemplo:
; Ejemplo Floor#/Ceil# ; Creo una variable de coma flotante myVal#=0.5 ; La redondeo hacia arriba Print Floor#(myval) ;La redondeo hacia abajo Print Ceil#(myval)
Sgn (number)
Definicin:
Devuelve el signo del nmero especificado.
Ejemplo:
Print Print Print Print Print Print Sgn(10) ; prints 1 Sgn(5.5) ; prints 1.000000 Sgn(0) ; prints 0 Sgn(0.0) ; prints 0.000000 Sgn(-5.5) ; prints -1.000000 Sgn(-10) ; prints -1
Abs (nmero)
Definicin:
Devuelve el valor absoluto (positivo) de un nmero.
Ejemplo:
number=-3 Print "El valor absoluto de " + number + " es: " + Abs(number) WaitKey()
24
Mod
Definicin:
Devuelve el resto de una divisin.
Ejemplo:
; Ejemplo MOD Print 10 MOD 3
Sqr (float)
Definicin:
Devuelve la raz cuadrada del valor especificado.
Ejemplo:
; sqr# example value=25 print "La raz cuadrada de nuestro valor es: " + sqr#(value) waitkey()
Sin (Number)
Definicin:
El comando Sin, o Sinus, es una funcin de trigonometra que devuelve un nmero entre -1 y 1. Este valor representa la coordenada "Y" de un punto.
Ejemplo:
Graphics 640,480 Origin 320,240 ; Mueve el punto de origen de todos los comandos de dibujo al centro de la pantalla For degrees=0 To 359; Pasa a travs de todos los grados del crculo Delay(5) ; Luego calcula la coordenada Y del punto del crculo usando Sin y multiplicando por 100 (para hacer mas grande el radio) y=Sin(degrees)*100 y=-y ; Invierte la coordenada Y para representar el crculo correctamente en la pantalla
Ayuda Blitz Basic ; La siguiente linea calcula la coordenada X usando el comando COS y multiplicando por 100 x=Cos(degrees)*100 Rect x,y,1,1 ; Dibuja el punto del circulo actual Next ; Nos da otro angulo MouseWait ; Espera que toques un boton del raton End ; Termina la ejecucin del programa
25
Cos (Number)
Definicin:
El comando Cos es una funcin de trigonometra que devuelve un nmero entre -1 y 1. Este valor representa la coordenada X de un punto (x,y).
Ejemplo:
Ver Ejemplo Sin
Tan (number)
Definicin:
Devuelve la tangente de un ngulo.
Ejemplo:
; Ejemplo Tan angle1=25 angle2=45 print "La tangente del ngulo 1 es: " + tan(angle1) print "La tangente del ngulo 2 es: " + tan(angle2) waitkey()
ASin (nmero)
Definicin:
Devuelve el arcoseno del parmetro especificado.
26
Ejemplo:
Graphics 640,480 Repeat Cls ; Determina las posiciones y la longitud de la hipotenusa x# = MouseX() ; desplazamientto horizontal por la pantalla y# = MouseY() ; desplazamientto vertical por la pantalla r# = Sqr((x#*x#)+(y#*y#)) ; longitud de la hipotenusa ; Dibuja los ejes Color 104,104,104 Line x#,0,x#,y# ; dibuja una linea perpendicular al cursor desde la parte superior de la pantalla Line 0,y#,x#,y# ; dibuja una linea perpendicular al cursor desde la parte izquierda de la pantalla Locate x#+10,y#-10 : Write "X=" : Print x# Locate x#-10,y#+10 : Write "Y=" :Print y# Origin 0,0 ; dibuja la lnea del ngulo Color 255,255,255 Line 0,0,x#,y# ; dibuja una linea desde la esquina superior izquierda hasta el cursor theta# = ASin(y#/r#) ; el angulo entre el eje x y el eje y Locate 60,10 : Write "ngulo:" : Print theta ; Dibuja un arco representando el ngulo For degrees#=0 To theta#; pasa a travs de todos los grados en el ngulo ; La siguiente linea calcula las coordenadas X e Y del punto del circulo usando los comandos Sin y Cos ; y multiplicandolo por 5 el resultado (para obtener un radio mayor) cy=Sin(degrees#)*50 cx=Cos(degrees#)*50 Plot cx,cy ; Dibuja el punto actual del crculo. Next Flip ; Pulsa ESC para salir Until KeyDown(1) End
ACos (nmero)
Definicin:
Devuelve el arcocoseno del argumento especificado.
Ejemplo:
Ver Ejemplo Asin
ATan (flotante)
Definicin:
Devuelve el ngulo desde el eje X hasta un punto (y,x).
27
Ejemplo:
; Ejemplo Atan Graphics 640,480,16,0 SetBuffer BackBuffer() ; Punto de inicio de nuestra caja movil x=0 y=0 ; velocidades aleatorias xSpeed=Rand(5) ySpeed=Rand(5) ; repite hasta que pulses ESC o la caja salga de la pantalla While Not KeyHit(1) Or y > 480 Or x > 640 Cls ; Dibuja nuestra caja Rect x,y,10,10,1 ; incrementa la posicion de la caja dependiendo de las velocidades aleatorias x=x+xSpeed y=y+yspeed ; imprimo el ngulo de nuestra caja Text 0,0,ATan(yspeed,xspeed) Flip Wend
ATan2 (valorx,valory)
Definicin:
Devuelve el ngulo desde el eje X hasta un punto (X,Y).
Ejemplo:
; Ejemplo Atan2 Graphics 640,480,16,0 SetBuffer BackBuffer() ; Punto de inicio de nuestra caja movil x=0 y=0 ; velocidades aleatorias xSpeed=Rand(5) ySpeed=Rand(5) ; repite hasta que pulses ESC o la caja salga de la pantalla While Not KeyHit(1) Or y > 480 Or x > 640 Cls ; Dibuja nuestra caja Rect x,y,10,10,1 ; incrementa la posicion de la caja dependiendo de las velocidades aleatorias x=x+xSpeed y=y+yspeed ; imprimo el ngulo de nuestra caja Text 0,0,ATan2(yspeed,xspeed) Flip Wend
28
Exp (number)
Definicin:
Devuelve el valor de un logarismo de 'e' elevado a una potencia.
Ejemplo:
; Para encontrar el valor de e print Exp(1) ; i.e. e^1, devuelve 2.718281 ; Para encontrar el valor de e^5 print Exp(5) ; devuelve 148.413162
Log (number)
Definicin:
Devuelve el logaritmo natural del argumento especificado.
Ejemplo:
; Para encontrar el valor de Log(e^5) e# = Exp(1) x# = 5 y# = e#^x# Print y ; i.e. e^5 = e*e*e*e*e: devuelve 148.413131 Print Log(y) ; ie. Log(e^5) = Log(10000): devuelve 5.000000
Log10 (number)
Definicin:
Devuelve el logaritmo comn del argumento proporcionado (base 10).
Ejemplo:
; Para encontrar el valor de Log10(10^5) x = 5 y = 10^x Print y ; i.e. 10^5 = 10*10*10*10*10: devuelve 100000 Print Log10(y) ; ie. Log10(10^5) = Log10(10000): devuelve 5.000000
Xor
Definicin:
Realiza un OR exclusivo a nivel de bit entre dos valores.
29
Ejemplo:
num=%11110000111100001111000011110000 ; Define un patrn de bits fcil de reconocer bitmask=Rnd(-2147483648,2147483647) ; Define un patrn aleatorio de 32bit con el que realizar la comparacin (lo llamaremos 'bitmask') ; Esta lnea imprime los valores binario y decimal antes de realizar el Xor Print "El Nmero binario es: "+Bin$(num)+" ("+num+")" ; Esta lnea imprime los valores binario y decimal del bitmask antes de realizar el Xor Print "El bitmask del Xor es: "+Bin$(bitmask)+" ("+bitmask+")" Print "------------------------------------------------------------------" ; Esta lnea realiza la comparacin xor del nmero con el bitmask xres=num Xor bitmask ; Esta lnea imprime el valor en binario y decimal despus del Xor Print "El resultado del Xor es: "+Bin$(xres)+" ("+xres+")" Print "------------------------------------------------------------------" ; Esta lnea realiza un Xor con el resultado anterior y el bitmask otra vez xres=xres Xor bitmask ; Esta lnea imprime el valor en binario y decimal despus del segundo Xor. NOTA: Este nmero es idntico al nmero original. Print "Resultado del segundo Xor es: "+Bin$(xres)+" ("+xres+")" WaitMouse ; Espera a que pulses un botn del ratn antes de acabar
Shl repetitions
Definicin:
Realiza un desplazamiento binario a la izquierda.
Ejemplo:
; Ejemplos shl, shr, sar value = 100 ; multiplica Print "Mover ; multiplica Print "Mover ; multiplica Print "Mover por 2 1 bit a la izquierda; Valor = " + value Shl 1 por 4 2 bits a la izquierda; Valor = " + value Shl 2 por 16 4 bits a la izquierda; Valor = " + value Shl 4
30 ; divide entre Print "Mover 1 ; divide entre Print "Mover 2 ; divide entre Print "Mover 4 2 bit a la derecha; Valor = " + value Shr 1 4 bits a la derecha; Valor = " + value Shr 2 entre 16 bits a la derecha; Valor = " + value Shr 4
Shr repetitions
Definicin:
Realiza un desplazamiento binario a la derecha.
Ejemplo:
Ver Ejemplo Shl
Sar repetitions
Definicin:
Realiza un desplazamiento binario a la derecha.
Ejemplo:
Ver Ejemplo Shl
Rnd (start#,end#)
Definicin:
Devuelve un nmero aleatorio.
Ejemplo:
y=Rnd(0,10) ; Establece a Y a un entero aleatorio entre 0 y 10 y#=Rnd(0,5) ; Establece a Y un valor de coma flotante entre 0.000000 y 10.000000
31
Ejemplo:
; Ejemplo Rand ; Establece la semilla de numeros aleatorios para que sean nuevos SeedRnd (MilliSecs()) ; Genera nmeros aleatorios entre 1 y 100 For t = 1 To 20 Print Rand(1,100) Next
SeedRnd seed
Definicin:
Establece el conjunto de nmeros aleatorios para el generador con un valor 'semilla'.
Ejemplo:
SeedRnd Millisecs() ; Cambia la semilla con el tiempo de sistema actual en milsimas de segundo.
Ejemplo:
; Ejemplo STR num#=2.5 mynum$=str num# Print mynum$
32
Ejemplo:
name$="Sergio Padrino" Print "Las tres primeras letras de tu nombre son: " + Left$(name$,3)
Ejemplo:
name$="Sergio Padrino" Print "Las cuatro ltimas letras de tu nombre son: " + Right$(name$,4)
Ejemplo:
name$="Sergio Padrino" For T = 1 To Len(name$) Print Mid$(name$,t,1) Next
33
Ejemplo:
name$="Sergio Padrino" Print "Tu nombre antes del reemplazo: " + name$ Print "Tu nombre con la R cambiada por la L: " + Replace$(name$,"r","l")
Ejemplo:
name$="Sergio Padrino" Print name$ location = Instr( name$,"P",1) Print "Tu nombre tiene la 'P' en la posicin nmero " + location + "!"
Upper$ (string$)
Definicin:
Convierte una cadena de texto entera a maysculas.
Ejemplo:
name$="Sergio Padrino Recio" print "Tu nombre entero en maysculas es: " + upper$(name$)
Lower$ (string$)
Definicin:
Convierte una cadena de texto entera a minsculas.
Ejemplo:
name$="SeRgIo PaDrInO" Print "El nombre original es: " + name$ Print "En minsculas es: " + Lower$(name$)
Trim$ (string$)
Definicin:
Quita los espacios iniciales y finales de una cadena de texto.
34
Ejemplo:
name$=" Sergio Padrino Recio " Print "Tu nombre antes del arreglo: '" + name$ "' ..." Print "Tu nombre arreglado es: '" + Trim$(name$) + "' ..."
Ejemplo:
name$="Sergio Padrino Recio" Print "Nueva cadena de texto: '" + LSet$(name$,40) + "'"
Ejemplo:
name$="Sergio Padrino" Print "Nueva cadena de texto: '" + RSet$(name$,40) + "'"
Chr$ (integer)
Definicin:
Convierte un cdigo ASCII en su correspondiente carcter.
Ejemplo:
Print " El carcter del valor ASCII 65 es: " + Chr$(65)
35
Asc (cadena$)
Definicin:
Devuelve el valor ASCII de la primera letra de una cadena.
Ejemplo:
a$=Input$("Introduce una letra:") Print "El valor ASCII de esa letra es:" + Asc(a$)
Len (string$)
Definicin:
Devuelve el nmero de carcteres de una cadena de texto.
Ejemplo:
name$="Sergio Padrino" Print "Hay " + Len(name$) + " letras en tu nombre."
Hex$ (integer)
Definicin:
Convierte un valor entero en uno hexadecimal.
Ejemplo:
intValue="64738" Print "El valor hexadecimal de "+intValue+" es: " + hex$(intValue)
Bin$ (entero)
Definicin:
Convierte un valor entero en un valor binario.
Ejemplo:
intValue="64738" Print "El valor binario de "+intValue+" es: " + bin$(intValue)
36
Ejemplo:
name$="Sergio" ' Escribe el nombre 10 veces Print String$(name$,10)
Descripcin:
Escribe una cadena de texto en el front buffer y comienza una nueva lnea. Si el parmetro opcional string es omitido, entonces el comando comenzar una nueva lnea. Mira tambin: Write.
Ejemplo:
; Ejemplo Print ; ------------Print "Blitz " Print "Basic"
Write string$
Parameter:
string$ - cadena de texto o valor numrico
Descripcin:
Escribe una cadena de texto en el front buffer (es decir, la pantalla), pero no cambia de lnea (al contrario que Print). Mira tambin: Print.
Ejemplo:
; Ejemplo Write ; ------------Write "Blitz " Write "Basic"
Locate x,y
Definicin:
Posiciona los comandos de texto en la pantalla.
37
Ejemplo:
; Ejemplo Locate strName$=Input$("Cmo te llamas?") Locate 100,200 Print "Hola, " + strName$ While Not KeyHit(1) Wend
Ejemplo:
; Ejemplo Text ; Activo el modo grfico Graphics 800,600,16 ; Espera que pulses la tecla ESC antes de acabar While Not KeyHit(1) ;Imprime el texto, centrado horizontalmente en las coordenadas x=400, y=0 Text 400,0,"!Hola Mundo!",True,False Wend
LoadFont (fontname$,height,bold,italic,underlined)
Parmetros:
fontname$ - nombre de la fuente a cargar, p.e. "arial" height - altura en pixels de la fuente bold - True para cargarla en negrita, False en caso contrario italic - True para cargarla en cursiva, False en caso contrario underlined - True para cargarla subrayada, False en caso contrario
Descripcin:
Carga una fuente y devuelve su handle. Puedes entonces usar el handle con comandos como SetFont y FreeFont. Nota: Blitz no trabaja con fuentes de SMBOLOS, como Webdings y WingDings.
Ejemplo:
; Ejemplo LoadFont/SetFont/FreeFont ; ---------------------------------
38 ; Activa el modo Grfico Graphics 800,600,16 ; Crea las variables globales para las fuentes Global fntArial,fntArialB,fntArialI,fntArialU ; Carga las fuentes fntArial=LoadFont("Arial",24,False,False,False) fntArialB=LoadFont("Arial",18,True,False,False) fntArialI=LoadFont("Arial",32,False,True,False) fntArialU=LoadFont("Arial",14,False,False,True) ; Establece la fuente e imprime el texto SetFont fntArial Text 400,0,"Esta es la Arial 24 puntos",True,False SetFont fntArialB Text 400,30,"Esta es la Arial 18 puntos negrita",True,False SetFont fntArialI Text 400,60,"Esta es la Arial 32 puntos cursiva",True,False SetFont fntArialU Text 400,90,"Esta es la Arial 14 puntos subrayada",True,False ; Espera a que el usuario pulse ESC para salir While Not KeyHit(1) Wend ; Borra FreeFont FreeFont FreeFont FreeFont todas las fuentes de la memoria! fntArial fntArialB fntArialI fntArialU
SetFont fonthandle
Definicin:
Establece una fuente cargada previamente para operaciones de escritura.
Ejemplo:
Ver Ejemplo LoadFont
SetFont fonthandle
Definicin:
Establece una fuente cargada previamente para operaciones de escritura.
39
Ejemplo:
Ver Ejemplo LoadFont
FontWidth()
Definicin:
Devuelve el ancho de la fuente seleccionada actualmente.
Ejemplo:
; Ejemplo FontWidth()/FontHeight ; Activa el modo Grfico Graphics 800,600,16 ; Crea las variables globales para las fuentes Global fntArial ;Carga la fuente fntArial=LoadFont("Arial",13,False,False,False) ; Establece la fuente e imprime los tamaos SetFont fntArial Text 400,0,"El ancho de la fuente es:"+ FontWidth(),True,False Text 400,30,"El alto de esta fuente es:"+ FontHeight(),True,False ; Pulsa ESC para salir While Not KeyHit(1) Wend ; Borra todas las fuentes de la memoria! FreeFont fntArial
FontHeight()
Definicin:
Devuelve la altura de la fuente actualmente seleccionada.
Ejemplo:
Ver Ejemplo FontWidth
StringWidth (string)
Definicin:
Devuelve la anchura (en pixels) de la cadena especificada.
40
Ejemplo:
; Ejemplo StringWidth/Height a$="Hola Sergio!" Print "A$=" + a$ Print "Esta cadena tiene "+ StringWidth(a$) + " pixels de ancho y" Print StringHeight(a$) + " de alto, segn la fuente actual"
StringHeight (string)
Definicin:
Devuelve la altura (en pixels) de la cadena especificada.
Ejemplo:
Ver Ejemplo StringWidth
Ejemplo:
; Obtiene el nombre del usuario y le saluda name$=Input$("Cmo te llamas?") Write "Hola, " + name$ + "!"
KeyDown (scancode)
Definicin:
Devuelve TRUE si la tecla especificada del teclado est siendo pulsada.
Ejemplo:
; Ejemplo KeyDown() Print "Mantn pulsada la tecla ENTER!" Delay 3000
Ayuda Blitz Basic While Not KeyHit(1) If KeyDown(28) Then Print "Enter est siendo pulsado!!" Else Print End If Wend
41
KeyHit (scancode)
Definicin:
Devuelve el nmero de veces que se ha pulsado una tecla determinada.
Ejemplo:
; Ejemplo KeyHit ; Crea un timer current=MilliSecs() Print "Pulsa ESC un montn de veces durante 5 segundos..." ; Espera 5 segundos While MilliSecs() < current+5000 Wend ; Imrpime los resultados Print "ESC fue pulsado " + KeyHit(1) + " veces."
GetKey()
Definicin:
Comprueba si se pulsa una tecla y devuelve su valor ASCII.
WaitKey()
Definicin:
Para la ejecucin del programa hasta que una tecla sea presionada y devuelve su cdigo ASCII.
42
Ejemplo:
; Ejemplo WaitKey() Print "Pulsa una tecla para continuar." key=WaitKey() Print "El cdigo ASCII de la tecla presionada es: " + key Print "Ahora pulsa una tecla para salir." WaitKey() End
FlushKeys
Definicin:
Elimina todas las pulsaciones de teclas actuales en cola.
Ejemplo:
; borra todas las pulsaciones en cola FlushKeys
MoveMouse x,y
Definicin:
Mueve el puntero del ratn a las coordenadas especificadas de la pantalla.
Ejemplo:
; Ejemplo MoveMouse Graphics 640,480 For t = 1 To 2 Print "Mueve el ratn y pulsa el botn izquierdo." WaitMouse() Print "El ratn est en la siguiente posicin: " + MouseX() + "," + MouseY() + "." Next Print "Ahora mover el ratn..." Delay 2000 MoveMouse 320,320 Print "El ratn est AHORA en: " + MouseX() + "," + MouseY() + "." Print "Haz click con el ratn para salir." WaitMouse()
43
MouseDown (button)
Definicin:
Devuelve TRUE si el botn del ratn especificado est siendo pulsado.
Ejemplo:
; Ejemplo MouseDown ; Hasta que el usuario pulse ESC, muestra el botn del ratn presionado While Not KeyHit(1) button$="Ninguno" If MouseDown(1) Then button$="Izquierdo" If MouseDown(2) Then button$="Derecho" If MouseDown(3) Then button$="Medio" Print "Botn " + button$ + " presionado!" Wend
MouseHit (button)
Definicin:
Devuelve el nmero de veces que un botn en concreto del ratn es pulsado.
Ejemplo:
; Ejemplo MouseHit ; Crea el timer current=MilliSecs() Print "Pulsa el botn izquierdo del ratn un montn de veces durante 5 segundos..." ; Espera 5 segundos While MilliSecs() < current+5000 Wend ; Imprime los resultados Print "El botn ha sido presionado " + MouseHit(1) + " veces."
GetMouse()
Definicin:
Comprueba si un botn del ratn est siendo pulsado y devuelve el nmero del botn o 0 si no se est pulsando ninguno.
44
Ejemplo:
; Ejemplo GetMouse While Not KeyHit(1) button=GetMouse() If button <> 0 Then Print "Has pulsado el botn del ratn #" + button End If Wend
WaitMouse()
Definicin:
Para la ejecucin del programa hasta que pulses un botn del ratn y devuelve su cdigo.
Ejemplo:
; Ejemplo WaitMouse() Print "Pulsa un botn del ratn para continuar." button=WaitMouse() Print "El cdigo del botn pulsado es: " + button Print "Ahora pulsa un botn para salir." WaitMouse() End
MouseX()
Definicin:
Devuelve la coordenada X del ratn.
Ejemplo:
; Ejemplo LoadAnimImage/MaskImage MouseX()/MouseY() ; With animation timers ; Incluso cuando no hay funciones, debemos hacer variables globales ; Una variable tendr el handle del grfico, otra ; el frame actual que estamos mostrando y otra el timer para ajustar ; la velocidad de la animacion Global gfxSparks, frmSparks, tmrSparks Graphics 640,480,16 SetBuffer BackBuffer() ; Carga la tira de imagenes gfxSparks=LoadAnimImage("c:\Program Files\BlitzBasic\samples\Graphics\spark.bmp",32,32,0,3) ; Hacemos que el color rosa sea transparente en esta imagen
Ayuda Blitz Basic MaskImage gfxSparks,255,0,255 ; Bucle hasta que se pulse ESC While Not KeyHit(1) Cls ; En la siguiente linea se controla la velocidad de la animacion, Cambia ; el 100 por otros valores mayores o menores para comprobar la diderencia If MilliSecs() > tmrSparks + 100 Then tmrSparks=MilliSecs() ; 'reset' the timer frmSparks=( frmSparks + 1 ) Mod 3 ; incrementa el frame End If DrawImage gfxSparks,MouseX(),MouseY(),frmSparks ; dibuja la imagen en las coordenadas del ratn Flip ; muestra el buffer Wend
45
MouseY()
Definicin:
Devuelve la coordenada Y del ratn.
Ejemplo:
; Ejemplo LoadAnimImage/MaskImage MouseX()/MouseY()
MouseZ()
Parmetros:
Ninguno.
Descripcin:
MouseZ devuelve la posicin actual de la rueda del ratn. Empieza en 0 cuando comienza el programa. El valor MouseZ disminuye cuando la giras hacia ti y aumenta cuando haces lo contrario.
Ejemplo:
Graphics 640, 480, 0, 2 SetBuffer BackBuffer () Repeat Text 20, 20, "Posicin de la rueda del ratn: " + MouseZ () Until KeyHit (1) End
MouseXSpeed()
Definicin:
Devuelve los cambios en la posicin del ratn desde la ltima vez que llamaste al comando.
46
Ejemplo:
; Ejemplo MouseXSpeed()/MouseYSpeed() Graphics 800,600,16 SetBuffer BackBuffer() ; hasta que se pulse un boton del raton... Repeat Cls Rect MouseX(),MouseY(),2,2,1 ; dibujo un pequeo cuadrado donde esta el raton If MouseHit(1) Then startx=MouseXSpeed():starty=MouseYSpeed() ; Cuando el usuario pulsa el boton derecho del raton, graba la diferencia entre la ultima llamada ; y esta llamada a los comandos mousex/yspeed. If MouseHit(2) Then endx=MouseXSpeed():endy=MouseYSpeed() Flip Until endx ; Muestra los resultados Text 0,0,"Cambios en las coordenadas del ratn: " + endx + "," + endy Flip ; Espera que pulses ESC While Not KeyHit(1) Wend
MouseYSpeed()
Definicin:
Devuelve los cambios en la posicin del ratn desde la ltima vez que llamaste al comando.
Ejemplo:
Ver Ejemplo MouseXSpeed
MouseZ()
Parmetros:
Ninguno.
Descripcin:
MouseZ devuelve la posicin actual de la rueda del ratn. Empieza en 0 cuando comienza el programa. El valor MouseZ disminuye cuando la giras hacia ti y aumenta cuando haces lo contrario.
Ejemplo:
Graphics 640, 480, 0, 2 SetBuffer BackBuffer () Repeat Text 20, 20, "Posicin de la rueda del ratn: " + MouseZ () Until KeyHit (1) End
47
FlushMouse Definicin:
Elimina todas las pulsaciones de los botones del ratn en cola.
Ejemplo:
; Ejemplo Flushmouse FlushMouse Print "Pulsa un botn del ratn para salir!" WaitMouse() End
oyType ([port])
Definicin:
Devuelve el tipo de joystick que hay conectado al ordenador.
Ejemplo:
; Ejemplo JoyType() ; Mira si el joystick est presente e imrpime el mensaje correspondiente Select JoyType() Case 0 Print "Lo siento, no existe ningn joystick actualmente!" Case 1 Print "Encontrado joystick digital!" Case 2 Print "Encontrado joystick analgico!" End Select ; Espera que el usuario pulse ESC para salir While Not KeyHit(1) Wend
JoyDown (button,[port])
Definicin:
Devuelve TRUE si el botn especificado del joystick est siendo pulsado.
48
Ejemplo:
; Ejemplo JoyDown ; Hasta que el usuario pulse ESC, muestra el botn del joystick presionado While Not KeyHit(1) button$="No" For t = 1 To 5 If JoyDown(t) Then button$=Str(t) Print "El botn del joystick " + button$ + " ha sido presionado!" Next Wend
JoyHit (button,[port])
Definicin:
Devuelve el nmero de veces que se pulsa un botn determinado del joystick.
Ejemplo:
; Ejemplo JoyHit ; Crea un timer current=MilliSecs() Print "Pulsa un montn de veces el botn del joystick n 1 durante 5 segundos..." ; Espera 5 segundos While MilliSecs() < current+5000 Wend ; Imrpime los resultados Print "El botn fue pulsado " + JoyHit(1) + " veces."
GetJoy ([port])
Definicin:
Comprueba si un botn de un joystick ha sido presionado (devuelve el nmero del botn o 0 si ninguno ha sido presionado)
Ejemplo:
; Ejemplo GetJoy While Not KeyHit(1) button=GetJoy() If button <> 0 Then Print "Has presionado el botn del joystick n #" + button
49
WaitJoy ([port])
Definicin:
Para la ejecucin del programa hasta que se pulse un botn del joystick.
Ejemplo:
; Ejemplo WaitJoy() Print "Pulsa un botn del joystick para continuar." button=WaitJoy() Print "El cdigo del botn pulsado es: " + button Print "Ahora pulsa un botn para salir." WaitJoy() End
JoyX ([port])
Definicin:
Devuelve la coordenada del eje X del joystick.
Ejemplo:
; Ejemplo JoyX()/JoyY() While Not KeyHit(1) Cls Text 0,0,"Valor Joy X: " + JoyX() + " - Valor Joy Y:" + JoyY() Wend
JoyY ([port])
Definicin:
Devuelve la coordenada del eje Y del joystick.
Ejemplo:
Ver Ejemplo JoyX
50
JoyZ ([port])
Definicin:
Devuelve la coordenada del eje Z del joystick.
Ejemplo:
; Ejemplo JoyZ() While Not KeyHit(1) Cls Text 0,0,"Valor Joy Z: " + JoyZ() Wend
JoyXDir ([port])
Definicin: Devuelve la direccin del eje X del joystick. Descripcin de los Parmetros: port = puerto del joystick a comprobar (opcional) Descripcin del Comando:
Este comando devuelve la direccin del eje X del joystick. El calor -1 (izquierda) o 1 (derecha). El valor devuelto es un nmero entero. Mira el ejemplo. Perfecto para joysticks digitales. Como en cualquier comando de joystick, DEBES tener un joystick compatible DirectX y configurado correctamente en Windows para trabajar con l. Mira la documentacin de tu joystick para ms informacin.
Ejemplo:
; Ejemplo JoyXDir() While Not KeyHit(1) Cls Text 0,0,"Direccin X del Joystick: " + JoyXDir() Wend
JoyYDir ([port])
Definicin:
Devuelve la direccin del eje Y del joystick.
51
JoyZDir ([port])
Definicin:
Devuelve la direccin del eje Z del joystick.
Ejemplo:
; Ejemplo JoyZDir() While Not KeyHit(1) Cls Text 0,0,"Direccin Z del Joystick: " + JoyZDir() Wend
FlushJoy
Definicin:
Elimina todos los botones del joystick presionados en cola.
Ejemplo:
; Ejemplo FlushJoy FlushJoy Print "Pulsa un botn del ratn para salir!" WaitJoy() End
Descripcin:
Crea un banco de memoria y devuelve su handle. Los comandos de bancos te permiten realizar operaciones de datos rpidamente en un bloque de memoria. Esto es til para programar tus propias rutinas de compresin/descompresin, pasando y recibiendo datos de una DLL, p. e. Los tipos de datos disponibles para usar con un banco son: Byte - coge un byte. Los valores estn entre 0 y 255. Short - coge 2 bytes. Los valores estn entre 0 y 65535. Int - coge 4 bytes. Los valores estn entre -2147483647 y 2147483647. Float - coge 4 bytes. Los valores estn entre -3.4x10??? y 3.4x10??
52
Ejemplo:
; Ejemplo de Comandos de Banco ; --------------------bnkTest=CreateBank(12) PokeByte bnkTest,1,Rand(255) PokeShort bnkTest,2,Rand(65535) PokeInt bnkTest,4,Rand(-2147483648,2147483647) PokeFloat bnkTest,8,0.5 Print Print Print Print PeekByte(bnkTest,1) PeekShort(bnkTest,2) PeekInt(bnkTest,4) PeekFloat(bnkTest,8)
FreeBank bnkTest
FreeBank bank
Parameter:
bank - handle del banco
Descripcin:
Libera un banco de memoria.
Ejemplo:
; Ejemplo de Comandos de Banco
BankSize (handle_de_banco) Definicin: Devuelve el tamao de un banco. Descripcin de los Parmetros: handle_de_banco = handle asignado al banco cuando es creado. Descripcin del Comando: Usa este comando para determinar el tamao de un banco existente. Mira CreateBank, ResizeBank, y CopyBank. Ejemplo: ; Ejemplo BankSize, ResizeBank, CopyBank ; crea un banco bnkTest=CreateBank(5000) ; lo rellena con enteros aleatorios For t = 0 To 4999 PokeByte bnkTest,t,Rand(9) Next ; Redimensiona el banco ResizeBank bnkTest,10000 ; Copia la primera mitad del banco en la segunda mitad CopyBank bnkTest,0,bnkTest,5000,5000 ; Imprime el tamao final del banco Print BankSize(bnkTest)
53
ResizeBank bankhandle,new_size
Definicin:
Redimensiona un banco.
Ejemplo:
; Ejemplo BankSize, ResizeBank, CopyBank
CopyBank src_bank,src_offset,dest_bank,dest_offset,count
Definicin:
Copia los datos de un banco a otro.
Ejemplo:
; Ejemplo BankSize, ResizeBank, CopyBank
Ejemplo:
Ver Ejemplo de Comandos de Banco
PeekShort(bank,offset)
Parmetros:
bank - handle del banco offset - offset en bytes, en que se comenzar
Descripcin:
Lee un short de un banco de memoria y devuelve el valor. Un short coge 2 bytes de un banco de memoria. Los valores pueden estar en el rango 0 a 65535. Mira tambin: PeekByte, PeekInt, PeekFloat.
Ejemplo:
; Ejemplo de Comandos de Banco
54
PeekInt(bank,offset)
Parmetros:
bank - handle del banco offset - offset en bytes, en que se comenzar
Descripcin:
Lee un entero de un banco de memoria y devuelve el valor. Un entero coge 4 bytes del banco de memoria. Los valores pueden estar en el rango -2147483647 a 2147483647. Mira tambin: PeekByte, PeekShort, PeekFloat.
Ejemplo:
Ver Ejemplo de Comandos de Banco
PeekFloat(bank,offset)
Parmetros: bank - handle del banco offset - offset en bytes, en que se comenzar Descripcin:
Lee un flotante de un banco de memoria y devuelve su valor. Un flotante coge 4 bytes de un banco de memoria. Los valores pueden estar en el rango -3.4x10??? a 3.4x10??. Mira tambin: PeekByte, PeekShort, PeekInt.
Ejemplo:
Ver Ejemplo de Comandos de Banco
PokeByte bank,offset,value
Parmetros:
bank - handle del banco offset - offset en bytes, desde donde se comenzar a escribir value - valor que ser escrito en el banco
Descripcin:
Escribe un byte en un banco de memoria. Los valores pueden estar en el rango 0 a 255. Mira tambin: PokeShort, PokeInt, PokeFloat.
Ejemplo:
Ver Ejemplo de Comandos de Banco
PokeShort bank,offset,value
Parmetros:
bank - handle del banco offset - offset en bytes, desde donde se comenzar a escribir value - valor que ser escrito en el banco
Descripcin:
Escribe un short en un banco de memoria. Un short coge 2 bytes de un banco de memoria. Los valores pueden estar en el rango 0 a 65535. Mira tambin: PokeByte, PokeInt, PokeFloat.
Ejemplo:
Ver Ejemplo de Comandos de Banco
PokeInt bank,offset,value
Parmetros:
bank - handle del banco offset - offset en bytes, desde donde se comenzar a escribir value - valor que ser escrito en el banco
Descripcin:
Escribe un entero en un banco de memoria. Un entero coge 4 bytes de un banco de memoria. Los valores estn en el rango -2147483647 a 2147483647. Mira tambin: PokeByte, PokeShort, PokeFloat.
55
Ejemplo:
Ver Ejemplo de Comandos de Banco
PokeFloat bank,offset,value
Parmetros:
bank - handle del banco offset - offset en bytes, desde donde se comenzar a escribir value - valor que ser escrito en el banco
Descripcin:
Escribe un flotante en un banco de memoria. Un flotante coge 4 bytes. Los valores pueden estar en el rango -3.4x10??? a 3.4x10??. Mira tambin: PokeByte, PokeShort, PokeInt.
Ejemplo:
Ver Ejemplo de Comandos de Banco
; Cierro el archivo CloseFile( fileout ) DisplayFile( "The file as originally written", mydata.dat" ) ; Abro el archivo y cambio el tercer entero file = OpenFile("mydata.dat") SeekFile( file, 8 ) ; Se mueve al tercer entero del archivo WriteInt( file, 9999 ) ; Remplazar el valor original por 9999 CloseFile( file ) DisplayFile( "The file after being midified", "mydata.dat" ) WaitKey() ; **** Definicin de las Funciones **** ; Lee el archivo y lo imrpime Function DisplayFile( Tittle$, Filename$ ) Print tittle$
56 filein = ReadFile( Filename$ ) While Not Eof( filein ) Number = ReadInt( filein ) Print Number Wend CloseFile( filein ) Print End Function
ReadFile (filename$)
Definicin:
Abre un archivo de un disco para ser ledo.
WriteFile (filename$)
Definicin:
Abre un archivo del disco duro para realizar operaciones de escritura.
Ejemplo:
Ver Ejemplo OpenFile
CloseFile filehandle
Definicin:
Cierra un archivo previamente abierto con un comando de operaciones de archivos.
Ejemplo:
Ver Ejemplo OpenFile
FilePos (filehandle)
Definicin:
Devuelve la posicin actual dentro de un archivo que est siendo ledo, escrito o modificado.
57
Ejemplo:
Ver Ejemplo OpenFile
Ejemplo:
Ver Ejemplo OpenFile
ReadDir (directory)
Definicin:
Abre un directorio de una unidad para leerlo.
Ejemplo:
; Ejemplo ReadDir/NextFile$/CloseDir ; Define el directorio de inicio... folder$="C:\" ; Abre el directorio y le asigna un handle myDir=ReadDir(folder$) Repeat file$=NextFile$(myDir) If file$="" Then Exit ; Usa FileType para determinar si es un directorio (valor 2) o un archivo e imprime los resultados If FileType(folder$+"\"+file$) = 2 Then Print "Directorio:" + file$ Else Print "Archivo:" + file$ End If
CloseDir filehandle
Definicin:
Cierra un directorio previamente abierto con el comando ReadDir.
Ejemplo:
Ver Ejemplo ReadDir
NextFile$ (filehandle)
Definicin:
Recupera el siguiente archivo/directorio de un directorio abierto con el comando ReadDir.
Ejemplo:
Ver Ejemplo ReadDir
CurrentDir$()
Definicin:
Devuelve una cadena de texto que contiene el directorio seleccionado actualmente.
Ejemplo:
; Ejemplo CurrentDir$() ; Imprime el directorio actual hasta que pulses ESC While Not KeyHit(1) Print CurrentDir$() Wend
ChangeDir directory/path
Definicin:
Cambia al directorio seleccionado para manejar ficheros.
59
Ejemplo:
; Ejemplo ChangeDir ChangeDir "c:\windows\system32" Print "El directorio ha sido cambiado a: " + currentdir$()
CreateDir path/name
Definicin:
Crea un directorio en una unidad de almacenamiento.
Ejemplo:
; Ejemplo CREATEDIR fldr$="c:\mydirectorio" createDir fldr$ Print "Directorio creado!"
DeleteDir directory/path
Definicin:
Borra el directorio especificado.
Ejemplo:
; DeleteDir example DeleteDir "C:\test"
FileType (filename$)
Definicin:
Comprueba si el archivo especificado existe o es un directorio.
60
Ejemplo:
; Los usuarios de Windows NT necesitarn cambiar la localizacin de calc.exe filename$="c:\windows\calc.exe" if fileType(filename$)=1 then Print "El archivo existe!" if fileType(filename$)=0 then Print "Archivo no encontrado!" if fileType(filename$)=2 then Print "Es un directorio!" Print "Pulsa una tecla para salir." WaitKey()
FileSize (filename$)
Definicin:
Devuelve el tamao del archivo especificado en bytes.
Ejemplo:
; Los usuarios de Windows NT necesitarn cambiar la localizacin de calc.exe filename$="c:\windows\calc.exe" Print "El tamao del archivo en bytes es: " + FileSize(filename$) Print "Pulsa una tecla para salir." WaitKey()
Ejemplo:
file$="c:\autoexec.bat" destination$="a:\autoexec.bat" Print "Pulsa una tecla para copiar tu Autoexec.bat en un diskette" WaitKey() CopyFile file$,destination$
DeleteFile path/filename
Definicin:
Borra el archivo especificado.
61
Ejemplo:
; DELETEFILE example DeleteFile "C:\test\myfile.bb"
ExecFile (filename$)
Definicin:
Ejecuta un ejecutable externo desde el interior de un programa Blitz.
Ejemplo:
; Ejemplo ExecFile - EJECTALO EN VENTANA! ; Los usuarios de Windows NT necesitarn cambiar la localizacin de calc.exe filename$="c:\windows\calc.exe" Print "Pulsa una tecla para ejecutar CALC.EXE!" WaitKey() ExecFile(filename$) Print "Pulsa una tecla para salir." WaitKey()
Ejemplo:
; Ejemplo Eof file$="c:\autoexec.bat" filein = ReadFile(file$)
62 Print "Aqu est tu archivo Autoexec.bat..." ; Se repite hasta que llega al final del archivo While Not Eof(filein) Print ReadLine$(filein) Wend
ReadAvail (filehandle/streamhandle)
Definicin:
Devuelve el nmero de bytes que sern ledos con xito desde un flujo.
Ejemplo:
; Ejemplo OpenTCPStream/CloseTCPStream/ReadAvail Print "Conectando..." tcp=OpenTCPStream( "www.blitzbasement.com",80 ) If Not tcp Print "Fallo.":WaitKey:End Print "Conectado! Enviando peticin..." WriteLine tcp,"GET http://www.blitzbasement.com HTTP/1.0" WriteLine tcp,Chr$(10) If Eof(tcp) Print "Fallo.":WaitKey:End Print "Peticin enviada! Esperando respuesta..." While Not Eof(tcp) Print ReadLine$( tcp ) Print "Bytes disponibles:" + ReadAvail(tcp) Wend If Eof(tcp)=1 Then Print "Completado!" Else Print "Error!" CloseTCPStream tcp WaitKey
ReadByte ( filehandle/stream )
Definicin:
Lee un byte de datos de un archivo o flujo abierto y devuelve su valor como un valor entero entre 0 y 255.
Ejemplo:
; Ejemplo ReadByte y WriteByte ; Inicializa algunas variables
Ayuda Blitz Basic Byte1% = 10 Byte2% = 100 Byte3% = 255 Byte4% = 256 Byte5% = 257 Byte6% = -1 Byte7% = -2 Byte8% = Asc("A") ; Abre un archivo para modificarlo fileout = WriteFile("mydata.dat ") ; Escribe informacion en el archivo WriteByte( fileout, Byte1 ) WriteByte( fileout, Byte2 ) WriteByte( fileout, Byte3 ) WriteByte( fileout, Byte4 ) WriteByte( fileout, Byte5 ) WriteByte( fileout, Byte6 ) WriteByte( fileout, Byte7 ) WriteByte( fileout, Byte8 ) ; Cierra el archivo CloseFile( fileout ) ; Abre el archivo para leerlo filein = ReadFile("mydata.dat") Read1 Read2 Read3 Read4 Read5 Read6 Read7 Read8 = = = = = = = = ReadByte( ReadByte( ReadByte( ReadByte( ReadByte( ReadByte( ReadByte( ReadByte( filein filein filein filein filein filein filein filein ) ) ) ) ) ) ) )
63
; Cierra el archivo CloseFile( filein ) Print Write Write Write Write Write Write Write Write "Escrito - Ledo" Byte1 + " - " : Print Byte2 + " - " : Print Byte3 + " - " : Print Byte4 + " - " : Print Byte5 + " - " : Print Byte6 + " - " : Print Byte7 + " - " : Print Byte8 + " - " : Print
WaitKey()
ReadShort (filehandle/stream)
Definicin:
Lee un valor entero short (16 bits) de un archivo o flujo abierto y lo devuelve como un valor entero.
64
Ejemplo:
; Ejemplo ReadShort y WriteShort ; Inicializa algunas variables para el ejemplo Int1% = 10 Int2% = 365 Int3% = 32767 Int4% = -32768 fileout = WriteFile("mydata.dat") ; Escribe algo en el WriteShort( fileout, WriteShort( fileout, WriteShort( fileout, WriteShort( fileout, CloseFile( fileout ) filein = ReadFile("mydata.dat") Read1 Read2 Read3 Read4 = = = = ReadShort( ReadShort( ReadShort( ReadShort( filein filein filein filein ) ) ) ) archivo Int1 ) Int2 ) Int3 ) Int4 )
CloseFile( filein ) Print Print Print Print Print "Datos Short Integer Data Ledos Del Archivo - mydata.dat " Read1 Read2 Read3 Read4
WaitKey()
ReadInt (filehandle/stream)
Definicin:
Lee un valor entero de 32bit de un archivo abierto (o flujo) y lo devuelve como un valor entero.
Ejemplo:
; Ejemplo ReadInt y WriteInt ; Inicializa algunas variables para el ejemplo Int1% = 10 Int2% = 365 Int3% = 2147483647 Int4% = - 2147483648 fileout = WriteFile("mydata.dat") ; Escribe WriteInt( WriteInt( WriteInt( algunos datos fileout, Int1 fileout, Int2 fileout, Int3 en el archivo ) ) )
Ayuda Blitz Basic WriteInt( fileout, Int4 ) CloseFile( fileout ) filein = ReadFile("mydata.dat") Read1 Read2 Read3 Read4 = = = = ReadInt( ReadInt( ReadInt( ReadInt( filein filein filein filein ) ) ) )
65
CloseFile( filein ) Print Print Print Print Print "Datos enteros ledos de - mydata.dat " Read1 Read2 Read3 Read4
WaitKey()
ReadFloat (filehandle/stream)
Definicin:
Lee un valor de coma flotante de un archivo o flujo abierto.
Ejemplo:
; Ejemplo ReadFloat y WriteFloat ; Inicializa algunas variables para el ejemplo Num1# = 10.5 Num2# = 365.25 Num3# = 32767.123 Num4# = -32768.123 fileout = WriteFile("mydata.dat") ; Escribe algunos datos en el archivo WriteFloat( fileout, Num1 ) WriteFloat( fileout, Num2 ) WriteFloat( fileout, Num3 ) WriteFloat( fileout, Num4 ) CloseFile( fileout ) filein = ReadFile("mydata.dat") Read1# Read2# Read3# Read4# = = = = ReadFloat( ReadFloat( ReadFloat( ReadFloat( filein filein filein filein ) ) ) )
CloseFile( filein ) Print Print Print Print "Datos de coma flotante ledos de - mydata.dat " Read1 Read2 Read3
ReadString$ (filehandle/stream)
Definicin:
Lee una cadena de texto de un archivo o flujo abierto.
Ejemplo:
; Ejemplo ReadString$ y WriteString ; Inicializa algunas variables para el ejemplo String1$ = "Una cadena corta" String2$ = "Una cadena ms larga que las dems que hay declaradas" String3$ = "Esta es la string3 " String4$ = "unida a la string4" fileout = WriteFile("mydata.dat") ; Escribe algunos datos en el archivo WriteString( fileout, String1 ) WriteString( fileout, String2 ) WriteString( fileout, String3 + String4) WriteString( fileout, "No es necesario usar variables" ) CloseFile( fileout ) filein = ReadFile("mydata.dat") Read1$ Read2$ Read3$ Read4$ = = = = ReadString$( ReadString$( ReadString$( ReadString$( filein filein filein filein ) ) ) )
CloseFile( filein ) Print Print Print Print Print Print "Variables String ledas de - mydata.dat " Read1 Read2 Read3 Read4
WaitKey()
ReadLine$ (filehandle/stream)
Definicin:
Lee una lnea de texto de un archivo o flujo abierto.
67
; Close the file once reading is finished CloseFile( filein ) Print Print Print Print Print Print "Lines of text read from file - mydata.txt " Read1 Read2 Read3 Read4
WaitKey()
ReadBytes bank,file/stream,offset,count
Definicin:
Lee datos de un archivo (o flujo) en un banco de memoria.
68
Ejemplo:
; Read/WriteBytes Commands Example ; Create a 50 byte memory bank bnkTest=CreateBank(500) ; Let's fill the bank with crap For t = 1 To 50 PokeByte bnkTest,t,Rnd(255) PokeInt bnkTest,t+1,Rnd(10000) PokeShort bnkTest,t+2,Rnd(10000) PokeFloat bnkTest,t+3,Rnd(-.999,.999) Next ; Open a file to write to fileBank=WriteFile("test.bnk") ; Write the bank to the file WriteBytes bnkTest,fileBank,0,50 ; Close it CloseFile fileBank ; Free the bank FreeBank bnkTest ; Make a new one bnkTest=CreateBank(500) ; Open the file to read from fileBank=OpenFile("test.bnk") ; Write the bank to the file ReadBytes bnkTest,fileBank,0,50 ; Close it CloseFile fileBank ; Write back the results! For t = 1 To 50 Print PeekByte (bnkTest,t) Print PeekInt (bnkTest,t+1) Print PeekShort (bnkTest,t+2) Print PeekFloat (bnkTest,t+3) Next
Ejemplo:
Ver Ejemplo ReadByte
69
Ejemplo:
Ver Ejemplo ReadShort
Ejemplo:
Ver Ejemplo ReadInt
Ejemplo:
Ver Ejemplo ReadFloat
Ejemplo:
Ver Ejemplo ReadString$
70
Ejemplo:
Ver Ejemplo ReadLine$
WriteBytes bank,filehandle/stream,offset,count
Definicin:
Escribe datos de un banco de memoria en un archivo (o flujo) abierto.
Ejemplo:
Ver Read/WriteBytes
Descripcin:
Busca hosts con el nombre especificado y devuelve el nmero de hosts encontrados.
HostIP( host_index )
Parmetros:
host_index - nmero de ndice del host
Descripcin:
Devuelve una direccin IP del host especificado. El parmetro host_index debe estar entre 1...CountHostIPs().
DottedIP$( IP )
Parmetros:
IP - direccin IP (entero)
Descripcin:
Convierte una direccin IP en notacin de internet.
CopyStream src_stream,dest_stream[,buffer_size]
Parmetros:
src_stream - flujo de origen dest_stream - flujo de destino buffer_size (opcional) - tamao del buffer del flujo
Descripcin:
Copia el flujo de origene n el flujo de destino.
71
Ejemplo:
; Ejemplo OpenTCPStream/CloseTCPStream/ReadAvail Print "Conectando..." tcp=OpenTCPStream( "www.blitzbasement.com",80 ) If Not tcp Print "Fallo.":WaitKey:End Print "Conectado! Enviando peticin..." WriteLine tcp,"GET http://www.blitzbasement.com HTTP/1.0" WriteLine tcp,Chr$(10) If Eof(tcp) Print "Fallo.":WaitKey:End Print "Peticin enviada! Esperando respuesta..." While Not Eof(tcp) Print ReadLine$( tcp ) Print "Bytes disponibles:" + ReadAvail(tcp) Wend If Eof(tcp)=1 Then Print "Completado!" Else Print "Error!" CloseTCPStream tcp WaitKey
CloseTCPStream streamhandle
Definicin:
Cierra el flujo TCP especificado.
Ejemplo:
Ver Ejemplo OpenTCPStream
CreateTCPServer (port)
Definicin:
Crea un servidor TCP en el puerto especificado.
72
Ejemplo:
; CreateTCPServer, CloseTCPServer, AcceptTCPStream Example ; This code is in two parts, and needs to be run seperately on the same machine ; --- Start first code set --; Create a server and listen for push svrGame=CreateTCPServer(8080) If svrGame<>0 Then Print "Server started successfully." Else Print "Server failed to start." End End If While Not KeyHit(1) strStream=AcceptTCPStream(svrGame) If strStream Then Print ReadString$(strStream) Delay 2000 End Else Print "No word from Apollo X yet ..." Delay 1000 End If Wend End ; --- End first code set ---
; --- Start second code set --; Copy this code to another instance of Blitz Basic ; Run the above code first, then run this ... they will 'talk' ; Create a Client and push data strmGame=OpenTCPStream("127.0.0.1",8080) If strmGame<>0 Then Print "Client Connected successfully." Else Print "Server failed to connect." WaitKey End End If ; write stream to server WriteString strmGame,"Mission Control, this is Apollo X ..." Print "Completed sending message to Mission control..." ; --- End second code set ---
AcceptTCPStream (handle_del_servidor)
Definicin:
Acepta una entrada de flujo TCP/IP.
73
Ejemplo:
Ver CreateTCPServer
CloseTCPServer serverhandle
Definicin:
Cierra un servidor TCP.
Ejemplo:
Ver CreateTCPServer
TCPStreamIP( tcp_stream )
Parmetros:
tcp_stream - handle del flujo TCP
Descripcin:
Devuelve la direccin IP del flujo TCP especificado. La direccin devuelta es siempre la del ordenador cliente.
TCPStreamPort( tcp_stream )
Parmetros:
tcp_stream - handle del flujo TCP
Descripcin:
Devuelve el nmero de puerto del flujo TCP especificado. El nmero de puerto devuelto es siempre el del ordenador cliente.
TCPTimeouts read_millis,accept_millis
Parmetros:
read_millis - valor en milsimas de segundo accept_millis - valor en milsimas de segundo
Descripcin:
read_millis te permite controlar cuntos datos se pueden leer en un flujo TCP antes de causar un error. Por defecto, esta establecido a 10,000 (10 segundos). Esto significa que si tarda en leer los datos ms de 10 segundos, ocurrir un error y el flujo no podr volver a usarse. accept_millis te permite controlar cunto esperar el comando AcceptTCPStream() para una nueva conexin. Por defecto, este valor es 0, as AcceptTCPStream() volver automticamente si no hay una nueva conexin disponible.
Descripcin:
Crea un flujo UDP en el puerto especificado y devuelve un handle de flujo UDP. Si no se especifica ningn puerto, se utilizar uno que est libre y podrs entonces usar UDPStreamPort() para encontrar el puerto que se est utilizando.
74
CloseUDPStream udp_stream
Parmetros:
udp_stream - handle del flujo UDP
Descripcin:
Cierra un flujo UDP.
SendUDPMsg udp_stream,dest_ip[,dest_port]
Parmetros:
udp_stream - handle de un flujo UDP dest_ip - direccin IP de destino dest_port (opcional) - nmero de puerto de destino
Descripcin:
Transmite todos los datos escritos en el flujo UDP a la direccin IP y puerto especificados. La informacin est escrita con los comandos estndar de flujos. Si no se especifica el puerto, se utilizar el que se us para crear el Flujo UDP.
RecvUDPMsg( udp_stream )
Parmetros:
udp_stream - handle del flujo UDP
Descripcin:
Recibe un mensaje UDP del flujo UDP especificado. Comandos de flujos estndar pueden usarse para examinar el mensaje. El valor devuelto es un entero con la direccin IP de origen del mensaje, o 0 si el mensaje no est disponible. Puedes usar UDPMsgPort() para encontrar el nmero de puerto de origen del mensaje.
UDPStreamIP( udp_stream )
Parmetros:
udp_stream - handle del flujo UDP
Descripcin:
Devuelve la direccin IP del flujo UDP especificado. Actualmente, siempre devuelve 0.
UDPStreamPort( udp_stream )
Parmetros:
udp_stream - handle del flujo UDP
Descripcin:
Devuelve el nmero de puerto del flujo UDP especificado. Esto puede ser til si has creado el flujo UDP sin especificar el puerto.
UDPMsgIP( udp_stream )
Parmetros:
udp_stream - handle del flujo UDP
Descripcin:
Devuelve la direccin IP del remitente del ltimo mensaje UDP recibido. Este valor tambin es devuelto por RecvUDPMsg().
UDPMsgPort( udp_stream )
Parmetros:
udp_stream - handle del flujo UDP
Descripcin:
Devuelve el puerto del remitente del ltimo mensaje UDP recibido.
75
UDPTimeouts recv_millis
Parmetros:
recv_millis - valor en milsimas de segundo
Descripcin:
recv_millis te permite controlar cuanto puede esperar la funcin RecvUDPMsg() para recibir un nuevo mensaje. Por defecto, est establecido en 0, lo que significa que RecvUDPMsg() retornar inmediatamente si no se ha recibido ningn mensaje.
DIRECTPLAY StartNetGame()
Definicin:
Comienza un juego en red.
Ejemplo:
newGame = StartNetGame() ; Check the status of the new game. If newGame = 0 Then print "Could not start or join net game." ElseIf newGame = 1 print "Successfully joined the network game." ElseIf newGame = 2 print "A new network game was started." EndIf
HostNetGame (gamename$)
Definicin:
Crea un juego en red como HOST.
Ejemplo:
; HostNetGame example joinResults=HostNetGame("ShaneGame") Select joinResults Case 2 Print "Successfully started host game!" Default Print "Game was unable to start!" End Select waitkey()
76
JoinNetGame (gamename$,serverIP$)
Definicin:
Se une a un juego en red en curso.
Ejemplo:
; JoinNetGame example ; Note; run the HostNetGame example code on the other computer ; you wish to join with gamename$="ShaneGame" ; Change this to match the other computer's IP! serverIP$="0.0.0.0" ; Make the join attempt joinResults=JoinNetGame(gamename$,serverIP$) Select joinResults Case 1 Print "Joined the game successfully!" Default Print "Joining the game was unsuccessful." End Select WaitKey()
StopNetGame
Definicin:
Para un juego en red en curso.
Ejemplo:
; Ejemplo StopNetGame() newGame = StartNetGame() ; Comprueba el estado del nuevo juego. If newGame = 0 Then print "No puedes unirte o crear un juego en red." ElseIf newGame = 1 print "Unido con xito al juego en red." ElseIf newGame = 2 print "Se cre un juego en red." EndIf waitkey() StopNetGame() print "Se par el juego en red."
77
CreateNetPlayer (name$)
Definicin:
Crea un nuevo jugador local en un juego en red.
Ejemplo:
; CreateNetPlayer example newGame = StartNetGame() ; Check the status of the new game. If newGame = 0 Then Print "Could not start or join net game." End ElseIf newGame = 1 Print "Successfully joined the network game" ElseIf newGame = 2 Print "A new network game was started!" EndIf ; Create a random player name name$="Player" + Rand(100) ; Get a unique player id number for the player ; and create the player playerID=CreateNetPlayer(name$) If playerID = 0 Then Print "Player could not be created!" Else Print "Player " + name$ + " was created and given ID#" + playerID End If WaitKey()
DeleteNetPlayer playerID
Definicin:
Elimina un jugador local de un juego en red.
Ejemplo:
; DeleteNetPlayer example newGame = StartNetGame() ; Check the status of the new game. If newGame = 0 Then Print "Could not start or join net game." End ElseIf newGame = 1 Print "Successfully joined the network game" ElseIf newGame = 2
78 Print "A new network game was started!" EndIf ; Create a random player name name$="Player" + Rand(100) ; Get a unique player id number for the player ; and create the player playerID=CreateNetPlayer(name$) If playerID = 0 Then Print "Player could not be created!" Else Print "Player " + name$ + " was created and given ID#" + playerID WaitKey() ; delete the player! DeleteNetPlayer playerID Print "The local player was deleted!" End If waitkey()
NetPlayerName$ (playerID)
Definicin:
Devuelve el nombre actual de un jugador de un juego en red.
Ejemplo:
; ; ; ; ; ; ; ; NetPlayerName$() example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine. This program will tell you when a player involved in the game hits a wall ...
; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then
Ayuda Blitz Basic ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$ Print "(Message was from:"+ NetPlayerName$(NetMsgFrom()) + ")" End If End If Wend
79
NetPlayerLocal (playerID)
Definicin:
Determina si el jugador esta en el ordenador local.
Ejemplo:
; ; ; ; ; ; ; ; NetPlayerLocal example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine. This program will tell you when a player involved in the game hits a wall ...
; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$
80 if NetPlayerLocal(NetMsgFrom()) then print "(This was sent from a local player)" end if End If End If Wend
RecvNetMsg()
Definicin: Valores booleanos indican si un mensaje network ha sido recibido. Descripcin de los Parmetros: Ninguno. Descripcin del Comando:
Esto SLO funciona cuando te has unido a un juego en red va StartNetGame o JoinNetGame y has creado un jugador mediante la funcin CreateNetPlayer (debes crear un jugador primero). Devuelve un valor TRUE si el mensaje ue recibido, o FALSE en caso contrarioThis returns a TRUE value if a message was received, FALSE if none has been received. This will typically go inside a function that is constantly being checked for message and decode and handle them. You will use NetMsgType, NetMsgFrom, NetMsgTo, and NetMsgData$ to get the important information from the message and act on it. The example requires that you run it on a remote machine while the local computer runs the example in the SendNetMsg command.
Ejemplo:
; ; ; ; ; ; ; ; RecvNetMsg() example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine. This program will tell you when a player involved in the game hits a wall ...
; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$ End If End If Wend
81
NetMsgType()
Definicin:
Devuelve el tipo de mensaje recibido durante un juego en red.
Ejemplo:
; ; ; ; ; ; ; ; NetMsgType() example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine. This program will tell you when a player involved in the game hits a wall ...
; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$ End If End If Wend
NetMsgFrom()
Definicin:
Devuelve el ID del emisor de un mensaje network.
82
Ejemplo:
; ; ; ; ; ; ; ; NetMsgFrom() example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine. This program will tell you when a player involved in the game hits a wall ...
; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$ End If End If Wend
NetMsgTo()
Definicin:
Devuelve el ID del recipiente de un mensaje network.
83
Ejemplo:
; ; ; ; ; ; ; ; NetMsgTo() example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine. This program will tell you when a player involved in the game hits a wall ...
; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$ Print "(Message was to:"+ NetMsgTo() + ")" End If End If Wend
NetMsgData$()
Definicin:
Devuelve el mensaje actual de un mensaje network.
Ejemplo:
; ; ; ; ; ; NetMsgData$() example -------------------Run this program on the REMOTE computer to 'watch' the activity of the SendNetMsg example. Run that example on local machine.
84 ; This program will tell you when a player involved in ; the game hits a wall ... ; We'll use this instead of JoinHostGame - make it easier StartNetGame() ; Create a player - a player must be created to ; receive mesages! playerID=CreateNetPlayer("Shane") ; Loop and get status While Not KeyHit(1) ; Check to see if we've received a message If RecvNetMsg() Then ; if we did, let's figure out what type it is ; we know it will be a user message, though msgType=NetMsgType() ; 1-99 means a user message If msgType>0 And msgType<100 Then ; Let's see who the message was from msgFrom=NetMsgFrom() ; Let's get the message! msgData$=NetMsgData$() ; Print the message Print msgData$ Print "(Message was to:"+ NetMsgTo() + ")" End If End If Wend
SendNetMsg type,data$,from,to,reliable
Definicin:
Sends a message during a network game.
Ejemplo:
; ; ; ; SendNetMsg example -----------------Run this example on the local computer run the example for RecvNetMsg() on a remote computer
Ayuda Blitz Basic Graphics 640,480,16 SetBuffer BackBuffer() ; Create a network game with NO requester joinStatus=HostNetGame("ShaneGame") ; A type to hold all the player's information Type multi Field x Field y Field id Field name$ Field xspeed Field boxColor End Type ; make sure the game started ok... If joinStatus=2 Then Print "Hosted game started... " Else Print "Hosted game could not be started!" End End If ; Create 5 local players using TYPEs For t = 1 To 5 ; New type instance player.multi = New Multi ; Assign the ID field with the created player ID and name him player\ID=CreateNetPlayer("Player" + t) ; if the player was created ok ... assign some random parameters If player\ID <> 0 Then player\name$="Player" + t player\x = Rand(640) player\y = Rand(480) player\boxColor = Rand(255) player\xspeed = Rand(1,5) ; Print some text results Print "Player " + t + " has joined the game with ID=" + player\ID Else Print "The player couldn't join! Aborting!" End If Next ; We've got them all! Wait for a key Print "All local players are joined! Press a key ..." WaitKey() ; Loop this routine While Not KeyHit(1) Cls ; for each of the players, update their locations on the screen For player = Each multi Color player\boxColor,player\boxColor,player\boxColor Rect player\x,player\y,10,10,1 Text player\x-10,player\y-15,player\name$ player\x = player\x + player\xspeed If player\x > 640 Or player\x < 0 Then player\xspeed=-player\xspeed message$="Player ID #" + player\ID + " hit a wall!" ; Send a broadcast message if a player rebounds off the wall ; this message will show up on the remote machine SendNetMsg Rand(1,99),message$,player\id,0 End If Next Flip Wend End
85
86
Descripcin:
Abre un vdeo y devuelve su handle.
CloseMovie movie
Parmetros:
movie - handle a la pelcula
Descripcin:
Cierra una pelcula.
DrawMovie movie,x,y,[,width,height]
Parmetros:
movie - handle del vdeo x - posicin x de la esquina superior izquierda del vdeo y - posicin y de la esquina superior izquierda del vdeo width (opcional) - ancho del vdeo. Por defecto el ancho original del vdeo. height (opcional) - altura del vdeo. Por defecto la altura original del vdeo.
Descripcin:
Dibuja un vdeo en el buffer actual. Devuelve True si el vdeo todava se est reproduciendo. El soporte de vdeos depende de DirectShow, as que debers asegurarte de que tienes los drivers correctamente instalados. Los vdeos se movern normalmente ms rpidos con su tamao original.
MovieWidth( movie )
Parmetros:
movie - handle del vdeo
Descripcin:
Devuelve el ancho de un vdeo.
MovieHeight( movie )
Parmetros:
movie - handle del vdeo
Descripcin:
Devuelve la altura de un vdeo.
MoviePlaying( movie )
Parmetros:
movie - handle del vdeo
Descripcin:
Devuelve 1 (true) si la pelcula especificada est siendo reproducida.
87
Ejemplo:
; Assign a global variable for the sound Global sndPlayerDie ; Load the sound file into memory sndPlayerDie=LoadSound("sounds/die.wav") ; Play the sound PlaySound sndPlayerDie
FreeSound sound_variable
Definicin:
Elimina el sonido y libera la memoria que estaba usando.
Ejemplo:
; Load a sound into memory sndOneUp=LoadSound("audio\1up.wav") ; Free the memory up and delete the sound FreeSound sndOneUp
LoopSound sound_variable
Definicin:
Establece que se reproduzca un bucle infinito de un sonido cargado previamente.
88
Ejemplo: ; Assign a global variable for the sound loop Global sndMusicLoop
; Load the sound loop file into memory sndMusicLoop=LoadSound("sounds/loop1.wav") ; Set the sound loop LoopSound sndMusicLoop PlaySound sndMusicLoop
Ejemplo:
; Load the sound (11,000 hertz) snd1Up = LoadSound("audio\oneup.wav") ; Play the sound normally PlaySound snd1Up ; Change the pitch UP and play it SoundPitch snd1Up, 22000 PlaySound snd1Up ; Change the pitch down and play it SoundPitch snd1Up, 8000 PlaySound snd1Up
SoundVolume sound_variable,volume#
Definicin:
Cambia el volumen de un sonido.
Ejemplo:
; Load sound sample sndDeath=LoadSound("audio\death.wav") ; Change volume level to half SoundVolume sndDeath,.5
89
SoundPan sound_variable,pan# Definicin: Cambia el balance del efecto de sonido especificado. Descripcin de los Parmetros: sound_variable = handle del sonido obtenido al cargarlo con el comando LoadSound. pan# = nmero de coma flotante desde -1 (izquierda) a 0 (centro) a 1 (derecha) Descripcin del Comando: Usa este comando para cambiar el balance de tu sonido entre los altavoces izquierdo y derecho (o restaurarlo al centro). Ejemplo: ; Load sound sample sndDeath=LoadSound("audio\death.wav") ; Pan sound effect half to the left SoundPan sndDeath,-.5 ; Play sound PlaySound sndDeath
PlaySound sound_variable
Definicin:
Reproduce un sonido cargado previamente en memoria.
Ejemplo:
; Assign a global variable for the sound Global sndPlayerDie ; Load the sound file into memory sndPlayerDie=LoadSound("sounds/die.wav") ; Play the sound chnDie=PlaySound sndPlayerDie
PlayMusic (filename$)
Definicin:
Carga y reproduce una pieza de msica.
90
Cada vez que llames al comando PlayMusic, el archivo ser cargado de nuevo y reproducido. Esto significa que si usas el comando mientras algunos grficos se estn moviendo por la pantalla, se puede producir una pequea ralentizacin. Para solucionar este problema, a lo mejor te convendra usar los comandos PlaySound/LoopSound en vez de este.
Ejemplo:
; Load and play the background music chnBackground=PlayMusic("music\background.wav")
PlayCDTrack track,[mode]
Definicin:
Reproduce una pista de un CD de audio.
Ejemplo:
; PlayCDTrack example ; Get a track to play from user track=Input$("Enter a CD track number to play:") ; Play the track, assign a channel - just play once chnCD=PlayCDTrack(track,1) ; Figure out what time it is now oldTime=MilliSecs() ; Play until the channel is over or ESC While ChannelPlaying(chnCD) And (Not KeyHit(1)) ; clear and print the time elapsed Cls Locate 0,0 Print "Time Elapsed (sec):" + ((MilliSecs()-oldTime)/1000) Wend ; Stop the channel StopChannel chnCD
StopChannel channel_handle
Definicin:
Para un canal de sonido en reproduccin.
91
Ejemplo:
; Ejemplo Channel Print "Cargando sonido ..." ; Carga el ejemplo - necesitars tener este sonido en tu ordenador ; para mejores resultados, cralo alrededor de 5-10 segundos... sndWave=LoadSound("level1.wav") ; Prepara el sonido para reproducirlo infinitas veces LoopSound sndWave chnWave=PlaySound(sndWave) Print "Reproduciendo el sonido durante 2 segundos..." Delay 2000 Print "Parando el sonido durante 2 segundos..." PauseChannel chnWave Delay 2000 Print "Volviendo a reproducir el sonido..." ResumeChannel chnWave Delay 2000 Print "Cambiando la frecuencia del sonido..." ;StopChannel chnWave ChannelPitch chnWave, 22000 Delay 2000 Print "Reproduciendo el sonido con la nueva frecuencia..." Delay 2000 Print "Slo el altavoz izquierdo" ChannelPan chnWave,-1 Delay 2000 Print "Slo el altavoz derecho" ChannelPan chnWave,1 Delay 2000 Print "Todo hecho!" StopChannel chnWave
PauseChannel channel_handle
Definicin:
Para la reproduccin de un canal de sonido.
Ejemplo:
Ver Ejemplo Channel
ResumeChannel channel
Parmetros:
channel - un canal de msica o sonido asignado previamente con LoadSound, PlayMusic, etc.
Descripcin:
ResumeChannel se usa para continuar la reproduccin de un sonido o pista de msica del canal dado despus de que parars temporalmente su reproduccin con el comando PauseChannel.
92
Ejemplo:
Graphics 640, 480, 0, 2 musicchannel = PlayMusic ("oohyeahbaby.mp3") ; Remplaza este archivo por uno de tu disco duro!! Repeat Print "Pulsa una tecla para pausar la msica..." WaitKey PauseChannel musicchannel Print "Pulsa una tecla para continuar la msica..." WaitKey ResumeChannel musicchannel Until KeyHit (1) End
Ejemplo:
Ver Ejemplo Channel
Ejemplo:
Ver Ejemplo Channel
93
Ejemplo:
Ver Ejemplo Channel
ChannelPlaying (channel_handle)
Definicin:
Comprueba si un canal de sonido est todava reproducindose.
Ejemplo:
Ver Ejemplo Channel
Ejemplo:
;GRAPHICS Example ; Set The Graphic Mode Graphics 800,600 ; Now print something on the graphic screen Text 0,0, "This is some text printed on the graphic screen (and a white box)! Press ESC ..." ; Now for a box Rect 100,100,200,200,1 While Not KeyHit(1) Wend
94
SetBuffer buffer
Definicin:
Se usa para establecer el buffer de dibujo actual.
Ejemplo:
SetBuffer FrontBuffer() ;Sets FrontBuffer as the current drawing buffer
FrontBuffer()
Definicin:
Designa el FrontBuffer como buffer de dibujo.
Ejemplo:
; FrontBuffer()/Rect Example ; Engage graphics mode Graphics 640,480,16 ; Set the drawing buffer to front - instant drawing ops! SetBuffer FrontBuffer() ; Repeat this until user presses ESC While Not KeyHit(1) ; Set a random color Color Rnd(255),Rnd(255),Rnd(255) ; Draw a rectangle at a random location, with a random width and height ; plus randomly choose if the rectangle is solid or just an outline Rect Rnd(640),Rnd(480),Rnd(50),Rnd(50),Rnd(0,1) ; Blitz is so dang fast, we need a delay so you can watch it draw! Delay 10 Wend
BackBuffer()
Definicin:
Indica que el BackBuffer se dibuje en el buffer.
95
Ejemplo:
; Flip/Backbuffer()/Rect Example ; Set Graphics Mode Graphics 640,480 ; Go double buffering SetBuffer BackBuffer() ; Setup initial locations for the box box_x = -20 ; negative so it will start OFF screen box_y = 100 While Not KeyHit(1) Cls ; Always clear screen first Rect box_x,box_y,20,20,1 ; Draw the box in the current x,y location Flip ; Flip it into view box_x = box_x + 1 ; Move the box over one pixel If box_x = 640 Then box_x=-20 ; If it leaves the Right edge, reset its x location Wend
Ejemplo:
; LoadBuffer example ; Set graphics mode Graphics 800,600,16 ; Load an image directly to the front buffer (your location may be different) LoadBuffer (FrontBuffer(),"C:\Program Files\Blitz Basic\samples\blitzanoid\gfx\title.bmp") ; wait for ESC so user gets to see the screen While Not KeyHit(1) Wend
SaveBuffer (buffer,filename$)
Definicin:
Guarda el buffer de vdeo seleccionado en un archivo bitmap.
96
Ejemplo:
; Save the screen when player pushes F10 If KeyHit(10) Then SaveBuffer(FrontBuffer(),"screenshot.bmp") End If
LockBuffer buffer
Definicin:
Bloquea un buffer para aumentar la velocidad de las operaciones con pixels.
Ejemplo:
; Comandos Grficos de Alta Velocidad Graphics 640,480,16 ; Dibujo un montn de mierda en la pantalla For t= 1 To 1000 Color Rnd(255),Rnd(255),Rnd(255) Rect Rnd(640),Rnd(480),Rnd(150),Rnd(150),Rnd(1) Next Delay 3000 ; Copio la mitad superior de la pantalla encima de la inferior ; usando los 'fast pixels' y buffer's bloqueados For x = 1 To 640 For y = 1 To 240 LockBuffer FrontBuffer() WritePixelFast x,y+241,ReadPixelFast(x,y) UnlockBuffer FrontBuffer() Next Next Delay 3000 ; Dibujo la mitad izquierda de la pantalla sobre la derecha ; usando los 'slow pixels' y buffer's desbloqueados For x = 1 To 320 For y = 1 To 480 WritePixel x+320,y,ReadPixel(x,y) Next Next
UnlockBuffer buffer
Definicin:
Desbloquea el buffer previamente bloqueado para realizar operaciones de pixels rpidas.
Ayuda Blitz Basic El parmetro buffer no es necesario. Si se omite, el buffer establecido con el comando SetBuffer ser usado. Mira los otros comandos para ms informacin.
97
ReadPixel (x,y,[buffer])
Parmetros:
x - coordenada x y - coordenada y buffer (opcional) - nombre del buffer donde se leer el pixel, p.e. BackBuffer()
Descripcin:
Lee un valor de color del buffer actual o del especificado, y lo devuelve. El valor devuelto est en la forma de un entero que contiene los valores alfa, rojo, verde y azul del pixel. Puedes usar este comando en un buffer bloqueado para aligerar la velocidad. Mira LockBuffer. Mira tambin: GetColor, ReadPixelFast.
Ejemplo:
; ReadPixel/WritePixel Example ; ---------------------------Graphics 640,480,16 Print "Press a key to read color values (this may take a few seconds)" WaitKey() ; Load and draw an image on to the screen - can be anything pic=LoadImage("media/blitz_pic.bmp") DrawImage pic,0,0 ; Initialise an array big enough to fit all the color information of the screen Dim pix(GraphicsWidth(),GraphicsHeight()) ; Use ReadPixel to get all the color information of the screen For y=0 To GraphicsHeight() For x=0 To GraphicsWidth() pix(x,y)=ReadPixel(x,y) Next Next Cls Locate 0,0 Print "Press a key to write pixels (this may takes a few seconds)" Print "Once this has finished, you can then press a key to end the program" WaitKey() ; Use WritePixel to redraw the screen using the color information we got earlier For y=0 To GraphicsHeight() For x=0 To GraphicsWidth() WritePixel x,y,pix(x,GraphicsHeight()-y) ; get y array value in backwards order, to flip screen Next Next WaitKey()
WritePixel x,y,argb,[buffer]
Parmetros:
x - coordenada x y - coordenada y argb - valor de color argb del pixel (alpha (alfa), red (rojo), green (verde), blue(azul)) buffer (opcional) - nombre del buffer de destino, por ejemplo, BackBuffer()
Descripcin:
Escribe un valor de color en el buffer especificado. Puedes usar este comando en un buffer bloqueado para mejorar la velocidad. Mira LockBuffer. Mira tambin: Plot, WritePixelFast.
98
Ejemplo:
; ReadPixel ReadPixelFast (x,y,[buffer]) Parmetros: x - coordenada x y - coordenada y
buffer (opcional) - nombre del buffer donde se leer el pixel, p.e. BackBuffer()
Descripcin:
Lee un valor de color del buffer actual o del especificado, y lo devuelve. El valor devuelto est en la forma de un entero que contiene los valores alfa, rojo, verde y azul del pixel. IMPORTANTE: DEBES usar este comando en un buffer bloqueado, de lo contrario el comando fallar. Mira LockBuffer. Tambin debes asegurarte de que las coordenadas que ests leyendo son vlidas. CUIDADO: Si no sigues el anterior aviso, puedes cargarte tu Pc. Mira tambin: GetColor, ReadPixel.
Ejemplo:
; ReadPixelFast/WritePixeFast Example Graphics 640,480,16 Print "Press a key to read color values" WaitKey() ; Load and draw an image on to the screen - can be anything pic=LoadImage("media/blitz_pic.bmp") DrawImage pic,0,0 ; Initialise an array big enough to fit all the color information of the screen Dim pix(GraphicsWidth(),GraphicsHeight()) ; Lock buffer before using ReadPixelFast LockBuffer ; Use ReadPixel to get all the color information of the screen For y=0 To GraphicsHeight() For x=0 To GraphicsWidth() pix(x,y)=ReadPixelFast(x,y) Next Next ; Lock buffer after using ReadPixelFast UnlockBuffer Cls Locate 0,0 Print "Press a key to write pixels" Print "Once this has finished, you can then press a key to end the program" WaitKey() ; Lock buffer before using WritePixelFast LockBuffer ; Use WritePixel to redraw the screen using the color information we got earlier For y=0 To GraphicsHeight() For x=0 To GraphicsWidth() WritePixelFast x,y,pix(x,GraphicsHeight()-y) ; get y array value in backwards order, to flip screen Next Next ; Unlock buffer after using WritePixelFast UnlockBuffer WaitKey()
99
WritePixelFast x,y,argb,[buffer]
Parmetros:
x - coordenada x y - coordenada y argb - valor de color argb del pixel (alpha (alfa), red (rojo), green (verde), blue(azul)) buffer (opcional) - nombre del buffer de destino, por ejemplo, BackBuffer()
Descripcin:
Escribe un valor de color en el buffer especificado. IMPORTANTE: DEBES usar este comando sobre un buffer bloqueado, sino el comando fallar. Mira LockBuffer. Tambin debes asegurarte de que las coordenadas especificadas son vlidas, sino acabars sobreescribiendo otras reas de memoria. CUIDADO: Si no sigues la advertencia anterior, puedes bloquear tu ordenador. Mira tambin: Plot, WritePixel.
Ejemplo:
; ReadPixelFast
CopyPixel src_x,src_y,src_buffer,dest_x,dest_y,[dest_buffer]
Parmetros:
src_x - coordenada x del pixel que se copiar. src_y - coordenada y del pixel que se copiar src_buffer - nombre del buffer desde donde se copiar, p. e. ImageBuffer(). dest_x - coordenada x del pixel donde se copiar dest_y - coordenada y del pixel donde se copiar. dest_buffer (optional) - nombre del buffer donde se copiar, p. e. BackBuffer()
Descripcin:
Copia un pixel en otra localizacin. Puedes usar este comando en un buffer bloqueado para aumentar velocidad. Mira LockBuffer. Mira tambin: CopyPixelFast.
Ejemplo:
; CopyPixel/CopyPixelFast Example Graphics 640,480,16 Print "Press a key to use CopyPixel to copy the top half of an image to the frontbuffer" WaitKey() ; Load an image - can be anything pic=LoadImage("media/blitz_pic.bmp") ; Use CopyPixel to copy the top half of the image to the frontbuffer For y=0 To ImageHeight(pic)/2 For x=0 To ImageWidth(pic) CopyPixel x,y,ImageBuffer(pic),x,y Next Next Locate 0,GraphicsHeight()/2 Print "Press a key to use CopyPixelFast to copy the bottom half of the image" Print "Once this has finished, you can then press a key to end the program" WaitKey() ; Lock buffer before using CopyPixelFast LockBuffer ; Use CopyPixelFast to copy the bottom half of the image to the frontbuffer For y=0 To (ImageHeight(pic)/2)+ImageHeight(pic) For x=0 To ImageWidth(pic) CopyPixelFast x,y,ImageBuffer(pic),x,y Next Next ; Unlock buffer after using CopyPixelFast UnlockBuffer WaitKey()
100
CopyPixelFast src_x,src_y,src_buffer,dest_x,dest_y,[dest_buffer]
Parmetros:
src_x - coordenada x del pixel que se copiar. src_y - coordenada y del pixel que se copiar src_buffer - nombre del buffer desde donde se copiar, p. e. ImageBuffer(). dest_x - coordenada x del pixel donde se copiar dest_y - coordenada y del pixel donde se copiar. dest_buffer (optional) - nombre del buffer donde se copiar, p. e. BackBuffer()
Descripcin:
Copia un pixel en otra localizacin. IMPORTANTE: *DEBES* usar este comando en un buffer BLOQUEADO, sino fallar. Mira LockBuffer. Tambin debes asegurarte de que las coordenadas especificadas son vlidas, sino acabar sobreescribiendo otras reas de memoria. ATENCIN: Si no haces caso de la anterior advertencia, puedes hacer que tu ordenador se bloquee. Mira tambin: CopyPixel.
Ejemplo:
Ver CopyPixel
CopyRect src_x,src_y,src_width,src_height,dest_x,dest_y,[src_buffer],[dest_buffer]
Definicin: Copia un rectngulo de grficos desde un buffer a otro. Descripcin de los Parmetros:
src_x = coordenada x desde donde se empezar a copiar. src_y = coordenada y desde donde se empezar a copiar src_width = anchura del rea a copiar. src_height = altura del rea a copiar dest_x = coordenada x de destino. dest_y = coordenada y de destino src_buffer = handle del buffer de imagen de origen (opcional). dest_buffer = handle del buffer de imagen de destino (opcional)
Ejemplo:
; CopyRect Example ; Turn on graphics mode Graphics 800,600,16 ; create a blank image gfxBlank=CreateImage (300,300) ; Fill the screen with random boxes in random colors For t = 1 To 1000 Rect Rand(800),Rand(600),Rand(100),Rand(100),Rand(0,1) Color Rand(255),Rand(255),Rand(255) Next ; Wait a couple of seconds so the user can see it Delay 2000 ; Copy graphics randomly from the front buffer to the blank image CopyRect Rand(800),Rand(600),300,300,0,0,FrontBuffer(),ImageBuffer(gfxBlank) ; Clear the screen, draw the copied to image, wait for user to hit a key Cls DrawImage gfxBlank,0,0 WaitKey
101
Ejemplo:
; Ejemplo ViewPort ; Activo el Modo Grfico Graphics 800,600 ; Activo el Double Buffering SetBuffer BackBuffer() ; Creo un viewport empezando en 100,100 con un tamao de 200,200 pixels Viewport 100,100,200,200 ; Dibujo infinitos rectngulos aleatoriamente con colores tambin aleatorios While Not KeyHit(1) Cls ; Limpio la pantalla For t = 1 To 100 ; Hago 100 rectngulos cada vez Color Rnd(255),Rnd(255),Rnd(255) ; Color aleatorio Rect Rnd(800),Rnd(600),Rnd(300),Rnd(300),Rnd(0,1) ; Tamao y posicin aleatoria, algunos rellenos Next ; Repite el bucle de dibujo Flip Wend
Origin x,y
Definicin:
Te permite elegir un punto de origen para todos tus comandos de dibujo.
Ejemplo:
; Origin example Graphics 800,600,16 ; Offset drawing options with origin command -200 in each direction Origin -200,-200 ; Wait for ESC to hit While Not KeyHit(1) ; Draw an oval - SHOULD be at the exact center, but it isn't! Oval 400,300,50,50,1 Wend
Flip [vwait]
Definicin:
En un entorno con doble buffering, invierte el BackBuffer a la vista.
102
Ejemplo:
; Flip/Backbuffer()/Rect Example ; Set Graphics Mode Graphics 640,480 ; Go double buffering SetBuffer BackBuffer() ; Setup initial locations for the box box_x = -20 ; negative so it will start OFF screen box_y = 100 While Not KeyHit(1) Cls ; Always clear screen first Rect box_x,box_y,20,20,1 ; Draw the box in the current x,y location Flip ; Flip it into view box_x = box_x + 1 ; Move the box over one pixel If box_x = 640 Then box_x=-20 ; If it leaves the Right edge, reset its x location Wend
VWait [frames]
Definicin:
Espera a que acaben uno o ms "barridos" o ciclos verticales de la pantalla antes de continuar. Descripcin de los Parmetros: [frames] = nmero opcional de frames a esperar
Ejemplo:
; Ejemplo Vwait Graphics 800,600,16 ; Espera que pulses ESC para acabar While Not KeyHit(1) ; Establece un color aleatorio Color Rnd(255),Rnd(255),Rnd(255) ; Dibuja una lnea aleatoria Line Rnd(800),Rnd(600),Rnd(800),Rnd(600) ; Espera que acabe un ciclo vertical para continuar con el bucle VWait Wend
ScanLine()
Definicin:
Devuelve la localizacin del scanline de la operacin de dibujo.
103
Ejemplo:
; ScanLine() Example While Not KeyHit(1) Print ScanLine() Wend
GraphicsHeight()
Definicin:
Devuelve la altura, en pixels, del actual modo grfico.
Ejemplo:
; GraphicsWidth(), GraphicsHeight(), GraphicsDepth(), GraphicsBuffer() example ; Set a graphics mode and buffer Graphics 640,480,16 SetBuffer FrontBuffer() ; Print the details Print "Screen width is: " + GraphicsWidth() Print "Screen height is: " + GraphicsHeight() Print "Screen color depth is: " + GraphicsDepth() Print "Current buffer handle is: " + GraphicsBuffer() ; Wait for ESC before exiting While Not KeyHit(1) Wend
GraphicsWidth()
Definicin:
Devuelve el ancho, en pixels, del actual modo grfico.
Ejemplo:
Ver GraphicsHeight
GraphicsDepth()
Definicin:
Devuelve la profundidad de color del modo grfico actual.
Ejemplo:
Ver GraphicsHeight
104
GraphicsBuffer()
Definicin:
Devuelve el handle del buffer de grficos actual.
Ejemplo:
Ver GraphicsHeight
Color rojo,verde,azul
Definicin:
Establece el color que se usar en todas las operaciones de dibujo.
Ejemplo:
; Color, ColorRed(), ColorBlue(), ColorGreen() Example ; Gotta be in graphics mode Graphics 640,480 ; Change the random seed SeedRnd MilliSecs() ; Let's set the color to something random Color Rnd(0,255),Rnd(0,255),Rnd(0,255) ; Now let's see what they are! While Not KeyHit(1) Text 0,0,"This Text is printed in Red=" + ColorRed() + " Green=" + ColorGreen() + " Blue=" + ColorBlue() + "!" Wend
ClsColor rojo,verde,azul
Definicin:
Selecciona el color para el comando Cls.
Ejemplo:
;set ClsColor to red ClsColor 255,0,0 ;set current drawing buffer to the color set by the ClsColor command Cls
Ayuda Blitz Basic Cls Definicin: Borra el buffer de dibujo actual. Descripcin de los Parmetros: Ninguno. Descripcin del Comando:
105
Este comando vaciar el buffer de dibujo actual de todos los grficos y textos presentes y reinicia el buffer de dibujo al color definido con el comando ClsColor. Ejemplo: ;set ClsColor to red ClsColor 255,0,0 ;set current drawing buffer to the color set by the ClsColor command Cls
Plot x,y
Definicin:
Pone un pixel en la pantalla del color actual de dibujo.
Ejemplo:
;Set the color to green Color 0,255,0 ;Draw a dot at location 100,200 with the color green plot 100,200
Line x,y,x1,y1
Definicin:
Dibuja una lnea del color actual desde x,y hasta x1,y1.
Ejemplo:
; Line example Graphics 800,600,16 ; Wait for ESC to hit While Not KeyHit(1) ; Set a random color Color Rnd(255),Rnd(255),Rnd(255) ; Draw a random line Line Rnd(800),Rnd(600),Rnd(800),Rnd(600) Wend
106
Ejemplo:
; Flip/Backbuffer()/Rect Example ; Set Graphics Mode Graphics 640,480 ; Go double buffering SetBuffer BackBuffer() ; Setup initial locations for the box box_x = -20 ; negative so it will start OFF screen box_y = 100 While Not KeyHit(1) Cls ; Always clear screen first Rect box_x,box_y,20,20,1 ; Draw the box in the current x,y location Flip ; Flip it into view box_x = box_x + 1 ; Move the box over one pixel If box_x = 640 Then box_x=-20 ; If it leaves the Right edge, reset its x location Wend
Oval x,y,width,height[,solid]
Definicin:
Dibuja un elipse en la posicin especificada de la pantalla.
Ejemplo:
; Oval example Graphics 800,600,16 ; Wait for ESC to hit While Not KeyHit(1) ; Set a random color Color Rnd(255),Rnd(255),Rnd(255) ; Draw a random oval Oval Rnd(800),Rnd(600),Rnd(100),Rnd(100),Rnd(0,1) Wend
107
GetColor x, y
Definicin:
Establece el color de dibujo actual al color del pixel designado.
Ejemplo:
; GetColor Example Graphics 320,200 SetBuffer BackBuffer() For t = 1 To 1000 Color Rnd(255), Rnd(255), Rnd(255) Rect Rnd(320),Rnd(200),10,10,1 Next GetColor 100,100 Print "Box at 100,100 is RGB:" + ColorRed() + "," + ColorGreen() + "," + ColorBlue() + "!" Flip While Not KeyHit(1) Wend
ColorRed()
Definicin:
Devuelve el componente rojo del color de dibujo actual.
Ejemplo:
; Color
ColorGreen() Definicin: Devuelve el componente verde del color de dibujo actual. Descripcin de los Parmetros: Ninguno. Descripcin del Comando: Usa este comando para devolver el componente verde del color RGB del color de dibujo actual. Usa ColorRed() y ColorBlue() para los otros dos componentes de color. Ejemplo: ; Color
108
ColorBlue()
Definicin:
Devuelve el componente azul del color de dibujo actual.
Ejemplo:
Ver Color
CountGFXModes()
Definicin:
Devuelve el nmero de modos grficos soportados por la tarjeta de vdeo actual.
Ejemplo:
; CountGFXModes()/GfxModeWidth/GfxModeHeight/GfxModeDepth example intModes=CountGfxModes() Print "There are " + intModes + "graphic modes available:" ; Display all modes including width, height, and color depth For t = 1 To intModes Print "Mode " + t + ": Print "Width=" + GfxModeWidth(t) Print "Height=" + GfxModeHeight(t) Print "Height=" + GfxModeDepth(t) Next
CountGfxDrivers()
Definicin:
Devuelve el nmero de tarjetas grficas de tu sistema.
Ejemplo:
; GfxDriver Examples ; Count how many drivers there are totalDrivers=CountGfxDrivers() Print "Choose a driver to use:" ; Go through them all and print their names (most people will have only 1)
Ayuda Blitz Basic For t = 1 To totalDrivers Print t+") " + GfxDriverName$(t) Next ; Let the user choose one driver=Input("Enter Selection:") ; Set the driver! SetGfxDriver driver Print "Your driver has been selected!"
109
CountGfxDrivers()
Definicin:
Devuelve el nmero de tarjetas grficas de tu sistema.
Ejemplo:
Ver GfxDriver Examples
SetGfxDriver index
Definicin:
Selecciona el controlador grfico a utilizar para los comandos de dibujo.
Ejemplo:
Ver GfxDriver Examples
GFXModeWidth (mode)
Definicin:
Devuelve el ancho del modo de vdeo actual.
Ejemplo:
Ver CountGFXModes
GFXModeHeight (mode)
Definicin:
Devuelve la altura del modo de vdeo actual.
110
Ejemplo:
Ver CountGFXModes
GFXModeDepth (mode)
Definicin:
Devuelve la profundidad de color del modo de vdeo seleccionado.
Ejemplo:
Ver CountGFXModes
GfxModeExists (width,height,depth)
Definicin:
Comprueba que el modo grfico especificado existe.
Ejemplo:
; GFXModeExists example ; If there is a mode, tell user mode=GfxModeExists(800,800,16) If mode=1 Then Print "The mode you requested exists!" Else Print "Sorry, that mode doesn't exist." End If ; Wait for ESC press from user While Not KeyHit(1) Wend
TotalVidMem()
Parmetros:
Ninguno.
Descripcin:
TotalVidMem () simplemente devuelve el total de memoria disponible en la tarjeta grfica, en bytes. Fjate que para saber la memoria disponible actualmente en bytes, deberas usar AvailVidMem ().
111
Ejemplo:
Print "Total de memoria grfica disponible: " + TotalVidMem () + " bytes." ; NOTA: Para saber la memoria grfica *disponible*, usa AvailVidMem ()!
AvailVidMem()
Definicin:
Devuelve la memoria de video disponible.
Ejemplo:
Print "Your available video memory is: " + AvailVidMem()
Ejemplo:
; LoadImage and DrawImage example ; Declare a variable to hold the graphic file handle Global gfxPlayer ; Set a graphics mode Graphics 640,480,16 ; Set drawing operations for double buffering SetBuffer BackBuffer() ; Load the image and assign its file handle to the variable ; - This assumes you have a graphic called player.bmp in the ; same folder as this source code gfxPlayer=LoadImage("player.bmp") ; Let's do a loop where the graphic is drawn wherever the ; mouse is pointing. ESC will exit. While Not KeyHit(1) Cls ; clear the screen DrawImage gfxPlayer,MouseX(),MouseY() ; Draw the image! Flip ; flip the image into view and clear the back buffer Wend
112
CopyImage (handle)
Definicin:
Duplica una imagen cargada en un nuevo handle.
Ejemplo:
; CopyImage Example ; Load an image and give its handle to gfxOld variable gfxOld=LoadImage("mypicture.bmp") ; Duplicate the gfxOld image to a new handle variable gfxNew=CopyImage(gfxOld)
CreateImage (width,height[,frames])
Definicin:
Crea una nueva imagen en memoria y mete el handle en una variable.
Ejemplo:
; CreateImage/TileImage/ImageBuffer example ; Again, we'll use globals even tho we don't need them here ; One variable for the graphic we'll create, one for a timer Global gfxStarfield, tmrScreen ; Declare graphic mode Graphics 640,480,16 ; Create a blank image that is 320 pixels wide and 32 high with 10 frames of 32x32 gfxStarfield=CreateImage(32,32,10) ; loop through each frame of the graphic we just made For t = 0 To 9 ; Set the drawing buffer to the graphic frame so we can write on it SetBuffer ImageBuffer(gfxStarfield,t) ; put 50 stars in the frame at random locations For y = 1 To 50 Plot Rnd(32),Rnd(32) Next Next ; Double buffer mode for smooth screen drawing SetBuffer BackBuffer() ; Loop until ESC is pressed While Not KeyHit(1)
Ayuda Blitz Basic ; Only update the screen every 300 milliseconds. Change 300 for faster or ; slower screen updates If MilliSecs() > tmrScreen+300 Then Cls ; clear the screen ; Tile the screen with a random frame from our new graphic starting at ; x=0 and y=0 location. TileImage gfxStarfield,0,0,Rnd(9) Flip ; Flip the screen into view tmrScreen=MilliSecs() ; reset the time End If Wend
113
LoadAnimImage (filename,width,height,first,count)
Definicin:
Carga una 'tira de imgenes' para usarla como una imagen animada que ser dibujada despus y devuelve su handle.
Ejemplo:
; Ejemplo LoadAnimImage/MaskImage MouseX()/MouseY() ; With animation timers ; Incluso cuando no hay funciones, debemos hacer variables globales ; Una variable tendr el handle del grfico, otra ; el frame actual que estamos mostrando y otra el timer para ajustar ; la velocidad de la animacion Global gfxSparks, frmSparks, tmrSparks Graphics 640,480,16 SetBuffer BackBuffer() ; Carga la tira de imagenes gfxSparks=LoadAnimImage("c:\Program Files\BlitzBasic\samples\Graphics\spark.bmp",32,32,0,3) ; Hacemos que el color rosa sea transparente en esta imagen MaskImage gfxSparks,255,0,255 ; Bucle hasta que se pulse ESC While Not KeyHit(1) Cls ; En la siguiente linea se controla la velocidad de la animacion, Cambia ; el 100 por otros valores mayores o menores para comprobar la diderencia If MilliSecs() > tmrSparks + 100 Then tmrSparks=MilliSecs() ; 'reset' the timer frmSparks=( frmSparks + 1 ) Mod 3 ; incrementa el frame End If DrawImage gfxSparks,MouseX(),MouseY(),frmSparks ; dibuja la imagen en las coordenadas del ratn Flip ; muestra el buffer Wend
114
FreeImage handle
Definicin:
Elimina la imagen especificada de la memoria.
Ejemplo:
; FreeImage command ; Global, as always, for graphics Global gfxPlayer ; Enter graphics mode and start double buffering Graphics 640,480,16 SetBuffer BackBuffer() ; Load the image-assign the handle to gfxPlayer gfxPlayer=LoadImage("player.bmp") ; draw the image at random until ESC pressed While Not KeyHit(1) Cls DrawImage gfxPlayer,Rnd(640),Rnd(480) Flip Wend ; Erase the image from memory! FreeImage gfxPlayer
SaveImage (image,bmpfile$,[frame] )
Definicin:
Guarda una imagen en el disco duro como un archivo .bmp.
Ejemplo:
; SaveImage example ; Set Graphics Mode Graphics 800,600,16 ; Load an image to tile (your location might vary) gfxBall=LoadImage("C:\Program Files\Blitz Basic\samples\ball.bmp") ; Save the image to the c: drive ... ok=SaveImage (gfxBall,"c:\newball.bmp") ; Print results If ok=1 Then Print "Save successful!" Else
Ayuda Blitz Basic Print "There was an error saving!" End If ; Wait for ESC to hit While Not KeyHit(1) Wend
115
GrabImage image,x,y,[frame]
Definicin:
Coge una porcin del actual buffer de dibujo y la guarda en una imagen.
Ejemplo:
; GrabImage example ; Turn on graphics Graphics 640,480,16 ; We'll be drawing right to the front buffer SetBuffer FrontBuffer() ; You must create an empty image to grab from first gfxGrab=CreateImage(100,100) ; Draw random rectangles on the screen until the ; user presses ESC While Not KeyHit(1) ; random color Color Rnd(255),Rnd(255),Rnd(255) ; super random rectangles Rect Rnd(640),Rnd(480),Rnd(100),Rnd(100),Rnd(1) Delay 50 Wend ; Now, grab an image, starting at 100,100 and put it in gfxGrab GrabImage gfxGrab,100,100 ; Clear screen and show user the grabbed image Cls Text 0,0, "Here is your grabbed image! Press a mouse key ..." DrawImage gfxgrab,50,50 ; Wait for a mouse press WaitMouse()
ImageBuffer (handle[,frame])
Definicin:
Se usa para especificar una imagen y un frame para realizar operaciones de dibujo directamente. Descripcin de los Parmetros: handle=handle de la imagen frame=nmero de frame (opcional)
116
Ejemplo:
; CreateImage/TileImage/ImageBuffer example ; Again, we'll use globals even tho we don't need them here ; One variable for the graphic we'll create, one for a timer Global gfxStarfield, tmrScreen ; Declare graphic mode Graphics 640,480,16 ; Create a blank image that is 320 pixels wide and 32 high with 10 frames of 32x32 gfxStarfield=CreateImage(32,32,10) ; loop through each frame of the graphic we just made For t = 0 To 9 ; Set the drawing buffer to the graphic frame so we can write on it SetBuffer ImageBuffer(gfxStarfield,t) ; put 50 stars in the frame at random locations For y = 1 To 50 Plot Rnd(32),Rnd(32) Next Next ; Double buffer mode for smooth screen drawing SetBuffer BackBuffer() ; Loop until ESC is pressed While Not KeyHit(1) ; Only update the screen every 300 milliseconds. Change 300 for faster or ; slower screen updates If MilliSecs() > tmrScreen+300 Then Cls ; clear the screen ; Tile the screen with a random frame from our new graphic starting at ; x=0 and y=0 location. TileImage gfxStarfield,0,0,Rnd(9) Flip ; Flip the screen into view tmrScreen=MilliSecs() ; reset the time End If Wend
DrawImage handle,x,y,[frame]
Definicin: Dibuja una imagen o frame de una imagen animada en la pantalla. Descripcin de los Parmetros:
handle = handle de la imagen. x = localizacin x de la pantalla donde se dibujar el grfico y = localizacin y de la pantalla donde se dibujar el grfico. frame = nmero del frame a mostrar (opcional - 0 por defecto)
117
Ejemplo:
; LoadImage and DrawImage example ; Declare a variable to hold the graphic file handle Global gfxPlayer ; Set a graphics mode Graphics 640,480,16 ; Set drawing operations for double buffering SetBuffer BackBuffer() ; Load the image and assign its file handle to the variable ; - This assumes you have a graphic called player.bmp in the ; same folder as this source code gfxPlayer=LoadImage("player.bmp") ; Let's do a loop where the graphic is drawn wherever the ; mouse is pointing. ESC will exit. While Not KeyHit(1) Cls ; clear the screen DrawImage gfxPlayer,MouseX(),MouseY() ; Draw the image! Flip ; flip the image into view and clear the back buffer Wend
DrawImageRect image,x,y,rect_x,rect_y,rect_width,rect_height,[frame]
Definicin:
Dibuja un rea rectangular de una imagen en la localizacin especificada.
Ejemplo:
; DrawImageRect Example ; Turn on graphics mode Graphics 640,480,16 ; Create new empty graphic to store our circle in gfxCircle=CreateImage(50,50) ; Draw the circle image ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1 SetBuffer FrontBuffer()
118 ; We take random sized portions of the circle and put them ; at a random location ... wash, rinse, and repeat DrawImageRect gfxCircle,Rnd(640),Rnd(480),0,0,Rnd(50),Rnd(50),0 Delay 100 Wend
DrawBlockRect image,x,y,rect_x,rect_y,rect_width,rect_height,[frame]
Definicin:
Dibuja un rea rectangular de una imagen en la localizacin especificada sin transparencia.
Ejemplo:
; DrawBlockRect Example ; Turn on graphics mode Graphics 640,480,16 ; Create new empty graphic to store our circle in gfxCircle=CreateImage(50,50) ; Draw the circle image ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1 SetBuffer FrontBuffer() ; Set the screen to white so you can see the transparent areas ClsColor 255,255,255 Cls ; Let's draw portions of the circle randomly While Not KeyHit(1) ; We take random sized portions of the circle and put them ; at a random location ... wash, rinse, and repeat DrawBlockRect gfxCircle,Rnd(640),Rnd(480),0,0,Rnd(50),Rnd(50),0 Delay 100 Wend
DrawBlock image,x,y,[frame]
Definicin:
Dibuja una imagen en una localizacin sin respetar la transparencia.
119
Ejemplo:
; DrawBlock Example ; Turn on graphics mode Graphics 640,480,16 ; Create new empty graphic to store our circle in gfxCircle=CreateImage(50,50) ; Draw the circle image ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1 ; Let's not forget to put the drawing buffer back! SetBuffer BackBuffer() ; Set the CLS color to white ClsColor 255,255,255 ; Let the ; putting While Not Cls DrawBlock Flip Wend user move the circle graphic around a white screen the graphic at the MouseX,Y coordinates KeyHit(1) gfxCircle,MouseX(),MouseY()
TileImage handle,[x],[y],[frames]
Definicin:
Crea un mosaico en la pantalla con una imagen.
Ejemplo:
Ver ImageBuffer
120
Ejemplo:
; Ejemplo TileBlock Graphics 800,600,16 ; Carga una imagen (su localizacin puede cambiar en tu ordenador, en el mo ni siquiera existe, jejeje) gfxBall=LoadImage("C:\Archivos de Programa\Blitz3D\samples\ball.bmp") ; Crea el mosaico sin transparencia TileBlock gfxBall ; Espera que pulses Esc While Not KeyHit(1) Wend
MaskImage handle,red,green,blue
Definicin:
Establece una mscara de imagen o color transparente.
Ejemplo:
Ver Ejemplo LoadAnimImage
HandleImage image,x,y
Definicin:
Establece una nueva localizacin de handle a una imagen existente.
Ejemplo:
;HandleImage Example Graphics 800,600,16 gfxPlayer=LoadImage("player.bmp") HandleImage gfxPlayer,20,20 DrawImage gfxPlayer,0,0 WaitKey
121
MidHandle image
Definicin:
Establece el handle de imagen de la imagen especificada en el centro de la misma.
Ejemplo:
; MidHandle/ImageXHandle()/ImageYHandle()/AutoMidHandle ; Initiate Graphics Mode Graphics 640,480,16 ; Set up the image file handle as a global Global gfxBall ; Load the image - you may need to change the location of the file gfxBall=LoadImage ("C:\Program Files\Blitz Basic\samples\ball.bmp") ; Until the user presses ESC key ... While Not KeyHit(1) Text 0,0,"Default Image Handle for gfxBall... Press ESC ..." Text 0,14,"X handle-" + ImageXHandle(gfxBall) ; Print the location of the image handle x location Text 0,28,"Y handle-" + ImageYHandle(gfxBall) ; Print the location of the image handle y location DrawImage gfxBall,200,200,0 ; draw the image at 200,200 Wend ; Clear the screen Cls ; Set the ball's handle to the center of the image MidHandle gfxBall ; Until the user presses ESC key ... show the new information While Not KeyHit(1) Text 0,0,"New Image Handle for gfxBall... Press ESC ..." Text 0,14,"X handle-" + ImageXHandle(gfxBall) Text 0,28,"Y handle-" + ImageYHandle(gfxBall) DrawImage gfxBall,200,200,0 Wend ; Makes all images load up with their handles in the center of the image AutoMidHandle True Cls ; Load the image again gfxBall=LoadImage ("C:\Program Files\Blitz Basic\samples\ball.bmp") ; Until the user presses ESC key ... show the new information While Not KeyHit(1) Text 0,0,"Automatic image handle of gfxBall... Press ESC ..." Text 0,14,"X handle-" + ImageXHandle(gfxBall) Text 0,28,"Y handle-" + ImageYHandle(gfxBall) DrawImage gfxBall,200,200,0 Wend
122
AutoMidHandle true/false
Definicin:
Automticamente establece un handle de imagen en el centro de cada imagen cargada. Descripcin de los Parmetros: true = imgenes cargadas con el midhandle establecido por defecto false = imgenes cargan con el handle por defecto en 0,0
Ejemplo:
Ver MidHandle
ScaleImage image,xscale#,yscale#
Definicin:
Escala una imagen usando porcentajes.
Ejemplo:
; ScaleImage example ; Set Graphics Mode Graphics 800,600,16 ; Randomize the random seed SeedRnd MilliSecs() ; Load an image to tile (your location might vary) gfxBall=LoadImage("C:\Program Files\Blitz Basic\samples\ball.bmp") ; Scale it randomly from 50% to 150% both x and y ScaleImage gfxBall,Rnd(-2.0,2.0),Rnd(-2.0,2.0) ; Wait for ESC to hit While Not KeyHit(1) DrawImage gfxball,Rnd(800),Rnd(600) VWait Wend
ResizeImage image,width#,height#
Definicin:
Redimensiona una imagen.
123
Ejemplo:
; ResizeImage example ; Set Graphics Mode Graphics 800,600,16 ; Randomize the random seed SeedRnd MilliSecs() ; Load an image to tile (your location might vary) gfxBall=LoadImage("C:\Program Files\Blitz Basic\samples\ball.bmp") ; Size it randomly from 300 to -300 both x and y ResizeImage gfxBall,Rnd(-300,300),Rnd(-300,300) ; Wait for ESC to hit While Not KeyHit(1) DrawImage gfxball,Rnd(800),Rnd(600) VWait Wend
RotateImage image,value#
Definicin:
Rota la imagen en el sentido contrario de las agujas del reloj.
Ejemplo:
; RotateImage/TFormFilter Example ; Turn on graphics mode Graphics 640,480,16 ; Change the 0 to a 1 to see the difference ; between filter on and off. TFormFilter 0 ; Create new empty graphic to store our circle in gfxBox=CreateImage(50,50) ; Draw the box image ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxBox) Color 255,0,0 ; Note the extra space between the box and the edge of the graphic Rect 10,10,30,30,1 SetBuffer FrontBuffer() While Not KeyHit(1) ; Make a copy of the image so we are always using a fresh one each time ; we rotate it. gfxTemp=CopyImage(gfxBox)
124 ; Rotate it a random value and draw it at a random location RotateImage gfxTemp,Rnd(360) DrawImage gfxTemp,Rnd(640),Rnd(480) Wend
TFormImage image,a#,b#,c#,d#
Parmetros:
image - handle de la imagen a# - elemento 1,1 de una matriz de 2x2 b# - elemento 2,1 de una matriz de 2x2 c# - elemento 1,2 de una matriz de 2x2 d# - elemento 2,2 de una matriz de 2x2
Descripcin:
Transforma una imagen basada en una matriz de 2x2. El nico uso real para este comando que no est disponible va ScaleImage o RotateImage es que puedes usarlo para cortar una imagen.
TFormFilter enable
Definicin:
Activa el filtro bilinear en imgenes retorcidas.
Ejemplo:
Ver Ejemplo RotateImage
Ejemplo:
; ImageHeight/ImageWidth Example ; Global, as always, for graphics Global gfxPlayer ; Enter graphics mode and start double buffering Graphics 640,480,16 SetBuffer BackBuffer() ; Load the image-assign the handle to gfxPlayer gfxPlayer=LoadImage("player.bmp") ; Print the image dimensions Print "The image height is: " + ImageHeight(gfxPlayer) Print "The image width is: " + ImageWidth(gfxPlayer) ; Wait until ESC is pressed so you can see the output While Not KeyHit(1) Wend
125
Ejemplo:
Ver ImageWidth
ImageXHandle image
Definicin:
Devuelve la localizacin X del handle de la imagen especificada.
Ejemplo:
Ver MidHandle
ImageYHandle image
Definicin:
Devuelve la localizacin Y del handle de la imagen especificada.
Ejemplo:
Ver MidHandle
ImagesOverlap (image1,x1,y1,image2,x2,y2)
Definicin:
Comprueba si dos grficos se han superpuesto.
126
Ejemplo:
; ImagesOverlap Example ; Turn on graphics mode Graphics 640,480,16 ; Create two new empty graphics to store our circle and box in gfxBox=CreateImage(50,50) gfxCircle=CreateImage(50,50) ; Draw the box image first ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxBox) ; Change drawing color to blue Color 0,0,255 ;Draw our box (note that it has a 10 pixel space around it) Rect 10,10,30,30,1 ; Repeat for the circle graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1 ; Let's not forget to put the drawing buffer back! SetBuffer BackBuffer() ; Locate our box to a random, visible screen location boxX=Rnd(50,610) boxY=Rnd(50,430) ; Repeat the loop until we've had a collision Repeat ; Attach our mouse to the circle to move it circleX=MouseX() circleY=MouseY() ; Standard double buffer technique; clear screen first Cls ; Draw our objects at the designated location DrawImage gfxBox,boxX,boxY DrawImage gfxCircle,circleX,circleY ; Standard double buffer technique; flip after all drawing is done Flip ; We test the locations of our box and circle to see if they have overlapped Until ImagesOverlap (gfxBox,boxX,boxY,gfxCircle,circleX,circleY) ; Loop is over, we must've collided! Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON" ; Can't see the text until we flip .. Flip ; Wait for a mouse click WaitMouse() ; End our graphics mode EndGraphics
ImagesCollide (image1,x1,y1,frame1,image2,x2,y2,frame2)
Definicin:
Comprueba si dos imgenes han colisionado.
127
Ejemplo:
; ImagesCollide Example ; Turn on graphics mode Graphics 640,480,16 ; Create two new empty graphics to store our circle and box in gfxBox=CreateImage(50,50) gfxCircle=CreateImage(50,50) ; Draw the box image first ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxBox) ; Change drawing color to blue Color 0,0,255 ;Draw our box (note that it has a 10 pixel space around it) Rect 10,10,30,30,1 ; Repeat for the circle graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1 ; Let's not forget to put the drawing buffer back! SetBuffer BackBuffer() ; Locate our box to a random, visible screen location boxX=Rnd(50,610) boxY=Rnd(50,430) ; Repeat the loop until we've had a collision Repeat ; Attach our mouse to the circle to move it circleX=MouseX() circleY=MouseY() ; Standard double buffer technique; clear screen first Cls ; Draw our objects at the designated location DrawImage gfxBox,boxX,boxY DrawImage gfxCircle,circleX,circleY ; Standard double buffer technique; flip after all drawing is done Flip ; We test the locations of our box and circle to see if they have pixel collided Until ImagesCollide (gfxBox,boxX,boxY,0,gfxCircle,circleX,circleY,0) ; Loop is over, we must've collided!
128 Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON" ; Can't see the text until we flip .. Flip ; Wait for a mouse click WaitMouse() ; End our graphics mode EndGraphics
RectsOverlap (rect1 X,rect1 Y,rect1 Width,rect1 Height,rect2 X,rect2 Y,rect2 Width,rect2 Height)
Definicin:
Comprueba si dos reas rectangulares se estn superponiendo.
Ejemplo:
; RectsOverlap Example ; Flashing graphics warning! Gets hypnotic ... ; Turn on graphics mode Graphics 640,480,16 ; Double buffering, and randomize the randomizer SetBuffer BackBuffer() SeedRnd MilliSecs() ; Repeat the loop until ESC pressed While Not KeyHit(1) ; Generate a random rectangle rect1X=Rnd(50,610) rect1Y=Rnd(50,430) rect1W=20 rect1H=20 ; And another rect2X=Rnd(50,610) rect2Y=Rnd(50,430) rect2W=20 rect2H=20 ; Clear the screen standard double buffering Cls ; Draw our rectangle2 in random colors Color Rnd(255),Rnd(255),Rnd(255) Rect rect1X,rect1Y,rect1W,rect1H,0 Color Rnd(255),Rnd(255),Rnd(255) Rect rect2X,rect2Y,rect2W,rect2H,0 ; Did they collide? If so, print a message and exit the loop! If RectsOverlap (rect1X,rect1Y,rect1W,rect1H,rect2X,rect2Y,rect2W,rect2H) Then
Ayuda Blitz Basic Text 0,0, "Our boxes finally collided! Press a mouse button..." ; We do a flip here to ensure the text message gets seen too! Flip Exit ; exit the While/Wend loop End If ; Flip the rects into view, wait 1/10th of a sec, repeat Flip Delay 100 Wend ; Wait for a mouse click WaitMouse() ; End our graphics mode EndGraphics
129
Ejemplo:
; ImageRectOverlap Example ; Turn on graphics mode Graphics 640,480,16 ; Create new empty graphic to store our circle in gfxCircle=CreateImage(50,50) ; Draw the circle image ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1 ; Let's not forget to put the drawing buffer back! SetBuffer BackBuffer() Color 0,0,255 ; Locate our box to a random, visible screen location hotX=Rnd(50,610) hotY=Rnd(50,430) hotW=Rnd(20,100) hotH=Rnd(20,100)
130
; Repeat the loop until we've had a collision Repeat ; Attach our mouse to the circle to move it circleX=MouseX() circleY=MouseY() ; Standard double buffer technique; clear screen first Cls ; Draw our rectangle Rect hotX,hotY,hotW,hotH,0 DrawImage gfxCircle,circleX,circleY ; Standard double buffer technique; flip after all drawing is done Flip ; We test the locations of our rectangle area and circle to see if they have overlapped Until ImageRectOverlap (gfxCircle,circleX,circleY,hotX,hotY,hotW,hotH) ; Loop is over, we must've collided! Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON" ; Can't see the text until we flip .. Flip ; Wait for a mouse click WaitMouse() ; End our graphics mode EndGraphics
Ejemplo:
; ImageRectCollide Example ; Turn on graphics mode Graphics 640,480,16 ; Create new empty graphic to store our circle in gfxCircle=CreateImage(50,50) ; Draw the circle image ; Set drawing operations to point to our new empty graphic SetBuffer ImageBuffer(gfxCircle) Color 255,0,0 ; Note the extra space between the circle and the edge of the graphic Oval 10,10,30,30,1
Ayuda Blitz Basic ; Let's not forget to put the drawing buffer back! SetBuffer BackBuffer() Color 0,0,255 ; Locate our box to a random, visible screen location hotX=Rnd(50,610) hotY=Rnd(50,430) hotW=Rnd(20,100) hotH=Rnd(20,100) ; Repeat the loop until we've had a collision Repeat ; Attach our mouse to the circle to move it circleX=MouseX() circleY=MouseY() ; Standard double buffer technique; clear screen first Cls ; Draw our rectangle Rect hotX,hotY,hotW,hotH,0 DrawImage gfxCircle,circleX,circleY ; Standard double buffer technique; flip after all drawing is done Flip ; We test the locations of our rectangle area and circle to see if they have pixel collided Until ImageRectCollide (gfxCircle,circleX,circleY,0,hotX,hotY,hotW,hotH) ; Loop is over, we must've collided! Text 0,0, "WE'VE HAD A COLLISION! PRESS A MOUSE BUTTON" ; Can't see the text until we flip .. Flip ; Wait for a mouse click WaitMouse() ; End our graphics mode EndGraphics
131
TIEMPO Millisecs()
Definicin:
Devuelve el tiempo del sistema en milsimas de segundo.
Ejemplo:
; This prints STILL WAITING! for three seconds then ends. oldTime=MilliSecs() While MilliSecs() < oldTime + 3000 Print "Still waiting!" Wend
Delay milliseconds
Definicin:
Para la ejecucin del programa durante un cierto tiempo.
132
Ejemplo:
; Delay for 5 seconds Delay 5000
CurrentDate$()
Definicin:
Devuelve la actual fecha del sistema.
Ejemplo:
; Print the current date to the screen Print "The date is:" + CurrentDate$()
CurrentTime$()
Definicin:
Devuelve la hora actual del sistema.
Ejemplo:
; Print the current time to the screen Print "The Time is:" + CurrentTime$()
CreateTimer (frequency)
Definicin:
Crea un cronmetro para seguir una frecuencia.
Ejemplo:
; Create the timer to track speed frameTimer=CreateTimer(60) ; Your main screen draw loop While Not KeyHit(1) WaitTimer(frameTimer) ; Pause until the timer reaches 60 Cls ; Draw your screen stuff Flip Wend
133
FreeTimer (timer_variable)
Definicin:
Destruye el timer especificado y libera su memoria.
Ejemplo:
; Create the timer to track speed frameTimer=CreateTimer(60) ; Your main screen draw loop While Not KeyHit(1) WaitTimer(frameTimer) ; Pause until the timer reaches 60 Cls ; Draw your screen stuff Flip Wend ; Kill the timer FreeTimer(frameTimer)
WaitTimer (timer_variable)
Definicin:
Para la ejecucin del programa hasta que el tiempo especificado haya transcurrido.
Ejemplo:
; Crea el timer para controlar la velocidad frameTimer=CreateTimer(60) ; Bucle principal de dibujo While Not KeyHit(1) WaitTimer(frameTimer) ; Para hasta que el timer alcance 60 Cls Flip Wend
Descripcin:
Llama a un procedimiento especfico de la DLL especificada y devuelve el valor entero devuelto por el procedimiento de la DLL. La DLL es llamada a travs de punteros y tamaos de bancos de memoria. El prototipo de una funcin de DLL debera parecerse algo a este ejemplo (Visual C++):
134 extern "C"{ _declspec(dllexport) int _cdecl my_dll_func( const void *in,int in_size,void *out,int out_sz ); }
El bit 'extern "C"' previene el C++ 'destroza-nombres' y el bit _cdecl previene nombre decoracin. Podras llamar a esta funcin usando algo parecido a esto: in_bank=CreateBank(...) out_bank=CreateBank(...) ;poke input parameters into in_bank result=CallDLL( "mydll","my_dll_func",bank1,bank2 ) ;peek output results from out_bank
SystemProperty (property$)
Parmetros:
property$ - propiedad del sistema que quieras conocer
Descripcin:
SystemProperty () devuelve la localizacin del directorio de sistema, que puede ser diferentes en cada ordenador. Nota: no es una buena idea jugar en el directorio Windows o System de un usuario.
Ejemplo:
Print Print Print Print "Localizacin "Localizacin "Localizacin "Localizacin del del del del directorio directorio directorio directorio System: " + SystemProperty ("systemdir") Windows: " + SystemProperty ("windowsdir") de temporales: " + SystemProperty ("tempdir") de Archivos de Programa: " + SystemProperty ("appdir")
CommandLine$()
Definicin:
Lee los parmetros pasados en la lnea de comandos en tiempo de ejecucin.
Ejemplo:
; CommandLine$() Example ; Be sure to use PROGRAM->PROGRAM COMMAND LINE from the ; pull down and put /debug in there to test with. a$=CommandLine$() If a$="/debug" Then Print "Debug mode is on!" debug=1 Else Print "No debugging activated." debug=0 End If
135
ShowPointer
Parmetros:
Ninguno.
Descripcin:
ShowPointer se usa en modos de ventana, y simplemente muestra el puntero del ratn tras haber sido escondido (con HidePointer). No tiene ningn efecto en modos a pantalla completa.
Ejemplo:
Graphics 640, 480, 0, 2 HidePointer Print "Move pointer over window and press a key..." WaitKey ShowPointer Delay 1000
HidePointer
Parmetros:
Ninguno.
Descripcin:
HidePointer se usa cuando se est en modo ventana y simplemente oculta el puntero de Windows cuando se mueve por la ventana del juego. Puedes volver a mostrarlo con ShowPointer. No tiene efecto en modos a pantalla completa.
AppTitle ttulo$[,mensaje_final$]
Definicin:
Establece el ttulo de la barra del programa.
Ejemplo:
; Set the title bar AppTitle "Super Invaders V1.0"
136
RuntimeError message$
Definicin:
Aparece un cuadro de dilogo de error con un mensaje especfico.
Ejemplo:
;There was a problem - raise an error and quit RuntimeError "Installation corrupted. Please reinstall."
DebugLog message
Definicin:
Escribe un mensaje en un informe debug para depurar las aplicaciones.
Ejemplo:
; DebugLog Example ; Let's start graphics mode Graphics 640,480,16 ; Now, let's load an image that doesn't exist! gfxPlayer=LoadImage("noimagefound.jpg") If gfxPlayer=0 Then DebugLog "Player's Graphics failed to load!" End If ; This is supposed to generate an error. Press F9 to see the log! While Not KeyHit(1) DrawImage gfxPlayer,100,100 Wend
Stop
Definicin:
Para el la ejecucin del programa durante la depuracin.
Ejemplo:
; Halt the program and go to the editor/debugger Stop
137
End
Definicin:
Para la ejecucin del programa y sale de l.
Ejemplo:
; If the game is over, then quit if gameOver=1 then End
3D - Categoras
GLOBAL Graphics3D
Parmetros:
ancho ancho de la resolucin de pantalla alto alto de la resolucin de pantalla profundidad (opcional) profundidad de color de la pantalla. Por defecto es el color de mxima profundidad disponible. modo (opcional) modo de pantalla. Por defecto es 0. 0: en ventana (si es posible) en el modo de depuracin, pantalla completa en modo de no depuracin 1: pantalla completa siempre 2. en ventana siempre 3: en ventana/escalada siempre
(ancho,alto[,profundidad,modo])
Descripcin:
Establece el modo de grficos 3D. Este comando debe ejecutarse antes de cualquier otro comando 3D, de otro modo los programas podran dar error. El ancho y el alto establecen la resolucin de la pantalla y los valores ms comunes son 640,480 y 800,600. La resolucin debe ser compatible con la tarjeta 3D y con el monitor que se estn usando. La profundidad establece el modo de color de la pantalla. Si se omite este valor o se establece a 0, se usar la profundidad de color ms alta que haya disponible. Otros valores disponibles normalmente son 16, 24 y 32. El modo de color 16-bit muestra el nmero mnimo de colores, 65536. Los modos de color 24-bit y 32-bit muestran ms de 16 millones de colores y suele dar como resultado una mejor calidad de la imagen, aunque puede dar como resultado programas ms lentos que en 16-bit.
Ejemplo:
; Graphics3D Example ; -----------------; Sets 3D graphics mode Graphics3D 640,480,16,0 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 While Not KeyDown( 1 ) RenderWorld Flip Wend End
138
Dither enable
Parmetros:
enable - true para activar el dithering, false para desactivarlo. Por defecto es true.
Descripcin:
Activa o desactiva el dithering del hardware. El dithering del hardware se usa cuando ejecutamos juegos en modo de color de 16-bit. Debido al hecho de que el modo 16-bit ofrece menos colores de los que el ojo humano distingue, se pueden notar bandas separadas de colores en objetos sombreados. Sin embargo, el dithering del hardware tendr efecto sobre toda la pantalla para dar la impresin de que se estn usando ms colores de los que realmente se usan, y generalmente da mejor impresin. Debido al hecho de que los modos 24-bit y 32-bit ofrecen ms colores de los que el ojo humano puede distinguir, el dithering del hardware se hace bastante ms redundante en estos modos.
Ejemplo:
; Dither Example ; -------------Graphics3D 640,480,16 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() ; Rotate light so that it creates maximum shading effect on sphere RotateEntity light,90,0,0 sphere=CreateSphere( 32 ) PositionEntity sphere,0,0,2 While Not KeyDown( 1 ) ; Toggle dither enable value between true and false when spacebar is pressed If KeyHit( 57 )=True Then enable=1-enable ; Enable/disable hardware dithering Dither enable RenderWorld Text 0,0,"Press spacebar to toggle between Dither True/False" If enable=False Then Text 0,20,"Dither False" Else Text 0,20,"Dither True" Flip Wend End
WBuffer enable
Parmetros:
enable - True para activar el render w-buffering, False para desactivarlo.Por defecto es True para modos de color de 16-bit, y False para 24-bit y 32-bit.
Descripcin:
Activa o desactiva el w-buffering. W-buffering es una tcnica usada para dibujar objetos 3D segn su profundidad por ejemplo, primero los que estn ms lejos de la cmara, despus los que estn ms cerca de la cmara, etc. Normalmente, el z-buffering se usa como estrategia, pero el z-buffer puede ser ligeramente impreciso en modos de 16-bit, por lo que el nivel de precisin es menos que en modos de color de 24bit o 32-bit. Esto significa que en algunas situaciones, los objetos aparecern superponindose unos a otros cuando no debera ocurrir. Para compensar esto, puedes usar el w-buffering. ste es ligeramente ms preciso que el z-buffering, aunque en algunas ocasiones puede ser menos compatible que el z-buffering.
Antialias enable
Parmetros:
enable - true para activar el antialiasing a pantalla completa, false para desactivarlo. Por defecto es false.
139
Descripcin:
Activa o desactiva el antialiasing a pantalla completa. Antialiasing a pantalla completa es una tcnica usada para suavizar la pantalla completa, para que las lneas angulosas sean menos notables. Algunas tarjetas 3D tienen soporte incorporado para el antialiasing a pantalla completa, que permitira activar el efecto sin restar velocidad. Sin embargo, para las tarjetas que no soportan el antialiasing a pantalla completa, activar el efecto podra causar una gran lentitud.
Ejemplo:
; AntiAlias Example ; ----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 sphere=CreateSphere() PositionEntity sphere,0,0,2 While Not KeyDown( 1 ) ; Toggle antialias enable value between true and false when spacebar is pressed If KeyHit( 57 )=True Then enable=1-enable ; Enable/disable antialiasing AntiAlias enable RenderWorld Text 0,0,"Press spacebar to toggle between AntiAlias True/False" If enable=False Then Text 0,20,"AntiAlias False" Else Text 0,20,"AntiAlias True" Flip Wend End
Wireframe enable
Parmetros:
enable - True para activar el render en wireframe, False para desactivarlo. Por defecto es False.
Descripcin:
Activa o desactiva el render wireframe. Esto mostrar las aristas de cada polgono de la pantalla, con las reas no sombreadas. Este modo suele usarse slo para depurar, porque el soporte del controlador es desigual. Por la misma razn no se ofrece soporte para el render wireframe para los entes de polgono individual.
Ejemplo:
; Ejemplo Wireframe ; ----------------Graphics3D 640,480,16 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 sphere=CreateSphere( 32 ) PositionEntity sphere,0,0,2 While Not KeyDown( 1 ) ; Toggle wireframe enable value between true and false when spacebar is pressed
140 If KeyHit( 57 )=True Then enable=1-enable ; Enable/disable wireframe rendering WireFrame enable RenderWorld Text 0,0,"Press spacebar to toggle between Wireframe True/False" If enable=True Then Text 0,20,"Wireframe True" Else Text 0,20,"Wireframe False" Flip Wend End
HWMultiTex activa
Parmetros:
activa - true para activar la multitextura del hardware, false para desactivarlo. Por defecto es true.
Descripcin:
Activa o desactiva la multitextura del hardware. La multitextura es una tcnica usada para mostrar ms de una textura a la vez en un objeto. A veces, el hardware 3D tiene soporte para esto, por lo que usar dos o ms texturas por objeto no causar ms lentitud que usar slo una. Aunque, algunas tarjetas dan problemas con la multitextura del hardware, para estas situaciones tienes la opcin de deshabilitarlo. Cuando no se est usando la textura de hardware, Blitz3D usar su propia tcnica de software, con lo que involucra objetos duplicados que tienen una textura cada uno.
AmbientLight rojo#,verde#,azul#
Parmetros:
rojo# - valor rojo de la luz ambiental verde# - valor verde de la luz ambiental azul# - valor azul de la luz ambiental
Descripcin:
Establece el color de la luz ambiental. Los valores verde, rojo y azul deberan estar en el rango 0-255. El color de la luz ambiental por defecto es 255,255,255. La luz ambiental es el origen de una luz que afecta a todos los puntos de un objeto 3D por igual. Por tanto, solo con una luz ambiental, todos los objetos 3D aparecern absolutamente, no habr sombras. La luz ambiental se usa para proporcionar un nivel de luz, antes de aadir otras luces que proporcionen un efecto de luz realista. Un nivel de luz ambiental de 0,0,0 dar como resultado un ambiente sin luz.
Ejemplo:
; AmbientLight Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() sphere=CreateSphere( 32 ) PositionEntity sphere,-2,0,5 cone=CreateCone( 32 ) PositionEntity cone,2,0,5 ; Set initial ambient light colour values red#=127 green#=127 blue#=127 While Not KeyDown( 1 ) ; Change red, green, blue values depending on key pressed If KeyDown( 2 )=True And red#>0 Then red#=red#-1
Ayuda Blitz Basic If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 3 4 5 6 7 )=True )=True )=True )=True )=True And And And And And red#<255 Then red#=red#+1 green#>0 Then green#=green#-1 green#<255 Then green#=green#+1 blue#>0 Then blue#=blue#-1 blue#<255 Then blue#=blue#+1
141
; Set ambient light using red, green, blue values AmbientLight red#,green#,blue# RenderWorld Text Text Text Text Flip Wend End 0,0,"Press keys 1-6 to change AmbientLight red#,green#,blue# values 0,20,"Ambient Red: "+red# 0,40,"Ambient Green: "+green# 0,60,"Ambient Blue: "+blue#
ClearCollisions
Parmetros:
Ninguno.
Descripcin:
Limpia la lista de informacin de colisiones. Siempre que se utiliza el comando Collisions para activar las colisiones entre dos tipos de ente diferentes, la informacin se aade a la lista de colisiones. Este comando limpia esa lista, por tanto no se detectar ninguna colisin hasta que se use de nuevo el comando Collisions. El comando no limpiar la informacin de colisin del ente. Por ejemplo, el radio del ente, tipo, etc.
Ejemplo:
; ClearCollisions Example ; ----------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() sphere=CreateSphere( 32 ) PositionEntity sphere,-2,0,5 cone=CreateCone( 32 ) EntityType cone,type_cone PositionEntity cone,2,0,5 ; Set collision type values type_sphere=1 type_cone=2 ; Set up sphere collision data EntityRadius sphere,1 EntityType sphere,type_sphere ; Set up cone collision data EntityType cone,type_cone ; Enable collisions between type_sphere and type_cone, with sphere->polygon method and slide response Collisions type_sphere,type_cone,2,2 While Not KeyDown( 1 ) x#=0 y#=0 z#=0
142 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=-0.1 205 )=True Then x#=0.1 208 )=True Then y#=-0.1 200 )=True Then y#=0.1 44 )=True Then z#=-0.1 30 )=True Then z#=0.1
MoveEntity sphere,x#,y#,z# ; If spacebar pressed then clear collisions If KeyHit( 57 )=True Then ClearCollisions ; Perform collision checking UpdateWorld RenderWorld Text 0,0,"Use cursor/A/Z keys to move sphere" Text 0,20,"Press spacebar to use ClearCollisions command" Flip Wend End
Collisions orig_tipo,dest_tipo,mtodo,respuesta
Parmetros:
orig_tipo tipo de ente para comprobar si colisiona. dest_tipo tipo de ente con el que colisiona. mtodo mtodo de deteccin de colisin. 1: colisin de esfera a esfera 2: colisin de esfera a polgono 3: colisin de esfera a caja respuesta lo que hace el ente de orig_tipo cuando ocurre la colisin. 1: parar 2: deslizarse1 deslizamiento completo en la colisin 3: deslizarse2 desliza al ente hacia abajo en una cuesta
Descripcin:
Activa las colisiones entre dos tipos distintos de entes. Los tipos de ente son simplemente nmeros que se asignan a un ente usando EntityType. Blitz utiliza los tipos de entes para comprobar las colisiones entre todos los entes que tienen esos tipos de ente. Blitz tiene varias formas de comprobar las colisiones, como demuestra el parmetro mtodo. Sin embargo, la colisin comprobada es siempre la de una esfera contra algo. Para que Blitz pueda saber el tamao del ente de origen, se debe asignar primero un radio del ente al ente de origen utilizando EntityRadius. En el caso de detectar una colisin teniendo seleccionado el mtodo 1 (esfera a esfera), los entes de destino implicados en la colisin debern tener tambin asignado un EntityRadius. En el caso de estar seleccionado el mtodo 3 (esfera a caja), los entes de destino necesitarn tener asignado un EntityBox. El mtodo 2 (esfera a polgono) no requiere que el ente de destino tenga nada asignado. Blitz no solo comprueba las colisiones, sino que tambin acta sobre ellas cuando las detecta, como demuestra el parmetro respuesta. Hay tres opciones cuando se da esta situacin. Se puede escoger entre hacer al ente detenerse, deslizarse o simplemente hacer que se deslice cuesta abajo. Todas las colisiones y sus respuestas se ejecutan cuando se llama a UpdateWorld. Finalmente, cada vez que se utiliza el comando Collision, la informacin de la colisin se aade a una lista de informacin de colisiones. Esta puede borrarse utilizando el comando ClearCollisions.
Ejemplo:
; Collisions Example ; -----------------Graphics3D 640,480 SetBuffer BackBuffer() ; Set collision type values type_character=1 type_scenery=2 camera=CreateCamera() RotateEntity camera,45,0,0
Ayuda Blitz Basic PositionEntity camera,0,15,-10 light=CreateLight() RotateEntity light,45,0,0 ; Create sphere 'character' sphere=CreateSphere( 32 ) EntityRadius sphere,1 EntityType sphere,type_character PositionEntity sphere,0,7,0 ; Create cube 'scenery' cube=CreateCube() EntityRadius cube,1 EntityType cube,type_scenery PositionEntity cube,0,-5,0 EntityColor cube,127,0,0 ScaleEntity cube,10,10,10 ; Create cylinder 'scenery' cylinder=CreateCylinder( 32 ) ScaleEntity cylinder,2,2,2 EntityColor cylinder,255,0,0 EntityType cylinder,type_scenery PositionEntity cylinder,-4,7,-4 ; Create cone 'scenery' cone=CreateCone( 32 ) ScaleEntity cone,2,2,2 EntityColor cone,255,0,0 EntityType cone,type_scenery PositionEntity cone,4,7,-4 ; Create prism 'scenery' prism=CreateCylinder( 3 ) ScaleEntity prism,2,2,2 EntityColor prism,255,0,0 EntityType prism,type_scenery PositionEntity prism,-4,7,4 RotateEntity prism,0,180,0 ; Create pyramid 'scenery' pyramid=CreateCone( 4 ) ScaleEntity pyramid,2,2,2 EntityColor pyramid,255,0,0 EntityType pyramid,type_scenery RotateEntity pyramid,0,45,0 PositionEntity pyramid,4,7,4 ; Set collision method and response values method=2 response=2 method_info$="sphere-to-polygon" response_info$="slide1" While Not KeyDown( 1 ) x#=0 y#=0 z#=0 If If If If KeyDown( KeyDown( KeyDown( KeyDown( 203 205 208 200 )=True )=True )=True )=True Then Then Then Then x#=-0.1 x#=0.1 z#=-0.1 z#=0.1
143
144 ; Change collision method If KeyHit(50)=True method=method+1 If method=4 Then method=1 If method=1 Then method_info$="sphere-to-sphere" If method=2 Then method_info$="sphere-to-polygon" If method=3 Then method_info$="sphere-to-box" EndIf ; Change collision response If KeyHit(19)=True response=response+1 If response=4 Then response=1 If response=1 Then response_info$="stop" If response=2 Then response_info$="slide1" If response=3 Then response_info$="slide2" EndIf ; Enable Collions between type_character and type_scenery Collisions type_character,type_scenery,method,response ; Perform collision checking UpdateWorld RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor keys to move sphere" 0,20,"Press M to change collision Method (currently: "+method_info$+")" 0,40,"Press R to change collision Response (currently: "+response_info$+")" 0,60,"Collisions type_character,type_scenery,"+method+","+response
UpdateWorld [veloc_anim#]
Parameters: veloc_anim# (opcional) - un control general de la velocidad de las animaciones. Por defecto vale 1. Descripcin:
Anima todos los entes del mundo, y realiza la comprobacin de colisiones. El parmetro opcional veloc_anim# permite afectar a la velocidad de las animaciones de todos los entes a la vez. Un valor de 1 animar los entes a su velocidad de animacin normal, un valor de 2 animar los entes al doble de su velocidad normal de animacin, y as sucesivamente. Para mejores resultados usa este comando una vez en el bucle principal, justo antes de RenderWorld.
CaptureWorld
Parmetros:
Ninguno.
Descripcin:
Hace una captura de la posicin y orientacin de cada uno de los entes del mundo. Esta captura puede usarse luego con RenderWorld para renderizar los entes en el punto entre sus posiciones capturadas y sus posiciones actuales. Ver RenderWorld para saber ms sobre cmo y porqu se hace.
RenderWorld [tween#]
Parmetros:
tween# - por defecto es 1.
145
Descripcin:
Renderiza todos los entes en un mundo. El parmetro opcional tween puede usarse para renderizar todos los entes en un punto cualquiera entre sus posiciones capturadas y su posicin actual. Un valor tween de 0 renderizar los entes a su posicin capturada. Un valor de 1 renderizar los entes a su posicion actual. Pueden usarse otros valores para la interpolacin. Por defecto es 1. Tweening es una tcnica usada para permitir actualizar la lgica los juegos un nmero fijo de veces, por ejemplo, 30 mientras interpolamos con Blitz3D en estos juegos los actualiza tantas frames por Segundo como puede, por ejemplo 60+, con cada frame diferente al final. Esto resulta en un juego en el que solamente tiene que tener su lgica de juego actualizada a la mitad de sus renderizados por Segundo, liberando tiempo de CPU, mientras al mismo tiempo el juego se ejecuta de la mejor manera posible en la mquina de cada uno. Renderizar con tweening es una tcnica bastante avanzada, y no es necesaria usarla, por lo tanto no te preocupes si no lo entiendes demasiado. Mira la demo del castillo incluida en la carpeta mak (nickname de Mark Sibly, autor de Blitz3D) en la seccin de ejemplos de Blitz3D para una demostracin del renderizado con tweening.
ClearWorld [entes][,pinceles][,texturas]
Parmetros:
Entes true para borrar los entes, false para no hacerlo Pinceles true para borrar los pinceles, false para no hacerlo Texturas true para borrar las texturas, false para no hacerlo
Descripcin:
Borra todos los entes, pinceles y/o texturas de un mundo. Se usa cuando el nivel de un juego se ha terminado y se desea borrar todo para prepararse para cargar nuevos entes/pinceles/texturas sin tener que borrar cada ente/pincel/textura individualmente. Ver tambin: FreeEntity, FreeBrush, FreeTexture.
LoaderMatrix extensin_archivo$,xx#,xy#,xz#,yx#,yy#,yz#,zx#,zy#,zz#
Parmetros:
Extension_archivo$ - extensin del archivo 3d, por ejemplo ".x",".3ds" xx# - elemento 1,1 de una matriz de 3x3 xy# - elemento 2,1 de una matriz de 3x3 xz# - elemento 3,1 de una matriz de 3x3 yx# - elemento 1,2 de una matriz de 3x3 yy# - elemento 2,2 de una matriz de 3x3 yz# - elemento 3,2 de una matriz de 3x3 zx# - elemento 1,3 de una matriz de 3x3 zy# - elemento 2,3 de una matriz de 3x3 zz# - elemento 3,3 de una matriz de 3x3
Descripcin:
Establece una matriz de archivos 3d cargados con la extensin de archivo especificada. Puede usarse para cambiar el sistema de coordenadas cuando se cargan. Por defecto, se usa el siguiente cargador de matrices: LoaderMatrix "x",1,0,0,0,1,0,0,0,1 ; sin cambios en el sistema de coordenadas LoaderMatrix "3ds",1,0,0,0,0,1,0,1,0 ; intercambia los ejes y/z Puedes usar LoaderMatrix para invertir mallas/animaciones si es necesario, por ejemplo: LoaderMatrix "x",-1,0,0,0,1,0,0,0,1 ; invierte las coordenadas x para los archivos ".x" LoaderMatrix "3ds",-1,0,0,0,0,-1,0,1,0 ; intercambia y/z, anula x/z para archivos ".3ds"
TrisRendered()
Parmetros:
Ninguno.
Descripcin:
Devuelve el nmero de tringulos renderizados durante el ltimo RenderWorld. til para depurar - para ver si ests mostrando muchos o pocos polgonos.
Ejemplo:
; TrisRendered Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,0,-2 light=CreateLight() RotateEntity light,90,0,0
146 segs=Rand( 2,16 ) sphere=CreateSphere(segs) While Not KeyDown( 1 ) If KeyHit( 57 )=True FreeEntity sphere segs=Rand( 2,16 ) sphere=CreateSphere( segs ) EndIf RenderWorld Text 0,0,"Press space to create a sphere with a random segments value" ; Display triangles rendered Text 0,20,"Triangles Rendered: "+TrisRendered() Flip Wend End
Descripcin:
Crea una textura y devuelve su puntero. El ancho y el alto son el tamao de la textura. Nota que el tamao actual de la textura puede ser diferente del ancho y alto requeridos, ya que diferentes tipos de hardware 3D soportan diferentes tamaos de texturas. El parmetro opcional flags permite aplicar ciertos efectos a la textura. Los pueden aadirse para combinar dos o ms efectos, por ejemplo 3 (1+2) = textura con color y mapas alfa. Aqu tienes algunas descripciones de los flags: 1: Color mapa de color, lo que ves es lo que obtienes. 2: Alfa mapa de alfa. Si una imagen contiene un mapa de alfa, este se usar para hacer ciertas reas de la textura transparente. A parte de esto, el mapa de color podr usarse como un mapa alfa. Con los mapas alfa, las reas oscuras siempre equivalen a transparencias altas, las reas iluminadas equivalen a baja transparencia. 4: Oculta todas las reas de una textura coloreada 0,0,0 no se dibujarn en la pantalla. 8: Mipmapped versin de bajo detalle de la textura que se usar en grandes distancias. Da como resultado una apariencia borrosa. 16: Clamp u coordenada u de la textura anclada. Evita que el plegado de la textura. 32: Clamp v coordenada v de la textura anclada. Evita que el plegado de la textura. 64: mapa de reflexin esfrica mapa de ambiente, para una apariencia brillante. Una vez que se haya creado una textura, se usar SetBuffer TextureBuffer para dibujarla. Aunque, para mostrar grficos 2D en una textura, normalmente es ms rpido dibujarlos a una imagen y luego copiarlos al buffer de la textura (texturebuffer), y para mostrar grficos 3D en una textura, la nica opcin es copiar desde el backbuffer al buffer de la textura. Ver tambin: LoadTexture, LoadAnimTexture.
Ejemplo:
; CreateTexture Example ; --------------------Graphics3D 640,480 SetBuffer BackBuffer()
Ayuda Blitz Basic camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Create texture of size 256x256 tex=CreateTexture(256,256) ; Set buffer - texture buffer SetBuffer TextureBuffer(tex) ; Clear texture buffer with background white color ClsColor 255,255,255 Cls ; Draw text on texture font=LoadFont("arial",24) SetFont font Color 0,0,0 Text 0,0,"This texture" Text 0,40,"was created using" : Color 0,0,255 Text 0,80,"CreateTexture()" : Color 0,0,0 Text 0,120,"and drawn to using" : Color 0,0,255 Text 0,160,"SetBuffer TextureBuffer()" ; Texture cube with texture EntityTexture cube,tex ; Set buffer - backbuffer SetBuffer BackBuffer() While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
147
LoadTexture ( archivo$[,flags] )
Parmetros:
archivo$ - nombre del archive de imagen que se usar como textura flags (opcional) flag de la textura: 1: Color 2: Alfa 4: Oculto 8: Mipmapped 16: Clamp U 32: Clamp V 64: mapa de reflexin esfrica
148
Descripcin:
Carga una textura desde un archive de imagen y devuelve el puntero de la textura. El parmetro opcional flags permite aplicar ciertos efectos a la textura. Los flags se pueden aadir para combinar dos o ms efectos, por ejemplo 3 (1+2)= textura con color y mapas alfa. Pequea descripcin de los flags: 1: Color color del mapa, lo que ves es lo que obtienes. 2: Alfa mapa alfa. Si una imagen contiene un mapa alfa, este se usar para hacer transparentes ciertas reas de la textura. A parte de esto, el mapa de color se usar como un mapa alfa. En los mapas alfa, las reas oscuras equivalen a una alta transparencia, las reas iluminadas equivalen a una baja transparencia. 4: Oculta todas las reas de una textura coloreadas 0,0,0 no se dibujarn en la pantalla. 8: Mipmapped version de bajo detalle de la textura, se usar para distancias altas. El resultado es una apariencia suavizada y borrosa 16: Clamp u anclar textura en coordenada u. Evita el plegado de la textura. 32: Clamp v anclar textura en coordenada v. Evita el plegado de la textura. 64: mapa de reflexin esfrica mapa de ambiente, para una apariencia ms brillante Algo a tener en cuenta cuando aplicamos flags de texturas al cargar una textura es que la textura puede tener ya ciertos flags aplicados mediante el comando TextureFilter. El valor por defecto del comando TextureFilter es 9 (1+8), que es una textura coloreada y mipmapped. Esto no se puede controlar mediante el parmetro flags del comando LoadTexture si se desea eliminar los filtros ser necesario usar el comando ClearTextureFilters. Ver tambin: CreateTexture, LoadAnimTexture.
Ejemplo:
; LoadTexture Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture("../media/b3dlogo.jpg") ; Texture cube with texture EntityTexture cube,tex While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
LoadAnimTexture ( archivo$,flags,ancho_frame,alto_frame,primer_frame,contar_frame )
Parmetros:
archivo$ - nombre del archive con los frames de la animacin situados de izquierda a derecha y de arriba a abajo flags flag de la textura: 1: Color 2: Alfa 4: Oculta 8: Mipmapped
Ayuda Blitz Basic 16: Clamp U 32: Clamp V 64: Mapa de reflexin esfrica ancho_frame ancho de cada frame de animacin alto_frame alto de cada frame de animacin primer_frame el primer frame que se usar como frame de animacin. contar_frame el nmero de frames que se usar
149
Descripcin:
Carga una secuencia de frames de animacin en una textura. Ver tambin: CreateTexture, LoadTexture.
FreeTexture textura
Parmetros:
textura puntero de la textura
Descripcin:
Libera una textura. Esto permitir que la memoria que antes estaba ocupada que de libre para usarse en otros propsitos. Liberar una textura significa que no podrs volver a usarla de nuevo; aunque los entes que ya estn texturizados no perdern la textura.
Ejemplo:
; FreeTexture Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture("../media/b3dlogo.jpg") ; Texture cube with texture EntityTexture cube,tex While Not KeyDown( 1 ) ; If spacebar pressed then free texture If KeyHit( 57 )=True Then FreeTexture tex pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
TurnEntity cube,pitch#,yaw#,roll# RenderWorld Text 0,0,"Press spacebar to free texture" Text 0,20,"As you can see this will not effect already textured entities" Flip Wend End
150
TextureBlend textura,mezcla
Parmetros:
textura nombre de la textura mezcla modo de mezcla de la textura 0: textura desactivada 1: alfa 2: mltiple (por defecto) 3: aadir
Descripcin:
Establece el modo de mezcla para una textura. Se usa con multitextura para controlar como la textura se combina con otras texturas.
TextureCoords textura,coordenadas
Parmetros:
textura nombre de la textura coordenadas 0: las coordenadas UV (ultravioletas) estn establecidas de primeras en los vrtices (por defecto) 1: las coordenadas UV (ultravioletas) estn establecidas de segundas en los vrtices.
Descripcin:
Establece el modo de coordinar las texturas para una textura. Esto determina donde se usan los valores UV para buscar la procedencia de una textura.
ScaleTexture textura,u_escala#,v_escala#
Parmetros:
textura nombre de la textura u_escala# - escala u v_escala# - escala v
Descripcin:
Escala una textura por un nmero absoluto. Tendr efecto inmediato sobre todos los objetos que estn usando la textura.
Ejemplo:
; ScaleTexture Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture( "media/b3dlogo.jpg" ) ; Texture cube EntityTexture cube,tex ; Set initial uv scale values u_scale#=1 v_scale#=1 While Not KeyDown( 1 ) ; Change uv If KeyDown( If KeyDown( If KeyDown( scale values depending on key pressed 208 )=True Then u_scale#=u_scale#-0.01 200 )=True Then u_scale#=u_scale#+0.01 203 )=True Then v_scale#=v_scale#-0.01
Ayuda Blitz Basic If KeyDown( 205 )=True Then v_scale#=v_scale#+0.01 ; Scale texture ScaleTexture tex,u_scale#,v_scale# TurnEntity cube,0.1,0.1,0.1 RenderWorld Text 0,0,"Use cursor keys to change uv scale values" Text 0,20,"u_scale#="+u_scale# Text 0,40,"v_scale#="+v_scale# Flip Wend End
151
PositionTexture textura,posicin_u#,posicin_v#
Parmetros:
textura puntero de la textura posicin_u# - posicin u de la textura posicin_v# - posicin v de la textura
Descripcin:
Posiciona una textura en una posicin absoluta. Tendr un efecto inmediato en todos los objetos que usen la textura. Posicionar una textura se usa para realizar un scroll de textura, como por ejemplo agua, etc.
Ejemplo:
; PositionTexture Example ; ----------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture( "media/b3dlogo.jpg" ) ; Texture cube EntityTexture cube,tex ; Set initial uv position values u_position#=1 v_position#=1 While Not KeyDown( 1 ) ; Change uv If KeyDown( If KeyDown( If KeyDown( If KeyDown( position values 208 )=True Then 200 )=True Then 203 )=True Then 205 )=True Then depending on key pressed u_position#=u_position#-0.01 u_position#=u_position#+0.01 v_position#=v_position#-0.01 v_position#=v_position#+0.01
152 TurnEntity cube,0.1,0.1,0.1 RenderWorld Text 0,0,"Use cursor keys to change uv position values" Text 0,20,"u_position#="+u_position# Text 0,40,"v_position#="+v_position# Flip Wend End
RotateTexture textura,ngulo#
Parmetros:
textura puntero de la textura ngulo# - ngulo absoluto de rotacin de la textura
Descripcin:
Rota una textura. Tendr efecto inmediato sobre todos los objetos en los que se usa la textura. Rotar una textura se usa mayormente para realizar el efecto remolino en texturas, como el humo, etc.
Ejemplo:
; RotateTexture Example Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture( "media/b3dlogo.jpg" ) ; Texture cube EntityTexture cube,tex ; Set initial texture angle value angle#=1 While Not KeyDown( 1 ) ; Change texture angle value depending on key pressed If KeyDown( 205 )=True Then angle#=angle#-1 If KeyDown( 203 )=True Then angle#=angle#+1 ; Rotate texture RotateTexture tex,angle# TurnEntity cube,0.1,0.1,0.1 RenderWorld Text 0,0,"Use left and right cursor keys to change texture angle value" Text 0,20,"angle#="+angle# Flip Wend End
153
TextureWidth (textura )
Parmetros:
textura puntero de la textura
Descripcin:
Devuelve el ancho de una textura.
TextureHeight ( textura )
Parmetros:
textura puntero de la textura
Descripcin:
Devuelve el alto de una textura.
TextureBuffer ( textura[,frame] )
Parmetros:
textura puntero de la textura frame (opcional) frame (escena) de la textura
Descripcin: Devuelve el puntero del buffer dibujado de una textura. Se puede usar con SetBuffer para realizar operaciones de dibujo 2D a la textura, aunque normalmente es ms rpido dibujar una imagen, y copiar el buffer de la imagen a travs del buffer de la textura usando CopyRect. No se puede renderizar 3D a un buffer de una textura, el 3D solo se puede renderizar al Back Buffer. Para mostrar grficos 3D en una textura, usa CopyRect para copiar el contenido del back buffer a un buffer de una textura. Ejemplo:
; TextureBuffer Example ; --------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Create texture of size 256x256 tex=CreateTexture(256,256) ; Set buffer - texture buffer SetBuffer TextureBuffer(tex) ; Clear texture buffer with background white color ClsColor 255,255,255 Cls ; Draw text on texture font=LoadFont("arial",24) SetFont font Color 0,0,0 Text 0,0,"This texture" Text 0,40,"was created using" : Color 0,0,255 Text 0,80,"CreateTexture()" : Color 0,0,0 Text 0,120,"and drawn to using" : Color 0,0,255 Text 0,160,"SetBuffer TextureBuffer()" ; Texture cube with texture EntityTexture cube,tex
154 ; Set buffer - backbuffer SetBuffer BackBuffer() While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
ClearTextureFilters
Parmetros:
Ninguno.
Descripcin:
Borra la lista actual de filtros de textura.
TextureFilter match_text$,flags
Parmetros:
match_text$ - texto que, si se encuentra en el nombre del fichero de la textura, activar ciertos filtros. flags filtro del flags
Descripcin:
Aade un filtro de textura. A cualquier textura cargada que contenga el texto especificado en match_text$ se le aadir el flags suministrado. Esto se utiliza mayormente cuando se carga una malla. Por defecto se usa el siguiente filtro de la textura: TextureFilter "",1+8. Esto significa que todas las texturas cargadas tendrn el color y el mapeado por defecto.
Descripcin:
Crea un pincel y devuelve el puntero de un pincel. Los valores verde, rojo y azul permiten establecer el color del pincel. Los valores deberan estar en el rango 0-255. Si se omiten los valores, por defecto son 255. Un pincel es una coleccin de propiedades como Color, Alfa, Brillo, Textura, etc que se almacenan como parte de un pincel. Entonces todas estas propiedades pueden aplicarse a un ente, malla o superficie a la vez utilizando PaintEntity, PaintMesho PaintSurface. Cuando creamos nuestra propia malla, si lo deseamos podemos hacer que una determinada superficie parezca diferente a otra, es entonces cuando necesitaremos usar los pinceles para pintar superficies individuales. Usando comandos como EntityColor, EntityAlpha aplicaremos el efecto a todas las superficies a la vez, algo que tal vez no deseemos hacer. Ver tambin: LoadBrush.
155
Ejemplo:
; CreateBrush Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture("../media/b3dlogo.jpg") ; Create brush brush=CreateBrush() ; Apply texture to brush BrushTexture brush,tex ; And some shininess BrushShininess brush,1 ; Paint mesh with brush PaintMesh cube,brush While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
LoadBrush ( archivo$[,flags][,escala_u][,escala_v]
Parmetros:
archivo$ - nombre del archive flags flags del pincel flags (opcional) se pueden aadir flags para combinar efectos: 1: Color 2: Alfa 4: Oculto 8: Mipmapped 16: Clamp U 32: Clamp V 64: mapa de reflexin esfrica escala_u escala u del pincel escala_v escala v del pincel
156
Descripcin:
Crea un pincel, le asigna una textura y devuelve el puntero del pincel.
FreeBrush pincel
Parmetros:
pincel puntero del pincel
Descripcin:
Libera un pincel.
BrushColor brush,rojo#,verde#,azul#
Parmetros:
brush puntero del pincel rojo# - valor rojo del pincel verde# - valor verde del pincel azul# - valor azul del pincel
Descripcin:
Establece el color de un pincel. Los valores verde, rojo y azul deberan estar en el rango 0-255. El color por defecto del pincel es 255,255,255. Por favor, nota que si se est usando EntityFX o BrushFX flag 2 el color del pincel no tendr efecto y se usarn en su lugar los colores de los vrtices.
Ejemplo:
; BrushColor Example Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Create brush brush=CreateBrush() ; Set brush color BrushColor brush,0,0,255 ; Paint mesh with brush PaintMesh cube,brush While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
157
BrushAlpha brush,alpha#
Parmetros:
brush puntero del pincel alpha# - nivel de alfa para el pincel
Descripcin:
Establece el nivel de alfa para el pincel. El valor de alpha# debera estar en el rango 0-1. El valor por defecto del alfa del pincel es 1. El nivel de alfa es como es de transparente un ente. Un valor de 1 significar que el ente no es transparente, es decir, opaco. Un valor de 0 significar que el ente es completamente transparente, es decir, invisible. Los valores entre 0 y 1 causarn variaciones en la transparencia segn el nmero, se usa para imitar la apariencia de algunos objetos como el cristal y el hielo. Un valor del alfa del pincel de 0 es especialmente prctico, porque Blitz3D no renderizar entes con dicho valor, pero los incluir en las colisiones de los entes. Es diferente a HideEntity, que no incluye los entes en las colisiones.
BrushShininess brush,brillo#
Parmetros:
brush puntero del pincel brillo# - brillo del pincel
Descripcin:
Establece el reflejo del brillo de un pincel. El valor brillo# debera estar en el rango 0-1. El valor por defecto del brillo es 0. El brillo es como brillan ciertas reas de un objeto cuando la luz les ilumina directamente. Establecer el valor del brillo en 1 para la mitad superior de una esfera, combinado con la creacin de una luz iluminando en su direccin, dar la apariencia de una bola de billar brillante.
BrushTexture brush,textura[,frame][,ndice]
Parmetros:
brush puntero del pincel textura textura a tratar frame (opcional) frame de la textura. Por defecto es 0. ndice (opcional) ndice de la textura. Por defecto es 0.
Descripcin:
Asigna una textura a un pincel. El parmetro opcional frame especifica que frame de la animacin, si existe alguno, debera asignarse al pincel. El parmetro opcional ndice especifica la capa de la textura a la que debera asignarse la textura. Los pinceles tienen cuatro capas de textura, 0-3 inclusives.
Ejemplo:
Ver Ejemplo CreateBrush
BrushBlend brush,blend
Parmetros:
brush puntero del pincel blend mezcla: 1: alfa 2: multiplicar (por defecto) 3: aadir
Descripcin:
Establece el modo de mezcla de un pincel.
BrushFX brush,fx
Parmetros:
brush puntero del pincel fx 1: brillo completo 2: usa los colores de los vrtices en lugar del color del pincel 4: flatshaded 8: desactivar niebla
158
Descripcin:
Establece los efectos miscelnea de un pincel. Pueden aadirse flags para combinar dos o ms efectos, especificando un flag de 3(1+2) resultar un brillo completo y un pincel con el color de los vrtices.
Descripcin:
Crea una malla y devuelve el puntero de la malla.
LoadMesh ( archivo$[,padre] )
Parmetros:
archivo$ - nombre del archive de la malla padre (opcional) ente padre de la malla
Descripcin:
Carga una malla desde un archivo .x o .3ds y devuelve el puntero de la malla. Cualquier informacin de la animacin y de su jerarqua que est en el archivo ser ignorada. Usa LoadAnimMesh para conservar la informacin de la animacin y de su jerarqua. El parmetro opcional padre permite especificar un ente padre para la malla, de forma que cuando se mueve el padre, la malla hija se mueve con l. Aunque esta relacin slo se da en un sentido, aplicar comandos de movimiento a un hijo no afectar al padre. Especificar un ente padre crear la malla en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: LoadAnimMesh.
Ejemplo:
; LoadMesh Example Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 drum=LoadMesh("media/oil-drum/oildrum.3ds") PositionEntity drum,0,0,MeshDepth(drum)*2 While Not KeyDown( 1 ) RenderWorld Flip Wend End
159
LoadAnimMesh ( archivo$[,padre] )
Parmetros:
archivo$ - nombre del archive de la malla padre ente padre de la malla
Descripcin:
Carga una malla desde un archivo .x o .3ds y devuelve el puntero de la malla. Cualquier informacin de la animacin y su jerarqua del archivo ser retenida (si est presente en el archivo!).
CreateCube( [padre] )
Parmetros:
padre (opcional) ente padre del cubo
Descripcin:
Crea una malla/ente cubo y devuelve su puntero. Un cubo se extender de -1,-1,-1 to +1,+1,+1. El parmetro opcional padre permite especificar un ente padre para el cubo para que cuando el padre sea movido, el cubo hijo se mueva con l. Aunque esta relacin solo se da en un sentido, aplicar un comando de movimiento a un hijo no afectar al padre. Especificar un ente padre dar como resultado que el cubo se cree en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: CreateSphere, CreateCylinder, CreateCone.
Ejemplo:
; CreateCube Example ; -----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Create cube cube=CreateCube() PositionEntity cube,0,0,5 While Not KeyDown( 1 ) RenderWorld Flip Wend End
CreateSphere ( [segmentos][,padre] )
Parmetros:
segmentos (opcional) detalle de la esfera. Por defecto es 8. padre (opcional) ente padre de la esfera
Descripcin:
Crea una malla/ente esfera y devuelve su puntero. La esfera se centrar en 0,0,0 y tendr un radio de 1. El valor de los segmentos debe estar en el rango 2-100 inclusive, aunque esto slo se comprueba en el modo de depuracin. Un error muy comn es dejar el modo de depuracin apagado y especificar un parmetro padre (normalmente un nmero de ocho cifras en la direccin de la memoria) en lugar del valor de los segmentos. Como el nmero de polgonos usado para crear la esfera es exponencialmente proporcional al valor de los segmentos, esto dar como resultado que Blitz intente crear una esfera con un nmero inimaginable de polgonos! Dependiendo de lo afortunado que seas, tu computador se colgar. Ejemplo de valores de segmentos: 8: 224 polgonos nmero mnimo de polgonos para una esfera 16: 960 polgonos esfera suavizada en distancias medias-altas 32: 3968 polgonos esfera suavizada en distancias cortas El parmetro opcional padre permite especificar un ente padre para la esfera, de forma que cuando el ente padre se mueve, la esfera hija se mover con l. Aunque esta relacin slo se da en un sentido, aplicar un comando de movimiento al hijo no tendr efecto sobre el padre. Especificar un ente padre har que la esfera se cree en la posicin 0,0,0 en lugar de en la posicin de ente padre. Ver tambin: CreateCube, CreateCylinder, CreateCone.
160
Ejemplo:
; CreateSphere Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Create sphere sphere=CreateSphere() PositionEntity sphere,0,0,5 While Not KeyDown( 1 ) RenderWorld Flip Wend End
CreateCylinder ( [segmentos][,padre][,slido] )
Parmetros:
segmentos (opcional) detalle del cilindro. Por defecto es 8. padre (opcional) ente padre del cilindro slido (opcional) - true para un cilindro, false para un tubo. Por defecto es true.
Descripcin:
Crea una malla/ente cilindro y devuelve su puntero. El cilindro se centrar en 0,0,0 y tendr un radio de 1. El valor del segmento debe estar en el rango 3-100 inclusive, aunque esto slo se comprueba en el modo de depuracin. Un error muy comn es dejar el modo de depuracin apagado y especificar un parmetro padre (normalmente una nmero de ocho cifras en la direccin de memoria) en lugar del valor de los segmentos. Como el nmero de polgonos que se usa para crear un cilindro es exponencialmente proporcional al valor de segmentos, esto causar que el Blitz trate de crear un cilindro con un nmero inimaginable de polgonos! Dependiendo de lo afortunado que seas, tu computadora se colgar. Ejemplo de valores de segmentos (slido=true): 3: 8 polgonos un prima 8: 28 polgonos nmero mnimo de polgonos para un cilindro 16: 60 polgonos cilindro suavizado a una distancia media-alta 32: 124 polgonos cilindro suavizado a una distancia corta El parmetro opcional padre permite especificar un ente padre para el cilindro de forma que cuando el padre se mueve, el cilindro hijo se mueva con l. Aunque esto solo se da en un sentido, aplicar comandos de movimiento al hijo no afectar al padre. Especificar un ente padre har que el cilindro se cree en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: CreateCube, CreateSphere, CreateCone.
Ejemplo:
; CreateCylinder Example ; ---------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Create cylinder cylinder=CreateCylinder() PositionEntity cylinder,0,0,5 While Not KeyDown( 1 ) RenderWorld Flip Wend End
161
CreateCone ( [segmentos][,padre][,slido] )
Parmetros:
segmentos (opcional) detalles del cono. Por defecto es 8. padre (opcional) ente padre del cono slido (opcional) true para un cono con base, false para un cono sin base. Por defecto es true.
Descripcin:
Crea una malla/ente cono y devuelve su puntero. El cono se centrar en 0,0,0 y la base del cono tendr un radio de 1. El valor segmento debe estar en el rango 3-100 inclusive, aunque esto solo se comprueba en el modo de depuracin. Un error muy comn es dejar el modo de depuracin apagado y especificar el parmetro padre (normalmente un dgito de ocho cifras en la direccin de memoria) en lugar del valor de segmentos. Como el nmero de polgonos utilizados para crear un cono es exponencialmente proporcional al valor de los segmentos, esto tendr como resultado en Blitz intentar crear un cono con un nmero inimaginable de polgonos! Dependiendo de lo afortunado que seas, tu mquina se colgar. Ejemplo de valores de segmentos (slido=true): 4: 6 polgonos - una pirmide 8: 14 polgonos el nmero mnimo de polgonos para un cono 16: 30 polgonos cono suavizado a distancias medias-altas 32: 62 polgonos cono suavizado a distancias cortas El parmetro opcional padre permite especificar el ente padre del cono de forma que cuando el padre se mueve, el cono hijo se mover con el . Aunque esta relacin slo se da en un sentido, aplicar un movimiento de comando al hijo no afectar al padre. Especificar un ente padre dar como resultado que el cono se cree en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: CreateCube, CreateSphere, CreateCylinder.
Ejemplo:
; CreateCone Example ; -----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Create cone cone=CreateCone() PositionEntity cone,0,0,5 While Not KeyDown( 1 ) RenderWorld Flip Wend End
AddMesh orig_malla,dest_mesh
Parmetros:
orig_malla puntero de la malla de origen dest_malla puntero de la malla de destino
Descripcin:
Aade la malla de origen a la malla de destino.
FlipMesh malla
Parmetros:
malla puntero de la malla
Descripcin:
Voltea todos los tringulos en una malla. Se usa por un par de razones. Primeramente, es importante entender ligeramente la teora sobre los grficos 3D. Un tringulo 3D se representa mediante tres puntos, slo cuando esos tres puntos estn configurados en el sentido de las agujas del reloj, el tringulo es visible. Por lo tanto, realmente, los tringulos slo tienen un lado. Normalmente, por ejemplo en el caso de una esfera, un modelo tiene tringulos que estn dentro del modelo, no te preocupes si no puedes verlos. Aunque, que ocurrira si quisiramos usar la
162
esfera como un enorme cielo para el mundo, es decir, si solamente necesitsemos ver el interior? En este caso, simplemente usaramos FlipMesh. Otro uso de FlipMesh es hacer objetos de bilaterales, as podremos verlos desde dentro y desde fuera si no podemos an. En este caso, copia la malla original usando CopyEntity, especificando la malla original como padre, y voltala usando FlipMesh. Ahora tendrs dos mallas ocupando el mismo espacio- esto lo har bilateral, pero cuidado, tambin dobla el nmero de polgonos! Las tcnicas de arriba son muy valiosas cuando se ha exportado un modelo de un programa externo de modelado y parece haber perdido algunos de sus tringulos.
Ejemplo:
; FlipMesh Example ; ---------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() ; Create sphere sphere=CreateSphere() ; Scale sphere ScaleEntity sphere,100,100,100 ; Texture sphere with sky texture sky_tex=LoadTexture("../media/sky.bmp") EntityTexture sphere,sky_tex ; Flip mesh so we can see the inside of it FlipMesh sphere Color 0,0,0 While Not KeyDown( 1 ) RenderWorld Text 0,0,"You are viewing a flipped sphere mesh - makes a great sky!" Flip Wend End
PaintMesh malla,pincel
Parmetros:
malla puntero de la malla pincel puntero del pincel
Descripcin:
Pinta una malla con un pincel. Tiene el efecto de alterar instantneamente la apariencia visible de una malla, asumiendo que las propiedades del pincel sean distintas de las aplicadas antes a la superficie. La razn de usar PaintMesh para aplicar propiedades especficas a una malla usando un pincel en lugar de usar EntityTexture, EntityColor, EntityShininess etc, es que se puede predefinir un pincel y luego usarlo para pintar mallas una y otra vez con un solo comando en lugar de un montn de comandos por separado. Ver tambin: PaintEntity, PaintSurface.
Ejemplo:
; PaintMesh Example ; ----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture("../media/b3dlogo.jpg")
Ayuda Blitz Basic ; Create brush brush=CreateBrush() ; Apply texture to brush BrushTexture brush,tex ; And some other effects BrushColor brush,0,0,255 BrushShininess brush,1 ; Paint mesh with brush PaintMesh cube,brush While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
163
LightMesh malla,rojo#,verde#,azul#[,rango#][,luz_x#][,luz_y#][,luz_z#]
Parmetros:
malla puntero de la malla rojo# - valor rojo de la malla verde# - valor verde de la malla azul# - valor azul de la malla rango# (opcional) rango de la luz luz_x# (opcional) posicin x de la luz luz_y# (opcional) posicin y de la luz luz_z# (opcional) posicin z de la luz
Descripcin:
Realiza una falsa operacin de iluminacin sobre una malla.
FitMesh malla,x#,y#,z#,ancho#,alto#,profundidad#[,uniforme]
Parmetros:
malla puntero de la malla x# - posicin x de la malla y# - posicin y de la malla z# - posicin z de la malla ancho# - ancho de la malla alto# - alto de la malla profundidad# - profundidad de la malla uniforme (opcional) si es true, la malla se escalar con el mismo nmero en x, y y z, y no se deformar. Por defecto es false.
Descripcin:
Escala y traslada todos los vertices de una malla de forma que la malla ocupe la caja especificada.
164
ScaleMesh malla,escala_x#,escala_y#,escala_z#
Parmetros:
malla puntero de la malla escala_x# - escala de la malla en x escala_y# - escala de la malla en y escala_z# - escala de la malla en z
Descripcin:
Escala todos los vrtices de una malla segn los factores de escala especificados.
RotateMesh malla,pitch#,yaw#,roll#
Parmetros:
malla puntero de la malla pitch# - pitch de la malla yaw# - yaw de la malla roll# - roll de la malla
Descripcin:
Rota todos los vrtices de una malla segn la rotacin especificada. Pitch es lo mismo que el ngulo x de una malla, y es equivalente a inclinar alante/atrs. Yaw es lo mismo que el ngulo y de una malla, y es equivalente a girar izquierda/derecha. Roll es lo mismo que el ngulo z de una malla, y es equivalente a inclinar izquierda/derecha.
PositionMesh malla,x#,y#,z#
Parmetros:
malla puntero de la malla x# - posicin x de la malla y# - posicin y de la malla z# - posicin z de la malla
Descripcin:
Mueve todos los vrtices de una malla.
UpdateNormals malla
Parmetros:
malla puntero de la malla
Descripcin:
Recalcula todas las normales en una malla. Esto es necesario para corregir la iluminacin si no has establecido las normales de la superficie usando los comandos 'VertexNormals'.
MeshesIntersect (malla_a,malla_b )
Parmetros:
Malla_a puntero de la malla_a malla_b puntero de la malla_b
Descripcin:
Devuelve true si las mallas especificadas se estn cruzando actualmente. Esta es una rutina bastante lenta sala con discrecin... Este comando es actualmente la nica rutina de comprobacin de colisiones polgono->polgono disponible en Blitz3D.
Ejemplo:
; MeshesIntersect Example ; ----------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera()
Ayuda Blitz Basic light=CreateLight() RotateEntity light,90,0,0 drum=LoadMesh("media/oil-drum/oildrum.3ds") PositionEntity drum,-20,0,100 crate=LoadMesh("media/wood-crate/wcrate1.3ds") PositionEntity crate,20,0,100 While Not KeyDown( 1 ) TurnEntity drum,1,1,1 TurnEntity crate,-1,-1,-1 RenderWorld
165
; Test to see if drum and crate meshes are intersecting; if so then display message to confirm this If MeshesIntersect(drum,crate)=True Then Text 0,0,"Meshes are intersecting!" Flip Wend End
MeshWidth# (malla)
Parmetros:
malla puntero de la malla
Descripcin:
Devuelve el ancho de una malla. Ver tambin: MeshHeight, MeshDepth.
MeshHeight# (malla )
Parmetros:
malla puntero de la malla
Descripcin:
Devuelve la altura de una malla. Ver tambin: MeshWidth, MeshDepth.
MeshDepth# (malla)
Parmetros: malla puntero de la malla Descripcin:
Devuelve la profundidad de una malla. Ver tambin: MeshWidth, MeshHeight.
CountSurfaces ( malla )
Parmetros:
malla puntero de la malla
Descripcin:
Devuelve el nmero de superficies (caras) en una malla. Las superficies son secciones de una malla. Una malla puede contener una seccin o varias. Ver tambin: GetSurface.
166
Descripcin:
Devuelve el puntero de una superficie unida a la malla especificada y con el nmero de ndice especificado. El ndice debera estar en el rango 1...CountSurfaces( malla ), inclusive. Necesitars obtener una superficie, es decir, averiguar su puntero, para poder usar esa superficie en particular con otros comandos. Ver tambin: CountSurfaces.
Descripcin:
Crea una superficie unida a una malla y devuelve el puntero de la superficie. Las superficies son secciones de malla que se usan para unir tringulos. Debe haber al menos una superficie por malla para crear una malla visible, aunque se pueden usar tantas como se quiera. Dividir una malla en varias secciones permite afectar a esas secciones individualmente, lo que es ms til que si todas las superficies estn combinadas en una sola.
PaintSurface superficie,pincel
Parmetros:
superficie puntero de la superficie pincel puntero del pincel
Descripcin:
Pinta una superficie con un pincel. Tiene el efecto de alterar instantneamente la apariencia visible de una superficie particular, por ejemplo, una seccin de malla, suponiendo que las propiedades del pincel sean diferentes de las aplicadas antes a la superficie. Ver tambin: PaintEntity, PaintMesh.
ClearSurface superficie,[limpiar_vrtices][,limpiar_tringulos]
Parmetros:
superficie puntero de la superficie limpiar_vrtices (opcional) - true para borrar todos los vrtices de la superficie especificada, false para no hacerlo. Por defecto es true. limpiar_tringulos (opcional) - true para borrar todos los tringulos de la superficie especificada, false para no hacerlo. Por defecto es true.
Descripcin:
Borra todos los vrtices y/o tringulos de una superficie. Se usa para borrar secciones de una malla. El resultado ser visible instantneamente. Despus de borrar una superficie, puede quererse crearla de nuevo pero con una ligera diferencia en el nmero de polgonos para obtener un nivel dinmico de detalle (LOD).
FindSurface ( malla,pincel)
Parmetros:
malla puntero de la malla pincel puntero del pincel
Descripcin:
Intenta encontrar una superficie unida a la malla y creada con el pincel especificado. Devuelve el puntero de la superficie si la encuentra o 0 si no la encuentra. Ver tambin: CountSurfaces, GetSurface.
AddVertex ( superficie,x#,y#,z#[,u#][,v#][,w#] )
Parmetros:
superficie puntero de la superficie x# - coordenada x del vrtice y# - coordenada y del vrtice z# - coordenada z del vrtice u# (opcional) coordenada u de la textura del vrtice v# (opcional) coordenada v de la textura del vrtice w# (opcional) coordenada w de la textura del vrtice sin utilizar, incluida para una futura expansin
167
Descripcin:
Aade un vrtice a una superficie especificada y devuelve el nmero de ndice del vrtice, comenzando desde 0. x,y,z son las coordenadas geomtricas del vrtice, y u,v,w son las coordenadas del mapa de la textura. Un vrtice es un punto en el espacio 3D que se usa para conectar los lmites de un tringulo. Sin vrtices, no se pueden hacer tringulos. Se necesitan tres vrtices para crear un tringulo; uno por cada esquina. Los parmetros opcionales u,v permiten especificar las coordenadas de textura de un vrtice, que determinarn como ser el mapa de la textura de tringulo creado usando estos vrtices. Funciona en base a lo siguiente: el punto izquierdo ms bajo de una imagen tiene la coordenada uv 0,0. el punto derecho ms bajo tiene las coordenadas 0,1, arriba a la izquierda 0,1 y arriba a la derecha 1,1. Ahora, dependiendo de que coordenada uv ests asignando al vrtice, representar un punto en una imagen. Por ejemplo, una coordenada 0.5, 0.5 representara el centro de la imagen. Ahora imagina que tienes un tringulo equiltero normal. Asignando al vrtice abajo a la izquierda una coordenada uv de 0,0, luego abajo a la derecha la coordenada de 1,0 y arriba al centro 0.5,1, esto texturizar el tringulo con una imagen que se ajustar a l.
AddTriangle ( superficie,v0,v1,v2 )
Parmetros:
superficie superficie a tratar v0 - nmero de ndice del primer vrtice del tringulo v1 nmero de ndice del segundo vrtice del tringulo v2 nmero de ndice del tercer vrtice del tringulo
Descripcin:
Aade un tringulo a una superficie y devuelve el nmero de ndice del tringulo, comenzando desde 0. Los parmetros v0, v1 y v2 son los nmeros de ndice de los vrtices creados usando AddVertex. Dependiendo de como estn organizados los vrtices, el tringulo ser visible solo desde cierto lado. Imaginemos que diseamos los vrtices de un tringulo punto a punto, numerados como v0, v1, v2. Si estos puntos van de v0 a v2 en el sentido de las agujas del reloj, entonces el tringulo ser visible. Si estos puntos van en sentido anti-horario, entonces el tringulo no ser visible. La razn de tener tringulos de un solo lado es que reduce el nmero de tringulos necesarios para renderizar cuando un lado est orientado hacia un lado de un objeto que no se ver (como la cara interior de una pelota de billar). Sin embargo, si quieres que un tringulo tenga dos caras, puedes crear dos tringulos usando la misma configuracin de nmeros en los vrtices de ambos pero asignndolos en orden opuesto, o puedes usar CopyEntity y FlipMesh juntos.
VertexCoords superficie,ndice,x#,y#,z#
Parmetros:
superficie puntero de la superficie ndice - ndice del vrtice x# - posicin x del vrtice y# - posicin y del vrtice z# - posicin z del vrtice
Descripcin:
Establece las coordenadas geomtricas de un vrtice existente. Este es el comando que se usa para realizar lo que comnmente se conoce como 'deformacin dinmica de malla'. Reposicionar un vrtice de modo que las aristas conectadas a este tambin se movern. Esto dar el efecto de que partes de la malla se deforman de repente.
VertexNormal superficie,ndice,nx#,ny#,nz#
Parmetros:
superficie puntero de la superficie ndice - ndice del vrtice nx# - normal x del vrtice ny# - normal y del vrtice nz# - normal z del vrtice
Descripcin:
Establece la normal de un vrtice existente.
VertexColor superficie,ndice,rojo#,verde#,azul#
Parmetros:
superficie puntero de la superficie ndice - ndice del vrtice rojo# - valor rojo del vrtice verde# - valor verde del vrtice azul# - valor azul del vrtice
168
Descripcin:
Establece el color de un vrtice existente.
VertexTexCoords superficie,ndice,u#,v#[,w#][,coord_set]
Parmetros:
superficie puntero de la superficie ndice - ndice del vrtice u# - coordenada u# del vrtice v# - coordenada v# del vrtice w# (opcional) - coordenada w# del vrtice coord_set (opcional) coordenada establecida. Debera ser establecido a 0 o 1.
Descripcin:
Establece las coordenadas de la textura de un vrtice existente.
CountVertices ( superficie )
Parmetros:
superficie puntero de la superficie
Descripcin:
Devuelve el nmero de vrtices en una superficie.
CountTriangles ( surperficie )
Parmetros:
superficie puntero de la superficie
Descripcin:
Devuelve el nmero de tringulos en una superficie.
Descripcin:
Devuelve la coordenada x de un vrtice.
Descripcin:
Devuelve la coordenada y de un vrtice.
Descripcin:
Devuelve la coordenada z de un vrtice.
169
Descripcin:
Devuelve el componente x de la normal de un vrtice.
Descripcin:
Devuelve el componente y de la normal de un vrtice.
Descripcin:
Devuelve el componente z de la normal de un vrtice.
Descripcin:
Devuelve el componente rojo del color de un vrtice.
Descripcin:
Devuelve el componente verde del color de un vrtice.
Descripcin:
Devuelve el componente azul del color de un vrtice.
Descripcin:
Devuelve la coordenada de textura u de un vrtice.
170
Descripcin:
Devuelve la coordenada de textura v de un vrtice.
Descripcin:
Devuelve la coordenada de la textura w de un vrtice.
TriangleVertex ( superficie,ndice_tringulo,esquina )
Parmetros:
superficie puntero de la superficie ndice_tringulo - ndice del tringulo esquina - esquina del tringulo. Debera ser 0, 1 o 2.
Descripcin:
Devuelve el vrtice de una esquina del tringulo.
Descripcin:
Crea un ente cmara y devuelve su puntero. Sin al menos una cmara, no seramos capaces de ver nada en nuestro mundo 3D. Con ms de una cmara, podremos realizar efectos como el modo de pantalla dividida y espejos. Una cmara solamente puede renderizar el backbuffer. Si deseamos mostrar grficos 3D en una imagen o una textura, copiaremos el contenido del backbuffer al buffer apropiado. El parmetro opcional padre, permite especificar el ente padre de forma que cuando se mueve el padre, la cmara hijo se mover con l. Aunque est relacin solo se da en un sentido, aplicar comandos de movimiento al hijo no tendr efecto sobre el padre. Especificando un ente padre, la cmara resultante ser creada en la posicin 0,0,0 en lugar de en la posicin del ente padre.
Ejemplo:
; CreateCamera Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() ; Create camera camera=CreateCamera() light=CreateLight() cone=CreateCone() PositionEntity cone,0,0,5 While Not KeyDown( 1 ) RenderWorld Flip Wend End
171
CameraFogMode cmara,modo
Parmetros:
cmara puntero de la cmara modo modo de niebla 0: sin niebla 1: niebla lineal
Descripcin:
Establece el modo de niebla de la cmara. Esto activa/desactiva la niebla, una tcnica usada para hacer desaparecer gradualmente los grficos ms alejados de la cmara. Se puede utilizar para evitar que los objetos 3D que van apareciendo en el horizonte, lo hagan de repente. El color por defecto de la niebla es negro y el rango por defecto de la niebla es 1-1000, aunque esto puede cambiarse utilizando CameraFogColor y CameraFogRange respectivamente. Cada cmara puede tener su propio modo de niebla, para mltiples efectos de niebla en la pantalla.
Ejemplo:
; CameraFogMode Example ; --------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,0 CameraFogRange camera,1,10 light=CreateLight() RotateEntity light,90,0,0 plane=CreatePlane() grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture plane,grass_tex While Not KeyDown( 1 ) ; Toggle camera fog mode between 0 and 1 when spacebar is pressed If KeyHit( 57 )=True Then fog_mode=1-fog_mode : CameraFogMode camera,fog_mode If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.05 camera,0,0,0.05
RenderWorld Text 0,0,"Use cursor keys to move about the infinite plane" Text 0,20,"Press spacebar to toggle between CameraFogMode 0/1" If fog_mode=False Then Text 0,40,"CameraFogMode 0" Else Text 0,40,"CameraFogMode 1" Flip Wend End
CameraFogRange cmara,cerca#,lejos#
Parmetros:
cmara puntero de la cmara cerca# - distancia enfrente de la cmara a la que empieza la niebla lejos# - distancia enfrente de la cmara a la que acaba la niebla
Descripcin:
Establece el rango de niebla de la cmara. El parmetro cerca especifica a que distancia enfrente de la cmara empezar el efecto de niebla, todos los objetos 3D antes de este punto no se desvanecern. El parmetro lejos especifica a que distancia enfrente de la cmara terminar el efecto niebla, todos los objetos 3D situados ms all de este punto desaparecern.
172
Ejemplo:
; CameraFogRange Example ; ---------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,0 light=CreateLight() RotateEntity light,90,0,0 plane=CreatePlane() grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture plane,grass_tex ; Set camera fog to 1 (linear fog) CameraFogMode camera,1 ; Set intial fog range value fog_range=10 While Not KeyDown( 1 ) ; If square brackets keys pressed then change fog range value If KeyDown( 26 )=True Then fog_range=fog_range-1 If KeyDown( 27 )=True Then fog_range=fog_range+1 ; Set camera fog range CameraFogRange camera,1,fog_range If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.05 camera,0,0,0.05
RenderWorld Text 0,0,"Use cursor keys to move about the infinite plane" Text 0,20,"Press [ or ] to change CameraFogRange value" Text 0,40,"CameraFogRange camera,1,"+fog_range Flip Wend End
CameraFogColor cmara,rojod#,verde#,azul#
Parmetros:
cmara puntero de la cmara rojo# - valor rojo de la niebla verde# - valor verde de la niebla azul# - valor azul de la niebla
Descripcin:
Establece el color de la niebla de la cmara.
Ejemplo:
plane=CreatePlane() grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture plane,grass_tex ; Set camera fog to 1 (linear fog) CameraFogMode camera,1
Ayuda Blitz Basic ; Set camera fog range CameraFogRange camera,1,10 ; Set initial fog colour values red#=0 green#=0 blue#=0 While Not KeyDown( 1 ) ; Change red, If KeyDown( 2 If KeyDown( 3 If KeyDown( 4 If KeyDown( 5 If KeyDown( 6 If KeyDown( 7 green, )=True )=True )=True )=True )=True )=True blue values depending on key pressed And red#>0 Then red#=red#-1 And red#<255 Then red#=red#+1 And green#>0 Then green#=green#-1 And green#<255 Then green#=green#+1 And blue#>0 Then blue#=blue#-1 And blue#<255 Then blue#=blue#+1
173
; Set camera fog color using red, green, blue values CameraFogColor camera,red#,green#,blue# If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.05 camera,0,0,0.05
RenderWorld Text Text Text Text Text Flip Wend End 0,0,"Use cursor keys to move about the infinite plane" 0,20,"Press keys 1-6 to change CameraFogColor red#,green#,blue# values 0,40,"Fog Red: "+red# 0,60,"Fog Green: "+green# 0,80,"Fog Blue: "+blue#
CameraViewport cmara,x,y,ancho,alto
Parmetros:
cmara puntero de la cmara x coordenada x de la esquina superior izquierda del campo de visin y coordenada y de la esquina superior izquierda del campo de visin ancho ancho del campo de visin alto alto del campo de visin
Descripcin:
Establece el tamao y posicin del campo de visin de la cmara. El campo de visin de la cmara es el rea de la pantalla 2D en el que se muestran los grficos 3D como los ve la cmara. Establecer el campo de visin de la cmara permite conseguir efectos de espejo.
Ejemplo:
; CameraViewport Example ; ---------------------Graphics3D 640,480 SetBuffer BackBuffer() ; Create first camera cam1=CreateCamera() ; Set the first camera's viewport so that it fills the top half of the camera CameraViewport cam1,0,0,GraphicsWidth(),GraphicsHeight()/2 ; Create second camera
174 cam2=CreateCamera() ; Set the second camera's viewport so that it fills the bottom half of the camera CameraViewport cam2,0,GraphicsHeight()/2,GraphicsWidth(),GraphicsHeight()/2 light=CreateLight() RotateEntity light,90,0,0 plane=CreatePlane() grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture plane,grass_tex PositionEntity plane,0,-1,0 While Not KeyDown( 1 ) If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity cam1,0,-1,0 cam1,0,1,0 cam1,0,0,-0.05 cam1,0,0,0.05
RenderWorld Text 0,0,"Use cursor keys to move the first camera about the infinite plane" Flip Wend End
CameraClsMode cmara,cls_color,cls_zbuffer
Parmetros:
cmara puntero de la cmara cls_color - true para limpiar el color del buffer, false para no hacerlo cls_zbuffer - true para limpiar el color del z-buffer, false para no hacerlo
Descripcin:
Establece el modo de limpiar la cmara.
CameraClsColor cmara,rojo#,verde#,azul#
Parmetros:
cmara puntero de la cmara rojo# - valor rojo del color de fondo de la cmara verde# - valor verde del color de fondo de la cmara azul# - valor azul del color de fondo de la cmara
Descripcin:
Establece el color de fondo de la cmara. Por defecto es 0,0,0.
CameraRange cmara,cerca#,lejos#
Parmetros:
cmara puntero de la cmara cerca distancia enfrente de la cmara en que los objetos 3D empiezan a dibujarse lejos - distancia enfrente de la cmara en que los objetos 3D dejan de dibujarse
Descripcin:
Establece el rango de la cmara. Intenta hacer y mantener el radio de lejos/cerca lo ms pequeo posible para optimizar el rendimiento del zbuffer. Por defecto es 1,1000.
175
CameraZoom cmara,zoom#
Parmetros:
cmara puntero de la cmara zoom# - factor de zoom de la cmara
Descripcin:
Establece el factor de zoom de la cmara. Por defecto es 1.
CameraPick ( cmara,viewport_x#,viewport_y# )
Parmetros:
cmara puntero de la cmara viewport_x# - coordenada x del campo de visin 2D viewport_z# - coordenada z del campo de visin 2D
Descripcin:
Escoge el ente posicionado en las coordenadas del campo de visin especificadas. Devuelve el ente escogido, o 0 si no hay ninguno all. Un ente debe tener su EntityPickMode establecido a un valor distinto de 0 para poder ser escogido .
PickedX# ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve la coordenada x del mundo del comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick. La coordenada representa el punto exacto donde algo fue seleccionado Ver tambin: PickedY, PickedZ. .
PickedY# ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve la coordenada y del mundo del comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick. La coordenada representa el punto exacto en donde algo ha sido seleccionado Ver tambin: PickedX, PickedZ. .
PickedZ# ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve la coordenada z del mundo del comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick. La coordenada representa el punto exacto donde algo ha sido seleccionado Ver tambin: PickedX, PickedY. .
PickedNX ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el componente x de la normal del comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick.
PickedNY ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el componente y de la normal del comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick.
176
PickedNZ ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el componente z de la normal del comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick.
PickedTime ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el tiempo que llev calcular el comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick.
PickedEntity ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el ente seleccionado por el comando Pick ejecutado ms recientemente. Puede haber sido CameraPick, EntityPick o LinePick. Devuelve 0 si no se ha seleccionado ningn ente.
PickedSurface ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el nmero de ndice de una superficie que fue seleccionada con el comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick.
PickedTriangle ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve el nmero de ndice del tringulo que fue seleccionado con el comando Pick ms recientemente ejecutado. Puede haber sido CameraPick, EntityPick o LinePick.
CameraProject cmara,x#,y#,z#
Parmetros:
cmara puntero de la cmara x# - coordenada x del mundo y# - coordenada y del mundo z# - coordenada z del mundo
Descripcin:
Proyecta las coordenadas z,y,z del mundo en la pantalla 2D.
ProjectedX# ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve la coordenada x del punto de vista del comando CameraProject ms recientemente ejecutado.
177
ProjectedY# ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve la coordenada y del punto de vista del comando CameraProject ms recientemente ejecutado.
ProjectedZ# ( )
Parmetros:
Ninguno.
Descripcin:
Devuelve la coordenada z del punto de vista del comando CameraProject ms recientemente ejecutado.
EntityInView ( ente,cmara )
Parmetros:
ente puntero del ente cmara puntero de la cmara
Descripcin:
Devuelve true si el ente especificado es visible a la cmara especificada. Si el ente es una malla, se comprobar su caja limitada en la visibilidad. Para todos los dems tipos de ente, slo se comprobar su centro de posicin.
Descripcin:
Crea una luz. La luz funciona afectando al color de los vrtices dentro del rango de la luz. Es necesario crear al menos una luz si se desea usar grficos 3D, de otro modo todo parecer soso. El parmetro opcional tipo permite especificar el tipo de luz que se desea crear. Un valor 1 crea una luz direccional. Esto funciona de forma similar a un sol brillando sobre una casa. Todos los muros situados en una cierta posicin se iluminarn igual. La intensidad de la iluminacin depender del ngulo en que la luz incida sobre ellos. Un valor 2 crea un punto de luz. Esto funciona como una bombilla iluminando dentro de una casa, comenzando en un punto central y desvanecindose gradualmente hacia el exterior. Un valor 3 crea una luz spot. Esto es un cono de luz. Funciona de forma similar a una antorcha alumbrando en una casa. Comienza con un ngulo interior de luz y despus se extiende hacia un ngulo exterior de luz. El parmetro opcional padre permite especificar un ente padre para la luz de forma que si el padre se mueve, el hijo se mover con l. Aunque esto solo funciona en un sentido, utilizar un comando de movimiento con el hijo no tendr efecto sobre el padre. Especificar un ente padre situar la luz creada en la posicin 0,0,0 en lugar de en la posicin del ente padre.
LightRange luz,rango#
Parmetros:
luz puntero de la luz rango rango de la luz
Descripcin:
Establece el rango de una luz. El rango de una luz es el alcance. Cualquier cosa fuera del rango de la luz no se ver afectada por ella. El valor es aproximativo, y debera experimentarse con l para obtener los mejores resultados.
178
LightColor luz,rojo#,verde#,azul#
Parmetros:
luz puntero de la luz rojo# - valor rojo de la luz verde# - valor verde de la luz azul# - valor azul de la luz
Descripcin:
Establece el color de una luz. Un valor r,g,b de 255,255,255 encender todos los brillos de la luz. Un valor r,g,b de 0,0,0 no afectar a ningn brillo. Un valor r,g,b de -255,-255,-255 oscurecer todos los brillos. Se puede entender como una luz negativa y es til para hacer efectos de , sombra.
LightConeAngles luz,ngulo_interior#,ngulo_exterior#
Parmetros:
luz puntero de la luz ngulo_interior# - ngulo interior del cono ngulo_exterior# - ngulo exterior del cono
Descripcin:
Establece el ngulo del cono de un foco de luz. El ngulo del cono de luz por defecto est establecido en 0,90.
Descripcin:
Crea un ente pivote. Un ente pivote es un punto invisible en el espacio 3D que se usa principalmente para actuar como un ente padre de otros entes. El pivote puede usarse entonces para controlar varios entes a la vez, o actuar como un nuevo centro de rotacin de otros entes. Para forzar esta relacin, se usa EntityParent o se hace uso del parmetro opcional padre del ente disponible en todos los comandos de creacin/carga de todos los entes. Realmente, este parmetro est tambin disponible con el comando CreatePivot si se desea que el pivote tenga un ente padre propio.
Descripcin:
Crea un ente sprite y devuelve su puntero. El sprite se posicionar en 0,0,0 y se extender de 1,-1 a +1,+1. Un ente sprite es un flat, objeto 3D cuadrado (que puede convertirse en rectngulo escalndolo). Los sprites tienen dos ventajas. La primera es que consisten en slo dos polgonos, lo que significa que se pueden usar varios al mismo tiempo. Esto los hace ideales para efectos de partculas y usar juegos 2D y 3D donde se quieran usar varias sprites en la pantalla a la vez. La segunda, se puede asignar un modo de vista usando SpriteViewMode. Por defecto este modo de vista est establecido a 1, lo que significa que el sprite siempre afrontar la cmara. Por lo tanto no te preocupes de que la orientacin de la cmara sea relativa al sprite, nunca notars que son flat; dndoles una textura especial puedes hacer que parezcan una esfera normal. El parmetro opcional padre permite especificar un ente padre para el sprite, con lo cual cuando el padre se mueva el sprite hijo se mover con l. Aunque esta relacin solo se da en un sentido, aplicar un comando de movimiento a un hijo no tendr efecto sobre el padre. Especificar un ente padre har que el sprite se cree en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: LoadSprite.
LoadSprite ( archivo_textura$[,flag_textura][,padre] )
Parmetros:
archive_ textura$ - nombre del archive de imagen que se usar como sprite
Ayuda Blitz Basic flag_textura (opcional) flag de la textura: 1: Color 2: Alfa 4: Oculto 8: Mipmapped 16: Clamp U 32: Clamp V 64: mapa de reflexin esfrica padre padre del ente
179
Descripcin:
Carga un ente sprite, y le asigna una textura. Ver tambin: CreateSprite, SpriteViewMode.
RotateSprite sprite,ngulo#
Parmetros:
sprite puntero del sprite ngulo# - ngulo absoluto de rotacin de la sprite
Descripcin:
Rota una sprite.
ScaleSprite sprite,escala_x#,escala_y#
Parmetros:
sprite puntero del sprite escala_x# - escala de la sprite en x escala_y# - escala de la sprite en y
Descripcin:
Escala una sprite.
HandleSprite sprite,puntero_x#,puntero_y#
Parmetros:
sprite puntero del sprite. No confundir con HandleSprite es decir, el puntero usado para la posicin de la sprite, en lugar del puntero actual del sprite
Descripcin:
Establece el puntero de un sprite. Por defecto es 0,0,0. Un sprite se extiende de 1,-1 a +1,+1.
SpriteViewMode sprite,modo_vista
Parmetros:
sprite puntero del sprite modo_vista modo de vista del sprite 1: fijo (el sprite siempre encara la cmara) 2: libre (el sprite es independiente de la cmara) 3: plano vertical (el sprite siempre encara la cmara, pero se inclina con la cmara)
Descripcin:
Establece el modo de vista de un sprite.
180
Descripcin:
Carga un ente md2 y devuelve su puntero. Una textura md2 tiene que cargarse y aplicarse al md2 de forma separada, de otro modo el md2 aparecer sin textura. Los Md2 tienen sus propios comandos de configuracin, y no funcionan con los comandos normales de animacin. El parmetro opcional padre permite especificar un ente padre para el md2, de forma que cuando se mueve el padre el hijo md2 se mueve con l. Aunque esta relacin slo se da en un sentido, aplicar comandos de movimiento a un hijo no afectar al padre. Especificar un ente padre crear el md2 en la posicin 0,0,0 en lugar de en la posicin del ente padre.
Ejemplo:
; LoadMD2 Example ; --------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Load md2 gargoyle=LoadMD2( "media/gargoyle/gargoyle.md2" ) ; Load md2 texture garg_tex=LoadTexture( "media/gargoyle/gargoyle.bmp" ) ; Apply md2 texture to md2 EntityTexture gargoyle,garg_tex PositionEntity gargoyle,0,-45,100 RotateEntity gargoyle,0,180,0 While Not KeyDown( 1 ) RenderWorld Flip Wend End
AnimateMD2 md2[,modo][,velocidad#][,primer_frame][,ltimo_frame]
Parmetros:
md2 puntero del md2 modo (opcional) modo de animacin 0: parar la animacin 1: loop (bucle) de la animacin (por defecto) 2: ping-pong de la animacin 3: one-shot (una fotografa) de la animacin velocidad# (opcional) velocidad de la animacin. Por defecto es 1. primer_frame (opcional) - primer frame de la animacin. Por defecto es 1. ltimo_frame# (opcional) - ltimo frame de la animacin. Por defecto es el ltimo frame de todas las animaciones md2.
Descripcin:
Inicia la animacin de un ente md2. El md2 se mover de un frame al siguiente cuando se llame a UpdateWorld, normalmente una vez en el bucle principal.
Ejemplo:
; AnimateMD2 Example ; -----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0
Ayuda Blitz Basic ; Load md2 gargoyle=LoadMD2( "media/gargoyle/gargoyle.md2" ) ; Load md2 texture garg_tex=LoadTexture( "media/gargoyle/gargoyle.bmp" ) ; Apply md2 texture to md2 EntityTexture gargoyle,garg_tex ; Animate md2 AnimateMD2 gargoyle,1,0.1,32,46 PositionEntity gargoyle,0,-45,100 RotateEntity gargoyle,0,180,0 While Not KeyDown( 1 ) UpdateWorld RenderWorld Flip Wend End
181
MD2AnimTime ( md2 )
Parmetros:
md2 puntero del md2
Descripcin:
Devuelve el tiempo de animacin de un modelo md2. El tiempo de animacin es el momento exacto en que est el md2 en sus frames de animacin. Por ejemplo, si el md2 en un determinado momento se est moviendo entre las frames tercera y cuarta, el MD2AnimTime devolver un nmero en la regin 3-4.
Ejemplo:
Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Load md2 gargoyle=LoadMD2( "media/gargoyle/gargoyle.md2") ; Load md2 texture garg_tex=LoadTexture( "media/gargoyle/gargoyle.bmp" ) ; Apply md2 texture to md2 EntityTexture gargoyle,garg_tex ; Animate md2 AnimateMD2 gargoyle,1,0.1,32,46 PositionEntity gargoyle,0,-45,100 RotateEntity gargoyle,0,180,0 While Not KeyDown( 1 ) UpdateWorld RenderWorld ; Output current animation frame to screen Text 0,0,"MD2AnimTime: "+MD2AnimTime( gargoyle ) Flip Wend End
182
MD2AnimLength ( md2 )
Parmetros:
md2 puntero del md2
Descripcin:
Devuelve la longitud de la animacin de un modelo md2. La longitud de la animacin es el nmero total de frames de animacin en que consiste el archivo md2.
Ejemplo:
; MD2AnimLength Example ; --------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Load md2 gargoyle=LoadMD2( "media/gargoyle/gargoyle.md2") ; Load md2 texture garg_tex=LoadTexture( "media/gargoyle/gargoyle.bmp" ) ; Apply md2 texture to md2 EntityTexture gargoyle,garg_tex PositionEntity gargoyle,0,-45,100 RotateEntity gargoyle,0,180,0 While Not KeyDown( 1 ) RenderWorld ; Output animation length to screen Text 0,0,"MD2AnimLength: "+MD2AnimLength( gargoyle ) Flip Wend End
MD2Animating ( md2 )
Parmetros:
md2 puntero del md2
Descripcin:
Devuelve 1 (true) si el md2 se est ejecutando actualmente, 0 (false) en caso contrario.
Ejemplo:
; MD2Animating Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Load md2
Ayuda Blitz Basic gargoyle=LoadMD2( "media/gargoyle/gargoyle.md2") ; Load md2 texture garg_tex=LoadTexture( "media/gargoyle/gargoyle.bmp" ) ; Apply md2 texture to md2 EntityTexture gargoyle,garg_tex PositionEntity gargoyle,0,-45,100 RotateEntity gargoyle,0,180,0 While Not KeyDown( 1 ) ; Toggle animation stop/start when spacebar pressed If KeyHit( 57 )=True start=1-start : AnimateMD2 gargoyle,start,0.1,32,46 UpdateWorld RenderWorld Text 0,0,"Press spacebar to stop/start md2 animation" ; Output current md2 animation status to screen Text 0,20,"MD2Animating: "+MD2Animating( gargoyle ) Flip Wend End
183
Descripcin:
Carga un modelo BSP y devuelve su puntero. Algunas puntualizaciones sobre el soporte BSP del Blitz3D: * Los sombreados no son soportados! * Los BSP no se pueden pintar, texturizar, colorear, ocultar, etc. en Blitz. * Un modelo BSP es simplemente un ente. Usa los comandos estndar del ente para escalarlo, rotarlo y posicionarlo, y los comandos estndar de colisiones para realizar colisiones con el BSP. *Los modelos BSP no se iluminan con cualquier luz ambiental normal, o mediante una iluminacin direccional. Esto permite ejecutar la iluminacin de los modelos de un juego sin que afecten a la iluminacin de los BSP. Aunque, los modelos BSP iluminados por puntos o por luces disponibles. *Las texturas para los modelos BSP deben estar en el mismo directorio que el propio archivo BSP. El parmetro opcional padre permite especificar un ente padre para el BSP de modo que cuando el padre se mueve el hijo BSP se mover con el. Aunque esta relacin se da en un solo sentido; aplicar comandos de movimiento a un hijo no afectar al padre. Especificar un ente padre har que el BSP se cree en la posicin 0,0,0, en lugar de en la posicin del ente padre. Ver tambin: BSPAmbientLight, BSPLighting.
Ejemplo:
Graphics3D 640,480 campiv = CreatePivot() cam = CreateCamera(campiv) CameraRange cam, 0.1,2000 level=LoadBSP( "nyk3dm1\nyk3dm1.bsp",.8 ) ; load a 'legal' quake3 bsp map BSPAmbientLight level, 0,255,0 ; make the ambient light green ;BSPLighting level, False ; uncomment this line to turn lightmap off While Not KeyDown(1) ; if ESCAPE pressed then exit
184 RenderWorld:Flip mys = MouseYSpeed() If Abs(EntityPitch(cam)+mys) < 75 ; restrict pitch of camera TurnEntity cam, mys,0,0 EndIf TurnEntity campiv,0,-MouseXSpeed(),0 If MouseDown(1) Then ; press mousebutton to move forward TFormVector 0,0,3,cam,campiv MoveEntity campiv,TFormedX(),TFormedY(),TFormedZ() EndIf MoveMouse 320,240 ; centre mouse cursor Wend End
Descripcin:
Establece el color de la luz ambiental de un modelo BSP. Nota que los modelos BSP no usan la configuracin normal de la AmbientLight. Puede usarse tambin para incrementar el brillo de un modelo BSP, pero el efecto no es tan bueno como cuando se usa el parmetro ajustar_gama del comando LoadBSP. Ver tambin: LoadBSP, BSPLighting.
Descripcin:
Crea un ente plano y devuelve su puntero. Un ente plano es bsicamente un ,suelo infinito. Se usa en juegos al aire libre donde no se quiere que el jugador vea/alcance los lmites del mundo del juego. El parmetro opcional sub_divs especifica las subdivisiones de polgonos que tendr el plano. Aunque un plano es flat y por lo tanto aadir ms polgonos no lo har ms suavizado, aadir ms polgonos permitir ms vrtices para un tener mayor detalle en los efectos de luz. El parmetro opcional padre permite especificar un ente padre para el plano, que har que cuando se mueva el padre el plano hijo se mover con l. Aunque esta relacin slo se da en un sentido, aplicar comandos de movimiento al hijo no tendr efectos sobre el padre. Especificar un ente padre har que el plano creado se site en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: CreateMirror.
Ejemplo:
; CreatePlane Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,0 light=CreateLight() RotateEntity light,90,0,0 ; Create plane plane=CreatePlane()
Ayuda Blitz Basic grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture plane,grass_tex While Not KeyDown( 1 ) If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.05 camera,0,0,0.05
185
RenderWorld Text 0,0,"Use cursor keys to move about the infinite plane" Flip Wend End
Descripcin:
Crea un ente espejo y devuelve su puntero. Un ente espejo es bsicamente un flat,suelo infinito. Este suelo es invisible, excepto que refeja todo lo que hay por encima y por debajo de l. Se usa en juegos en los que se quiere tener un efecto de suelo brillante mostrando un reflejo. Para un efecto de suelo brillante realista intenta combinar un ente espejo con un ente plano texturizado que tenga su nivel alfa a 0.5. El parmetro opcional padre permite especificar un ente padre del espejo que hace que cuando el padre se mueva el espejo hijo se mover con el. Aunque esta relacin es solo en un sentido, aplicar un comando de movimiento a un hijo no afectar al padre. Especificar un ente padre situar el espejo a crear en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: CreatePlane.
Ejemplo:
Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,-5 light=CreateLight() RotateEntity light,90,0,0 ; Create cone cone=CreateCone(32) PositionEntity cone,0,2,0 ; Create plane plane=CreatePlane() grass_tex=LoadTexture( "media/chorme-2.bmp" ) EntityTexture plane,grass_tex EntityAlpha plane,0.5 mirror=CreateMirror() While Not KeyDown( 1 ) If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then MoveEntity cone,-0.1,0,0 205 )=True Then MoveEntity cone,0.1,0,0 208 )=True Then MoveEntity cone,0,-0.1,0 200 )=True Then MoveEntity cone,0,0.1,0 44 )=True Then MoveEntity cone,0,0,-0.1 30 )=True Then MoveEntity cone,0,0,0.1
186 RenderWorld Text 0,0,"Use cursor/A/Z keys to move cone above infinite mirror" Flip Wend End
Descripcin:
Crea un ente terreno y devuelve su puntero. El terreno se extiende desde 0,0,0 a tamao_rejilla,1,tamao_rejilla. Un terreno es un tipo especial de objeto poligonal que usa un nivel de detalle en tiempo real (LOD) para mostrar paisajes que deberan consistir tericamente en cerca de un milln de polgonos con solo unos pocos cientos. El modo en que se consigue esto es reorganizando un nmero determinado de polgonos para mostrar altos niveles de detalle cerca de la vista y bajos niveles lejos. Estas constantes reorganizaciones de polgonos son notables aunque afecta a todos los paisajes LOD. Este efecto se puede reducir de varias maneras como se explicar en otros archivos de ayuda de terrenos. El parmetro opcional padre permite especificar un ente padre para el terreno de forma que cuando el padre se mueva, el hijo tambin se mover con l. Aunque esta relacin se da slo en un sentido, aplicar comandos de movimiento al hijo no tendr efectos sobre el padre. Especificar un ente padre situar el terreno creado en la posicin 0,0,0 en lugar de en la posicin del ente padre. Ver tambin: LoadTerrain.
Ejemplo:
; CreateTerrain Example ; --------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,0 light=CreateLight() RotateEntity light,90,0,0 ; Create terrain terrain=CreateTerrain(128) ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex While Not KeyDown( 1 ) If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.05 camera,0,0,0.05
RenderWorld Text 0,0,"Use cursor keys to move about the terrain" Flip Wend End
187
LoadTerrain ( archivo$[,padre] )
Parmetros:
archivo$ - nombre del archive de imagen que se usar como mapa de altura padre (opcional) ente padre del terreno
Descripcin:
Carga un terreno desde un archive de imagen y devuelve el puntero del terreno. El canal rojo de la imagen se usa para determinar las alturas. El terreno tiene inicialmente el mismo ancho y profundidad que la imagen, y 1 de alto. Sugerencias para generar buenos terrenos: * Suavizar o nublar el mapa de altura * Reducir la escala en y del terreno * Incrementar la escala en x/z del terreno * Reducir el rango de la cmara Cuando se texturiza un ente, la textura con una escala de 1,1,1 (por defecto) tendr el mismo tamao que uno de los cuadrados de la rejilla del terreno. Una textura escalada con el mismo tamao que el tamao del mapa de bits (bitmap) usado para cargarlo o el nmero de cuadrados de rejilla usados para crearlo, tendr el mismo tamao que el terreno. El parmetro opcional padre permite especificar un ente padre para el terreno de forma que cuando el padre se mueve, el terreno hijo se mover con l. Aunque esta relacin slo se da en un sentido, aplicar comandos de movimiento a un hijo no afectar al padre. Especificar un ente padre har que el terreno se cree en la posicin 0,0,0 en lugar de hacerlo en la posicin del ente padre. Ver tambin: CreateTerrain.
Ejemplo:
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,1,1,1 light=CreateLight() RotateEntity light,90,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Set terrain detail, enable vertex morphing TerrainDetail terrain,4000,True ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 While Not KeyDown( 1 ) If If If If If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
x#=EntityX(camera) y#=EntityY(camera) z#=EntityZ(camera) terra_y#=TerrainY(terrain,x#,y#,z#)+5 PositionEntity camera,x#,terra_y#,z# RenderWorld Text 0,0,"Use cursor keys to move about the terrain" Flip Wend End
188
TerrainSize ( terreno )
Parmetros:
terreno puntero del terreno
Descripcin:
Devuelve el tamao de la rejilla utilizado para crear el terreno.
Ejemplo:
; TerrainSize Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,1,1,1 light=CreateLight() RotateEntity light,90,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Set terrain detail, enable vertex morphing TerrainDetail terrain,4000,True ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 While Not KeyDown( 1 ) If If If If If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
x#=EntityX(camera) y#=EntityY(camera) z#=EntityZ(camera) terra_y#=TerrainY(terrain,x#,y#,z#)+5 PositionEntity camera,x#,terra_y#,z# RenderWorld Text 0,0,"Use cursor keys to move about the terrain" ; Output terrain size to screen Text 0,20,"Terrain Size: "+TerrainSize(terrain) Flip Wend End
189
TerrainDetail terreno,nivel_detalle[,vrtice_morph]
Parmetros:
terreno puntero del terreno nivel_detalle nivel de detalle del terreno vrtice_morph (opcional) - true para activar el morphing (una imagen se convierte gradualmente en otra) del vrtice del terreno. Por defecto es false.
Descripcin:
Establece el nivel de detalle del terreno. Es el nmero de tringulos usados para representar el terreno. El valor tpico es 2000. El parmetro opcional vertex_morph especifica si se activa el morphing del vrtice. Se recomienda establecerlo a true, reducir la visibilidad de LOD 'pop-in' (echar un vistazo).
Ejemplo:
Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,1,1,1 light=CreateLight() RotateEntity light,90,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 ; Set terrain detail value terra_detail=4000 ; Set vertex morph value vertex_morph=True While Not KeyDown( 1 ) ; Change terrain detail value depending on key pressed If KeyDown(26) Then terra_detail=terra_detail-10 If KeyDown(27) Then terra_detail=terra_detail+10 ; Toggle vertex morphing on/off when spacebar is pressed If KeyHit(57)=True Then vertex_morph=1-vertex_morph ; Set terrain detail, vertex morphing TerrainDetail terrain,terra_detail,vertex_morph If If If If If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
Text 0,0,"Use cursor keys to move about the terrain" Text 0,20,"Use [ and ] keys to change terrain detail level" Text 0,40,"Press spacebar to enable/disable vertex morphing" Text 0,60,"Terrain Detail: "+terra_detail If vertex_morph=True Then Text 0,80,"Vertex Morphing: True" Else Text 0,80,"Vertex Morphing: False" Flip Wend End
TerrainShading terreno,activo
Parmetros:
terreno puntero del terreno activo true para activar el sombreado del terreno, false para desactivarlo.
Descripcin:
Activa o desactiva el sombreado del terreno. Los terrenos sombreados son un poco ms lentos que los terrenos no sombreados, y en algunos casos puede incrementar la visibilidad de LOD 'pop-in' (echar un vistazo). Aunque, la opcin est ah para tener terrenos sombreados si deseas hacerlo as. El sombreado del terreno est desactivo por defecto.
Ejemplo:
; TerrainShading Example ; ---------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,1,1,1 light=CreateLight() RotateEntity light,45,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Set terrain detail, enable vertex morphing TerrainDetail terrain,4000,True ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 While Not KeyDown( 1 ) ; Toggle terrain shading value between 0 and 1 when spacebar is pressed If KeyHit(57)=True Then terra_shade=1-terra_shade ; Enable/disable terrain shading TerrainShading terrain,terra_shade If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1
Ayuda Blitz Basic If If If If KeyDown( KeyDown( KeyDown( KeyDown( 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
191
x#=EntityX(camera) y#=EntityY(camera) z#=EntityZ(camera) terra_y#=TerrainY(terrain,x#,y#,z#)+5 PositionEntity camera,x#,terra_y#,z# RenderWorld Text 0,0,"Use cursor keys to move about the terrain" Text 0,20,"Press spacebar to toggle between TerrainShading True/False" If terra_shade=True Then Text 0,40,"TerrainShading: True" Else Text 0,40,"TerrainShading: False" Flip Wend End
TerrainHeight# ( terreno,regilla_x,regilla_z )
Parmetros:
terreno puntero del terreno regilla_x coordenada x de la rejilla del terreno regilla_z coordenada z de la rejilla del terreno
Descripcin:
Devuelve la altura del terreno en las coordenadas x,z de la rejilla del terreno. El valor devuelto est entre el rango 0 y 1. Ver tambin: TerrainY.
ModifyTerrain terreno,rejilla_x,rejilla_z,altot#[,tiemporeal]
Parmetros:
terreno puntero del terreno rejilla_x coordenada x de la rejilla del terreno rejilla_y coordenada y de la rejilla del terreno altot# - alto del punto del terreno. Debera estar en el rango 0-1. tiemporeal (opcional) - true para modificar el terreno inmediatamente. False para modificar el terreno la prxima vez que se llame a RenderWorld. Por defecto es false.
Descripcin:
Establece el alto de un punto sobre el terreno.
TerrainX# (terreno,x#,y#,z# )
Parmetros:
terreno puntero del terreno x# - coordenada x del mundo y# - coordenada y del mundo z# - coordenada z del mundo
Descripcin:
Devuelve la coordenada x interpolada (insertada) en el terreno. Ver tambin: TerrainY, TerrainZ.
Ejemplo:
Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,1,1,1
192 light=CreateLight() RotateEntity light,90,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 ; Set terrain detail, enable vertex morphing TerrainDetail terrain,4000,True While Not KeyDown( 1 ) If If If If If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
x#=EntityX(camera) y#=EntityY(camera) z#=EntityZ(camera) terra_y#=TerrainY(terrain,x#,y#,z#)+5 PositionEntity camera,x#,terra_y#,z# RenderWorld Text 0,0,"Use cursor keys to move about the terrain" ; Output TerrainX value to screen Text 0,20,"TerrainX: "+TerrainX(terrain,x#,terra_y#,z#) Flip Wend End
TerrainY# (terreno,x#,y#,z# )
Parameters:
terreno puntero del terreno x# - coordenada x del mundo y# - coordenada y del mundo z# - coordenada z del mundo
Descripcin:
Devuelve la coordenada y interpolada (intercalada) en el terreno. Bsicamente, obtiene la altura del terreno. Ver tambin: TerrainX, TerrainZ, TerrainHeight.
Ejemplo:
Graphics3D 640,480 SetBuffer BackBuffer()
Ayuda Blitz Basic camera=CreateCamera() PositionEntity camera,1,1,1 light=CreateLight() RotateEntity light,90,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 ; Set terrain detail, enable vertex morphing TerrainDetail terrain,4000,True While Not KeyDown( 1 ) If If If If If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
193
x#=EntityX(camera) y#=EntityY(camera) z#=EntityZ(camera) terra_y#=TerrainY(terrain,x#,y#,z#) PositionEntity camera,x#,terra_y#+5,z# RenderWorld Text 0,0,"Use cursor keys to move about the terrain" ; Output TerrainY value to screen Text 0,20,"TerrainY: "+terra_y# Flip Wend End
TerrainZ# (terreno,x#,y#,z# )
Parmetros:
terreno puntero del terreno x# - coordenada x del mundo y# - coordenada y del mundo z# - coordenada z del mundo
Descripcin:
Devuelve la coordenada z interpolada (insertada) en el terreno. Ver tambin: TerrainX, TerrainY.
194
Ejemplo:
; TerrainZ Example ; ---------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,1,1,1 light=CreateLight() RotateEntity light,90,0,0 ; Load terrain terrain=LoadTerrain( "media/height_map.bmp" ) ; Scale terrain ScaleEntity terrain,1,50,1 ; Texture terrain grass_tex=LoadTexture( "media/mossyground.bmp" ) EntityTexture terrain,grass_tex,0,1 ; Set terrain detail, enable vertex morphing TerrainDetail terrain,4000,True While Not KeyDown( 1 ) If If If If If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=x#-0.1 205 )=True Then x#=x#+0.1 208 )=True Then y#=y#-0.1 200 )=True Then y#=y#+0.1 44 )=True Then z#=z#-0.1 30 )=True Then z#=z#+0.1 205 203 208 200 )=True )=True )=True )=True Then Then Then Then TurnEntity TurnEntity MoveEntity MoveEntity camera,0,-1,0 camera,0,1,0 camera,0,0,-0.1 camera,0,0,0.1
x#=EntityX(camera) y#=EntityY(camera) z#=EntityZ(camera) terra_y#=TerrainY(terrain,x#,y#,z#)+5 PositionEntity camera,x#,terra_y#,z# RenderWorld Text 0,0,"Use cursor keys to move about the terrain" ; Output TerrainZ value to screen Text 0,20,"TerrainZ: "+TerrainZ(terrain,x#,terra_y#,z#) Flip Wend End
195
Descripcin:
Crea un ente oyente y devuelve su puntero. Normalmente solo se soporta un solo oyente.
Load3DSound ( archivo$ )
Parmetros:
archivo$ - nombre del archive de sonido que se cargar y que se usar como sonido 3D
Descripcin:
Carga un sonido y devuelve su puntero para usarlo con EmitSound.
EmitSound sonido,ente
Parmetros:
sonido puntero del sonido ente puntero del ente
Descripcin:
Emite un sonido unido al ente especificado y devuelve el canal del sonido. El sonido debe haberse cargado usando Load3DSound para efectos 3D.
Descripcin:
Escala un ente para que est en un tamao absoluto. Los valores de la escala 1,1,1 son el tamao por defecto cuando creamos/cargamos entes. Los valores de escala 2,2,2 doblarn el tamao de un ente. Los valores de escala 0,0,0 harn desaparecer un ente. Los valores de escala de menos de 0,0,0 invertirn un ente y lo harn ms grande.
Ejemplo:
; ScaleEntity Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 ; Set scale values so that cone is default size to begin with x_scale#=1 y_scale#=1 z_scale#=1
196 While Not KeyDown( 1 ) ; Change scale values depending on the key pressed If KeyDown( 203 )=True Then x_scale#=x_scale#-0.1 If KeyDown( 205 )=True Then x_scale#=x_scale#+0.1 If KeyDown( 208 )=True Then y_scale#=y_scale#-0.1 If KeyDown( 200 )=True Then y_scale#=y_scale#+0.1 If KeyDown( 44 )=True Then z_scale#=z_scale#-0.1 If KeyDown( 30 )=True Then z_scale#=z_scale#+0.1 ; Scale cone using scale values ScaleEntity cone,x_scale#,y_scale#,z_scale# RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor/A/Z keys to scale cone" 0,20,"X Scale: "+x_scale# 0,40,"Y Scale: "+y_scale# 0,60,"Z Scale: "+z_scale#
PositionEntity ente,x#,y#,z#,[,global]
Parmetros:
ente nombre del ente a posicionar x# - coordenada x donde el ente ser posicionado y# - coordenada y donde el ente ser posicionado z# - coordenada z donde el ente ser posicionado global (opcional) - true si la posicin debera ser relativa a 0,0,0 en lugar de a la posicin del ente padre. False por defecto.
Descripcin:
Posiciona un ente en una posicin absoluta en el espacio 3D. El ente se posiciona usando un sistema de coordenadas x,y,z. X,y y z tienen sus propios ejes, y cada eje tiene su propio valor. Especificando un valor para cada eje, se puede posicionar un ente en cualquier parte del espacio 3D. 0,0,0 es el centro del espacio 3D, y si una cmara est dirigida hacia una posicin z positiva por defecto, situando un ente con un valor z superior a 0 lo har aparecer enfrente de la cmara, mientras que un valor negativo de z lo hara desaparecer detrs de la cmara. Cambiar el valor x lo movera lateralmente, y cambiar el valor y lo movera arriba/abajo. Por supuesto, la direccin en la que aparece un ente para moverse es relativa a la posicin y orientacin de la cmara. Ver tambin: MoveEntity, TranslateEntity.
Ejemplo:
; PositionEntity Example ; ---------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) ; Set position values so that cone is positioned in front of camera, so we can see it to begin with x#=0 y#=0 z#=10 While Not KeyDown( 1 ) ; Change position values depending on key pressed If KeyDown( 203 )=True Then x#=x#-0.1 If KeyDown( 205 )=True Then x#=x#+0.1 If KeyDown( 208 )=True Then y#=y#-0.1 If KeyDown( 200 )=True Then y#=y#+0.1
Ayuda Blitz Basic If KeyDown( 44 )=True Then z#=z#-0.1 If KeyDown( 30 )=True Then z#=z#+0.1 ; Position cone using position values PositionEntity cone,x#,y#,z# RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor/A/Z keys to change cone position" 0,20,"X Position: "+x# 0,40,"Y Position: "+y# 0,60,"Z Position: "+z#
197
MoveEntity ente,x#,y#,z#
Parmetros:
ente nombre del ente a mover x# - nmero en x en que se mover el ente y# - nmero en y en que se mover el ente z# - nmero en z en que se mover el ente
Descripcin:
Mueve un ente en relacin a su posicin y orientacin actuales. Lo que significa esto es que el ente se mover en cualquier direccin. As por ejemplo, si tienes un personaje del juego que est derecho la primera vez que cargas Blitz3D y quiere moverlo y que permanezca as ( por ejemplo torcer solamente a derecha o izquierda) , entonces moverlo en z le har siempre avanzar o retroceder, moverlo en y le har siempre subir y bajar, y moverlo en x le har siempre desplazarse a derecha e izquierda. Ver tambin: TranslateEntity, PositionEntity.
Ejemplo:
; MoveEntity Example ; -----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) ; Move cone in front of camera, so we can see it to begin with MoveEntity cone,0,0,10 While Not KeyDown( 1 ) ; Reset movement values - otherwise, the cone will not stop! x#=0 y#=0 z#=0 ; Change rotation values depending on the key pressed If KeyDown( 203 )=True Then x#=-0.1 If KeyDown( 205 )=True Then x#=0.1 If KeyDown( 208 )=True Then y#=-0.1 If KeyDown( 200 )=True Then y#=0.1 If KeyDown( 44 )=True Then z#=-0.1 If KeyDown( 30 )=True Then z#=0.1 ; Move cone using movement values MoveEntity cone,x#,y#,z# ; If spacebar pressed then rotate cone by random amount
198
If KeyHit( 57 )=True Then RotateEntity cone,Rnd( 0,360 ),Rnd( 0,360 ),Rnd( 0,360 ) RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor/A/Z keys to move cone, spacebar to rotate cone by random amount" 0,20,"X Movement: "+x# 0,40,"Y Movement: "+y# 0,60,"Z Movement: "+z#
TranslateEntity ente,x#,y#,z#,[,global]
Parmetros:
ente - nombre del ente a trasladar x# - cantidad a trasladar en el eje x y# - cantidad a trasladar en el eje y z# - cantidad a trasladar en el eje z global (opcional) -
Descripcin:
Traslada un ente en relacin a su posicin actual y no a su orientacin. Lo que significa que un ente se mover en una cierta direccin a pesar de su orientacin. Imagina que tienes un personaje en el juego que quieres que salte en el aire al mismo tiempo que hace un triple salto mortal. Trasladar al personaje un nmero positivo en y significar que el personaje siempre ir directamente hacia arriba en el aire, a pesar de donde estuviera orientado, debido a la accin del salto. Ver tambin: MoveEntity, PositionEntity.
Ejemplo:
; TranslateEntity Example ; ----------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) ; Rotate cone by random amount to demonstrate that TranslateEntity is independent of entity orientation RotateEntity cone,Rnd( 0,360 ),Rnd( 0,360 ),Rnd( 0,360 ) ; Translate cone in front of camera, so we can see it to begin with TranslateEntity cone,0,0,10 While Not KeyDown( 1 ) ; Reset translation values - otherwise, the cone will not stop! x#=0 y#=0 z#=0 ; Change translation values depending on the key pressed If KeyDown( 203 )=True Then x#=-0.1 If KeyDown( 205 )=True Then x#=0.1 If KeyDown( 208 )=True Then y#=-0.1 If KeyDown( 200 )=True Then y#=0.1 If KeyDown( 44 )=True Then z#=-0.1 If KeyDown( 30 )=True Then z#=0.1 ; Translate sphere using translation values TranslateEntity cone,x#,y#,z#
199
; If spacebar pressed then rotate cone by random amount If KeyHit( 57 )=True Then RotateEntity cone,Rnd( 0,360 ),Rnd( 0,360 ),Rnd( 0,360 ) RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor/A/Z keys to translate cone, spacebar to rotate cone by random amount" 0,20,"X Translation: "+x# 0,40,"Y Translation: "+y# 0,60,"Z Translation: "+z#
RotateEntity ente,pitch#,yaw#,roll#,[,global]
Parmetros:
Ente nombre de la entidad a rotar pitch# - ngulo inclinacin de la rotacin en grados yaw# - ngulo de giro de la rotacin en grados roll# - ngulo de rotacin en grados global (opcional) true si el ngulo rotado debera ser relativo a 0,0,0 antes que la orientacin del ente padre.. False por defecto.
Descripcin:
Rota un ente a fin de situarlo en su orientacin absoluta. Pitch es lo mismo que el ngulo x de un ente, y es equivalente a inclinar alante/atrs. Yaw es lo mismo que el ngulo y de un ente, y es equivalente a girar izquierda/derecha. Roll es lo mismo que el ngulo z de un ente, y es equivalente a inclinar izquierda/derecha. Ver tambin: TurnEntity.
Ejemplo:
; RotateEntity Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 While Not KeyDown( 1 ) ; Change rotation values depending on the key pressed If KeyDown( 208 )=True Then pitch#=pitch#-1 If KeyDown( 200 )=True Then pitch#=pitch#+1 If KeyDown( 203 )=True Then yaw#=yaw#-1 If KeyDown( 205 )=True Then yaw#=yaw#+1 If KeyDown( 45 )=True Then roll#=roll#-1 If KeyDown( 44 )=True Then roll#=roll#+1 ; Rotate cone using rotation values RotateEntity cone,pitch#,yaw#,roll# RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor/Z/X keys to change cone rotation" 0,20,"Pitch: "+pitch# 0,40,"Yaw : "+yaw# 0,60,"Roll : "+roll#
200
Descripcin:
Gira un ente en relacin a su orientacin actual. Pitch es lo mismo que el ngulo x de un ente, y es equivalente a inclinar alante/atrs. Yaw es lo mismo que el ngulo y de un ente, y es equivalente a girar izquierda/derecha. Roll es lo mismo que el ngulo z de un ente, y es equivalente a inclinar izquierda/derecha. Ver tambin: RotateEntity.
Ejemplo:
; TurnEntity Example ; -----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 While Not KeyDown( 1 ) ; Reset turn values - otherwise, the cone will not stop turning! pitch#=0 yaw#=0 roll#=0 ; Change movement values depending on the key pressed If KeyDown( 208 )=True Then pitch#=-1 If KeyDown( 200 )=True Then pitch#=1 If KeyDown( 203 )=True Then yaw#=-1 If KeyDown( 205 )=True Then yaw#=1 If KeyDown( 45 )=True Then roll#=-1 If KeyDown( 44 )=True Then roll#=1 ; Move sphere using movement values TurnEntity cone,pitch#,yaw#,roll# RenderWorld Text Text Text Text Flip Wend End 0,0,"Use cursor/Z/X keys to turn cone" 0,20,"Pitch: "+pitch# 0,40,"Yaw: "+yaw# 0,60,"Roll: "+roll#
PointEntity ente,objetivo[,roll#]
Parmetros:
ente puntero del ente objetivo puntero del ente objetivo roll# (opcional) ngulo de rotacin del ente
Descripcin:
Dirige un ente hacia otro. El parmetro opcional roll permite especificar el ngulo de rotacin as como dirigir un ente estableciendo slo sus ngulos de pitch (inclinacin) y yaw. Si se desea que un ente se dirija hacia una posicin determinada en lugar de hacia otro ente, simplemente se ha de crear un ente pivote en la posicin deseada, apuntando el ente hacia l y liberando despus el pvot.
201
AlignToVector ente,vector_x#,vector_y#,vector_z#,eje
Parmetros:
ente puntero del ente vector_x# - vector x vector_y# - vector y vector_z# - vector z eje eje del ente que ser alineado al vector 1: eje x 2: eje y 3: eje z
Descripcin:
Alinea el eje de un ente a un vector.
Descripcin:
Aade una secuencia de animacin desde un archive a un ente. Devuelve el nmero de la secuencia de la animacin aadida.
SetAnimKey ente,frame[,pos_key][,rot_key][,scale_key]
Parmetros:
Ente puntero del ente frame - frame de la animacin que se usa como clave de la animacin pos_key (opcional) - true para incluir la informacin de la posicin del ente cuando establecemos la clave. Por defecto es true. rot_key (opcional) - true para incluir la informacin de la rotacin del ente cuando establecemos la clave. Por defecto es true. scale_key (opcional) - true para incluir la informacin de la escala del ente cuando establecemos la clave. Por defecto es true.
Descripcin:
Establece la clave de una animacin para el ente especificado en el frame especificado.
AddAnimSeq ( ente,longitud)
Parmetros: ente puntero del ente longitud Descripcin:
Crea una secuencia de animacin para un ente. Debe hacerse antes de establecer cualquier tecla de animacin mediante SetAnimKey puede usarse en la animacin actual. Retorna el nmero aadido de la secuencia de la animacin.
ExtractAnimSeq(ente,primer_frame,ltimo_frame[,sec_animacin])
Parmetros:
ente puntero del ente primer_frame primer frame de la secuencia de animacin a extraer ltimo_frame ltimo frame de la secuencia de animacin a extraer sec_animacin (opcional) secuencia de la animacin desde la que extraer. Normalmente es 0, y el valor por defecto es 0.
Descripcin:
Este comando permite convertir una animacin del estilo de secuencia de animacin de series de MD2 en secuencias de animacin puras del Blitz, y ejecutarlas usando Animate.
202
Ejemplo::
mesh=LoadAnimMesh( base_mesh$ ) ;anim sequence 0. ExtractAnimSeq( mesh,0,30 ) ;anim sequence 1: frames 0...30 are 'run' ExtractAnimSeq( mesh,31,40 ) ;anim sequence 2: frames 31...40 are 'jump' etc Animate mesh,3,1,2 ;play one-shot jump anim etc...
Animate ente,[,modo][,velocidad#][,secuencia][,transicin#]
Parmetros:
ente puntero del ente modo (opcional) modo de animacin. 0: parar la animacin 1: loop (bucle) de la animacin (por defecto) 2: ping-pong de la animacin 3: one-shot (una fotografa) de la animacin velocidad# (opcional) velocidad de animacin. Por defecto es 1. secuencia (opcional) especifica que secuencia de la animacin se ejecuta. Por defecto es 0. transicin# (opcional) usado para el tween entre la posicin de rotacin actual de los entes y el primer frame de la animacin. Por defecto es 0.
Descripcin:
Anima un ente. Ms informacin acerca de los parmetros opcionales: velocidad# - una velocidad negativa ejecutar la animacin al revs. secuencia Inicialmente, un ente cargado con LoadAnimMesh tendr una animacin de secuencia simple. Se pueden aadir ms secuencias usando LoadAnimSeq o AddAnimSeq. Las secuencias de animacin estn numeradas 0,1,2...etc. transicin# - Un valor de 0 causar un salto instantneo a la primera frame, mientras que valores mayores que 0 causarn una transicin ms suave.
AnimSeq ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve la secuencia de animacin actual del ente especificado.
AnimLength ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve el largo de una secuencia de animacin actual del ente especificado.
AnimTime# ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve el tiempo de animacin actual de un ente.
Animating ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve true si el ente especificado est siendo animado actualmente.
203
Descripcin:
Libera un ente.
CopyEntity ( ente[,padre] )
Parmetros:
ente puntero del ente padre (opcional) el ente padre del ente copiado
Descripcin:
Crea una copia de un ente y devuelve el puntero del ente copiado. Si se especifica un ente padre, el ente copiado se crear en la posicin del ente padre. De lo contrario se crear en 0,0,0.
EntityColor ente,rojo#,verde#,azul#
Parmetros:
ente puntero del ente rojo# - valor rojo del ente verde# - valor verde del ente azul# - valor azul del ente
Descripcin:
Establece el color de un ente. Los valores verde, rojo y azul deberan estar en el rango 0-255. El color por defecto del ente es 255,255,255.
Ejemplo:
; EntityColor Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Set initial entity color values red#=255 green#=255 blue#=255 While Not KeyDown( 1 ) ; Change red, If KeyDown( 2 If KeyDown( 3 If KeyDown( 4 If KeyDown( 5 If KeyDown( 6 If KeyDown( 7 green, )=True )=True )=True )=True )=True )=True blue values depending on key pressed And red#>0 Then red#=red#-1 And red#<255 Then red#=red#+1 And green#>0 Then green#=green#-1 And green#<255 Then green#=green#+1 And blue#>0 Then blue#=blue#-1 And blue#<255 Then blue#=blue#+1
; Set entity color using red, green, blue values EntityColor cube,red#,green#,blue#
204 TurnEntity cube,0.1,0.1,0.1 RenderWorld Text Text Text Text Flip Wend End 0,0,"Press keys 1-6 to change EntityColor red#,green#,blue# values 0,20,"Entity Red: "+red# 0,40,"Entity Green: "+green# 0,60,"Entity Blue: "+blue#
EntityAlpha ente,alfa#
Parmetros:
ente puntero del ente alfa# - nivel de alfa del ente
Descripcin:
Establece el nivel de alfa de un ente. El valor alfa# debera estar en el rango 0-1. El valor por defecto del alfa del ente est establecido a 1. El nivel de alfa es cmo de transparente es un ente. Un valor de 1 significar que el ente no es transparente, es decir, opaco. Un valor de 0 significar que el ente es completamente transparente, es decir, invisible. Los valores entre 0 y 1 causarn una variacin en la transparencia de acuerdo con el nmero, se usa para imitar la apariencia de objetos como el cristal y el hielo. Un valor de alfa de un ente de 0 se usa especialmente en Blitz3D, pues no se renderizarn los entes con dicho valor, pero si se involucrarn los entes en las colisiones. No es lo mismo que HideEntity, que no involucra los entes en las colisiones.
EntityShininess ente,brillo#
Parmetros:
ente puntero del ente brillo# - brillo del ente
Descripcin:
Establece el brillo de reflejo de un ente. El valor de brillo# debera estar en el rango 0-1. El brillo por defecto est establecido en 0. El brillo es canto brillan ciertas reas de un objeto cuando una luz incide directamente sobre ellas. Establecer un valor de brillo de 1 para la mitad superior de una esfera, combinado con la creacin de una luz brillando en su direccin, dar la apariencia de una blola de billar brillante.
EntityTexture ente,textura[,frame][,ndice]
Parmetros:
ente puntero del ente textura puntero de la textura frame (opcional) - frame de la textura index (opcional) ndice de la capa a ser texturizada
Descripcin:
Establece la textura de un ente. El parmetro opcional frame especifica qu frame de la animacin de la textura, si existe, debera usarse como textura. Por defecto es 0. El parmetro opcional ndice especifica qu capa de la textura debera usarse. Hay cuatro capas de textura disponibles, 0-3 inclusive. Por defecto es 0.
Ejemplo:
; EntityTexture Example ; --------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight()
Ayuda Blitz Basic RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load texture tex=LoadTexture( "media/b3dlogo.jpg" ) ; Texture entity EntityTexture cube,tex While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
205
EntityBlend ente,matiz
Parmetros:
ente puntero del ente matiz modo de matiz del ente 0: desactivar textura 1: alfa 2: multiplicar (por defecto) 3: aadir
Descripcin:
Establece el modo de matiz de un ente.
EntityFX ente,fx
Parmetros:
ente puntero del ente fx 1: brillo completo 2: usar el color de los vrtices en lugar del color del pincel 4: flatshaded 8: desactivar niebla
Descripcin:
Establece los efectos de miscelnea de un ente. Se pueden aadir flags para combinar dos o ms efectos. Por ejemplo, especificando un flag de 3 (1+2) se obtendr un brillo completo y un pincel con los colores de los vrtices.
EntityAutoFade ente,cerca#,lejos#
Parmetros:
ente puntero del ente cerca# - distancia enfrente de la cmara a la cual en ente comenzar a desvanecerse lejos# - distancia enfrente de la cmara a la cual el ente dejar de desvanecerse (y se har invisible)
206
Descripcin:
Activa el auto desvanecimiento de un ente. Esto causar que el nivel de alfa del ente se ajuste a las distancias entre cerca y lejos para crear el efecto de desvanecimiento.
PaintEntity ente,pincel
Parmetros:
ente puntero del ente pincel puntero del pincel
Descripcin:
Pinta un ente con un pincel. La razn de usar PaintEntity para aplicar propiedades especficas a un ente usando un pincel en lugar de utilizar EntityTexture, EntityColor, EntityShininess etc, es que se puede predefinir un pincel, y pintar entes una y otra vez de nuevo usando un solo comando en lugar de un montn por separado.
EntityOrder ente,orden
Parmetros:
ente puntero del ente orden orden en el que se dibujar un ente
Descripcin:
Establece el orden de dibujo de un ente. Un orden de 0 significar que un ente se dibujar normalmente. Un valor mayor de 0 significar que un ente se dibujar primero, antes que cualquier otro. Un valor menor de 0 significar que el ente se dibujar ms tarde, despus que cualquier otro. Establecer un orden de ente a un nmero distinto de 0 tambien desactiva el z-buffering del ente, por lo tanto slo debera usarse para entes simples convexos, como cajas de cielo, sorites, etc. EntityOrder afecta al ente especificado, pero no afecta a ninguno de sus hijos, si existen.
ShowEntity ente
Parmetros:
ente puntero del ente
Descripcin:
Muestra un ente. Lo opuesto totalmente a HideEntity. Una vez que se ha ocultado un ente usando HideEntity, se usa ShowEntity para hacerlo visible e implicarlo en las colisiones de nuevo. Los entes se muestran por defecto despus de crearlos/cargarlos, por lo tanto solo se necesitara usar ShowEntity despus de haber usado HideEntity. ShowEntity afecta al ente especificado y a todos sus hijos (entes heredados), si es que existen.
HideEntity ente
Parmetros:
ente puntero el ente
Descripcin:
Oculta un ente, por tanto no ser visible, y no se ver involucrado en las colisiones. El propsito principal de ocultar un ente es permitir crear entes al principio del programa, ocultarlos, copiarlos y mostrarlos cuando sean necesarios en el juego principal. Esto es ms eficaz que crear entes a mitad del juego. Si se desea ocultar un ente y que no sea visible, pero que si est involucrado en las colisiones, debe usarse EntityAlpha 0 en lugar de este commando. Esto har que un ente sea completamente transparente. HideEntity afecta al ente especificado y a todos sus entes hijos, si existen.
NameEntity ente,nombre$
Parmetros:
ente puntero del ente nombre$ - nombre del ente
Descripcin:
Establece un nombre de ente.
207
EntityParent ente,padre[,global]
Parmetros:
ente puntero del ente padre puntero del ente padre global (opcional) - true para que el ente hijo retenga su posicin global y orientacin. Por defecto es true.
Descripcin:
Une un ente a un padre. El padre puede ser 0, en cuyo caso en ente no tendr padre.
GetParent ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve el padre de un ente.
Descripcin:
Devuelve la coordenada x de un ente.
Example:
Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,10 While Not KeyDown( 1 ) x#=0 y#=0 z#=0 If If If If If If KeyDown(203)=True Then x#=-0.1 KeyDown(205)=True Then x#=0.1 KeyDown(208)=True Then y#=-0.1 KeyDown(200)=True Then y#=0.1 KeyDown(44)=True Then z#=-0.1 KeyDown(30)=True Then z#=0.1
MoveEntity cone,x#,y#,z# RenderWorld Text 0,0,"Use cursor/A/Z keys to move cone" ; Return entity x position of cone Text 0,20,"X Position: "+EntityX#( cone ) Flip Wend End
208
EntityY# ( ente[,global] )
Parmetros:
ente nombre del ente del que se devolver la coordenada y global (opcional) - true si la coordenada y devuelta debera ser relativa a 0,0,0 antes que a la posicin del ente padre. Por defecto es false
Descripcin:
Devuelve la coordenada y de un ente.
Ejemplo:
; EntityY Example ; --------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,10 While Not KeyDown( 1 ) x#=0 y#=0 z#=0 If If If If If If KeyDown(203)=True Then x#=-0.1 KeyDown(205)=True Then x#=0.1 KeyDown(208)=True Then y#=-0.1 KeyDown(200)=True Then y#=0.1 KeyDown(44)=True Then z#=-0.1 KeyDown(30)=True Then z#=0.1
MoveEntity cone,x#,y#,z# RenderWorld Text 0,0,"Use cursor/A/Z keys to move cone" ; Return entity y position of cone Text 0,20,"Y Position: "+EntityY#( cone ) Flip Wend End
EntityZ# ( ente[,global] )
Parmetros:
ente nombre del ente del que se devolver la coordenada z global (opcional) - true si la coordenada z devuelta debera ser relativa a 0,0,0 antes que a la posicin del ente padre. False por defecto
Descripcin:
Devuelve la coordenada z de un ente.
Ejemplo:
; EntityZ Example ; --------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera()
Ayuda Blitz Basic light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,10 While Not KeyDown( 1 ) x#=0 y#=0 z#=0 If If If If If If KeyDown(203)=True Then x#=-0.1 KeyDown(205)=True Then x#=0.1 KeyDown(208)=True Then y#=-0.1 KeyDown(200)=True Then y#=0.1 KeyDown(44)=True Then z#=-0.1 KeyDown(30)=True Then z#=0.1
209
MoveEntity cone,x#,y#,z# RenderWorld Text 0,0,"Use cursor/A/Z keys to move cone" ; Return entity z position of cone Text 0,20,"Z Position: "+EntityZ#( cone ) Flip Wend End
EntityRoll# ( ente[,global] )
Parmetros:
ente nombre del ente del que se quiere saber el ngulo de rotacin global (opcional) - true si el ngulo de rotacin del ente debera ser relativo a 0 antes que al ngulo de rotacin del ente padre. False por defecto.
Descripcin:
Devuelve el ngulo de rotacin de un ente. El ngulo de rotacin es tambin el ngulo z de un ente.
Ejemplo:
; EntityRoll Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1
210 If KeyDown( 44 )=True Then roll#=1 TurnEntity cone,pitch#,yaw#,roll# RenderWorld Text 0,0,"Use cursor/Z/X keys to turn cone" ; Return entity roll angle of cone Text 0,20,"Roll: "+EntityRoll#( cone ) Flip Wend End
EntityYaw# ( ente[,global] )
Parmetros:
ente nombre del ente del que se devolver el ngulo de yaw global (opcional) - true si el ngulo de yaw devuelto debera ser relativo a 0 antes que al ngulo yaw del ente padre. Por defecto es false
Descripcin:
Devuelve el ngulo de yaw de un ente. El ngulo de yaw es tambin el ngulo y de un ente.
Ejemplo:
; EntityYaw Example ; ----------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
TurnEntity cone,pitch#,yaw#,roll# RenderWorld Text 0,0,"Use cursor/Z/X keys to turn cone" ; Return entity yaw angle of cone Text 0,20,"Yaw: "+EntityYaw#( cone ) Flip Wend End
211
EntityPitch# ( ente[,global] )
Parmetros:
ente nombre del ente del que se quiere saber su ngulo de inclinacin global (opcional) - true si el ngulo de inclinacin devuelto debera ser relativo a 0, antes que al ngulo de inclinacin del ente padre. False por defecto.
Descripcin:
Devuelve el ngulo de inclinacin de un ente. El ngulo de inclinacin es tambin el ngulo x de un ente.
Ejemplo:
; EntityPitch Example ; ------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() cone=CreateCone( 32 ) PositionEntity cone,0,0,5 While Not KeyDown( 1 ) pitch#=0 yaw#=0 roll#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 208 )=True Then pitch#=-1 200 )=True Then pitch#=1 203 )=True Then yaw#=-1 205 )=True Then yaw#=1 45 )=True Then roll#=-1 44 )=True Then roll#=1
TurnEntity cone,pitch#,yaw#,roll# RenderWorld Text 0,0,"Use cursor/Z/X keys to turn cone" ; Return entity pitch angle of cone Text 0,20,"Pitch: "+EntityPitch#( cone ) Flip Wend End
EntityName$ ( ente )
Parameters:
ente puntero del ente
Descripcin:
Devuelve el nombre de un ente. El nombre de un ente puede establecerse en un programa de modelado, o manualmente usando NameEntity.
CountChildren ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve el nmero de hijos de un ente.
212
GetChild (ente,ndice)
Parmetros:
ente puntero del ente ndice ndice del ente hijo. Debera estar en el rango 1...CountChildren( ente ) inclusive.
Descripcin:
Devuelve el hijo de un ente.
FindChild ( ente,nombre_hijo$ )
Parmetros:
ente puntero del ente nombre_hijo$ - nombre del hijo a encontrar dentro del ente
Descripcin:
Devuelve el primer hijo del ente especificado que coincide con el nombre nombre_hijo$.
EntityPick ( ente,rango# )
Parmetros:
ente puntero del ente rango# - rango para elegir el rea alrededor del ente
Descripcin:
Devuelve el ente ms cercano delante del ente especificado. Un ente debe tener un EntityPickMode distinto de 0 para poder ser elegido.
LinePick ( x#,y#,z#,dx#,dy#,dz#[,radio#] )
Parmetros:
x# - coordenada x para empezar la lnea de seleccin y# - coordenada y para empezar la lnea de seleccin z# - coordenada z para empezar la lnea de seleccin dx# - distancia en x de la lnea de seleccin dy# - distancia en y de la lnea de seleccin dz# - distancia en z de la lnea de seleccin radio (opcional) radio de la lnea de seleccin
Descripcin:
Devuelve el primer ente entre x,y,z y x+dx,y+dy,z+dz.
EntityVisible ( orig_ente,dest_ente )
Parmetros:
orig_ente puntero del ente de origen dest_ente puntero del ente de destino
Descripcin:
Devuelve true si el orig_ente y el dest_ente pueden verse el uno al otro.
EntityDistance# ( orig_ente,dest_ente)
Parmetros:
orig_ente puntero del ente de origen dest_ente puntero del ente de destino
Descripcin:
Devuelve la distancia ente el ente de origen y el ente de destino.
213
TFormPoint x#,y#,z#,orig_ente,dest_ente
Parameters:
x# - coordenada x del punto en el que se realizar la transformacin y# - coordenada y del punto en el que se realizar la transformacin z# - coordenada z del punto en el que se realizar la transformacin orig_ente espacio local del ente de origen desde el que transformar el punto dest_ente espacio local del ente de destino al que transformar el punto
Descripcion:
Transforma un punto desde el espacio local de orig_ente al espacio local de dest_ente. Si orig_ente o dest_ente es 0, entonces se usa el espacio global. El resultado de la transformacin puede ser recuperado usando los comandos TFormedX, TFormedY y TFormedZ.
TFormVector x#,y#,z#,orig_ente,dest_ente
Parmetros:
x# - componente x del vector en el que se realizar la transformacin y# - componente y del vector en el que se realizar la transformacin z# - componente z del vector en el que se realizar la transformacin orig_ente espacio local del ente de origen desde el que transformar el vector dest_ente espacio local del ente de destino al que transformar el vector
Descripcin:
Transforma un vector del espacio local del orig_ente al espacio local del dest_ente. Si orig_ente o dest_ente es 0, entonces se usa el espacio global. Los resultados de la transformacin pueden ser recuperados usando los comandos TFormedX, TFormedY y TFormedZ.
TFormedX
Parmetros:
Ninguno.
Descripcin:
Devuelve el componente X de la ltima operacin TFormPoint, TFormVector o TFormNormal.
TFormedY
Parmetros:
Ninguno.
Descripcin:
Devuelve el componente Y de la ltima operacin TFormPoint, TFormVector o TFormNormal.
TFormedZ
Parmetros:
Ninguno.
Descripcin:
Devuelve el componente Z de la ltima operacin TFormPoint, TFormVector o TFormNormal.
EntityAnimating ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve true si el ente est siendo animado actualmente.
214
EntityAnimTime# ( ente)
Parmetros:
ente puntero del ente
Descripcin:
Devuelve el tiempo de animacin actual de un ente.
Descripcin:
Resetea (pone a cero) el estado de colisin de un ente.
EntityRadius ente,radio#
Parmetros:
ente puntero del ente radio# - radio de la esfera de colisin del ente
Descripcin:
Establece el radio de la esfera de colisin de un ente. Se debe establecer el radio del ente para todos los entes involucrados en colisiones esfricas, que son todos los entes de origen (ya que las colisiones son siempre de esfera a algo), y cualquier ente de destino que est involucrado en un colisin esfera a esfera (mtodo de colisin 1).
Ejemplo:
; EntityRadius Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() sphere=CreateSphere( 32 ) PositionEntity sphere,-2,0,5 cone=CreateCone( 32 ) EntityType cone,type_cone PositionEntity cone,2,0,5 ; Set collision type values type_sphere=1 type_cone=2 ; Set sphere radius value sphere_radius#=1 ; Set sphere and cone entity types EntityType sphere,type_sphere EntityType cone,type_cone ; Enable collisions between type_sphere and type_cone, with sphere->polygon method and slide response Collisions type_sphere,type_cone,2,2 While Not KeyDown( 1 ) x#=0 y#=0 z#=0
Ayuda Blitz Basic If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=-0.1 205 )=True Then x#=0.1 208 )=True Then y#=-0.1 200 )=True Then y#=0.1 44 )=True Then z#=-0.1 30 )=True Then z#=0.1
215
MoveEntity sphere,x#,y#,z# ; If square brackets keys pressed then change sphere radius value If KeyDown( 26 )=True Then sphere_radius#=sphere_radius#-0.1 If KeyDown( 27 )=True Then sphere_radius#=sphere_radius#+0.1 ; Set entity radius of sphere EntityRadius sphere,sphere_radius# ; Perform collision checking UpdateWorld RenderWorld Text 0,0,"Use cursor/A/Z keys to move sphere" Text 0,20,"Press [ or ] to change EntityRadius value" Text 0,40,"EntityRadius sphere,"+sphere_radius Flip Wend End
EntityRadius ente,radio#
Parmetros:
ente puntero del ente radio# - radio de la esfera de colisin del ente
Descripcin:
Establece el radio de la esfera de colisin de un ente. Se debe establecer el radio del ente para todos los entes involucrados en colisiones esfricas, que son todos los entes de origen (ya que las colisiones son siempre de esfera a algo), y cualquier ente de destino que est involucrado en un colisin esfera a esfera (mtodo de colisin 1).
Ejemplo:
; EntityRadius Example ; -------------------Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() sphere=CreateSphere( 32 ) PositionEntity sphere,-2,0,5 cone=CreateCone( 32 ) EntityType cone,type_cone PositionEntity cone,2,0,5 ; Set collision type values type_sphere=1 type_cone=2 ; Set sphere radius value sphere_radius#=1 ; Set sphere and cone entity types
; Enable collisions between type_sphere and type_cone, with sphere->polygon method and slide response Collisions type_sphere,type_cone,2,2 While Not KeyDown( 1 ) x#=0 y#=0 z#=0 If If If If If If KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( KeyDown( 203 )=True Then x#=-0.1 205 )=True Then x#=0.1 208 )=True Then y#=-0.1 200 )=True Then y#=0.1 44 )=True Then z#=-0.1 30 )=True Then z#=0.1
MoveEntity sphere,x#,y#,z# ; If square brackets keys pressed then change sphere radius value If KeyDown( 26 )=True Then sphere_radius#=sphere_radius#-0.1 If KeyDown( 27 )=True Then sphere_radius#=sphere_radius#+0.1 ; Set entity radius of sphere EntityRadius sphere,sphere_radius# ; Perform collision checking UpdateWorld RenderWorld Text 0,0,"Use cursor/A/Z keys to move sphere" Text 0,20,"Press [ or ] to change EntityRadius value" Text 0,40,"EntityRadius sphere,"+sphere_radius Flip Wend End
EntityBox ente,x#,y#,z#,ancho#,alto#,profundidad#
Parmetros:
ente puntero del ente x# - posicin x de la caja de colisin del ente y# - posicin y de la caja de colisin del ente z# - posicin z de la caja de colisin del ente ancho# - ancho de la caja de colisin del ente alto# - alto de la caja de colisin del ente profundidad# - profundidad de la caja de colisin del ente
Descripcin:
Establece las dimensiones de la caja de colisin de un ente.
EntityType ente,tipo_colisin[,repetitivo]
Parmetros:
ente puntero del ente tipo_colisin tipo de colisin del ente repetitivo (opcional) - true para aplicar el tipo de colisin a los hijos del ente. Por defecto es false.
Descripcin:
Establece el tipo de colisin para un ente.
217
EntityPickMode ente,geometra_eleccin,esconder
Parmetros:
ente puntero del ente geometra_eleccin tipo de figura geomtrica usada para la eleccin: 0: Inelegible (por defecto) 1: Esfera (se usa EntityRadius ) 2: Polgono 3: Caja (se usa EntityBox ) esconder - true para determinar que el ente esconde otros entes durante una llamada a EntityVisible.
Descripcin:
Establece el modo de eleccin de un ente.
EntityCollided ( ente,tipo )
Parmetros:
ente puntero del ente tipo tipo de ente
Descripcin:
Devuelve true si un ente colisiona con cualquier otro ente del tipo especificado.
CountCollisions ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve en cuantas colisiones se ha visto involucrado un ente durante la ltima actualizacin del mundo (UpdateWorld).
CollisionX# ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve la coordenada x del mundo de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive. Ver tambin: CollisionY, CollisionZ.
CollisionY# ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve la coordenada y del mundo de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive. Ver tambin: CollisionX, CollisionZ.
CollisionZ# ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve la coordenada z del mundo de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive. Ver tambin: CollisionX, CollisionY.
218
CollisionNX# ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el componente x de la normal de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive. Ver tambin: CollisionNY, CollisionNZ.
CollisionNY# ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el componente y de la normal de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive. Ver tambin: CollisionNX, CollisionNZ.
CollisionNZ# ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el componente z de la normal de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive. Ver tambin: CollisionNX, CollisionNY.
CollisionTime ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el tiempo que lleva calcular una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ) inclusive.
CollisionEntity ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el otro ente involucrado en una colisin particular. El ndice debera estar en el rango entre 1...CountCollisions( ente ), inclusive.
CollisionSurface ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el nmero de ndice perteneciente a la superficie del ente especificado que est ms cerca del punto de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ), inclusive.
219
CollisionTriangle ( ente,ndice )
Parmetros:
ente puntero del ente ndice ndice de colisin
Descripcin:
Devuelve el nmero de ndice del tringulo perteneciente al ente especificado que est ms cerca del punto de una colisin en particular. El ndice debera estar en el rango 1...CountCollisions( ente ), inclusive.
GetEntityType ( ente )
Parmetros:
ente puntero del ente
Descripcin:
Devuelve el tipo de colisin de un ente.
(ancho,alto,profundiad[,gfx3d])
Descripcin:
GfxModeExists es tristemente un comando poco usado que te permitir comprobar si el modo de pantalla dado existe en la tarjeta grfica antes de llamar a los comandos Graphics o Graphics3D. Nota que omitiendo el parmetro opcional gfx3d tambin se comprobar si el modo especificado es 3D-compatible. GfxModeExists devolver True si el modo de pantalla dado est disponible, y False si el modo especificado no est disponible. Si devuelve False, un juego usar un modo diferente o salir de forma correcta (por ejemplo: Error de Ejecucin: he sido demasiado perezoso y he creado mi juego para usarse con un modo de pantalla en particular que tu sistema no tiene. Realmente debera haber usado CountGfxModes y GfxMode alto/ancho/profundidad para encontrar los modos que tiene tu sistema. Oh, bien, pero me he ahorrado 10 minutos de mi vida!.espero que hayas notado el sutil sarcasmo!).
Ejemplo:
If GfxModeExists (2500, 2500, 64) Graphics 2500, 2500, 64 Else RuntimeError "PC display hardware isn't yet capable of silly resolutions like 2500 x 2500 x 64-bit!" EndIf
GfxDriver3D (controlador)
Parmetros:
controlador muestra el nmero del controlador a comprobar, de 1 a CountGfxDrivers ()
Descripcin:
GfxDriver3D devuelve True si el controlador de grficos especificado es capaz de ejecutar 3D. GfxDriver3D se usa generalmente despus de obtener una lista de los controladores disponibles del sistema del usuario mediante CountGfxDrivers (). Aplica esto a cada controlador a su vez (o al controlador seleccionado) para ver si es compatible con 3D. Si devuelve false, el controlador no puede ejecutar operaciones 3D. En sistemas con ms de un controlador de pantalla, puedes usar esto para comprobar la capacidad 3D de cada uno antes de escoger uno mediante el comando SetGfxDriver.
Ejemplo:
For a = 1 To CountGfxDrivers () If GfxDriver3D (a) Print GfxDriverName (a) + " is 3D-capable" Else Print GfxDriverName (a) + " is NOT 3D-capable" EndIf Delay 100 Next
220
GfxMode3D (modo)
Parmetros:
Modo modo de grfico, numerado de 1 - CountGfxModes ()
Descripcin:
GfxMode3D devuelve True si el modo grfico especificado es compatible 3D. GfxMode3D se usa generalmente despus de obtener una lista de los modos de pantalla disponibles del sistema del usuario mendiante CountGfxModes (). Aplica esto a cada uno de los modos (o al modo seleccionado) para ver si puedes ejecutar modo 3D. Si devuelve False, llamar a Graphics3D () con este modo de detalles fallar! Si no deseas ejecutar esta comprobacin, el nico llamamiento a Graphics3D que puedes hacer con garanta de que funcione en un 99% en grficos 3D, es 'Graphics3D 640, 480'. De todos modos, mira GfxModeExists' para ver otros mtodos de ejecutar esta comprobacin.
Ejemplo:
For a = 1 To CountGfxModes () If GfxMode3D (a) Print "Mode " + a + " is 3D-capable" Else Print "Mode " + a + " is NOT 3D-capable" EndIf Delay 100 Next
Windowed3D
Parmetros:
Ninguno.
Descripcin:
Windowed3D () devuelve True si la tarjeta grfica es capaz de renderizar grficos 3D en una ventana en el escritorio. Ciertas tarjetas grficas slo permitirn una profundidad de color 3D determinada (por ej., Voodoo3 soporta slo modos 3D de 16-bit y Matrox slo soporta modos 3D de 16 y 32-bit pero permite establecer modos 2D de 24-bit). Si el escritorio del usuario est establecido a una profundidad de color no soportada en 3D, Windowed3D devolver False.
Ejemplo:
If Windowed3D () Graphics3D 640, 480, 0, 2 Print "Windowed mode!" Else Graphics3D 640, 480, 0, 1 Print "Full screen modes only!" EndIf MouseWait End