Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#1351
.
Me se ocurre aplicar el dicho Divide y Vencerás xP.


NumerosAleatorios (Numero Inicio, Numero Final, Array de valores a no considerar) {
MatrixRangos() = Realizar una búsqueda de valores para verificar si alguno de los numeros del array estan entre el valor de Inicio o el valor del Final: (un For Next bastara) , y generamos cortes de array's por ejemplo (  Inicio=0 final=10 array={5,8}  este paso genera 3 array que son:  {0,4},{6,7},{9,10} )
iIndice = Generamos un numero aleatorio desde Lbound(MatrixRangos()) hasta Ubound(MatrixRangos())
Retornamos el numero que se genera un numero aleatorio según los rangos que indique MatrixRangos( iIndice )(0) y MatrixRangos( iIndice )(1)
}


@XXX-ZERO-XXX

Código (vb,5) [Seleccionar]


Function Existe(m As Integer, a() As Integer) As Boolean
Dim num
For Each num In a()
If (m = num) Then Existe = True: exit for ' // no tiene caso seguir en el for Each si ya se encontro.
Next
End Function



P.D.: No hice el codigo por que me tengo que ir a bañar xP ya lo hago.

Temibles Lunas!¡.
.
#1352
Código (vb) [Seleccionar]


Const SM_CXSCREEN = 0 'X Size of screen
Const SM_CYSCREEN = 1 'Y Size of Screen
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long



despues sigues la formula:

x=ancho/2
y=alto/2

y aplicas un Setcursorpos!¡.

P.D.: si no sabes que onda revisa la MSDN.

Dulces Lunas!¡.
#1353
Si es posible en vb6 hasta donde yo se puede solo usar DirectX 8, aun que por hay corre un rumbor del DirectX 9 aun que dicha libreria es inestable, por otro lado puedes usar muy facilmente OpenGL.

Las UDK para crear un juego habitualmente usan como motor principal C/C++ es muy recomendable por la velocidad y el acceso directo a los Bit ( No por nada es uno de los lenguaje mas rapidos y recomendados par tareas que de otra manera se comerian el procesador )

OpenGL+VB6  <Click Aquí>

Te recomiendo que programes en C/C++ el juego, en Vb6 si se puede pero te va a resultar lento en algunas cuestiones.

Te dejo un código de ejemplo de mi tutela ( ocupando la clase cGL de Fernando José Serrano García -KILE para crear una ventana multiplataforma con OPENGL ):
El código Fuente: <Click Aquí>

Si no tienes archivos validos ( Modelos en formato .ASE ) aqui te dejo uno.
Archivo ASE: <Click Aquí>  ( viene con el Source para editarlo )

Notas por si acaso:

* Lo estoy programando en QT ( Sin usar sus librerías para hacer que se pueda realizar una compilacion en cualquier compilador, Standart ANCI C99 ).
* El lector de archivos .ASE aun no lee las Normales del modelado.
* No esta terminado xP.

Cuando lo ejecutes:



Tecla / Función

tecla "a": activa o desactiva la visualización de los polígonos,
tecla "s": activa la visualización de los polígonos (lineas)

F11: Activa/Desactiva la luz.
F12: activa el manejo/manipulación de una Luz o la cámara según sea.

Inicio(home) : mueve la cámara/luz hacia arriba con respecto al punto de vista.
Fin(End): mueve la cámara/luz hacia abajo con respecto al punto de vista.

F1: mueve la cámara/lux hacia la derecha mirando a un punto (no lo rodea).
F2: mueve la cámara/lux hacia la izquierda mirando a un punto (no lo rodea).

F3: mueve la cámara/luz hacia la arriba mirando a un punto (no lo rodea).
F4: mueve la cámara/luz hacia la abajo mirando a un punto (no lo rodea).


F5: mueve la cámara/luz hacia ti mirando a un punto (no lo rodea)
F6: mueve la cámara/luz alejándose mirando a un punto (no lo rodea).
Nota:  [Necesito corregir esto xP, ya que el punto de dirección se indica por el punto "a" y el punto "b", solo hay que jugar con la distancia entre dos puntos y re calcular los ángulos de la azimutal y de la elevación respectivamente par F5 y F6].

Nota: [Aun no esta bien trabajada esta función ya que no hace círculos en 360 ya que crea giros e-coinales cuando la elevación es distinta de 0, se puede arreglar haciendo algunas cosillas matemáticas.]
Las fechas de discreción controlar la rotación de la cámara/luz con respecto al punto de vista en base a su giro.



Necesitas instalar las librerías OpenGL y Glut en tu compilador.

Temibles Lunas!¡.
#1354
.

Tienes varios métodos uno es:

Código (vb) [Seleccionar]


KeyCodeConstants   '   //  Al escribir esta enumeración seguida de un punto sin espacios entre los mismo se te listaran TODAS las constantes.



Otra aun que es prácticamente lo mismo:

Abre el IDE Oprime F2 y busca esto:  vbKey click en buscar... te apareceran todas las constantes respectivas del teclado.

Aqui te dejo la tabla ascii que es lo mismo que cada una de las constantes que te aparecen.


Temibles Lunas!¡.
#1355
Cita de: Dunkansdk en  9 Mayo 2011, 04:19 AM
Código (Vb) [Seleccionar]


    'Calculate Side C
    SideC = Sqr(Abs(TargetX - CenterX) ^ 2 + Abs(TargetY - CenterY) ^ 2)

    'Side B = CenterY

    'Calculate Side A
    SideA = Sqr(Abs(TargetX - CenterX) ^ 2 + TargetY ^ 2)


