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.

Mensajes - Zela

1
Desarrollo de Scripts / Re:Obtener números primos.
Septiembre 18, 2017, 12:13:25 AM
Hola NiuWeb

Como estas?, me gusta la idea que planteas de buscar el enésimo primo :). pues te tengo tres observaciones.

1) El 1 no es primo.
2) Como el único primo par es el 2, podrías recorrer la búsqueda con un i+=2 en vez de i++ saltándote los pares, cuando pos>1.
3) Los divisores de un número n menores a él, son a lo más n/2.

Con el punto 2) y 3) podrías reducir enormemente la ejecución del código.

Saludos  :D.
2
Preguntas y respuestas / Re:gravedad
Diciembre 21, 2014, 07:07:19 AM
Cita de: marron400 en Diciembre 21, 2014, 06:45:46 AM
Cita de: Zela en Diciembre 21, 2014, 04:17:57 AM
Hola,
Te adjunto unas 3 imágenes graficas de la interpretación del código de Clamud.
La función lineal que menciona es sólo un valor que va de ]0,g[ de manera que se acerca al planeta dando la intensidad de la gravedad, o sea , si la nave esta más cerca al alcance su intensidad tenderá a 0, pero si se acerca al radio del planeta su intensidad aumenta hasta g.

Comparto lo que dice él
"... La gravedad máxima y el alcance se tendrán que decidir a base de prueba y error ..."

Saludos.
gracias pero lo que no entiendo es porque mi nave se adentraria al planeta ,soloquiero que colicione con el borde y tenga el alcance ,¿o es que si  se nesestia el radio para especificar la distancia que tendra la gravedad? ,y lo de las variables me preguntaba si se nesesitan algun comando como gravity o algo asi ,o si solo son numeros

"gracias pero lo que no entiendo es porque mi nave se adentraria al planeta ..." :
- No se adelanta, pues según el Código, "él Planeta" Le Ejerce Una Interacción (atracción) a la Nave, sin que esté en "el Código" en la misma nave.
with( obNave ) motion_add( other.k, other.f ); //agregar la fuerza de gravedad al movimiento de la nave

"... soloquiero que colicione con el borde y tenga el alcance ,¿o es que si  se nesestia el radio para especificar la distancia que tendra la gravedad? ..." :
- Pues, El Código Asemeja de una manera Simple "La Fuerza Gravitatoria" (Física), que en resumen seria ; a mas cerca más fuerte es la atracción y a más lejos débil (el radio del planeta y el alcance son los limites), por ende la función lineal del código hace el papel. en tanto la gravedad (g del código), es solo "un número" como referenciar de "que tan fuerte" puede llegar a ser la atracción a dicho planeta que es "independiente" de la variable "gravity" del código GML. En resumen el "Alcance y Radio" del planeta son fundamentales, para que funcione bien este código y no tienes que realizar una colisión extra, pues esto es como una "falsa colisión radial" en código.

"... ,y lo de las variables me preguntaba si se nesesitan algun comando como gravity o algo asi ,o si solo son números" :
- Pues son solo Números para usar bien la función "motion_add" que realiza los cálculos pertinentes manipulando las variables, speed, vspeed, hspeed, direction, entre otras complementarias, para el objeto "Nave".
3
Preguntas y respuestas / Re:gravedad
Diciembre 21, 2014, 04:17:57 AM
Hola,
Te adjunto unas 3 imágenes graficas de la interpretación del código de Clamud.
La función lineal que menciona es sólo un valor que va de ]0,g[ de manera que se acerca al planeta dando la intensidad de la gravedad, o sea , si la nave esta más cerca al alcance su intensidad tenderá a 0, pero si se acerca al radio del planeta su intensidad aumenta hasta g.

Comparto lo que dice él
"... La gravedad máxima y el alcance se tendrán que decidir a base de prueba y error ..."

Saludos.
4
Hola,

Aquí en el manual de la comunidad (GM6-8)
[spoiler]http://www.dazlog.com/manual_GM/Listas.htm[/spoiler]

Sale lo siguiente:
ds_list_add(id,val) Inserta el valor al final de la lista.

id, es la "lista"
val, seria el "ítem"
5
Hola
Cita de: vitail en Diciembre 18, 2014, 12:46:29 AM
Oye que significa eso, cuando no habia puesto lo de instance_create que tu pusistes, las balas iban a la direccion a la ultima bala que hice y funciono por eso pregunto, que significa eso de

bala.instance_create(x,y,obj_bala);

traducemelo ahi t.t

Supondre que dices
bala = instance_create(x,y,obj_bala);
pues teóricamente es tomar la instancia creada en una variable y para luego manipularla.
la gracia esta en que, cuando realizamos el operador "." sobre  aquella variable, podemos acceder a sus variables internas.

un ejemplo

-> tenemos un objeto (ob_algo), sabemos que dispone de variables por defecto; vspeed, x, y, etc.
-> editamos por medio código (en alguna parte) y "Creamos" una nueva instancia a partir del ob_algo
instance_create(10,10,ob_algo)
pero, no podemos manipular la instancia, sino que se crea y funciona por como este definida. Entonces lo "adjuntamos" en una variable
variable = instance_create(10,10,ob_algo)
Aquí, ya disponemos de la posibilidad de "acceder" a sus variables internas por medio del operador "."
variable = instance_create(10,10,ob_algo);
variable.x = 100;

Lo anterior nos dice que a pesar de haber sido creado en la posición "x" en 10, inmediatamente después fue modificado su valor a 100, en tanto aparecerá en la posición (100,10) y no (10,10), o sea modificamos una variable interna de la "instancia" creada a partir del "objeto" ob_algo, usando la variable "variable" del ejemplo (puede tomar cualquier nombre con tal que no tenga conflicto con las palabras reservadas)

en tanto el código de Marth

Cita de: Marth en Diciembre 18, 2014, 12:12:10 AM
Intenta esto:

w=instance_create(x,y,bala)
w.speed=5
w.direction=image_angle


Nos dice que al momento de ser creada una instancia a partir del objeto "bala" en la variable "w" le modificamos la velocidad (speed) con valor de 5 y su dirección (direction) con valor a la dirección del Angulo de imagen del "padre" (image_angle), le llamo padre ya que fue creada a partir de la instancia que contiene el codigo.

Espero se entienda.

el código
bala.instance_create(x,y,obj_bala);
a priori, no tiene mucho sentido, ya que instance_create() es una función general y no una variable interna. No se si en este lenguaje (gml) es posible acceder a funciones internas de los objetos ¿tiene funciones internas predefinidas, no lo he visto en este lenguaje?, aunque en muchos otros lenguajes prácticamente todo es accesos de variables y funciones en los objetos.
si llegase a funcionar, solo crearía una instancia.

Saludos
6
Preguntas y respuestas / Re:disparo de láser mas pesiso
Diciembre 14, 2014, 11:31:59 PM
Hola,

Tomando Parte De Dos Citas.
Cita de: zangetsu en Diciembre 13, 2014, 08:43:53 PM
... lo que quiero lograr es que cuando mi personaje dispare el láser solo se detenga la parte del láser que le da al enemigo ...
Cita de: zangetsu en Diciembre 14, 2014, 01:25:44 AM
... quiero hacer un objeto bala ( desde ya obj. láser) que al colisionar con un enemigo (no importa la distancia) no desaparezca por su colisión, ni dé efecto de atravesar al enemigo. ...

A Primera Impresión, Pienso Que Se Enreda Sin Querer  :P.

Si Lo Intento Llevar De Forma Gráfica Seria Como:

Pensemos En Un Laser de Líneas Y Un Objeto.
Visto Con Lupa Tendríamos.

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------|         |
------------------------------------------------|         |
------------------------------------------------|         |
------------------------------------------------|         |
------------------------------------------------|         |
------------------------------------------------|         |   <--- Objeto
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

Pues Es Lo Que Dices, Según La Primera Cita.
Según La Segunda Cita, No Entiendo Nada De Nada  :-[.

Básicamente Seria Lograr Un Efecto De Luz Con Conque De Muros, Como Usar Una Linterna Al Iluminar Un Objeto Y Pasa La Luz Que No Choca (contra un muro por ejemplo), Pero En Línea Recta.
Creo Que Es Lo Que Dices  :)

Saludos.
7
Preguntas y respuestas / Re:Rebotar en una caja
Diciembre 08, 2014, 04:48:22 AM
Hola Chrom

Intentaré desglosar lo que dices:

- el objeto "Player" al tocar un objeto "Caja" por arriba, le implique "Rebotar verticalmente hacia arriba"
- El objeto "Caja" después del rebote desaparezca por medio de una animación de ruptura.
- si el objeto "Player" no toca el objeto "Caja" por arriba, solo Colisiona.

Viendo su código.

- Supongo que esta mirado desde el objeto "Player", lo cual entiendo que : si en los pies del player esta arriba de una caja (No hay restricción adicional lo cual podría estar al infinito por arriba y la condición seguiría siendo verdadera), él se impulsa verticalmente hacia arriba y "TODAS LAS INSTANCIAS" (with) "Caja" hacen la animación de ruptura. lo cual que si hay más de una caja se romperían todas ellas.

Pues se me ocurre que una solución seria.

Mirarlo desde el objeto "Caja":
- Colocando una condición de "Colision" Y "Posición" con respecto al player (que de antemano es único en la mayoría de los casos), dando a conocer el "rebote" del player y la animación de ruptura respectivamente.

Pienso que así, no ocurrirían casos extraños. ya que si colisionan y no ocurre la condición de posición solo colisionaría.

un error a futuro que tendrías, será que la condición de "posición" no te servirá por sea cual sea tu estrategia. el problema es que TODOS los objetos que se "mueven" se "Teletransportan" por cada "step", y la mayoría de los casos no te servirá dar una condición especifica, porque no se daría casi nunca, a menos que, uses "colisiones telescópicas" ( analizas un step antes de pasar un punto especifico) pero es complicado a simple vista.
Lo mas simple y sano para el cerebro es saber cuando el player "Cae" o "Sube" eso lo consigues con la variable del player "vspeed" si es negativa "SUBE" y en caso contrario "BAJA". en tanto, viendo la condición de "colisión" y su "velocidad" sea positiva cumples lo mínimo para dar paso al rebote  :)

