Ho cercato e provato altri suggerimenti in StackOverflow. Purtroppo le risposte non funzionano per me. Stanno suggerendo di usare "foreach" invece di "for", ma come potrei ... se voglio ripetere solo 50 volte? : <JSLint: "per" inatteso. Inatteso "var"
Bene, mi limiterò a incollare il codice e vediamo se alcune persone buone possono aiutarmi.
JSLint non è stato in grado di completare.
Inaspettato "per". per (var i = 1; i < = 50; i + = 1) {
riga 6 colonna 8"var" imprevisto. for (var i = 1; i < = 50; i + = 1) {
linea 6 colonna 13
"use strict";
var campo = [];
var ronda = 0;
// Llenamos el campo de 50 humanos/maquinas/extraterrestres = 150 jugadores
for (var i=1;i<=50;i+=1){
campo.push(new Human("h"+i));
campo.push(new Machine("m"+i));
campo.push(new Alien("e"+i));
}
// Array.prototype.suffle para barajar el Array
Array.prototype.shuffle = function() {
var input = this;
for (var i=input.length-1;i>=0;i-=1){
var randomIndex = Math.floor(Math.random()*(i+1));
var itemAtIndex = input[randomIndex];
input[randomIndex]=input[i];
input[i] = itemAtIndex;
}
};
// Barajamos el Array campo
campo.shuffle();
// Comprobamos que quedan más de 1 jugador por ronda
while (campo.length>1) {
console.log("Iniciando ronda: " + ++ronda);
console.log(campo.length + " jugadores luchando.");
// Recorremos el campo, y luchamos
var muertos = 0;
for (var i=0; i<campo.length-1; i+=2){
// Caso de numero impar de jugadores:
// Por ejemplo cuando solo quedan 3 jugadores. Pelean 1 vs 2. El 3 se libra.
// - Si siguen vivos y aguantan otra ronda, se barajan las posiciones otra vez y
// vuelven a pelear dos. Y el nuevo tercero no pelea.
// - Si uno de los dos muere, en la siguiente ronda ya solo quedan 2, y pelean normal.
campo[i].fight(campo[(i+1)]);
// # descomentar solo la siguiente linea para hacer comprobaciones #
// console.log("["+ campo[i].username + "] VS ["+ campo[(i+1)].username + "]");
if (campo[i].health<=0) {
console.log("El " + campo[i].constructor.name + " llamado " + campo[i].showName() + " ha sido asesinado :<");
var fallecido = campo.splice(i, 1);
// # descomentar solo la siguiente linea para hacer comprobaciones #
//console.log(fallecido[0]);
i--; // como el array se hace pequeño, hay que corregir el error para que no se salte jugadores
muertos++;
} else {
if (campo[(i+1)].health<=0) {
console.log("El " + campo[(i+1)].constructor.name + " llamado " + campo[(i+1)].showName() + " ha sido asesinado :<");
var fallecido = campo.splice((i+1), 1);
// # descomentar solo la siguiente linea para hacer comprobaciones #
// console.log(fallecido[0]);
i--; // como el array se hace pequeño, hay que corregir el error para que no se salte jugadores
muertos++;
}
else {
// # descomentar solo la siguiente linea para hacer comprobaciones #
// console.log("Siguen vivos");
}
}
}
console.log("Fin de ronda!")
if (muertos === 1) {
console.log("Ha muerto " + muertos + " jugador.");
} else {
console.log("Han muerto " + muertos + " jugadores.");
}
// Al final de la ronda barajamos de nuevo
campo.shuffle();
}
if (campo.length === 1) {
console.log("Vaya!! Ha sido una memorable batalla!");
console.log("Después de tantos bits derramados y de " + ronda + " rondas... el jugador '" + campo[0].constructor.name + "' llamado '" + campo[0].showName() + "' se ha alzado con la victoria!!");
}
Ci sono alcuni altri termini nel codice, ma sembra fermarsi al il primo. Grazie in anticipo! Hai dimenticato di dire che il codice funziona PERFETTO. Ma lo stavo solo validando con JSLint, anche "tollerante" per gli avvisi in JSLint non funziona.
Questo è solo Crockford essere stupido, ancora una volta, che ti dice 'loop for' non dovrebbe mai essere usata mai. Lo ignorerei. – adeneo
Questa domanda indica che esiste un'opzione per ignorare questo avviso "tollerare per". http://stackoverflow.com/questions/30518554/jslint-unexpected-for – miltonb
Sì, ignorarlo dovrebbe essere il migliore ... ma voglio solo imparare davvero come affrontare questo. So che ci sono molte discussioni con questo problema "per" ma nessuno ha funzionato per me.Grazie comunque! –