No tienes por que hacer un abs(), las potencia pares dan un valor positivo.

P.D.: No es necesario realizar la raíz para calcular los grados entre dos puntos.

Dulces Lunas!¡.
.
#1356
.
El angulo se calcula con estas dos formulas...

x = d * sin(grados)
y = d * cos(grados)


Donde ( d = Distancia entre dos puntos )

d = RaizCuadrada( (x1-x2)(x1-x2) + (y1-y2)(y1-y2) ) // Se puede omitir la raíz...

Calculando los grados:

Sustituyendo y haciendo una sola ecuación con dos incógnitas...

d = x/sin(grados) // despejando a d de la 1ra ecuación para sustituirla en la 2da.

y = (x/sin(grados)) * cos(grados)
y = (x*cos(grados))/sin (grados) // aplicando la identidad trigonométrica cos(x)/sin(x) = cot(x)
y = x * Cot(grados)


Calculando los grados:

grados = arctan(y/x) // con esta formula sabes los grados entre dos puntos dados.

El angulo sera entre 0 a 180 para saber si es mayor tienes que hacer una comparación con el eje X o Y según desees; mira este enlace tuve el mismo problema solo que en coordenadas 3D:

http://foro.elhacker.net/foro_libre/ayuda_matematica-t324169.0.html;msg1600888#msg1600888

Si tienes dudas:  http://es.wikipedia.org/wiki/Identidades_trigonométricas




Espero no tenga horrores... los grados los da en sentido horario empesgando como en el reloj de maesillas a las 12 coo los 0 grados, con unos ajustes se puede corregir esto lo haria yo pero ya no tengo tiempo.

Código (vb) [Seleccionar]


Option Explicit

Public Function GetAngle2Points(ByVal x1 As Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Double
   GetAngle2Points = GetAngleXY((x2 - x1), (y2 - y1))
End Function

Public Function GetAngleXY(ByVal x As Double, ByVal y As Double) As Double
Dim dblres              As Double
   dblres = 0
   If (y <> 0) Then
       dblres = Radianes2Grados(Atn(x / y))
       If (x <= 0 And y < 0) Then
           dblres = dblres + 180
       ElseIf (x > 0 And y < 0) Then
           dblres = dblres + 180
       ElseIf (x < 0 And y > 0) Then
           dblres = dblres + 360
       End If
   Else
       If (x > 0) Then
           dblres = 90
       ElseIf (x < 0) Then
           dblres = 270
       End If
   End If
   GetAngleXY = dblres
End Function

Public Function Grados2Radianes(ByVal Grados As Double) As Double
   Grados2Radianes = Grados * (3.14159265358979 / 180)
End Function

Public Function Radianes2Grados(ByVal Radianes As Double) As Double
   Radianes2Grados = Radianes * 180 / 3.14159265358979
End Function

Private Sub Form_Load()
   MsgBox GetAngle2Points(79, 0, 90, 90)
End Sub



Dulces Lunas!¡.
#1357
Si cambias el color de un pincel el API SelectObject te devolverá el pincel original que se esta reemplazando, por ende puedes dibujar en ese momento el circulo con el api Ellipse, después para restaurar el color le pasas nuevamente el API SelectObject y asi restauras el color original, y por ultimo haces un DeleteObject para eliminar el pincel que creaste  con CreatePen.

Aqui un ejemplo:

Lineas aleatorias en pantalla

Temibles Lunas!¡.
#1358
@Karcrack

Recuerdo haber vist otro de un laberinto aun mas complejo, de hecho el laberinto se armaba solo y se respondia de manera automatizada. no recuerdo si fue en psc o en mnet lo que si se es que ya tiene mucho tiempo que lo vi. aun asi este es un reto y esperemos que no decaiga, por que es interesante!¡.

Dulces Lunas!¡.
#1359
Cita de: 79137913 en 13 Mayo 2011, 18:46 PM
Mira, haces asi, abris el archivo en forma binaria, lo guardas en un string.
Despues mandas ese string por winsock y del otro lado lo escribis en un archivo nuevo.

no tiene caso cargarlo en un string ( se gasta el doble de memoria y de transferencia de bytes si es que no se convierte antes a un array byte ), lo mas optimo es cargarlo en un array byte()

Dulces Lunas!¡.
.
#1360
Mi método no es para una empresa de software claro esta ya que si fuera asi lo mas recomendable seria hacer Volcar los registros de la pila hasta el proceso X que causo el error, junto con las variables implicadas y asi mandarlo por TCP/IP a un host, pero de hecho me dio la impresión que es para un cyber (el tramo de código no me dio ni siquiera el aire de que esta siendo desarrollado para una empresa, pero si para un cyber o similar donde se tienen las PC al alcance).

Por otro lado el método que mansionas y mi método tienen desventajas claro, el tuyo así por un msgbox solo te dice la linea con un poco mas de información que elijas a mostrar y el mio que tienes que llevar un EXE y el Source e instalar OCX necesarias si son requeridas y si se tiene una fea dependencia a las mismas, pero he hay una subclasificacion ( que quien sabe que haya en ese proceso, ni si esta siendo restaurado el oldWinProc de ambas subclasificaciones al termino de su función principal ).

P.D.: quien sabe si le llegue a atinar con este enlace: http://support.microsoft.com/kb/290887

Dulces Lunas!¡.
.