大家好我的碰撞检测代码如下 我需要它在主窗体上循环55张图片 //外星人被命名为alien1,alien2等 // image2是碰撞对象(子弹)
代码是TURBO DELPHI
procedure TForm1.TimeralienshotTimer(Sender: TObject)
var
ax2 : integer;
bx2 : integer;
ay2 : integer;
by2 : integer;
alienX : array[1..55] of integer;
alienY : array[1..55] of integer;
Index: Integer;
begin
for index := 1 to 55 do
alienX[index]:= alien([index]).left <--- the problem is this code here !!!!
ax2 := alienX + 21;
bx2 := Image2.left + 10;
ay2 := AlienY + 25;
by2 := Image2.top + 24;
if ax2 >= alienX then
if alienX <= bx2 then
if ay2 >= image2.top then
if alienY <= by2 then
begin
alien[index].Visible := false;
Image2.top := 875;
Image2.left := 648;
Timershotmovment.Enabled := false;
end;
end;
答案 0 :(得分:1)
for index := 1 to 55 do
alienX[index]:= alien([index]).left <--- the problem is this code here !!!!
两件事:
“问题在这里是这个代码” - 有什么问题?你没有在主题或问题本身中提及一个。
你试图在“问题”明显发生的地方进行的类型转换不可行。你不能将整数数组索引类型化为外来类型(在代码中的任何地方都不存在,顺便说一下 - 你已经声明了两个名为alienX和alienY的整数数组,但没有任何声明为外星人)。
如果你的意图只是将alienY的内容复制到alienX数组中,你可以使用:
for i := 1 to 55 do
alienX[i] := alienY[i];
或者,更好的是,如果数组的限制在未来需要改变:
for i := Low(alienX) to High(alienX) do
alienX[i] := alienY[i];
但是,由于您尝试访问具有“left”属性的内容,这可能不是您想要的。但是,如果不知道“外星人”到底是什么,以及它包含什么,就很难更具体。
对未来的建议?当你说你有“问题”时,如果你告诉别人什么是“问题”,那将会很有帮助。
答案 1 :(得分:-1)
我重新格式化了您的源代码。
它看起来像是一个家庭作业,所以我会给出一些提示来解决它: