【问题标题】:Help with looping Pictures帮助循环图片
【发布时间】:2010-02-12 08:59:14
【问题描述】:

大家好,我的碰撞检测代码如下 我需要它循环浏览主窗体上的 55 张图片 //外星人被命名为外星人1,外星人2等 //image2是collison对象(子弹)

代码是涡轮增压德尔福

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;

【问题讨论】:

  • 代码是 TURBO DELPHI
  • 你真的应该这样格式化你的代码。使用代码示例按钮。在此处查看有关格式化帖子的更多信息:stackoverflow.com/editing-help
  • 差不多了,您只需要将代码的顶部也添加到代码块中,这将使荧光笔更容易正确语法高亮代码。正确添加delphi标签后,不需要在帖子中用大写字母写语言。
  • 如果代码导致编译错误,您也应该发布。
  • 除了您的代码无法编译之外,您的问题究竟是什么?

标签: delphi arrays image loops


【解决方案1】:
for index := 1 to 55 do
  alienX[index]:= alien([index]).left <--- the problem is this code here !!!!

两件事:

  1. “问题是这里的代码” - 什么问题?无论是在主题中还是在问题本身中,您都没有提及。

  2. 您试图在明显出现“问题”的地方进行的类型转换不可能工作。您不能将整数数组索引类型转换为类型外星人(顺便说一句,它在代码中的任何位置都不存在 - 您已经声明了两个名为 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];

但是,由于您尝试使用“左”属性访问某些内容,因此这可能不是您想要的。然而,如果不知道“外星人”到底是什么,以及它包含什么,就很难更具体了。

对未来的建议?当你说你有一个“问题”时,如果你告诉人们究竟是什么“问题”会有所帮助。

【讨论】:

    【解决方案2】:

    我重新格式化了您的源代码。

    这看起来像是一个家庭作业,所以我会给出一些提示来解决它:

    • 确保您在循环内外获得正确的代码,为此使用 begin ... end 块(就像您在最里面所做的那样 if ... then)。
    • 获取所有外星人的 X 或 Y 坐标不需要单独的数组。只需使用 Alien[Index].LeftAlien[Index].Top
    • 不要使用硬编码的文字(21、10、25、24、875、648)。将这些设为常量,或从正确的位置获取数据(可能在您的表单上定义了这些数字)。

    【讨论】:

    • 我怀疑他想将单独的变量 Alien1...alien54 索引为数组。 VB 组件数组之类的。
    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2010-09-26
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多