为什么我的线条不会移动?

Why won't my lines move?

本文关键字:移动 我的 为什么      更新时间:2023-10-16

好了,我调用了一个函数,它绘制了三条线来在屏幕上显示一个'I'。然后,我调用另一个函数,它调用这个函数,但是给变量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);
}

当你调用DrawI时,它有xy作为参数传递给它:

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

这些掩码全局的xy,这样在DrawI里面你说的xy都是指函数参数。(您可以使用::x::y访问全局文件)。

因为你总是用字面量调用DrawI,而不是变量,例如DrawI(1,0);, xyDrawI中的值永远不会改变,它们总是这些固定的值,而不是全局变量,因此Line总是传递相同的值,即使你的全局x已经改变。

为了避免这种情况,我有两个建议:
  1. 不要有多个同名的变量,其中一个掩盖了另一个
  2. 不要使用全局变量,除非有好的理由。(据我所见,这似乎不是一个)