gpt4 book ai didi

c++ - 为什么我的线不动?

转载 作者:行者123 更新时间:2023-11-28 08:16:12 25 4
gpt4 key购买 nike

好的,所以我正在调用一个绘制三行以在屏幕上显示“I”的函数。然后,我调用另一个调用此函数的函数,但将 1 添加到 x 变量中将字母加粗。然后我想把 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中任何你说x的地方y 指的是函数参数。 (尽管您可以使用 ::x::y 访问全局的)。

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

我会提出两个建议来避免这种情况:

  1. 不要有多个同名变量,一个掩盖另一个
  2. 不要使用全局变量,除非有很好的理由。 (据我所知这似乎不是一个)

关于c++ - 为什么我的线不动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com