gpt4 book ai didi

c++ - 如何将类中的成员绘制到窗口 C++

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:23 24 4
gpt4 key购买 nike

我为玩家制作了一个角色类,我想在类中添加一个玩家成员,然后绘制玩家。我正在使用 sfml 和 xcode。我得到的错误是:没有匹配的成员函数来调用“draw”:window.draw(player);线。看起来我需要将一个 sprite 对象放入 .draw() 中,那么如何制作属于该类的玩家 sprite 并将其绘制到窗口上?我是 c++ 和 sfml 的新手,所以非常感谢任何帮助。

#include <iostream>
#include <SFML/Graphics.hpp>

using namespace std;



class Character{

public:
string sprite;
int health;
int defense;
int speed;
int experience;
bool move;
int x_pos;
int y_pos;
sf::Texture texture;

//Constructor - Ran everytime a new instance of the class is created
Character(string image){
health = 100;
defense = 100;
speed = 100;
experience = 0;
x_pos = 0;
y_pos = 0;

texture.loadFromFile(image);
sf::Sprite sprite;
sprite.setTexture(texture);
sprite.setTextureRect(sf::IntRect(0, 0, 100, 100));
sprite.setPosition(x_pos, y_pos);
}
//Destructor - Ran when the object is destroyed
~Character(){

}
//Methods
void forward();
void backward();
void left();
void right();
void attack();
};

void Character::forward(){
cout << "Go Forward";
}
void Character::backward(){
cout << "Go Backward";
}
void Character::left(){
cout << "Go Left";
}
void Character::right(){
cout << "Go Right";
}

Character player("/Users/danielrailic/Desktop/Xcode /NewGame/ExternalLibs/Player.png");


int main() {
// insert code here...
int windowWidth = 1150;
int windowHeight = 750;
sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight ), "Awesome Game" );

while(window.isOpen()){
window.draw(player);
window.display();
window.setFramerateLimit(60);
}
}

最佳答案

您可以简单地添加一个返回玩家 Sprite 的成员函数:

sf::Sprite Character::getSprite() {
sf::Sprite sprite;
sprite.setTexture(texture);
sprite.setTextureRect(sf::IntRect(0, 0, 100, 100));
sprite.setPosition(x_pos, y_pos);
return sprite;
}

然后将结果传递给window.draw:

window.draw(player.getSprite());

或者,您可以反转依赖关系并让玩家负责所有绘图:

void Character::draw(sf::RenderWindow& w) {
w.draw(...);
}

还有其他方法,选择在很大程度上取决于很多外部因素。不过,这应该可以帮助您入门。

关于c++ - 如何将类中的成员绘制到窗口 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390807/

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