2016-08-21 63 views
-3

我正在做一个简单的游戏,并尝试从游戏开始后5秒内产生char spawn。这是我的代码的一部分,我不确定是否必须使用time.h或循环函数或其他东西。任何人都可以给我一些建议吗?谢谢经过一段时间后产卵C

char * image = 
/**/ "H H" 
/**/ "H H" 
/**/ "HHHHH" 
/**/ "H H" 
/**/ "H H"; 

#define HERO_WIDTH (5) 
#define HERO_HEIGHT (5) 

void setup_hero(void) { 
    // Set up the hero at the centre of the screen. 
    int hero_x = (screen_width() - HERO_WIDTH)/2; 
    int hero_y = (screen_height() - HERO_HEIGHT)/2; 
    hero = sprite_create(hero_x, hero_y, HERO_WIDTH, HERO_HEIGHT, image); 

    wait(5); // not working 
    sprite_draw(image); 
    show_screen(); 
} 
+0

的系统调用是暂停x秒通常被称为'sleep',不'wait'。 – PSkocik

+0

因此,当游戏仍在运行时,睡眠功能会如何工作,就像您玩炭时产生的一样? – lufee

+1

你应该从你的编译器得到警告。无论是“wait”还是未声明,或者它都不需要“int”。如果你没有得到它们,调整你的构建系统。 – PSkocik

回答

1

通常,游戏是面向事件的。他们有一个主循环,除了轮询用户输入,更新定时器以及更新/渲染场景中的所有实体外,几乎不做任何事情。

由主循环更新的定时器跟踪自循环的最后一次迭代以来经过的毫秒数,通常称为'delta'时间。 Delta时间对于缩放动画和声音的速度非常有用,因为主循环完成所需的时间取决于大量因素。

完成你想要做的事情的一种方式是,当你的实体第一次产生时,你的实体会将计数器设置为0。每次实体更新时,将增量时间添加到计数器。当计数器大于或等于5000ms时,则经过5秒钟。

在C中实现增量时间的最佳方法是使用<time.h>中的clock函数。它返回自程序启动以来经过的cpu周期数。将这个值除以CLOCKS_PER_SEC/1000将会给你通过的毫秒数。从当前时间中减去最后一次迭代的时间以获得增量时间。

看到:http://www.tutorialspoint.com/c_standard_library/c_function_clock.htm

相关问题