次の宣言があります。
ImagePaths:array [1..3] of string =(
'SpaceInvader1.jpg',
'SpaceInvader2.jpg',
'SpaceInvader3.jpg'
);
Wave: array[1..11, 1..5] of TImage;
画像の配列を作成する方法を知りたいです。3枚で足りる画像を55枚作るのはかなりもったいないです。その代わりに、間接参照を使用してください。画像への参照を保存します。AndTImage
はビジュアル コンポーネントであるため、スプライトには適していません。
次のように画像を配列に保持します。
Sprites: array [1..3] of TBitmap;
そして、それを移入
JPEGImage := TJPEGImage.Create;
try
for i := 1 to 3 do
begin
JPEGImage.LoadFromFile(ImagePaths[i]);
Sprites[i] := TBitmap.Create;
Sprites[i].Assign(JPEGImage);
end;
finally
JPEGImage.Free;
end;
次に、Wave
次のように配列に入力します。たとえば、次のようになります。
Wave: array[1..11, 1..5] of TBitmap;
....
for i := 1 to 11 do
for j := 1 to 5 do
Wave[i,j] := Sprites[1];// or whichever sprite you want
もちろん、スプライトは配列よりも実際の名前の方が適している場合があります。
その他のコメント:
- JPEG は、ゲーム スプライトの形式としては不適切です。損失のある形式です。GIF や PNG と同様に、プレーンな Windows ビットマップで問題ありません。
- 私はむしろ、画像を埋め込みリソースとして見たいと思っています。その後、実行可能ファイルをスタンドアロンにすることができます。
Waves
また、配列が各侵入者の状態を保持しているのを見たいと思います。そして、その状態をキャンバスにレンダリングする関数を作成します。