2017-03-22 5 views
-3

Ich bin gerade dabei, ein mittelalterliches Spiel zu erstellen, und ich muss ein System haben, das verschiedene Arten von Truppen mit Rüstungen, Waffen und Schilden ausstattet. Ich hatte ein System, das zeigte, wie viele mögliche Kombinationen ich hatte, aber dann war es schwer, die hundert Kombinationen zu durchforsten, um zu sehen, wie viele Truppen man hat. Also habe ich beschlossen, alle Truppen-Menüs anzuzeigen, aber jede Truppe benötigt nur drei Plätze: Rüstung, Waffe und Schild. Als die Truppen beginnen nurSo weisen Sie einer JavaScript-Variablen Attribute zu

var basicTroopAmount = 0; 

und wie Sie sie rekrutieren die Menge geht nach oben. Ich frage nur, ob jemand eine bessere Möglichkeit kennt, dass jede Truppe "personalisiert" ist in dem Sinne, dass jede mit verschiedenen Rüstungen und Waffen ausgestattet sein kann und wie man dem Code sagt, dass die Rüstungsvariablen Rüstungen sind und nicht hineingehen können der Waffenschlitz und dass mehrere Rüstungen nicht in einen Schlitz gehen können. Ich weiß, dass diese Frage ziemlich geladen ist, aber wenn jemand irgendeinen Input hat, der einer Tonne helfen würde!

+0

Verwenden Objekte, mit privaten Eigenschaften und öffentlichen Mutatoren Ich bin fest codierte Werte an die Funktion addTroop geben, können Sie Benutzer eingegebenen Werte übergeben. – fubar

+1

Sie möchten Ihre Truppen als * Objekte * in einem Array speichern. https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects – Bergi

Antwort

0

Sie können ein Objekt erstellen und alle Eigenschaften und Methoden speichern, die Sie benötigen.

function Troop(armor, weapon, shield) { 
      var armor = armor; 
      var weapon = weapon; 
      var shield = shield; 

      this.getTroopDetails = function() { 
       console.log("Armour -> " + armor + ", Weapon -> " + weapon + ", Shield -> " + shield); 
      } 
     } 

Erstellen Sie neue Truppe Objekte, wie Sie wollen und halten sie in einem Array:

 var Troop1 = new Troop("Iron","Sword","Round"); 
     Troop1.getTroopDetails(); //Prints Armour -> Iron, Weapon -> Sword, Shield -> Round 

     var Troop2 = new Troop("Bombsuit","Lance","Square"); 
     Troop2.getTroopDetails(); //Prints Armour -> Bombsuit, Weapon -> Lance, Shield -> Square 

     var TroopList = []; 
     TroopList.push(Troop1); 
     TroopList.push(Troop2); 
     console.log(TroopList); 

UPDATE: in Ihrem HTML den folgenden Code auf Ihre Schaltfläche hinzufügen.

<button type="button" onClick="TroopManager.addTroop('Iron','Sword','Round')">Add Troop</button> 

In Ihrem JavaScript, implementieren die Funktion:

var TroopManager = { 
      myTroopArray : [], 

      addTroop : function(armor, weapon, shield) { 
      var Troop1 = new Troop(armor, weapon, shield); 
      this.myTroopArray.push(Troop1); 
      console.log("A new Troop has been added.") 
      this.printTroops(); 
      }, 

      printTroops : function() { 
      for(i=0;i<this.myTroopArray.length;i++) { 
       console.log(this.myTroopArray[i].getTroopDetails()); 
      } 

      } 
     } 
+0

Wie empfehlen Sie, diese Troop-Variablen hinzuzufügen? Ich möchte, dass es so aussieht, als würde man auf den Trainingsknopf klicken, also gibt es eine Möglichkeit, auf diese Weise neue Objekte zu erzeugen? – Jellypickles

+0

Rufen Sie eine Funktion für das Ereignis 'OnClick' der Schaltfläche auf und fügen Sie Ihre Verarbeitung hinzu. Bitte überprüfen Sie die aktualisierte Antwort. – f2001340

Verwandte Themen