> Tutorial
Ya hemos utilizado varias funciones estándar (setWeapon, moveToward, etc.). También es posible crear sus funciones personales, con la siguiente sintaxis:
functionsuma( x, y ){ x + y }La palabra clave return, opcional, sirve para hacer que la función devuelva un valor. En el ejemplo anterior, la función toma los parámetros x y y y devuelve su suma: x + y.
canFinish(enemigo)Nuestro código anterior para la condición de "finish" del enemigo es bastante largo y poco reutilizable, lo vamos a poner en una función.
Vamos a crear una función personal canFinish(enemigo), que toma un enemigo y devuelve un booleano que indica si podemos rematarlo o no.
Copiamos el código del finisher en una función que se escribe de esta forma:
nota: acordaos de especificar de qué arma se trata para que el cálculo funcione. Además, la función devuelve verdadero si tenéis suficientes puntos de turno para disparar suficientes tiros sobre el enemigo para que muera y falso si por el contrario va a sobrevivir (así que quizá podéis hacer otra cosa).
Ahora, podemos utilizar nuestra función canFinish en nuestro código principal para escribirlo de forma mucho más sencilla:
¿Lo sabíais? Mover varias veces el mismo código a una función se llama Factorización.
getClosestCellToUseWeapon(enemigo)Quizá hayáis visto que para utilizar el arma Machine Gun o más adelante el Laser, debéis estar en línea con el enemigo.
Habrá que ir entonces a una celda desde la cual podáis utilizar vuestra arma, en lugar de simplemente avanzar hacia el enemigo como con la Pistola.
Para ello, existe la función estándar getCellsToUseWeapon, que devuelve todas las celdas posibles para utilizar un arma sobre un objetivo. Habrá que elegir una: ¡la más cercana!
Vamos a crear entonces una función getClosestCellToUseWeapon y a utilizar un bucle for in para calcular la celda cuya distancia con nosotros es la más corta:
La usamos para reemplazar el desplazamiento moveToward:
Si os sentís cómodos, podéis programar funciones:
estimateDamage(weapon, enemigo): calcula el daño que el arma weapon va a infligir sobre enemigo.getBestWeapon(enemigo): busca entre vuestras armas la que hace más daño sobre enemigoTambién podéis:
Para ver mejor el terreno y las celdas, no dudéis en utilizar el modo táctico pulsando T en combate.
En los próximos capítulos abordaremos aspectos más difíciles así que tomaos el tiempo de jugar con vuestras funciones y las nociones que hemos visto anteriormente, ¡que ya son suficientes para subir en la clasificación!
¿Qué función que devuelve el cuadrado de un número es correcta?
function cuadrado(x) { return x * x } function cuadrado(x) { x * x } function cuadrado() { return x * x } fonction cuadrado(x) { return x * x }
¿Qué función calcula el máximo de una lista?
function maximo(lista) { var max = -99999 for (var e in lista) { if (e > max) { max = e } } return max } function maximo(lista) { var max = 99999 for (var e in lista) { if (e < max) { max = e } } return max } function maximo(lista) { var max = 99999 for (var e in lista) { if (e > max) { max = e } } return max } function maximo(lista) { var max = -99999 for (var e in lista) { if (e < max) { max = e } } return max }
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.