簡體   English   中英

為什么我的台詞不動?

[英]Why won't my lines move?

好的,所以我要調用一個繪制三行以在屏幕上顯示“ I”的函數。 然后,我調用另一個函數,該函數調用此函數,但在x變量上加1以使字母加粗。 然后,我想在“ tick”函數中添加x ++ add,該函數執行每一幀。 它不起作用,但是為什么呢? 如果您不明白我的意思,請查看此頁面,這是我正在關注的教程: http : //www.devmaster.net/articles/intro-to-c++-with-game-dev/part3.php

聲明全局x和y並調用函數tick:

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);
}

感謝您的檢查。

調用DrawI時,它會將xy作為參數傳遞給它:

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

它們掩蓋了全局xy ,以便在DrawI到處都說xy地方都引用了函數參數。 (不過,您可以使用::x::y訪問全局變量)。

由於您始終使用文字而不是變量來調用DrawI ,例如DrawI(1,0); DrawIxy的值永遠不會改變,它們始終只是這些固定值,而不是全局變量,因此,即使您的全局x發生了變化, Line也會始終傳遞相同的值。

為了避免這種情況,我將提出兩項建議:

  1. 沒有多個同名變量,其中一個變量掩蓋另一個變量
  2. 除非有充分的理由,否則不要使用全局變量。 (據我看來,這似乎不是一個)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM