【发布时间】:2019-07-25 19:27:17
【问题描述】:
我在C 中使用Asteroids (Atari)。我为小行星设计了ADT,所有ADT都与1个小行星有关。
我需要在随机位置创建一个小行星,但随机在(0, y) 或(x, 0) 内
我有我的功能asteroid_create():
asteroid_t *asteroid_create(float x, float y, float radio){
asteroid_t *ast = malloc(sizeof(asteroid_t));
ast->x_pos = x;
ast->y_pos = y;
ast->radio = radio;
ast->vx = rand_float((1000/ast->radio)-100,(1000/ast->radio)+100);
ast->vy = rand_float((1000/ast->radio)-100,(1000/ast->radio)+100);
ast->angle = rand_float(0,2*PI);
size_t rock_rand = rand() % ASTEROIDS_TYPES;
ast->name_rock = rocks_dictionary[rock_rand];
return ast;
}
这会创建一个具有某些固定变量的小行星。然后,在另一个文件中,我创建了一个小行星列表,并插入了所需数量的小行星。
bool asteroids_insert(list_t* l){
asteroid_t *ast = asteroid_create(rand_float(0,WINDOW_WIDTH),rand_float(0,WINDOW_HIGH),AST_INITIAL_RADIO);
if(!list_append(l,ast))
return false;
return true;
}
主要是:
for(size_t i=0; i< ASTEROIDS_INITIAL;i++){
asteroids_insert(list_asteroids);
}
通过这种方式,我可以在屏幕上的任意位置创建小行星。我只需要在 y 轴或 x 轴上生成它们。
以我的方式,我想不出我怎么能做我需要的。我该怎么做才能让 asteroid_create() 随机接收 (0, y) 或 (x, 0) 中的参数位置?
【问题讨论】:
标签: c malloc abstract-data-type