2016-04-26 7 views
0

Ich schrieb einen Code, bestehend aus drei Tasten und einem Absatz. Der Absatz sagt: "Hallo, mein Name ist Dolly." und die Knöpfe geben dir die Wahl, Dolly eines von drei Dingen zu machen. Sie können entweder hallo sagen, umarmen oder sie töten, und diese Schaltflächen geben jeweils eine Antwort. Ist es jedoch möglich, eine Kombination von Tasten für eine andere Antwort zu drücken? Zum Beispiel, wenn ich den Knopf drücke, um Dolly zu töten, dann den Knopf, um Dolly zu umarmen, könnte ich es dazu bringen, etwas über das Umarmen einer Leiche zu sagen? Wenn das so ist, wie?Wie man HTML-Code mit verschiedenen Kombinationen von Tastendrücken ändert

+1

durch eine Variable für Dollys Zustand zu halten. –

+2

Bitte zeigen Sie Ihren Code, es wird nützlich sein, um mit Ihrer Frage –

+0

@Chewynugget haben Sie von den Antworten profitieren? –

Antwort

2

Dies kann erreicht werden, indem ein Zustandsobjekt für Dolly beibehalten wird.

var dolly = { 
    is_alive: true, 
    hugCount: 0, 
    helloCount: 0, 
    message: function() { 
    if(!this.is_alive) { 
     //whatever you want to print if dolly's dead. 
    } 
    if(this.hugCount) { 
     //whatever for a certain number of hug counts. 
    }   
    if(this.helloCount) { 
     //whatever for a certain number of hello counts. 
    } 

    }, 
    kill: function(){ 
    if(this.is_alive){ 
     this.is_alive = false; 
     return this.message(); 
    } 
    } 
}; 

Sie können weitere Funktionen hinzufügen, wenn dies ein Simulationsspielprototyp ist. Fügen Sie dem Objekt einfach weitere Funktionen hinzu. Wenn Sie weitere Personen wie tina oder james hinzufügen möchten, können Sie auch einen Konstruktor erstellen.

var Person = function() { 
    this.is_alive = true, 
    this.hugCount = 0, 
    this.helloCount = 0, 
}; 
Person.prototype.message = function() { 
    if(!this.is_alive) { 
     //whatever you want to print if dolly's dead. 
    } 
    if(this.hugCount) { 
     //whatever for a certain number of hug counts. 
    }   
    if(this.helloCount) { 
     //whatever for a certain number of hello counts. 
    } 

}; 
Person.prototype.kill = function(){ 
    if(this.is_alive){ 
     this.is_alive = false; 
     return this.message(); 
    } 
}; 
Person.prototype.hello = function() { 
    this.helloCount+= 1; 
    return this.message(); 
} 

Jetzt können Sie einfach so viele Dollys mit der gleichen Funktionalität spawnen!

var dolly = new Person(); 
dolly.kill(); //YOU DIED! 

EDIT 1

Gemäß dem Vorschlag von Norman Bentley, können Sie auch Array verwenden, um eine Spur von Benutzer-Interaktion zu halten mit "Dolly".

var Person = function() { 
    this.is_alive = true, 
    this.hugCount = 0, 
    this.helloCount = 0, 
    this.interaction = [] 
}; 

var ACTIONS = {"HUG":0x01,"KILL":0x02,"GREET":0x03}; 
// Using hexes in an attempt to save bytes not sure what's the best way to do this! 

Person.prototype.interaction = function(action) { 
    // you can use an array of constants for your actions. 
    this.interaction.push(action); 
} 

Person.prototype.kill = function() { 
this.interaction(ACTIONS.KILL); 
this.is_alive = false; 
return this.message(); 
} 

EDIT 2

dies mit HTML entlang einzubetten, beziehen sich auf diese Geige JS.

https://jsfiddle.net/3jvbqm9a/

+0

Nice post! Verwenden Sie die Zählung wie oben, wenn die Reihenfolge der Ereignisse keine Rolle spielt. Wenn dies der Fall ist, müssen Sie möglicherweise ein Array verwenden. –

+0

@NormanBentley Danke und richtig! Ich werde eine Bearbeitung dafür hinzufügen. –

+0

Vielen Dank @AmreshVenugopal – Chewynugget

0

Sicher könnten Sie. Erstellen Sie eine Variable/ein Array für Dolly in Javascript. Jedes Mal, wenn Sie eine Aktion für Dolly ausführen, fügen Sie sie zu diesem Array hinzu. Lesen Sie das Array jedes Mal und entscheiden Sie, wie Ihre Antwort lauten soll.