2016-08-21 78 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

相關問題