【发布时间】:2015-10-17 11:01:18
【问题描述】:
我正在尝试在 C 中绘制一个图形,并且我已经成功地做到了,但我想知道我这样做的方式是否让我难以实现我接下来想做的事情(使图移动/反弹)。
我在 main 中创建了一个 for 循环,它遍历一个坐标数组,然后再次调用一个函数,在它们之间画线并用颜色填充它。我想知道的是,这个for 循环是否是最好的方法?
我在 main 中做了这个 for 循环:
for(i = 0; i < SPHERE_NUMTRIANGLES; i++){
object = CreateObject(screen,&sphere_model[i],SPHERE_NUMTRIANGLES);
object->model->scale = 0.1f;
DrawObject(object);
}
我试图绘制的 sphere_model 在表单上包含许多坐标:
#define SPHERE_NUMTRIANGLES 478
triangle_t sphere_model[] = {
{
.x1=-1,
.y1=-500,
.x2=-1,
.y2=-489,
.x3=-1,
.y3=-500,
.fillcolor=0xeeeeee,
.scale=1.0
},
CreateObject 从 for 循环中获取模型
// Create new object
object_t *CreateObject(SDL_Surface *screen, triangle_t *model, int numtriangles)
{
object_t *object;
object = NULL;
object = malloc(sizeof(object_t));
object->model = malloc(sizeof(triangle_t) * numtriangles);
object->screen = screen;
object->ttl;
object->speedx = 0;
object->speedy = 1;
object->model = model;
object->model->scale;
object->model->tx = 100;
object->model->ty = 100;
return object;
}
最后,DrawObject 只是调用了一个绘制三角形的函数
void DrawObject(object_t *object)
{
DrawTriangle(object->screen,object->model);
}
sphere_model 在sphere_data.h 中,CreateObject 函数在triangle.c 中
我应该创建多个数字并将创建的数字添加到列表中,但我目前正在尝试只制作一个。 (这是作业,但我希望我能在这里得到一些帮助,我有点挣扎)
【问题讨论】:
-
最好将编译程序所需的所有相关代码放入问题中。该链接可能会失效,从而无法供将来参考,或者某些用户可能无法轻松下载 tarball。请在问题中添加足够的代码,以制作一个最小的、可编译的、可运行的示例程序。
-
好的,我现在已经输入了我认为需要的代码,我希望它足够了
-
是的,看起来你可以理解你现在在做什么。好多了。