如何在不遍历数组的情况下对数组中的每个元素调用方法?

xvlaze

我正在编写一个小程序,其中包含 25 个点的数组。每个点都有自己的位置、大小和颜色,因为我使用的是图形库 (Allegro),所以我有一种方法可以将它们打印在屏幕上。

我需要同时打印它们,并使用:

    for (int i = 0; i < m_size ; i++)
    {
        points[i].move();
        points[i].draw();
    }

一个接一个地打印它们。绝对更好的是:

    for (int i = 0; i < m_size ; i++)
    {
        points[0].move();
        points[0].draw();
        points[1].move();
        points[1].draw();

        // ...

        points[24].move();
        points[24].draw();
    }

这当然不是最佳解决方案;但效果很好。问题是,有没有办法将第二个选项减少到更少的行数?

编辑:

void Particula::move(){
// Modifies private position attributes.
    m_x += rand() % 50;
    m_y += rand() % 50;
}

void Particula::draw(){
// Draws the point given its private attributes.
    printf("Drawing circle... \n");
    // printf ("[ DEBUG:] X: %f, Y: %f, Radius: %f", m_x, m_y, m_radius);

    al_draw_filled_circle(m_x, m_y, m_radius, m_color); // Draws the point.
    al_flip_display(); // Updates the display.
}

预期的结果是:

  1. 点一个接一个地出现。
  2. 绘制完所有 25 个点后,清除显示。
  3. 修改属性以设置新坐标。
  4. 同时重绘所有点(或使它们出现在屏幕上)。
  5. 重复不同的次数(可能是 100 或 500)。
xvlaze

像这样修改代码可以解决问题:

for(int i = 0; i < N; i++) // being N a variable number.
{
    for (int h = 0; h < m_size; h++)
    {
        point[h].move();
        point[h].draw();
    }
    al_flip_display();
    al_clear_to_color(al_map_rgb(0,0,0));
    al_rest(0.1);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不知道 C# 中的底层类型的情况下遍历数组

如何在不更改其他元素索引的情况下对数组中的元素进行排序?

是否可以在不遍历数组的情况下选择某些元素?

如何在不更改原始数组的情况下对数组进行排序?

如何在不循环每个像素的情况下,以窗口大小同时裁剪numpy数组的每个元素?

如何在不更新ReactJs中数组的每个列表的情况下更新数组列表中单个项目的状态

如何在不使用展开的情况下使用 mongodb 中的数组元素对数据进行排序

如何在不丢失元素的情况下遍历列表

如何在不增加OverflowError:Python int太大而无法转换为C long的情况下,将数组中的每个元素与大量相乘?

如何在不循环整个数组的情况下从二维数组中获取元素?

如何在不遍历状态的情况下访问减速器中的 redux 状态数组属性

如何在不单击每次按钮的情况下将迭代器重置为0的情况下遍历数组?

如何在不循环遍历数据集的情况下突出显示周末?

如何在不插入PHP的每个循环的情况下将数组插入数据库

如何在不使用for循环或任何数组方法的情况下检查数组中是否存在元素

如何在不循环的情况下获取多维数组中特定“键”的数组

如何在不循环遍历整个数组的情况下找到匹配条件的前n个数组项

如何在mongodb中遍历数组?

如何在jQuery中遍历数组?

如何在Kusto中遍历数组?

在以下情况下如何从每个数组元素中删除\'?

在不更改索引的情况下对数组元素进行操作

如何在不排序的情况下从对象输出数组

如何在不爆炸的情况下映射 Spark 数组?

如何遍历数组并为每个函数调用函数?

Ruby循环遍历数组中的每个元素n次

如何在不复制元素的情况下交换数组

如何在不影响原始数组元素的情况下更改ArrayList中的元素?

如何在不改变其他元素的情况下替换数组中的元素?