問題タブ [lua]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
compiler-construction - 静的に型付けされたLua
コンパイル時に型チェックされるLuaフロントエンドコンパイラを探していますが、標準のLua 5.1バイトコード(実行時型のみ)を出力します。私が欲しいのは、実行時よりも早く些細なエラーを検出するために、かなりの量の静的なコンパイル時の構文解析とオプションの型付けです。結果のバイトコードは、標準のLoadString()でコンパイルされた既存のLuaバイトコードとうまく連携する必要があります。
明確にするために、違いはバイトコンパイル時にのみ発生します。実行時に、バイトコードは、コンパイルフェーズ中に何か別の/異常なことが起こったことを認識しません。
私が考えていることは、ActionScriptによく似ています。Luaバイトコードを出力するActionScriptコンパイラも気になりません!
誰かがそのような努力について聞いたことがありますか?MetaLuaを使用してこれを行うことへの言及をいくつか見ましたが、正直なところ、私は彼らのドキュメントの先頭を作るのに十分な明るさではありません
lua - Lua で IUP を使用して入力を取得する
小さな卓球ゲームを作るために、IUP を使って意見を求めてきました。入力を試してみたかったので、IUPGL の例に付属のコードをいくつか試しましたが、入力がまったく機能していないようです。これまでのコードは次のとおりです。
canvas:k_any()
キーが押されたときに呼び出されるのは私の理解ですが、終了コマンドに対しても応答しません。何か案は?
lua - Lua文字列で個々の文字を反復するには?
Lua に文字列があり、その中の個々の文字を繰り返し処理したいと考えています。しかし、私が試したコードは機能せず、公式マニュアルは部分文字列を見つけて置き換える方法のみを示しています:(
asynchronous - Lua での非同期入力
関連する質問で、 IUP 経由で入力を取得する方法を尋ねました。これは問題なく動作しますが、システムを通過し、ゲームに最適ではない再現率の影響を受けます。私が本当に欲しいのは、特定の時点で任意のキーの現在の状態を取得できる機能です。これを行う方法はありますか (IUP またはその他の方法で)?
c++ - オブジェクトのリストをC++からLuaに渡すにはどうすればよいですか?
私はBitfighterの主任開発者であり、Luaを使用してユーザースクリプトのボットを追加しています。私はC++とLuaを使用して、Lunarを使用してそれらを接着しています。
私はかなり単純なはずだと思うことをしようとしています:LuaにC ++オブジェクト(以下のコードのボット)があり、そのメソッド(findItems)を呼び出して、C++にその周辺の領域を検索させますロボットを作成し、見つかったオブジェクトのリストを返します(TestItemsなどはここには表示されていません)。私の質問は、C ++で見つかったアイテムのリストをアセンブルして返す方法と、Luaでそれらを反復処理する方法です。
基本的に、<<<<アイテムのリストを作成し、それを下のlua >>>>ブロックに戻し、その下に含まれるLuaコード自体に必要な修正を加えたいと思います。
私はコードをシンプルで完全なものにしようとしました。ここにあまり多くないことを願っています!ありがとう!
C++ヘッダーファイル
C++.cppファイル
Luaコード
variables - Luaの値をトゥイーンする
これはどうしたの?x時間で値をトゥイーンしたい。また、最初と最後に「使いやすさ」があると便利であることも考慮に入れています。
私は本当に尋ねるべきではないことを知っています、しかし私は自分自身を試しました、そして私は立ち往生しています。遅延を引き起こすには、関数wait(time)を呼び出す必要があると想定してください。
c++ - Luaスレッドをきれいに終了するにはどうすればよいですか?
私の状況では、Lua (C) API を使用して、文字列に保持されたスクリプトを実行しています。ユーザーがスクリプトの実行を終了できるようにしたいのですが (スクリプトに無限ループが含まれている場合、これは必須です)、どうすればよいですか?
c++ - Lua、C++、貧乏人のサブクラス化
私はBitfighterの主任開発者であり、Luna (Luna のバリアントで、こちらから入手可能) を使用して Lua と C++ を組み合わせて作業しています。
この環境ではオブジェクト指向と継承が適切にサポートされていないことはわかっていますが、これらの制限を少なくとも部分的に回避する方法を見つけたいと考えています。
ここに私が持っているものがあります:
C++ クラス構造
Robot はgetFiringSolution(GameItem item)というメソッドを実装します。このメソッドはitemの位置と速度を調べ、ロボットがitemを攻撃するために発砲する必要がある角度を返します。
したがって、私の問題は、rocks、stone、またはrockyStonesを getFiringSolution メソッドに渡したいということですが、その方法がわかりません。
これはロックのみで機能します:
理想的には、私がやりたいことは次のようなものです:
Lunar のチェック関数は、スタック上のオブジェクトが GameItem に定義されたものと一致する className を持つことを望んでいるため、この潜在的な解決策は機能しません。(Lunar に登録するオブジェクト タイプごとに、オブジェクトが正しいタイプであることを確認するために Lunar が使用する文字列の形式で名前を指定します。)
考えられるすべてのサブクラスをチェックする必要がある場合、次のようなものに落ち着きます。
このソリューションの問題点は、スタック上の項目が正しいタイプでない場合、check 関数がエラーを生成し、対象のオブジェクトをスタックから削除してしまうことです。
スタックから Rock/Stone/RockyStone オブジェクトへのポインタを取得し、それがどのタイプであるかを把握し、それを操作する前に正しいものにキャストする必要があると考えています。
型チェックを行う Lunar の重要な部分は次のとおりです。
このように呼ぶと:
次に、luaL_checkudata() がスタック上のアイテムが Rock かどうかを確認します。もしそうなら、すべてが桃色であり、getFiringSolution() メソッドに渡される私の Rock オブジェクトへのポインターを返します。スタックに Rock 以外のアイテムがある場合、キャストは null を返し、luaL_typerror() が呼び出され、アプリが lala land に送られます (エラー処理によって診断が出力され、極度の偏見でロボットが終了します)。
これを進める方法についてのアイデアはありますか?
どうもありがとう!!
私が思いついた最善の解決策...醜いが機能する
以下の提案に基づいて、私はこれを思いつきました:
じゃあ後で...
おそらくこれでさらに最適化を行うことができます...これをループに折りたたむ方法を本当に知りたいです。実際には、処理するクラスが 3 つよりもはるかに多いため、このプロセスは次のとおりです。少し面倒です。
上記のソリューションのわずかな改善
C++:
じゃあ後で...
Lua ヘルパー関数。ユーザーが手動でコードに追加する必要がないように、別のファイルとして含まれています。
ユーザーは Lua から次のように呼び出します。