問題タブ [allegro]
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.
c++ - Allegro 5 で実行中にプリミティブの色を変更する
基本的なプログラムの UI をより迅速に作成できるように、2D オブジェクト エディターを作成しています。私はビットマップをまったく使用していません。代わりに、ゲーム ループで関数呼び出しを使用してプリミティブを描画しているだけです。これまでのところすべて問題ありませんが、実行時にオブジェクトの色を変更する方法を知りたいです。
基本的な概念は、色に変数を使用し、ユーザーがその変数の値を変更する関数を呼び出すと、色が変更されるというものです。単純。何かのようなもの:
残念ながら、これは機能しません。同様のコードを使用すると、オブジェクトが作成されません。コンパイル エラーも実行時エラーも何もありません。代わりに、オブジェクトに色がないため見えませんが、実際に作成されることは確認済みです。すっごくそれは、色変数がどういうわけか正しい型であることを意味すると思いますが、al_map_rgb()
その関数が返すものと等しく設定されているときの値を保持しません。何かを返さなければならないことはわかっています。そうしないと、al_draw
関数の引数にならないからです。
さまざまな描画関数につながる if else if ステートメントを書き出すこともできますが、単純であるべき何かを解決するための冗長なものの束よりも、上記のようなコードの単純な小さなバンドルを使用したいと考えています。ダクトテープに相当するコードを使用したくないだけです。
al_map_rgb()
したがって、問題はおそらくの値を返す私の仮定に関係していると確信していますがALLEGRO_COLOR
、わかりません。皆さん、何か提案をしていただけませんか?
c++ - Allegro5で.png画像ファイルを読み込んでいます
アレグロでゲームを書いていますが、いくつかの画像ファイルをロードしたいと思います。ただし、al_load_bitmapを呼び出すと、nullポインターが返されます。IDEとしてXCode4.1を使用しています。g ++を使用してコンパイルしようとしますが(パスの問題の場合)、g ++を使用してコマンドラインでコンパイルするために何をする必要があるのかわかりません(単にg ++ main.cppが機能しません)。とにかく、ここに私のコードがあります:
私はすでに実行しました:
そして私も入れました:
私のファイルの上部にあります。grass.pngもdirt.pngも読み込まれず、main.cppファイルとまったく同じディレクトリにあります。コンパイルエラーは発生しませんが、画像を読み込もうとすると常にnullポインターが表示されるため、画像をディスプレイに描画するときに表示されません。助けてください!
c - HaskellのC構造体を割り当てて再利用するにはどうすればよいですか?
特に、Allegroゲームライブラリへのバインディングを作成することで、Haskellの外部関数インターフェイスを学習しようとしています。AllegroのネイティブCでは、メインイベントループは次のようになります。
ghcとhsc2hsを使用して、次のような外部関数呼び出しを記述できます。
ここEventQueue
で、は不透明な構造へのポインタであり、Event
はStorable
Cに基づくインスタンスですALLEGRO_EVENT
。
理想的には、ユーザー向けのHaskell関数については、次のような型署名が必要です。
ALLEGRO_EVENT
これは、構造体とブール値の戻り値の初期化を抽象化します。
私の質問は、メモリ効率を最大化するためにこの関数をどのように書くべきかということです。メソッド内への新しいポインターをmallocしてEvent
使用することもできますが、Cベースのデータを使用しているため、既存のスペースを再利用し、常に新しい構造体を割り当てないようにします。また、ユーザーが構造体をmallocして、すべての呼び出しに渡すことを避けたいと思います。
何かアドバイス?
png - ゲームで非長方形の画像を作成するにはどうすればよいですか?
質問はしないでください。基本的に、私のゲームには、プレーヤーのカーソルを追いかけるマウスカーソルがたくさんあります。
私が使用している黒い背景の小さな小さなカーソル画像がありますが、問題はそれが単にカーソルの形ではないということです。小さな小さな角があり、複数のカーソルが重なると、.pngの背景である黒い部分によって部分的に隠されます。
カーソル画像を切り取って実際のカーソル形状を設定し、より正確な視覚的オーバーラップとより正確な衝突を可能にするにはどうすればよいですか?
visual-studio - プロジェクトを単一の .exe にラップする方法は?
Visual Studio で Allegro ゲームを作成しました。とても小さいです。
しかし、どうすれば完成した .exe を取得できますか? プロジェクトのデバッグ フォルダから .exe をコピーして実行しようとすると、リソースから削除したため、基本的に「Allegro dll がすべて見つかりません。インストールしてからやり直してください」と表示されます。
必要なものがすべて .exe にパックされるようにバンドルするにはどうすればよいですか?
c++ - Cpp のプライベート静的データ メンバーは、その定義でのみ初期化できますが、クラス内の初期化は無効ですか?
ヘッダー ファイルで初期化すると、次のエラーが発生します。
.cpp で初期化しようとすると、次のようになります。
ヘッダーは次のとおりです。
c++ - C ++のvoid関数へのポインターを期待するFunctorでC関数を呼び出すにはどうすればよいですか?
Facade Pattern
Allegroのスレッドの使用をラップしたいと思います。つまりinstall_int_ex(void (__cdecl*)(void), int tick);
、remove_int(void (__cdecl*)(void))
テンプレートを使用してuser-defined Functor Objects
、クラスが作成および破棄されたときに割り込みをインストールおよび削除するために作成したクラスを使用します。
コンパイラエラーが発生し続けます:error C2664: 'install_int_ex' : cannot convert parameter 1 from 'void (__thiscall [User-defined FunctorName Here]::* )(void)' to 'void (__cdecl *)(void)'
および同様のremove_int(void (__cdecl*)(void))
呼び出された関数がユーザーデータへのポインターを受け入れる場合、これは機能するようですvoid*
残念ながら、Allegroはこれほど柔軟ではありません。この制限を回避する方法はありますか、それともWindowsを使用する必要がありますかCreateThread
(そしてプロセスで「実際の方法」のスレッド化を学ぶ必要がありますか)?
c++ - allegro5 を使用して Xcode で C++ プロジェクトを作成する
最近、allegro5 を使用して Xcode で C++ プロジェクトを作成しようとしました。C++ プロジェクトの作成に問題はありませんでしたが、allegro を使用しようとしたときにいくつかの問題に遭遇しました。
次のチュートリアルに従って、allegro を Xcode にインストールしてバインドしました: http://wiki.allegro.cc/index.php?title=OSX,_Xcode_4,_Framework
ここでの最初の問題は、このチュートリアルが c++ プロジェクトではなく、cocoa アプリケーションを使用していることです。それでも、手順に従い、最後にビルドしようとすると、Xcode は次のエラーを返しました: 'allegro5/allegro.h' ファイルが見つかりません
私は助けを求めてグーグルで見つけようとしましたが、成功しませんでした。
誰かが私を助けることができれば、それは素晴らしいことです.
ありがとうございました
c++ - Allegro で Qt Creator を使用する
Allegro 4 (MSCV 9) を Qt Creator で動作させたいです。Windows XP を使用しています。これらの行を .pro に追加しました。
私のコードは次のようになります。
そして、コンパイルしようとすると、次のようなエラーが発生し続けます。
main.obj:-1: エラー: LNK2019:関数 "int __cdecl _mangled_main(void)" で参照されている未解決の外部シンボル imp__allegro_exit (?_mangled_main@@YAHXZ) main.obj:-1: エラー: LNK2019: 未解決の外部シンボル _ imp _set_close_button_callback関数 "int __cdecl _mangled_main(void)" で参照されています (?_mangled_main@@YAHXZ) main.obj:-1: エラー: LNK2019: 未解決の外部シンボル _ imp _set_window_title が関数 "int __cdecl _mangled_main(void)" で参照されています (?_mangled_main@ @YAHXZ) main.obj:-1: エラー: LNK2019: 未解決の外部シンボル _ imp _set_gfx_mode が関数 "int __cdecl _mangled_main(void)" で参照されました (?_mangled_main@@YAHXZ) main.obj:-1: エラー: LNK2019: 未解決外部シンボル_imp関数 "int __cdecl _mangled_main(void)" で参照されている _set_color_depth (?_mangled_main@@YAHXZ) main.obj:-1: エラー: LNK2019: 未解決の外部シンボル __imp _install_allegro_version_check が関数 "int __cdecl _mangled_main(void)" で参照されています (?_mangled_main@ @YAHXZ)
allegro - Allegro 4.2 で x と y によって図形を移動する方法はありますか?
私はアレグロの初心者なので、これは簡単な質問かもしれません。
私が作った円を黒い円で塗りつぶして新しい円を作らずに、x、yでアレグロの形を動かす方法があるかどうか疑問に思っています。
現在、現在の円を黒い円で塗りつぶし、少し異なるxとyで新しい円を作成することで円を移動するwhileループがあります。アレグロ形状を移動する方法があるかどうかを知りたいx,y ゲームが遅くなるようです。
この方法で現在の while を次に示します。
ありがとう