繁体   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