c++ - I'm making a Animal Crossing clone, but I'm having problems rendering the Player -
recently, decided make animal crossing clone in c++ , sfml 2.1. i'm having issues. player won't show when commanded rendered. program compile , run fine player won't show up.
here's code:
#include <iostream> #include <sfml/graphics.hpp> using namespace std; using namespace sf; renderwindow window(videomode(700, 500), "animal crossing: old oak"); view view(floatrect(1000, 1000, 300, 200)); class villager{ public: int x, y, w, h; sprite pl; string loaddir; villager(int x, int y, int w, int h, color c, string loaddir){ this->x = x; this->y = y; this->w = w; this->h = h; image image; image.loadfromfile(loaddir); image.createmaskfromcolor(color::magenta); texture tex; tex.loadfromimage(image); pl.settexture(tex); } } }; int main(){ villager villager(1100, 1000, 100, 100, color::blue, "player.png"); view.zoom(5); image grasstexloader; grasstexloader.loadfromfile("grass.png"); texture grasstex; grasstex.loadfromimage(grasstexloader); sprite grass; grass.settexture(grasstex); while(window.isopen()){ event event; while(window.pollevent(event)){ if(event.type == event::closed) window.close(); if(keyboard::iskeypressed(keyboard::up)) villager.moveup(); if(keyboard::iskeypressed(keyboard::down)) villager.movedown(); if(keyboard::iskeypressed(keyboard::left)) villager.moveleft(); if(keyboard::iskeypressed(keyboard::right)) villager.moveright(); if(keyboard::iskeypressed(keyboard::escape)) window.close(); } window.setview(view); window.draw(grass); window.draw(villager.pl); window.display(); window.clear(); } } i've been staring @ code hour now. can't find error!
please help!
edit: solved problem sprite not being visible, sprite white instead of appropriate colors. proboably has how load file. please post suggestions have on how fix new problem!
your sprite rendered white because in villager constructor, you're giving local texture variable settexture, gets destructed @ end of constructor scope.
Comments
Post a Comment