好的,所以我正在调用一个绘制三行的功能来在屏幕上显示“我”。 然后,我调用另一个调用此函数的函数,但将x变量加1 把这封信大胆。然后我想把x ++添加到'tick'函数中,该函数执行 每一帧。它不起作用,但为什么呢?如果您不明白我的意思,请查看此页面,这是我正在关注的教程: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);
}
感谢您的检查。
答案 0 :(得分:1)
当您致电DrawI时,它已将x
和y
作为参数传递给它:
void Game::DrawI(int x, int y)
这些掩码全局x
和y
,这样在DrawI
的任何地方你都会x
和y
引用到函数参数。 (您可以使用::x
和::y
来访问全局的。
由于您始终使用文字调用DrawI
,而不是变量,例如DrawI(1,0);
x
中的y
和DrawI
的值永远不会改变,它们始终只是这些固定值,而不是全局变量,因此Line
总是被传递相同的值,即使您的全局x
已更改。
我会提出两条建议来避免这种情况: