Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Mensajes recientes

#61
General / Ayuda con cálculos para que la...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 07:45:19 AM
Nota: Esto lo escribí en noviembre, puede que haya cambiado algunas cosas, perdón pero no le veo sentido a revisar todo.

1- Su velocidad de caída aumenta 0.01 por segundo (segundo es un decir, es más bien una centésima de segundo).

2- Sus velocidades hacia los costados (X), adelante (Y, arriba) y arriba (Z, distancia con respecto al suelo) deben ser acordes a la fuerza del jugador que realiza el tiro. La velocidad hacia abajo aumentará, pero me refiero a las velocidades iniciales. Si por ejemplo tiene fuerza 4 y aplicó 3 para que la pelota avance 3 pixeles (es un decir) por segundo entonces no puede ser que la pelota se eleve 2 pixeles por segundo, ya que la fuerza que queda disponible es sólo 1.

3- Cuando llega a la red la Z de la pelota debe ser igual o mayor a cierto valor, es decir, se debe preestablecer un valor que represente la mínima Z con la que la pelota pasa por encima de la red sin tocarla, y cuando llegue a la red debe tener ese valor o uno mayor. En mi caso es 17.5 pero elijan el que gusten.

4- Debe caer en la cancha rival.

5- Las velocidades deben ser tales que la pelota caiga en cierto punto. Por ejemplo:


6- Su velocidad hacia adelante (Y) debe ser la máxima posible.


Es decir, se intenta que se cumpla una condición en tanto eso no cause que no se cumplan las otras.
3- Se quiere que la pelota pase por encima de la red, pero sin que ello implique que haya caído más/menos de lo que debe (condición 1) ni que se le haya aplicado más fuerza de la que se estableció como posible (condición 2). Si el jugador no tiene suficiente fuerza como para que se cumpla esta condición, no se cumple.
4- La oración anterior.
5- Lo mismo. Si para cumplir las condiciones anteriores es necesario que el tiro no vaya tan diagonal como se quiere, entonces no irá tan así, irá más bien verticalmente.
6- En tanto se cumplan las condiciones anteriores... Si la fuerza es 10 la velocidad Y no debe ser mayor que eso. Si queriendo asignar determinada fuerza a Y luego sin importar cuánta se asigne a Z la pelota no pasa la red o no cae en la cancha rival, entonces habrá que reducir la velocidad Y...


Por si los necesitan o quieren, les dejo los datos del caso (pero pueden inventar otros, lo que sí debe tenerse en cuenta es que no necesito simplemente averiguar 3 numeritos basados en otros, sino un método para averiguarlos teniendo en cuenta que los otros pueden variar, por ejemplo se puede elegir hacer un saque hacia al medio o puede que el personaje tenga distinta fuerza):
NOTA: Ignoren lo de "_level0."
  Variable _level0.AlexFuerza = 10
  Variable _level0.BallX = 417
  Variable _level0.BallY = 548
  Variable _level0.BallZ = 43.8
  Variable _level0.DistanciahastaDestinoX = 136.9
  Variable _level0.DistanciahastaDestinoY = 368
  Variable _level0.DistanciahastaRed = 248
  Variable _level0.DistanciahastaMinsafeBallZ = 26.3


Gracias.

Ah: El incremento de Y está invertido, es decir, entre más abajo más valor.
0,0________600,0
0,800______600,800


ACTUALIZADO:
Intenté seguir un método que me recomendaron pero la persona desapareció, así que a ver si alguien lo puede completar. Esto es lo que tengo:
Código completo:
[spoiler]// La mínima BallZ que no toca la red es 18.6.
fscommand ("fullscreen", "true");
Fuerzaderebotedepelota = -0;
// En ese caso menos es más.
Influenciadelrozamiento = 0.02;
AlexFuerzadebrazos = 2000;
Alextimetodownracket = (10-Math.floor(AlexFuerzadebrazos/1000))*2+5;
Alextimetoupracket = Alextimetodownracket*2;
AlexFuerzadepiernas = 1000;
AlexFuerzadetiros = (AlexFuerzadebrazos/1000+AlexFuerzadepiernas/5000)*1;
Alexrunspeed = AlexFuerzadepiernas/10000;
Alexrunspeedonserving = AlexFuerzadepiernas/1000;
AlexMinXposonserving = 408+Alexrunspeedonserving;
AlexMaxXposonserving = 512-Alexrunspeedonserving;
// ///////////////////////////////////////////////////////
// ////////////////////  Saca Alex  //////////////////////
// ///////////////////////////////////////////////////////
AlexX = 460;
AlexY = 548;
attachMovie("AlexMovie", "Alex", 100);
setProperty (Alex, _x, AlexX);
setProperty (Alex, _y, AlexY);
MaxBallZwhenstriked = 0;
Teclafuesoltada = 0;
// ///////////////////////////////////////////////////////
// ///////////////////////  Alex  ////////////////////////
// ///////////////////////////////////////////////////////
function Alexmovetoserve () {
// Se asume que el jugador elevó la pelota y no soltó la tecla, o que quizá empezó el juego con la tecla presionada.
// Hasta que se capte que la tecla no está presionada no se podrá elevar la pelota.
// Es para evitar que en caso de mantener la tecla presionada se eleve la pelota a penas vuelva a la mano.
if (Key.isDown(37)) {
// Se mueve a la izquierda, si no se sale del límite.
if (AlexX>AlexMinXposonserving) {
AlexX = AlexX-Alexrunspeedonserving;
} else {
AlexX = AlexMinXposonserving-Alexrunspeedonserving;
}
setProperty (Alex, _x, AlexX);
} else if (Key.isDown(39)) {
// Se mueve a la derecha, si no se sale del límite.
if (AlexX<AlexMaxXposonserving) {
AlexX = AlexX+Alexrunspeedonserving;
} else {
AlexX = AlexMaxXposonserving+Alexrunspeedonserving;
}
setProperty (Alex, _x, AlexX);
}
if (Teclafuesoltada == 0) {
if (Key.isDown(65)) {
} else {
Teclafuesoltada = 1;
// Ahora al presionar la tecla de nuevo Alex elevará la pelota.
}
} else if (Key.isDown(65)) {
// Tecla A, eleva la pelota.
Funcencurso = "Alexelevandoball";
Teclafuesoltada = 0;
// Qué tan arriba está la pelota y a qué Velocidad sube (todo al revés).
BallZ = -37.6;
BallZSpeed = -0.4;
Alex.gotoAndStop(2);
gotoAndStop (3);
}
}
//
function Alexelevandoball () {
if (Teclafuesoltada == 1 && Key.isDown(65)) {
// La tecla fue soltada y vuelta a presionar; Alex saca.
// La pelota y su sombra, que estaban en la movie Alex (para que se pudieran mover simplemente con mover a Alex), ahora son attached al lv0.
Funcencurso = "Alexserving";
BallX = AlexX+9;
BallY = AlexY;
attachMovie("BallShadowMovie", "BallShadow", 50);
setProperty (BallShadow, _x, BallX);
setProperty (BallShadow, _y, BallY);
BallZ = BallZ*-1;
BallZoom = 100+BallZ;
attachMovie("BallMovie", "Ball", 99);
setProperty (Ball, _x, BallX);
setProperty (Ball, _y, BallY-BallZ);
setProperty (Ball, _xscale, BallZoom);
setProperty (Ball, _yscale, BallZoom);
Timesincebeginserve = -1;
Alex.gotoAndStop(3);
setProperty (Alex.Chispa, _y, BallZ*-1-getProperty("Ball", _height)/2);
setProperty (Alex.Chispa, _xscale, AlexFuerzadetiros*10);
setProperty (Alex.Chispa, _yscale, AlexFuerzadetiros*10);
// Datos para determinar velocidades del tiro.
DistanciahastaDestinoX = 280.1-BallX;
DistanciahastaDestinoY = 180-BallY;
DistanciahastaMinsafeBallZ = BallZ-18.6;
BallZwhenstriked = BallZ;
DistanciahastaDestinoXY = Math.sqrt(DistanciahastaDestinoX*DistanciahastaDestinoX+DistanciahastaDestinoY*DistanciahastaDestinoY);
DistanciahastaRed = DistanciahastaDestinoXY * Math.abs(BallY-300) / DistanciahastaDestinoY;
// Determinando velocidades del tiro.
BallXSpeed = DistanciahastaDestinoX/DistanciahastaDestinoXY*AlexFuerzadetiros;
BallYSpeed = DistanciahastaDestinoY/DistanciahastaDestinoXY*AlexFuerzadetiros;
BallZSpeed = 0;
// Datos para determinar posiciones de la pelota.
Tiempotranscurridodeltiro = 0;
BallXwhenstriked = BallX;
BallYwhenstriked = BallY;
Ballreachedred = 0;
gotoAndStop (4);
} else {
if (Teclafuesoltada == 0) {
// Aún no se soltó la tecla.
if (Key.isDown(65)) {
} else {
Teclafuesoltada = 1;
// Ahora al presionarla de nuevo Alex saca.
}
}
// Disminuye la velocidad de subida y varía la altura.
BallZSpeed = BallZSpeed+0.01;
BallZ = BallZ+BallZSpeed;
if (BallZ<MaxBallZwhenstriked) {
MaxBallZwhenstriked = BallZ;
}
setProperty (Alex.Ball, _y, BallZ);
// Varía el tamaño de la pelota.
BallZoom = 100+BallZ*-1;
setProperty (Alex.Ball, _xscale, BallZoom);
setProperty (Alex.Ball, _yscale, BallZoom);
if (BallZ>=-37.6) {
// Si queda muy abajo (BallZ muy alto), vuelve a la etapa Alexmovetoserve.
Teclafuesoltada = 0;
Funcencurso = "Alexmovetoserve";
Alex.gotoAndStop(1);
gotoAndStop (2);
}
}
}
//
function Ballmoving () {
Tiempotranscurridodeltiro = Tiempotranscurridodeltiro+1;
BallX = BallXwhenstriked+BallXSpeed*Tiempotranscurridodeltiro;
setProperty (BallShadow, _x, BallX);
setProperty (Ball, _x, BallX);
BallY = BallYwhenstriked+BallYSpeed*Tiempotranscurridodeltiro;
setProperty (BallShadow, _y, BallY);
DistanciaXYrecorrida = AlexFuerzadetiros * Tiempotranscurridodeltiro * C;
Senodelangulodeltiro = Math.sqrt(1-C*C);
BallZ = BallZwhenstriked + AlexFuerzadetiros * Tiempotranscurridodeltiro * Senodelangulodeltiro;
BallZ = BallZ - 0.01 * Tiempotranscurridodeltiro*Tiempotranscurridodeltiro /2;
// BallZSpeed = BallZSpeed-0.01;
// BallZ = BallZ+BallZSpeed;
if (BallZ<=0) {
// Si la pelota llega al suelo, BallZSpeed se invierte con disminución según la cancha.
BallZ = 0;
BallZSpeed = BallZSpeed*Fuerzaderebotedepelota;
// Si BallZSpeed es menor que 0.01: Queda en 0.
if (BallZSpeed<0.01) {
BallZSpeed = 0;
}
// La pelots, al rozarse con el suelo, disminuye sus velocidades.
// BallXSpeed = BallXSpeed+Influenciadelrozamiento;
if (BallXSpeed>0) {
BallXSpeed = 0;
}
// BallYSpeed = BallYSpeed+Influenciadelrozamiento;
if (BallYSpeed>0) {
BallYSpeed = 0;
}
}
setProperty (Ball, _y, BallY-BallZ);
BallZoom = 100+BallZ;
setProperty (Ball, _xscale, BallZoom);
setProperty (Ball, _yscale, BallZoom);
if (Ballreachedred == 0) {
if (BallY <= 300) {
        // Si llegó a la red.
        Ballreachedred = 1;
        BallZwhenreachedred = BallZ;
attachMovie("BallShadowMovie", "BallShadow2", 49);
setProperty (BallShadow2, _x, BallX);
setProperty (BallShadow2, _y, BallY);
attachMovie("BallMovie", "Ball2", 98);
setProperty (Ball2, _x, BallX);
setProperty (Ball2, _y, BallY-BallZ);
setProperty (Ball2, _xscale, BallZoom);
setProperty (Ball2, _yscale, BallZoom);
        }
    }
}
//
function Alexserving () {
Ballmoving();
Timesincebeginserve = Timesincebeginserve+1;
if (Timesincebeginserve == Alextimetodownracket) {
// Desaparece la chispa y Alex queda con la raqueta abajo.
Alex.gotoAndStop(5);
} else if (Timesincebeginserve == 5) {
// Deaaparece la chispa.
Alex.gotoAndStop(4);
} else if (Timesincebeginserve == Alextimetoupracket) {
// Alex queda listo para moverse, etc.
Alex.gotoAndStop(6);
gotoAndStop (5);
// Funcencurso = ""; hay q ver si el saque toca la red.
}
}
// falta indicar dirección
// El rozamiento funciona mal, uno se reduce a 0 antes que el otro.
// El tamaño de la chispa debería depender de cuánta fuerza se use, no de la usable.
// Asignar demasiada fuerza hace que la animación no ocurra bien
Funcencurso = "Alexmovetoserve";
[/spoiler]

Sólo lo relevante:
[spoiler] // La mínima BallZ que no toca la red es 18.6.
// Datos para determinar velocidades del tiro.
DistanciahastaDestinoX = 280.1-BallX;
DistanciahastaDestinoY = 180-BallY;
DistanciahastaMinsafeBallZ = BallZ-18.6;
BallZwhenstriked = BallZ;
DistanciahastaDestinoXY = Math.sqrt(DistanciahastaDestinoX*DistanciahastaDestinoX+DistanciahastaDestinoY*DistanciahastaDestinoY);
DistanciahastaRed = DistanciahastaDestinoXY * Math.abs(BallY-300) / DistanciahastaDestinoY;
// Determinando velocidades del tiro.
BallXSpeed = DistanciahastaDestinoX/DistanciahastaDestinoXY*AlexFuerzadetiros;
BallYSpeed = DistanciahastaDestinoY/DistanciahastaDestinoXY*AlexFuerzadetiros;
BallZSpeed = 0;
// Datos para determinar posiciones de la pelota.
Tiempotranscurridodeltiro = 0;
BallXwhenstriked = BallX;
BallYwhenstriked = BallY;
function Ballmoving () {
Tiempotranscurridodeltiro = Tiempotranscurridodeltiro+1;
BallX = BallXwhenstriked+BallXSpeed*Tiempotranscurridodeltiro;
BallY = BallYwhenstriked+BallYSpeed*Tiempotranscurridodeltiro;
        DistanciaXYrecorrida = AlexFuerzadetiros * Tiempotranscurridodeltiro * C;
        Senodelangulodeltiro = Math.sqrt(1-C*C);
        BallZ = BallZwhenstriked + AlexFuerzadetiros * Tiempotranscurridodeltiro * Senodelangulodeltiro;
        BallZ = BallZ - 0.01 * Tiempotranscurridodeltiro*Tiempotranscurridodeltiro /2;
}
[/spoiler]

Si el personaje tiene poca fuerza:
https://drive.google.com/file/d/1bY60WE73Gvh7eUFoRX8NAeuBoWIaYtNJ/view?usp=share_link

Algún error cometí o cometió porque el personaje está aplicando más fuerza de la que tiene y además la pelota debe pasar más cerca de la red.

Con un poco más:
https://drive.google.com/file/d/1YEhAz8nrcztWpttScLOeMekfXlZHUVZ9/view?usp=share_link

¿Qué está mal en el código? ¿o qué falta, qué hago?
#62
General Programadores / ¿Qué valores pueden obtenerse ...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 07:21:05 AM
Variables/valores de tipo número, texto o tabla (sería como un array 2d supongo).

