C++游戏编程帮助.超级简单
C++ game programming help. Super-Simple
我有点卡住了。我正在构建一个游戏,出于某种奇怪的原因,我无法从一个类调用变量到另一个类。它只是在这个特定的代码部分不起作用,所以任何帮助不胜感激。提前致谢:
代码如下:
class HeadsUpDisplay
{
private:
int frame;
public:
SDL_Rect HealthBar[20];
SDL_Rect offset;
void init();
void render();
}HUD;
void HeadsUpDisplay::init(){
offset.x = SCREENW*.9;
offset.y = SCREENH/10;
HealthBar[0].x = 0;
HealthBar[0].y = 0;
HealthBar[0].w = 204;
HealthBar[0].h = 14;
HealthBar[1].x = 204*1;
HealthBar[1].y = 0;
HealthBar[1].w = 204;
HealthBar[1].h = 14;
HealthBar[2].x = 204*2;
HealthBar[2].y = 0;
HealthBar[2].w = 204;
HealthBar[2].h = 14;
HealthBar[3].x = 204*3;
HealthBar[3].y = 0;
HealthBar[3].w = 204;
HealthBar[3].h = 14;
HealthBar[4].x = 204*4;
HealthBar[4].y = 0;
HealthBar[4].w = 204;
HealthBar[4].h = 14;
HealthBar[5].x = 204*5;
HealthBar[5].y = 0;
HealthBar[5].w = 204;
HealthBar[5].h = 14;
HealthBar[6].x = 204*6;
HealthBar[6].y = 0;
HealthBar[6].w = 204;
HealthBar[6].h = 14;
HealthBar[7].x = 204*7;
HealthBar[7].y = 0;
HealthBar[7].w = 204;
HealthBar[7].h = 14;
HealthBar[8].x = 204*8;
HealthBar[8].y = 0;
HealthBar[8].w = 204;
HealthBar[8].h = 14;
HealthBar[9].x = 204*9;
HealthBar[9].y = 0;
HealthBar[9].w = 204;
HealthBar[9].h = 14;
HealthBar[10].x = 204*10;
HealthBar[10].y = 0;
HealthBar[10].w = 204;
HealthBar[10].h = 14;
HealthBar[11].x = 204*11;
HealthBar[11].y = 0;
HealthBar[11].w = 204;
HealthBar[11].h = 14;
HealthBar[12].x = 204*12;
HealthBar[12].y = 0;
HealthBar[12].w = 204;
HealthBar[12].h = 14;
HealthBar[13].x = 204*13;
HealthBar[13].y = 0;
HealthBar[13].w = 204;
HealthBar[13].h = 14;
HealthBar[14].x = 204*14;
HealthBar[14].y = 0;
HealthBar[14].w = 204;
HealthBar[14].h = 14;
HealthBar[15].x = 204*15;
HealthBar[15].y = 0;
HealthBar[15].w = 204;
HealthBar[15].h = 14;
HealthBar[16].x = 204*16;
HealthBar[16].y = 0;
HealthBar[16].w = 204;
HealthBar[16].h = 14;
HealthBar[17].x = 204*17;
HealthBar[17].y = 0;
HealthBar[17].w = 204;
HealthBar[17].h = 14;
HealthBar[18].x = 204*18;
HealthBar[18].y = 0;
HealthBar[18].w = 204;
HealthBar[18].h = 14;
HealthBar[19].x = 204*19;
HealthBar[19].y = 0;
HealthBar[19].w = 204;
HealthBar[19].h = 14;
}
void HeadsUpDisplay::render(){
if(character.characterhealth >95 && character.characterhealth <= 100)
{
frame = 19;
}
if(character.characterhealth >90 && character.characterhealth <=95)
{
frame = 18;
}
if(character.characterhealth >85 && character.characterhealth <= 90)
{
frame = 17;
}
if(character.characterhealth >80 && character.characterhealth <= 85)
{
frame = 16;
}
if(character.characterhealth >75 && character.characterhealth <= 80)
{
frame = 15;
}
if(character.characterhealth >70 && character.characterhealth <= 75)
{
frame = 14;
}
if(character.characterhealth >65 && character.characterhealth <= 70)
{
frame = 13;
}
if(character.characterhealth >60 && character.characterhealth <= 65)
{
frame = 12;
}
if(character.characterhealth >55 && character.characterhealth <= 60)
{
frame = 11;
}
if(character.characterhealth >50 && character.characterhealth <= 55)
{
frame = 10;
}
if(character.characterhealth >45 && character.characterhealth <= 50)
{
frame = 9;
}
if(character.characterhealth >40 && character.characterhealth <= 45)
{
frame = 8;
}
if(character.characterhealth >35 && character.characterhealth <= 40)
{
frame = 7;
}
if(character.characterhealth >30 && character.characterhealth <= 35)
{
frame = 6;
}
if(character.characterhealth >25 && character.characterhealth <= 30)
{
frame = 5;
}
if(character.characterhealth >20 && character.characterhealth <= 25)
{
frame = 4;
}
if(character.characterhealth >15 && character.characterhealth <= 20)
{
frame = 3;
}
if(character.characterhealth >10 && character.characterhealth <= 15)
{
frame = 2;
}
if(character.characterhealth >5 && character.characterhealth <= 10)
{
frame = 1;
}
if(character.characterhealth >0 && character.characterhealth <= 5)
{
frame = 0;
}
SDL_BlitSurface(health, &HealthBar[frame], screen, &offset);
}
所以问题是,在每个 if 语句中,我收到错误"erro:'字符'未在此范围内声明";我也尝试对类进行原型设计,但这并没有解决问题。我感谢任何帮助,甚至是负面反馈,至少它是一些东西。
YOur class没有"字符"字段。亲眼看看:
class HeadsUpDisplay
{
private:
int frame;
public:
SDL_Rect HealthBar[20];
SDL_Rect offset;
void init();
void render();
};
你有frame
,HealthBar
和offset
。然而,在你贴花的每一种方法中,你都试图访问"字符"。
字符是来自另一个类的对象。
C++类不知道另一个对象存在。要访问另一个对象,您应该通过引用或指针将其传递到方法中:
void HUD::render(Character &character){
if (character.whatever)
....
}
void HUD::render(Character *character){
if (character->whatever)
....
}
或者应该将其声明为全局变量 BEFORE 尝试访问它的函数体。
Character character;//or extern Character character;
void HUD::render(){
if (character.whatever)
....
}
如果在编译器遇到尝试访问字符的函数体之前没有以任何形式提及"字符",编译器将不知道"字符"是什么。
通常,尽可能避免使用全局变量是一个好主意。
相关文章:
- 在我的第一个C++程序中需要一些帮助(简单)
- 需要帮助识别简单多线程代码中的错误
- 尝试在链表程序的末尾进行更简单的插入.小问题需要帮助
- C++:帮助解释简单程序的行为
- c++和gtest需要帮助理解为什么看似简单的测试失败了
- 需要非常简单的循环C++帮助
- 使用 Qt 编写一个简单的帮助菜单
- 简单递归/dp - 帮助跟踪
- C++ifstream帮助(简单)
- C++游戏编程帮助.超级简单
- SDL C++游戏编程帮助(简单)
- 需要有关简单左堆插入结果的帮助
- 简单的C++代码,它给了我错误的循环计数.需要帮助来纠正它
- EasyPNG替代/超级简单数据可视化库(C ++)
- 简单的多线程帮助?C++、等待单一对象和同步
- 我需要帮助尝试用MinGW为GLFW编译一个简单的例子
- c++的问题.我需要帮助一个非常简单和基本的问题在c++
- 需要帮助的一个简单的代码在c++
- 超级简单的货币转换开关行为奇怪
- 需要帮助加载简单的文本数据与c++