1

だから、これが私がやろうとしていることです。率直に言って、それは明らかであるべきだと思いますが、私にはそれがわかりません。非常に単純な人工知能シミュレーションを作成しています。このシミュレーションでは、画面の下部に入力ボックスがあります (正確には「入力」と呼ばれます)。「入力」には、そのプロパティに「受信箱」と呼ばれる変数があります(正確には)。キー リスナーを使用して、Enter ボタンが押されたときにスクリプトが関数を呼び出します。この関数には、AI (「nistra」という名前) の応答を指示する 2 つの if ステートメントと else ステートメントがあります。問題はこれです。言いたいことを入力してEnterキーを押すと、常に2番目の応答が使用されます(以下のコードの「lockpick」)。コードのバリエーションを試しましたが、まだ解決策がわかりません。問題は、「typein」変数がテキストボックスと変数からのすべてのフォーマット情報を保持していることだと思いますが、間違っている可能性があります。その情報はコード自体の下にもあります。私が得ることができるどんな助けも大歓迎です。

var typein = ""; //copies the text from inbox into here, this is what nistra responds to
var inbox = ""; //this is where the text from the input text box goes
var respond = ""; //nistra's responses go here
my_listener = new Object(); // key listener
my_listener.onKeyDown = function()
{
    if(Key.isDown(13)) //enter button pressed
    {
        typein = inbox; // moves inbox into typein
        nistraresponse(); // calles nistra's responses
    }
    //code = Key.getCode();
    //trace ("Key pressed = " + code);
}

Key.addListener(my_listener); // key listener ends here

nistraresponse = function() // nistra's responses
{
    trace(typein); // trace out what "typein" holds
    if(typein = "Hello") // if you type in "Hello"
    {
        respond = "Hello, How are you?";
    }
    if(typein = "lockpick") // if you type in "lockpick"
    {
        respond = "Affirmative";
    }
    else // anything else
    {
        respond = "I do not understand the command, please rephrase";
    }
    cntxtID = setInterval(clearnistra, 5000); // calls the function that clears out nistra's response box so that her responses don't just sit there
}

clearnistra = function() // clears her respond box
{
    respond = "";
    clearInterval(cntxtID);
}

// "typein" は以下をトレースします

<TEXTFORMAT LEADING="2"><P ALIGN="CENTER"><FONT FACE="Times New Roman" SIZE="20" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">test</FONT></P></TEXTFORMAT>
4

1 に答える 1

0

ActionScript は ECMAScript に基づいているため、等価比較==の代わりに使用する必要があると確信しています。=

現在、コードは次のように機能します。

if(typein = "Hello") { // assign "Hello" to typein. always true.
    respond = "Hello, How are you?";
}
if(typein = "lockpick") { // assign "lockpick" tot ypein. always true.
    respond = "Affirmative";
}
// the else block is always false for obvious reasons

したがって、次のようにコードを変更するだけです。

if(typein == "Hello") {
    respond = "Hello, How are you?";
}
else if(typein == "lockpick") {
    respond = "Affirmative";
}
else {
    respond = "I do not understand the command, please rephrase";
}
于 2012-10-23T22:53:53.183 に答える