Empezaré a hacer una lista y pseudocódigos, uds favor vayan agregando o pongan un link donde se responda esta pregunta o algo así, gracias.

Supongamos que la variable se llama V.

Desde tipo número obtener un número:
(sólo usar si se sabe que V es número).

1- Cantidad de caracteres.
Los lenguajes de programación suelen tener una función para esto, quizá antes es necesario convertir al número en texto.
Sin esa función tendría que ser algo como:
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1

2- Cantidad de caracteres sin contar el "-" (si tiene).
Los lenguajes suelen tener una función que convierte un número a su absoluto, pero sino podría ser:
Igual que el anterior pero luego poner:
Si el 1er caracter de V == "-"
__Largo--

3- Cantidad de caracteres sin contar la "," (si tiene).
ValorObtenido = Largo de (Quitar decimales a V)
Sin esa función o similares habría que hacer algo como:
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío y != ","
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1

4- Cantidad de caracteres sin contar los (inserte número de un caracter).
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío y != (caracter)
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1

5- Cantidad de caracteres sin contar los (inserte caracter1) ni los (inserte2).
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío y != (caracter1) y != (c2)
      Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Si se tienen muchas excepciones, para evitar poner muchos ifs se podría hacer algo como:
// Excepciones (1 es excepción), se pueden poner hasta 10:
Char0 = 1
Char1 = 1
Char3 = 1
Char4 = 1
Char5 = 1
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V != vacío
      Si eval("Char"+(caracter nro Lupa de V)) != 1
         Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Si se quiere exceptuar "," o "-" no sé cómo evitar agregar ifs para eso.

6- Cantidad de caracteres sin contar los (inserte 2 caracteres).
NoContar = (inserte2c)
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V es != vacío
      Si caracter nro Lupa de V == caracter nro 1 de NoContar
         Lupa++
         Si caracter nro Lupa de V != caracter nro 2 de NoContar
            Lupa--
            Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Creo...

7- Cantidad de caracteres sin contar los (inserte un número).
Se puede hacer como el anterior pero si la excepción es más larga que la cantidad de caracteres analizados en el código no funcionará bien. Para que funcione bien habría que meter un while pero no soy muy hábil en eso, a ver:
Excepcion = (inserte número)
ExcepcionLargo = Largo de Excepcion, duh!
Largo = 0
Lupa = -1
Repetir
   Lupa++
   Si caracter nro Lupa de V es != vacío
      Si caracter nro Lupa de V == caracter nro 1 de Excepcion
         LupaBackup = Lupa
         Lupa2 = 0
         Repetir
            Lupa2++
            Si caracter nro Lupa2 de Excepcion == vacío
               // La excepción ocurrió
               Lupa2 = -1
            sino si caracter nro Lupa2 de Excepcion != caracter nro Lupa de V
               // La excepción no ocurrió
               Largo++
               Lupa = LupaBackup
               Lupa2 = -1
            sino
               Lupa++
               Lupa2++
         mientras Lupa2 != -1
      sino
         Largo++
   sino
      Lupa = -1
mientras Lupa != -1
Probablemente tenga algún error.

8- Cantidad de caracteres sin contar los (inserte número1, número2...).
// Inserte todas las excepciones que quiera, con el formato Ex(número aquí).
Ex(inserte número1) = 1
Ex(inserte número2) = 1
Ex(inserte número3) = 1
Ex(inserte número4) = 1
Ex(inserte número5) = 1
ExMinLargo = (inserte)
ExMaxLargo = (inserte)
Largo = 0
Lupa = -1
MaxLupa = (Largo de V) - ExMinLargo
Si MaxLupa < 0
   // La excepción más corta es más larga que V, ergo no está incluída.
   Largo = Largo de V
sino si MaxLupa == 0
   // La excepción más corta es igual de larga que V, ergo basta con chequear ese largo.
   Si eval("Ex"+NumaChequear) != 1
      Largo = Largo de V
   sino
      Largo = 0
sino
   Repetir
      Lupa++
      Lupa2 = Lupa
      NumaChequear = ""
      // Lo siguiente toma tantos caracteres de V como son necesarios para tener el largo igual al largo de la excepción más corta.
      Repetir
         Lupa2++
         Si caracter nro Lupa2 de V es != vacío
            NumaChequear = Concatenar (NumaChequear, (Caracter nro Lupa2 de V))
         sino
            // V ya no tiene caracteres sin chequear, ergo no hay más excepciones, fin.
            Largo = Largo + Lupa2 - Lupa
            Lupa2 = ExMinLargo+1
      mientras Lupa2 < ExMinLargo
      Si Lupa2 != ExMinLargo+1
         // Si V aún tiene caracteres sin chequear.
         Si eval("Ex"+NumaChequear) != 1
            // El número tomado no es excepción. Se agregarán caracteres hasta que no haya, o hallar una excepción, o superar el largo de la excepción más larga.
            Repetir
               Lupa2++
               Si caracter nro Lupa2 de V es == vacío
                  Lupa2 = ExMaxLargo+1
               sino
                  NumaChequear = Concatenar (NumaChequear, (Caracter nro Lupa2 de V))
                  Si eval("Ex"+NumaChequear) == 1
                     // Es una excepción.
                     Lupa2 = ExMaxLargo+1
            mientras Lupa2 < ExMaxLargo
            Si Lupa2 == ExMaxLargo+1
               Largo++
   mientras Lupa < MaxLupa
Más probablemete tenga error, me perdí bastante.

Bueno dejaré de hacer estos códigos por un tiempo, primero me interesa ver qué se puede obtener de una variable.

Próximamente posteo casos de contar caracteres específicos e iré posteando más cosas.
#63
General / ¿Tienen un link o método para ...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 07:14:30 AM
Veo que tienen un link que dice ver temas recientes pero muestra los posts, yo quisiera ver una lista larga de sólo títulos ¿tienen algo así? Gracias.

PD: ¿Cuando me van a quitar la Verificación?
#64
General / ¿Cómo hacer un diagrama de flu...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 07:08:52 AM
Es un lío este asunto.

El diagrama lo quiero serio y con todas las opciones posibles, pero como base pueden imaginar algo así:


¿Por dónde empezar a hacerlo? Ese empieza en una pregunta, según eso yo debería empezar por plantear una pregunta ¿cual? Se me ocurre:
¿Qué nivel de complejidad quieres que tenga en qué consiste el desafío?
No se refiere a cuan difícil es de cumplir, sino de describir en qué consiste.

Las posibles respuestas yo diría que son números: 1, 2, 3... cada uno indica un nivel.

El nivel 1 debería ser el más sencillo de todos, pero no debe ser "intenta pasar el juego como te de la gana", eso no es un desafío como los que estoy planteando. Se me ocurre que en el nivel 1 se trate de pasar el juego, sólo se tenga en cuenta 1 variable 1 vez (al final del juego), y que sea tomada como tal, es decir no se toma una parte ni característica suya ni se transforma. Así, algunas posibles respuestas serían:
C: Juega de modo que cuando pases el juego la cantidad de cheats activos sea la mínima posible.
L: Juega de modo que cuando pases el juego el LV (nivel) de tu personaje nro1 sea el mínimo posible.
Debería entenderse que en el 1er caso es válido usar cheats hasta casi al final, sólo importa el valor en el momento final. Lo mismo pasa con el LV en el 2ndo caso, podría tenerse cualquiera durante casi todo el juego, sólo importa el valor final.

El nivel de complejidad podría medirse así:
"Es intentar pasar el juego(+1), y sólo se considera 1(+1) variable como tal(*1) 1 vez(*1)."
Los números entre paréntesis indican cuánto lo anterior está sumando a la complejidad.
1+1*1*1 = 2
Es decir, el nivel sería esa ecuación -1, o el nivel 1 podría ser "pásalo como quieras" y el nivel 2 sería este. Mejor así. También puede verse como tipo 1111.

En el nivel 3 se me ocurre que se aumente 1 cosita (sí... chiquita, que sólo con eso ya se poner complejísimo) de las mencionadas, o se aumenta un poquito la complejidad de alguna manera.
Nota: Por practicidad llamaré bugs también a los glitches, aunque de hecho la mayoría no sabemos la diferencia.
Tipo 111210P1: Es intentar pasar el juego(+1), y sólo se considera 1(+1) variable como tal(*1) 2 veces(*2): A(al inicio o luego de modificar el valor mediante algún X(+1 si X es cheat, +1 si bug, +2 si es cualquiera) por última vez) y B(al final, +0), siendo B más prioritario(+1) que A.
Esto es mínimo 1+1*1*2+1+0+1, que es 5, así que es de nivel 5, no va aquí.
Tipo 111210C11: Es intentar pasar el juego(+1), y sólo se considera 1(+1) variable como tal(*1) 2 veces(*2): A(al inicio o luego de modificar el valor mediante algún X(+1 si X es cheat, +1 si bug, +2 si es cualquiera) por última vez) y B(al final, +0), las cuales deben cumplir cierta relación entre sí(+1) sin interacción(*1).
Esto es mínimo 1+1*1*2+1+0+1*1+0, que es 5, tampoco va aquí.
Tipo 111210I11: Es intentar pasar el juego(+1), y sólo se considera 1(+1) variable como tal(*1) 2 veces(*2): A(al inicio o... +1 o +2) y B(al final, +0), las cuales interaccionan de modo simple(+1) sin condiciones(*1).
Mínimo 5 también, no va.
Tipo 112111: Es intentar pasar el juego(+1), y sólo se considera 1(+1) variable como base(*???) 1 vez(*1), sin interacción(*1) ni condiciones(*1). Ejemplos:
H: Juega de modo que cuando pases el juego el largo del HP (puntos de vida) de tu personaje nro2 sea el mínimo posible.
$: Juega de modo que cuando pases el juego la cantidad de tu dinero tenga la menor cantidad de caracteres repetidos posible.
¿Cómo se mediría la complejidad de considerar a una variable "como base", es decir del hecho de obtener un valor a partir de ella? Veremos más adelante.
Tipo 1211P1: Es intentar pasar el juego(+1), y sólo se consideran 2(+2) variables como tales(*1) 1 vez(*1), siendo A más prioritaria(+1) que B.
Mínimo 4, no va.
Tipo 1211C11: Es intentar pasar el juego(+1), y sólo se consideran 2(+2) variables como tales(*1) 1 vez(*1), las cuales deben cumplir cierta relación entre sí(+1) sin interacción(*1).
Mínimo 4, no va.
Tipo 1211I11: Es intentar pasar el juego(+1), y sólo se consideran 2(+2) variables como tales(*1) 1 vez(*1), las cuales interaccionan de modo simple(+1) sin condiciones(*1).
Mínimo 4, no va.
Tipo 2111: Es intentar llegar a cierto punto(+2), y sólo se considera 1(+1) variable como tal(*1) 1 vez(*1). Ejemplos:
M: Juega de modo que cuando venzas al enemigo más difícil el MP (puntos de magia) de tu personaje nro3 sea el máximo posible.
F: Juega de modo que cuando llegues a la ciudad nro4 la fuerza de tu personaje nro5 sea la mínima posible.