- suele pensar que que con la opción "other" se soluciona todo mirándolo desde el objeto player, pero, usas la función "instance_change()" que tiene efecto desde la instancia invocada, lo cual justificaría su uso del "with" que ejecuta un código como si estuviésemos en esa instancia en particular, pero el "with" hace un bucle por todas las familias del objeto, lo cual influyen en todas las instancias que son creadas desde la estructura del objeto "Caja" (la familia que menciono)

Saludos.
8
Hola Betox,

Te adjunto un ejemplo, cualquier duda dime.

(esta solo lo elemental y nada optimizado)

Saludos
9
Hola Betox,

Tal cual como se ve, es muy bruta la caída.

Intentemos algo simple, he notado que el salto Original es con aceleración disminuida dando el efecto que se queda en la cresta del máximo salto.
Eso pasa porque la ecuación de movimiento de proyectil es defectuosa, ¿en que? pues cuando dejas de pulsar el botón de salto el mario Bruscamente se deja de mover verticalmente (vspeed = 0) provocando la caída al instante (dando el efecto bruto). lo único que debes hacer es suavizar la detención.

Pues si dejas pulsado el botón hasta q llega al suelo, el suavizado lo hace el motor de gravedad del objeto, pero no logras lo mismo con saltos pequeños.
En tanto lo único que hay q hacer es suavizar la detención en unos cuantos step's. (pero es complicado a simple vista)

