2016-05-03 4 views
0

私はMari/oと似たようなことをしようとしていますが、AIの原理と技術は異なっています。Luaを使ってコントロールをNESエミュレータにマップする方法は?

しかし、実際にはLuaスクリプトからエミュレータに入力を送信する方法(たとえば、左下のbなど)を調べるのに問題があります。

私はMari/oを書いた人物がどのようにスクリプトでそれをしたのか把握しようとしていますが、私は頭の中でどのように動作するのか把握しようとしています。

NESエミュレータへの入力の仕組みを教えてください。

コード今のところ...(これはFCEUXエミュレータを使用している)

inputTable = joypad.read(1); 

for k, v in pairs (inputTable) do 
    if(k == "right") then 
    v = true; 
    end; 
    print(k, v); 
end; 

while (true) do 
    joypad.set(1, inputTable); 
    joypad.write(1, inputTable); 
    emu.frameadvance(); 

end; 

しかし、私はそうではないのでjoypad.setまたはjoypad.writeは、入力を設定するための正しいことはないと思いますプレーヤーの入力を上書きする以外の何かをするようです。

+1

あなたはどこでも 'inputTable'に割り当てません。あなたはローカルの 'v'変数に割り当てています。代わりに 'inputTable [k]'に代入したいとします。 –

+0

......あなたは正しい。今それは働く.... gah今私はダム感じる。それを指摘していただきありがとうございます。私はvがinputTableのその場所へのポインタに過ぎないと思った。 – JakeM

+0

解決策で質問を編集しないでください。それだけで問題は無効になります。 –

答えて

1

あなたは実際にはここのどこででもinputTableに割り当てていません。

変数vは、forループのローカルです。これはポインタ/参照/等ではありません。表の値に設定します。

テーブルに割り当てるには、ループ内で実際にinputTable[k]に割り当てる必要があります。

関連する問題