2011-10-08 48 views
0

好的,所以我打電話給一個函數,畫三條線來顯示'我'在屏幕上。 然後,我調用另一個調用此函數的函數,但將x變量加1到 使字母變爲粗體。然後,我想將x ++添加到'tick'函數中,該函數每幀執行 。它不工作,但爲什麼?如果你不明白我的意思,請查看此頁,這是我下面的教程:http://www.devmaster.net/articles/intro-to-c++-with-game-dev/part3.php爲什麼我的線路不會移動?

聲明全局x和y,並調用函數滴答:

int x = 0; 
int y = 0; 
void Game::Tick(float a_DT) 
{ 
    m_Screen->Clear(80); 
    DrawI(0,0); 
    x++; 
} 

製作功能:

void Game::DrawI(int x, int y) 
{ 
    m_Screen->Line(100 + x, 50 + y, 200 + x, 50 + y, 0xffffff); 
    m_Screen->Line(150 + x, 50 + y, 150 + x, 300 + y, 0xffffff); 
    m_Screen->Line(100 + x, 300 + y, 200 + x, 300 + y, 0xffffff); 
} 

void Game::DrawFatI() 
{ 
    DrawI(1,0); 
    DrawI(0,1); 
    DrawI(0,0); 
    DrawI(1,1); 
} 

感謝您的檢查。

+0

你錯過了'+ x'和'+ y'部分 – user786653

+0

你的'DrawI()'函數根本沒用參數。你會發現*會發生什麼?你是否編譯過所有警告並注意? –

+3

只是一個評論:對於全局和局部變量/函數參數使用相同的名稱「x」和「y」會導致很多頭痛。 –

回答

1

當你調用DrawI它xy傳遞給它的參數:

void Game::DrawI(int x, int y) 

這些面具全球xy,使得內DrawI無處不在,你說xy它是指功能參數。 (你可以使用::x::y來訪問全局的)。

由於您總是用文字稱呼DrawI,而不是變量,例如DrawI(1,0);xy的值DrawI永遠不會改變,它們總是隻是這些固定值而不是全局變量,因此Line總是傳遞相同的值,即使您的全局x已更改。

我想提出兩條建議,以避免這種情況:

  1. 不要有多個同名變量,其中一個面具其他
  2. 不要使用全局變量,除非有一個很好的原因至。 (這看起來並不是我所能看到的)
+0

感謝您的精心解答。 :) – Turbosheep

相關問題