¿Cómo lo logro entonces?

Pues pensemos que al saltar mario "recibe impulso de parte del botón" como si fuese una gravedad hacia el techo hasta q le corresponda. así conseguimos que cuando se suelte el teclado mario no Deva detenerse forzosamente sino que la gravedad del mismo lo realizara (el suavizado), entonces ordenémonos:

- Primera vez q se cliquea la tecla : mario recibe un impulso brusco "vspeed = -15" (para obtener un salto mínimo en caso de pulsar la tecla en un tiempo muy corto)
- si la tecla sigue presionada : le damos el micro impulso , ¿pero COMO? aquí un trukillo, mario en aquel instante dispone de una velocidad vertical determinada (vspeed) la cual aceleraremos pero ¿como se acelera en código?, pues cuando hacemos esto "vspeed += aceleración " ya conseguimos nuestro cometido. (La aceleración es negativa ojo con eso). un punto importante si la aceleración tiene el mismo valor en magnitud negativa que la gravedad delua objeto DEVIESE moverse con velocidad constante hacia el techo, por ende, debes usar valores mayores o iguales a la gravedad del objeto (en negativo). si es mayor dara un efecto de cohete!, en caso de menor un efecto de amortiguamiento por friccion (como subir con peso adicional), hay juégale con los valores.
.- si soltamos la tecla: no hacer nada. Porque la gravedad del objeto realizara el suavizado.

Otra cosilla encontré 2 bug's:
- al comenzar el juego, para matar el monito realice lo siguiente, al momento de saltar y topar al cubo con la flor por debajo y caer sobre el monito, tanto el monito como el mario mueren.

- al jugar con los saltos y movimientos, desde la posición del cubo de abajo de la bandera saltando hacia la pila de cubos en pirámide (dejando presionado el botón de salto y el de moverse horizontal), A veces se queda pillado el mario en la pila de cubos, en algunas ocasiones insalible y otras sale.
Saludos
10
Hola, te refieres a estos saltos?

