2017-04-25 3 views
0

Ich lerne, um eine einfache ai die Richtung vorherzusagen, die der Spieler nächste Runde schlagen wird. es gibt nur 3 Richtungen, links, rechts und vorne.Javascript vorherzusagen, nächsten Schritt basierend auf vorherigen Daten

Zur Zeit kann ich nur die nächste Bewegung vorhersagen, je nachdem, welche Richtung am meisten gelocht ist. Hier ist mein Code

function Actor(name) { 
    this.name = name 
} 

var r = 'right' 
var l = 'left' 
var f = 'front' 

Actor.prototype.punch = function(direct, target) { 
    if (this == player) { 
     if (!target) target = enemy 
     console.log(this.name + ' hit ' + target.name + ' on ' + direct) 
     player_log.push(direct) 
     console.log(target.name + ' block to the ' + mode(player_log)) 
    } 
    console.log(this.name + ' hit ' + target.name + ' on ' + direct) 
} 

var player = new Actor('Player') 
var enemy = new Actor('Enemy') 

var player_log = [] 

function mode(arr) { 
    if (arr.length == 0) return null 

    var map = {} 
    var max = 1 
    var maxEl = arr[0] 
    for (var i = 0; i < arr.length; i++) { 
     var el = arr[i] 

     if (!map[el]) { 
      map[el] = 1 
     } else { 
      map[el]++ 
     } 

     if (map[el] > max) { 
      max = map[el] 
      maxEl = el 
     } 
    } 

    return maxEl 
} 

Nun, was ich will, ist, wenn der Spieler eine Combo hat, zum Beispiel Punch rechts, rechts, links, rechts, rechts, vorne. Was ich tun muss, damit der ai dieses Combo-Muster erkennt, nachdem der Spieler einige Male diese Combo benutzt hat. Damit die gleiche Combo nicht mehr funktioniert und der Spieler eine neue Combo finden muss, die der ai noch nicht erkannt hat.

Auch ich bin neu in dieser Art der Programmierung. Ich brauche den Algorithmus, nicht nur den Code. Und was sollte ich sonst noch lernen, wenn ich dieses Ai entwickeln möchte? Ich weiß, vielleicht gibt es eine Menge von Bibliotheken, die das tun können, aber ich möchte zuerst die Grundlagen kennen, bevor ich eine Bibliothek verwende.

Antwort

0

Wirklich Fleckenmuster ist sehr kompliziert. Like - Forscherteam kompliziert.

Sie könnten jedoch eine vereinfachte Version machen, indem Sie alle Bewegungen aufzeichnen und dann die letzten n Züge zusammensuchen und in der vorhandenen Verschiebeliste in dieser Reihenfolge nach ihnen suchen. Wenn Sie sie (und nicht nur am Ende) finden, können Sie raten, dass der nächste Zug der gleiche wie der in der Liste sein wird. Je öfter Sie die Sequenz und den nächsten Zug finden, desto sicherer können Sie sein.

Weitergehen, Sie könnten die Zeiten zwischen den Zügen speichern und beginnen, sie zu vergleichen, aber das wird die Dinge ziemlich viel komplizieren.

Viel Glück!

Verwandte Themen