¿Cómo se mediría la complejidad de considerar a una variable "como base", es decir del hecho de obtener un valor a partir de ella?
Yo diría que según cuántos valores y condiciones se usen, aunque habría que especificar más.
Por ejemplo:
El largo de una variable se obtiene contando cuántos caracteres tiene, no se especifica algún valor para eso ni alguna condición; como complejidad vale *1. 0 valores: *(0+1).
Contar cuántas veces se repite el caracter 0 implica decir ese valor, como complejidad vale *2. 1 valor: *(1+1).
Valor de la complejidad: *(Cantidad de valores nombrados+1).

En fin, no parece tan complicado, pensé que iba a llegar pronto a la parte complicada, pero me equivoqué, iré a ello entonces. Una interacción entre variables es como una operación: A+B, A*B-C, etc. Una de las posibles interacciones es concatenar las variables. Eso puede dar resultados como 05 (0 y 5); -32-47 (-32 y -47); 0,19,6 (0,1 y 9,6), etc, los cuales parece claro que en cierto punto es necesario transformar en otros, pero es un tanto subjetivo en qué deben convertirse. Tampoco es que deban convertirse justo luego de una concatenación, se puedan obtener características de esos "valores sin sentido", como el valor simétrico más parecido. Y en definitiva, se puede transformar una variable o hacer que algunas interactúen, según condiciones. Así como se puede hacer algo como:
Si A es 01 o 02, etc
__A=0
es decir transformar un valor sin sentido en un número, también se podría hacer algo como:
Si 10 < A y A < 20
__A=11
es decir transformar un número en otro, o incluso en un valor sin sentido ¿para qué? No sé, en el ejemplo si A es la cantidad de enemigos vencidos y se pide que sean el mínimo posible, con esta especificación si se vencen más de 10 entonces se puede vencer hasta 19 sin problema. Es un posible desafío, puede que no tenga sentido, pero como dije puede haber alguna cosa parecida que sí. Convertir números en valores sin sentido puede que sirva para obtener propiedades de ellos como en el ejemplo que di (simétrico más parecido).

Y bueno, a mí me parece complicado porque no veo claro qué es cada cosa ni por dónde empezar.

¿Tomar como base es un tipo de transformación, o una transformación es un tipo de tomar como base, o eso no importa?
Lo que me parece es que ambos procesos usan una variable como base y obtienen un valor partir de eso, la diferencia es que una transformación siempre usa condiciones.

Lo que tenemos a partir de eso es que para ver las posibles transformaciones primero debemos ver las posibles condiciones.
Condiciones -> Transformaciones.

¿Cuales son las variaciones de tomar como base? O dicho de otro modo: ¿Qué valores se pueden obtener de una variable?
El proceso de obtener uno puede implicar condiciones e interacciones (no necesariamente entre variables, puede implicar valores fijos, es decir, no tomados del juego). Pero bueno, se podría empezar por esto, por los procesos de obtener un valor a partir de una variable, sin usar condiciones ni interacciones. Pensaré en ello.

Ahora tenemos:
Condiciones -> Transformaciones.
Condiciones -> Tomar como base.
Interacciones -> Tomar como base.

Las condiciones pueden implicar tomar como base e interacciones. ¿Y transformaciones? No sé, pero si fuera el caso es un problema porque contradice lo de la rayita que puse antes ¿para hacer la lista de A requiero hacer la lista de B y para hacer la lista de B requiero hacer la lista de A? ¿cómo rayos hago entonces?

¿Condiciones <-> Transformaciones?
¡Condiciones <-> Tomar como base!
Interacciones -> Tomar como base.
Interacciones -> Condiciones.

Las interacciones pueden implicar tomar como base, condiciones ¿y transformaciones? No sé.

¿Condiciones <-> Transformaciones?
¡Condiciones <-> Tomar como base!
¡Interacciones <-> Tomar como base!
¡Interacciones <-> Condiciones!

¿Se entiende? ¿cómo puedo hacer una lista de cosas X si para eso necesito una lista Y que para hacerla necesito una lista X? O estoy confundido en algo.
#65
General / Los botones del editor se me v...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 07:04:05 AM


¿Qué hago?
#66
General / Re:¿ERES NUEVO EN STRATOS? ¡PR...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 07:02:51 AM
¿Dónde están las reglas? Mi presentación es mediante acciones. Ah, es que los botones del editor están mal, pensé que no se me permitían usar por ser nuevo, quería ver cuales eran los requisitos. Miren, así se me ven:

