1

私はアレグロの初心者なので、これは簡単な質問かもしれません。

私が作った円を黒い円で塗りつぶして新しい円を作らずに、x、yでアレグロの形を動かす方法があるかどうか疑問に思っています。

現在、現在の円を黒い円で塗りつぶし、少し異なるxとyで新しい円を作成することで円を移動するwhileループがあります。アレグロ形状を移動する方法があるかどうかを知りたいx,y ゲームが遅くなるようです。

この方法で現在の while を次に示します。

int x=100;
int y = 100;
int tempX,tempY; 
 while(1)
{
tempX=x;
tempY=y;
    circlefill ( screen, tempX, tempY, 20, makecol( 0,0, 0));
    circlefill ( screen, x, y, 20, makecol( 0, 0, 255))
x+=10;
y+=10;
}

ありがとう

4

2 に答える 2

0

マシューが言ったように、画面に表示する前に必要なすべてのビットマップを書き込むことができる仮想画面のようなバッファーを使用したい場合、画面サイズと同じサイズにする必要があります。

と を忘れTempXTempY、最初にビットマップを作成する代わりにcirclefill (screen, x, y, 20, makecol(0,0,255))(通常はbufferという名前が付けられます、へー..)、これからはすべてのグラフィックスをそれに直接描画するので、 use をscreen使用しないでくださいbuffer。各フレームが終了したら、このバッファを次のように画面に「ブリット」します。

blit(buffer, screen, 0, 0, 0, 0, buffer->w, buffer->h);

その後、呼び出しclear_bitmap(buffer)て再度描画を開始し、繰り返します。そうすれば、新しい位置に再び描画する前に、オブジェクトの以前の位置を追跡して消去する必要がなくなります。黒い背景の代わりに、消去して背景を別の部分で塗りつぶす必要がある場合に CPU が受けるヒットを想像してみてください。何かを動かすたびにビットマップ?

于 2014-04-26T02:38:46.327 に答える
0

バッファーを使用する必要があります。

グラフィック モードを設定したら、SCREEN_W,SCREEN_H大きなビットマップを作成します。次に、すべてのフレームで、そのビットマップをクリアし、青い円を にx, y描画してから、バッファを画面に描画します。

Allegro に付属している多くの例を参照するか、チュートリアルを読むことをお勧めします。これは、初歩的ではあるが、習得する必要がある重要なことがたくさんあるためです。

また、Allegro 5 は積極的に開発されており、最新のハードウェアにより適した API を備えているため、Allegro 5 を使用することを強くお勧めします。

于 2012-06-30T15:49:49.100 に答える