2012-06-30 48 views
1

我是快板的新手,所以這可能是一個簡單的問題。有沒有辦法在Allegro 4.2中移動x和y的形狀?

我想知道是否有一種方法來移動快門形狀的x,y沒有 填充我用黑色圓圈做了一個圓,並創造一個新的圓。

目前我有一個while循環,通過移動填充當前的一個黑色圓圈,並使用x和y有點不同的新的一個 我想知道是否有方法以x,y移動快板形狀,因爲它似乎讓我的遊戲變得緩慢。

這裏是一個電流,同時用這種方式:

int x=100; 
int y = 100; 
int tempX,tempY; 
while(1) 
{ 
tempX=x; 
tempY=y; 
    circlefill (screen, tempX, tempY, 20, makecol(0,0, 0)); 
    circlefill (screen, x, y, 20, makecol(0, 0, 255)) 
x+=10; 
y+=10; 
} 

感謝

回答

0

您需要使用一個緩衝區。

設置好圖形模式後,創建一個大的SCREEN_W,SCREEN_H位圖。然後在每一幀上清除該位圖,在x, y處繪製藍色圓圈,然後將緩衝區繪製到屏幕上。

我建議你看看Allegro附帶的許多例子或閱讀教程,因爲有許多基本但重要的東西,你需要學習。

此外,我強烈建議使用Allegro 5,因爲它是積極開發的,並且具有更適合現代硬件的API。

0

正如馬修所說,你想要使用一個緩衝區,它就像是一個虛擬屏幕,你可以在屏幕上寫出你想要的所有位圖之前顯示它,它必須與屏幕大小相同。

忘記TempXTempY,而不是調用circlefill (screen, x, y, 20, makecol(0,0,255))你先製作一個位圖(通常命名爲緩衝,嘿..)從現在開始,你直接繪製所有的圖形,所以不使用screen使用buffer。當你完成每一幀,你「位圖傳送」這個緩衝區到屏幕上是這樣的:

blit(buffer, screen, 0, 0, 0, 0, buffer->w, buffer->h); 

,然後你只需要調用clear_bitmap(buffer),並再次開始繪製它和重複。那樣的話,你不必跟蹤一個對象以前的位置來擦除它,然後在它的新位置再次繪製它,想象一下,如果不是黑色背景,你必須擦除並用另一塊每次移動東西時都會顯示位圖?

相關問題