Lo publico en otro tema aparte, anyway.
#67
General / Un cartel dijo que no me pude ...
Último mensaje de Tachikomaia - 29 de Abril de 2023, 06:56:25 AM
Que revisara las cookies. Cuando entré a mi email para enviar uno al vuestro, encontré un mensaje ahí de que estaba registrado. En fin, sólo aviso; quizá alguien que se intentó registrar pensó que no pudo, yo hay otro foro en el que no me pude registrar.
#68
Servicios / ¿Qué debe tener mi red social ...
Último mensaje de KanitoMarketingGroup - 21 de Abril de 2023, 01:27:02 PM
¿Qué debe tener mi red social para conseguir seguidores de calidad?
¿Te cuesta ganar seguidores en tu red social? ¿Sientes que te esfuerzas pero no ves los resultados que deseas? No te preocupes, no estás solo. Muchas empresas y particulares se enfrentan a este reto. En este artículo, exploraremos qué debe tener tu red social para conseguir seguidores de calidad. Trataremos temas como la optimización de tu perfil, la creación de una estrategia de contenidos, la participación en eventos de networking, la utilización de métricas de redes sociales y el uso de herramientas de automatización. Al final de este artículo, comprenderás mejor cómo atraer a los seguidores adecuados a tu red social. Comencemos.

Optimiza tu perfil
Optimizar tu perfil es esencial para atraer seguidores de calidad a tu red social. Cuando alguien visita tu perfil, debe comprender rápidamente de qué trata tu marca y qué tipo de contenido puede esperar ver. Asegúrate de que la imagen de tu perfil, tu biografía y tu foto de portada sean congruentes y pertinentes con tu marca. Invierte algo de tiempo en investigar a tu público objetivo y asegúrate de que tu perfil se ajusta a sus intereses y necesidades.

Otra parte importante de la optimización de tu perfil es utilizar las palabras clave correctas. Las palabras clave facilitan que tu perfil aparezca en los resultados de búsqueda, así que asegúrate de que utilizas palabras clave aplicables en tu biografía, publicaciones y hashtags. Sin embargo, ten cuidado con el uso excesivo de palabras clave o con el uso de palabras irrelevantes, ya que esto puede hacer que tu perfil parezca spam y ahuyentar a posibles seguidores.

Por último, no te olvides de incluir una llamada a la acción (CTA) en tu perfil. Una CTA es una instrucción clara y precisa de lo que quieres que hagan tus seguidores, como Haz clic en el enlace de nuestra biografía para obtener más información o Etiquétanos en tus fotos para que aparezcamos. Esto fomenta el compromiso y la relación con tus seguidores. Sólo asegúrate de que tu CTA está relacionado con tu marca y aporta valor a tu público objetivo.

Crea una estrategia de contenidos
Tener un plan de contenidos sólido es esencial para conseguir seguidores de calidad en las redes sociales. Crear material pertinente y atractivo es imprescindible para cautivar y retener seguidores. Tu contenido debe corresponder a tu público objetivo y reflejar los principios y el talante de tu marca. Tener una agenda de publicación fiable también es esencial para mantener a tus seguidores intrigados e interesados en tu contenido. Si ofreces material de primera calidad de forma persistente, podrás establecerte como experto en tu campo y construir un grupo de seguidores devotos a los que tu marca les interese de verdad.

Cuando tengas un conocimiento sólido de tu público objetivo y del tipo de contenido que resuena entre ellos, será el momento de elaborar tu estrategia de contenidos. Esto implica reconocer los tipos de material que vas a producir, así como las plataformas que vas a utilizar para darlo a conocer. Por ejemplo, si te diriges a un grupo demográfico más joven, puede que quieras centrarte en crear contenido de vídeo de formato corto para plataformas como TikTok e Instagram. Por otro lado, si te diriges a profesionales, quizá quieras concentrarte en producir publicaciones de blog de formato largo que puedan compartirse en LinkedIn. Independientemente de tu enfoque, es importante priorizar siempre la aportación de valor a tu audiencia y la entrega de contenidos de alta calidad que reflejen los valores de tu marca. De esta forma, podrás atraer y conservar seguidores de calidad en tus redes, lo que a la larga puede conducir a una mayor visibilidad de la marca, participación y conversiones.

Participa en eventos de networking
Las oportunidades de networking son una forma fabulosa de aumentar tu presencia en las redes sociales. Estos eventos proporcionan una vía ideal para asociarte con personas afines que comparten tus intereses y valores. Participar en reuniones de tu sector es una forma estupenda de distinguirte como especialista y adquirir notoriedad en tu comunidad. Estableciendo conexiones con otros profesionales, puedes construir una comunidad de seguidores que te apoyen y te ayuden a aumentar tu exposición en las redes sociales y a ampliar tu alcance. Participar en eventos de networking puede ayudarte a formar una base firme de seguidores que interactuarán con tu material y lo difundirán entre sus propios seguidores, creando una reacción en cadena que te permitirá contactar con un público más amplio.

Los eventos de networking también son una vía excelente para absorber conocimientos de otros y adquirir nuevas ideas sobre tu sector. Al entablar conversaciones con otros profesionales, puedes comprender mejor las dificultades y posibilidades de tu campo, y mantenerte al día de las últimas tendencias y tecnologías. Esta inteligencia puede ayudarte a generar material más específico y eficaz, que resuene entre tu público objetivo y aumente tu comunidad de seguidores. Involucrándote en eventos de networking, puedes establecerte como un miembro valioso de tu sector, y construir una comunidad de seguidores fiable y comprometida que te respalde y facilite la consecución de tus objetivos.

