問題タブ [squirrel]
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.
lua - ゲーム エンジンのスクリプト言語
私は、Ogre3d レンダリング エンジンから便利な 3D ゲーム エンジンを構築して、思いついたいくつかのアイデアをモックアップしようとしていますが、少し岐路に立っています。利用可能なスクリプト言語は数多くありますが、吟味されて適切な支持を得ているスクリプト言語が 1 つか 2 つあるかどうか疑問に思っていました。
LUA と Squirrel はより精査されているように見えますが、私は誰に対してもオープンです。
配布とロードの容易さのために、言語のコンパイルされた形式があれば最適です。
c++ - XcodeでiPhoneアプリをリンクすると、シンボルが見つからないというエラーが発生する
移植している iPhone アプリをコンパイルしようとすると、リンクエラーが発生します。このアプリは Squirrel と呼ばれるスクリプト言語を使用します (レベル ファイルを読み取るため、SDK によって適切に処理され、ユーザー入力は不要です)。libsquirrel.a を含むすべてのライブラリをリンクしました。私は何を間違っていますか?(アプリは SuperTux で、コンピューター バージョンのソース コードは supertux.lethargik.org にあります)。
ビルド出力を見たとき:
libstdc++-static.a で奇妙なことが起こっている可能性があります。それが何であるかさえわかりません。
scripting-language - リスについてよく読むことをお勧めします
この言語を最大限に学べるお気に入りのリンクを共有してください。
また、Lua などの他の言語と異なる、この言語の最も重要な機能を短い言葉で説明してください。
別の Lua/Python/etc を再発明する理由が理解できません。多分私は何かを見逃したのかもしれません.
しかし、私はパフォーマンス+スクリプトのアイデアが好きなので、それを理解しなければなりません!
java - デストラクタが言語でサポートされていない場合、スタックの巻き戻しにどのように対応するのですか?
Window
クラスのインスタンスを作成したとします。ウィンドウがユーザーに表示されます。次に、例外がスローされ、インスタンスへの参照が失われますが、インスタンスがまだ存在するため、ウィンドウは引き続きユーザーに表示されます (参照されなくなっただけです)。
これらの状況で何をすべきか?
具体的には、Squirrel スクリプト言語 (http://www.squirrel-lang.org/) について話しています。finally
Javaとは逆にブロックやファイナライザメソッドがないようなので、この言語では例外処理が壊れているのでしょうか?
c++ - 既存の C++ ヘッダー ファイルからスクリプト言語用の API インターフェイス コードを生成する
C++ アプリケーションのスクリプト言語としてSquirrelを使用する予定です。当然のことながら、C++ コードとやり取りするための API が必要です (C++ プログラムの属性へのアクセスや変更など)。この API は、一連のクラス、列挙型、および関数で構成されます。
Sqrat のように、単一の C++ 関数を Squirrel VM にバインドするのを 1 行のコードの問題にするユーティリティがありますが、それでも満足のいくものではありません。実際にすべてのインターフェースを実行するには、両方の C++ クラスとそれらの関数を作成する必要があります。そして、これらの C++ 関数をスクリプトでも認識できるようにするために、すべてのバインディングを維持する必要があります。私の意図は、この二重のメンテナンス オーバーヘッドを取り除くことです。
だから私が欲しいのは、すべての C++ クラスと関数を含む既存のヘッダー ファイルを取得し、このファイルから API 登録呼び出しを生成するツールです。もちろん、すべての関数のドキュメントを自動的に生成することもできれば便利です (それが HTML であっても、関数定義 + コメントなどを含む単なる Squirrel スクリプトであっても問題ありません)。
SWIG があることは知っていますが、バインディング Squirrel がありません。とにかく、それは私が探しているものとはまったく異なります。結局のところ、Squirrel コードではなく、C++ ラッパー コードを作成する必要があります。Flexを見たことがありますが、それが私が探しているものかどうかもわかりません。それで、私が望むことを行うツールはありますか (C/C++ ヘッダーからのラッパー コードと API ドキュメントの作成を自動化します)。それ以外の場合は、単純な関数とクラスの定義を解析できる独自の小さな C++ パーサーを作成する必要があると思います。
lua - コード ブロックのスクリプト言語
C/C++ コンパイラとして code::blocks をダミー用の C++ と共に入手しましたが、私の唯一の問題は、これまで聞いたことのないあいまいなスクリプト言語にあることです。"リス"。code::blocks のスクリプト言語を、lua のような、より身近なものに変更することはできますか?
java - C++/JNI - ベクトルと配列で格納されたオブジェクト (jobject) が予期せず変更される、C++ または JNI の問題?
だから最初にいくつかの背景:
私は Java 用の C++ ライブラリを JNI、特に Squirrel スクリプト言語でラップすることに取り組んできました。問題は、Squirrel 仮想マシンにネイティブ関数を渡す必要があるときに発生します。Squirrel では、パラメーターとして HSQUIRRELVM を持ち、SQInteger を返す関数として定義された SQFUNCTION である関数が必要ですが、Java 用にこれをラップしていることに注意してください。C++ でジョブジェクトから Java メソッドを呼び出せるようにすることはできますが、実際に Squirrel に渡すには、その呼び出しをラムダ関数でラップする必要がありました。通常、変数を参照できるように [=] をラムダ キャプチャとして配置しますが、何らかの理由で変数をキャプチャするとラムダ関数の型が変更され、SQFUNCTION として認識されなくなります。最近のやり方は ラムダがそれにアクセスできるように、定数ベクトルまたは配列のいずれかでこれを修正することにしました。オブジェクトが格納されているベクトル/配列の場所を Squirrel に伝え、ラムダに Squirrel からその値を取得させてアクセスさせます。問題は次のとおりです。正しいスロットにオブジェクトがありますが、それは私がそこに置いたオブジェクトではありません。
問題は、私が C++ や JNI の経験が豊富でなく、検索してもこれがどのような問題であるかを教えてくれなかったことです。オブジェクトとオブジェクトへのポインターを保存しようとしましたが、両方の方法で同じ結果が得られます。のインスタンスを格納していますJSqTestFunc
が、コードは のインスタンスを取得していますJSqVM
。Squirrel との対話以外にこれら 2 つのクラスに共通する唯一の点は、Object を拡張することです。それ以外の場合は、まったく無関係です。
私の質問は複数の部分に分かれているはずです:
- これは C++ の問題ですか、それとも JNI の問題ですか?
- どうすればこれを修正できますか?
それは JNI の問題に違いないと思いますが、C++ が愚かであることも否定できません。JNI が jobject クラスとそれへの参照を処理する方法に慣れていないため、おそらく jobject は別のクラスのデータを内部に保存することになります。これに関連するものや、C++ 配列/ベクトル ストレージの問題も見つかりませんでした。
C++ 関数は次のようになります。
私はまだ失敗していないことに言及する必要がありfromPointerHandleToObject
ます.私は他のすべての関数呼び出しでそれを使用し、毎回動作します. そのためのコードも見たい場合は、投稿できます。
出力は次のとおりです。
ご覧のとおり、jobject 配列のインデックス 0 には、JSqTestFunc
最初は が格納されますが、JSqVM
取得されると が格納されます。
これを修正するのにあまりにも長い時間と多大な労力を費やしてきたので、これを行う別の方法であっても、どんな助けでも大歓迎です。ありがとう!
oop - ステートメントがループに陥った場合、一度だけ実行する方法は?
温度センサーが限界を超えるたびにテキストを送信するシステムを作成しています。このテキストを一度だけ送信する必要がありますが、送信し続けます。
コード:
出力:
server.log を送信し続ける理由がわかりません smsState を 1 に変更したため、一度だけ実行する必要がある smsState if ステートメントを入力すると、これは電気インプ上にあり、何かが変更されるとは思いませんが、そうは思いません
pubnub - Electric IMP + PubNub: 追加の通話を行うエージェント
私は、通信に Electric Imp と PubNub を使用し、データ ロギングやクラウド コードなどに Parse を使用する IoT プロジェクトに取り組んでいます。
何らかの理由で、イベントを 1 回だけブロードキャストしたいのに、IMP IDE のコードが PubNub チャネルを複数回呼び出しています。
コードは次のとおりです。
私が望むのは、各接続/イベントを 1 回だけブロードキャストすることです....しかし、私の server.log でわかるように、新しい「ビルドと実行」コマンドごとに 2 回ブロードキャストしているようです。
私のエラーがどこにあるのか誰にもわかりますか?私は Squirrel に詳しくないので、これはばかげた間違いかもしれません。
javascript - プレーヤーの AIM (xyz、ピッチ、ヨー) とターゲット ベクトル (xyz) の間の距離を計算します。
レベルのどこかにあるターゲットと、動き回ってどこでも狙えるプレイヤーがいます。次に、プレイヤーの AIM と TARGET の間の距離を計算します。
プレイヤーはターゲットからどのくらい離れていますか? - この値が「0」に近い場合、プレイヤーがターゲットを狙っていることがわかります。これを知りたいのは、プレイヤーが発砲したときの距離を計算したいからです。
次の情報は私たちが持っているものです:
- ターゲット ベクトル (X、Y、Z) の位置/座標。
- プレーヤーのベクトル (X、Y、Z) の位置/座標。
- プレーヤーのピッチとヨー。