Link Video.
[spoiler]https://www.youtube.com/watch?v=PYP8k7uQnTU[/spoiler]

Si es así, tu problema va en cuanto tiempo dispone presionada la tecla el usuario, me refiero con una velocidad inicial estándar y si continua presionando la tecla realiza una "especie de vuelo" como un continuando del salto, Claro esta que hay q ponerle una restricción de tiempo para que caiga.

En síntesis.

presionado de tecla:
- por primera vez : su velocidad vertical aumenta a V0 (un valor a elección)
- si continua presionando la tecla, dispone de un apoyo extra de vuelo por intervalos de tiempo pequeños (por step), o sea si continuaría 100 steps seria V0/100 (por ejemplo) para q no se vea muy brusco el vuelo, aunque esto es similar a cuando haces avanzar el personaje horizontalmente (valores pequeños) xD.
- delimitar el tiempo de presionado para q no vuele al infinito.

Lo Anterior seria de la manara más "arcaica" o "a la bruta", Existen métodos de aceleración por medio de física simple para realizar lo que quieres. pues encuentro importante que conozcas bien lo que programes, porque es una parte vital de su personaje.

PD: Que recuerde hay ejemplos (zona de descargas) por esta pagina de doble saltos o saltos continuos o saltos personalizados, una vez (hace años) me topé con algunos.

Saludos.
11
Cita de: juanjuve en Mayo 22, 2014, 12:52:52 AM
... (¿ como es eso de dar puntos o creditos...? )  :-[

Me Conformo Con Que Le Sirva :), Aquí En la Comunidad Todos Nos Ayudamos.

Saludos
12
Hola juanjuve,

Esto Es Algo De Matemáticas.

Tu Problema Es Que Rotas El "Plano Cartesiano" Del Programa, Lo Cual El "depth = -y" No Te Funcionará Nunca, Porque es Solo Un Caso Cuando El Plano Lo Vez En Los 90° Que Mencionas.

Le Dejo Su Problema Resuelto "Adjunto"

PD: Puede Q No Entienda Mis Comentarios En El Código.  :-[
13
Preguntas y respuestas / Re:Interactuar con objetos
Mayo 21, 2014, 06:54:34 AM
Hola Pepe.loya.
Si Miras Este Link.
http://www.dazlog.com/manual_GM/Deteccion_de_colisiones.htm

Por Hay Dice:
"...El argumento  notme indica si no se debe tener en cuenta a la instancia que llama a la función. ..."

Ten En Cuenta Que También Dice:
"... Todas estas funciones devuelven la id de una de las instancias con las que se detecta colisión.  Si no hay colisión devuelven un valor negativo. "

Eso Podrida Ayudarte A Orientarte, No Es Muy Complicado ^^.

Saludos

Atte:
Zela
14
Preguntas y respuestas / Re:objeto sigue personaje
Mayo 21, 2014, 06:43:42 AM
Hola Carry,
Por  Lo Poco Que He Programado En GML, Ese Retraso Ocurre Porque El Objeto (PJ) Se Actualiza Antes O Después Del Objeto (Burbuja) En Sus Posiciones. Lo Cual Se "Arreglaría De Mala Manera", Escribiéndolo En El Objeto (PJ) Mismo, O Sea Al Momento De Que Él Se Mueve Indicarle El Movimiento Al Objeto (Burbuja).

Una Idea Simple De Escribirlo Seria
(Estoy en el Objeto PJ, En Cualquier Parte Donde Se Encuentre Programada El Movimiento Del Mismo)
X+=1;
(Burbuja).X = X;
Y+=1;
(Burbuja).Y = Y-64;

De Esa Manera "Fuerzas" Lo Que Quieres, Y El Retraso Debiese "Irse", Aunque Si La Maquina Es Lenta O Le Pones Unos FPS Pequeños Se Notara Un "Leve" Retraso.

Bueno Nada Es Perfecto.

PD: Les Doy Los Derechos De Autor A Penumbra Por El Code de Ejemplo.

Saludos

Atte:
Zela
15
Juegos en desarrollo / Re:Bubble Game [PC] alpha2
Mayo 21, 2014, 06:22:58 AM
Hola!
Le Cuento Que:
Me Gusta La Manera De Derribar Enemigos, Aunque Marea El Cambio De 2 Vistas De Manera Repentina.

Se Ve Que Promete Su Proyecto.

PD: Jugé Él "Bubble bobble" En Mi Infancia, Y El Atrapado De Los Enemigos En El Bubble Es Mi Falso Recuerdo ...
Saludos.

Atte:
Zela