Utiliza las métricas de las redes sociales
Las métricas de las redes sociales ofrecen una ventana clara al éxito de tu contenido y al comportamiento de tus seguidores. Puedes aprovechar estas cifras para determinar con precisión qué contenido resuena entre tu audiencia y cómo optimizar tu estrategia para atraer a más seguidores. Analizar métricas como la participación, el alcance y los datos demográficos de los seguidores puede detectar lo que funciona y lo que no, así como permitirte estudiar las tácticas de éxito utilizadas por la competencia. Realizar un seguimiento de las métricas a lo largo del tiempo te permitirá perfeccionar tus tácticas de marketing en redes sociales y tomar decisiones basadas en datos. Para que tu red social siga prosperando, es esencial hacer un seguimiento de las métricas y responder a los datos.

Las métricas también pueden orientarte a la hora de mejorar tu estrategia en las redes sociales. Un bajo índice de participación puede indicar que necesitas crear contenidos más atractivos o modificar la frecuencia o el momento de publicación. Si te mantienes atento a las cifras y realizas cambios en respuesta a ellas, puedes asegurarte de que tus esfuerzos en las redes sociales sigan dando sus frutos. Para garantizar tu éxito continuado, no olvides supervisar y ajustar tu estrategia en función de las métricas. Sigue adelante y estarás bien encaminado hacia el éxito.

Utiliza herramientas de automatización
Para avanzar en las redes sociales es necesario utilizar herramientas de automatización. Estas herramientas son inestimables para agilizar tu presencia y aumentar tus seguidores. Automatizando tareas como dar me gusta, comentar y seguir, puedes ahorrar tiempo y esfuerzo para centrarte en crear contenido de calidad. Las herramientas de automatización pueden beneficiar tanto a las empresas como a los influencers, ayudándoles a atraer más seguidores y, en consecuencia, más clientes. Entre las herramientas de automatización más populares se encuentran Toolows, Hootsuite y Buffer, que facilitan la programación de publicaciones, la supervisión de cuentas y la medición del progreso. Con la ayuda de estas herramientas, puedes seguir fácilmente tu éxito y lograr tu objetivo de conseguir más seguidores en redes.

Ganar una fuerte presencia en las redes sociales es esencial en el mundo actual. Las herramientas de automatización ofrecen una forma estupenda de hacerlo de forma rápida y eficaz. Pueden ayudarte a ahorrar tiempo y energía, sin dejar de centrarte en crear contenidos de la máxima calidad. Utilizando estas herramientas, puedes ganar más seguidores y, por tanto, más clientes. También facilitan el control de tus cuentas y el análisis de tus métricas, permitiéndote seguir tu progreso y asegurarte de que sigues el camino correcto. Las herramientas de automatización son una forma estupenda de maximizar tu alcance y garantizar el éxito en el mundo de las redes sociales.

Para poder conseguir ese engagment que toda empresa quiere tener con sus usuarios, debes emplear las técnicas que sabes que van a tener eficacia para poder conseguirlo. Que mejor manera de conseguirlo que trabajar junto a un grupo de profesionales como sería una agencia de marketing. En este aspecto cabe destacar a Kanito Marketing Group que gracias a los clientes que han confiado en ellos han podido demostrar que son capaces de hacer creando contenido de valor en las redes socialeshttps://kanito.es/gestion-redes-sociales/ y así crear una comunidad fiel y que interactúa con las empresas.

Conclusión
En conclusión, las redes sociales se han convertido en una parte esencial de cualquier estrategia de marketing, tanto para empresas como para particulares. Para conseguir seguidores de calidad, es importante optimizar tus perfiles en las redes sociales, crear una estrategia de contenidos que resuene con tu audiencia, participar en eventos de networking y utilizar métricas de redes sociales para realizar un seguimiento del progreso. Además, herramientas de automatización como Toolows pueden ayudar a agilizar el proceso de conseguir seguidores en plataformas como Twitter. Aplicando estas técnicas, puedes aumentar tu presencia en los medios sociales y, en última instancia, convertir seguidores en clientes fieles.
#69
General / TFG Videojuegos
Último mensaje de LauraCando - 25 de Marzo de 2023, 10:10:01 AM
¡Hola! Soy una estudiante del grado de Comunicación y Creación Audiovisual. Estoy haciendo un TFG (Trabajo de Fin de Grado) de videojuegos donde se necesita de jugadores habituales para el estudio. Estaría muy agradecida si pudieras contestar, no se tarda nada y me ayudarías enormemente. ¡Gracias!

https://usalinvestigacion.eu.qualtrics.com/jfe/form/SV_1LDWI4o2QX93k7I
#70
General / El arte de diseñar juegos, de ...
Último mensaje de Sugaar - 03 de Marzo de 2023, 02:02:39 PM
Este 15 de marzo comenzará la campaña de mecenazgo para editar El arte de diseñar juegos: Un libro de prismas. El texto de referencia de la creación de videojuegos.

Por fin en castellano la enciclopedia de la creatividad y su herramienta de evaluación y talleres Una baraja de prismas:
https://verkami.com/projects/34892-el-arte-de-disenar-juegoshttps://verkami.com/projects/34892-el-arte-de-disenar-juegos

Más información:
https://sugaareditorial.com/el-arte-de-disenar-juegos/https://sugaareditorial.com/el-arte-de-disenar-juegos/






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.