Klassen
-
... kannst du c++? Wenn nicht, ist der Einstieg mit SFML nicht geeignet. C++ ist auch keine Sprache, die man mal so aus Spaß an der Freude mit Programmbeispielen aus Tutorials lernt.
-
Ich habe nochmal was dran gemacht:
#include <SFML/Graphics.hpp> #include "player.h" using namespace sf; int main() { RenderWindow window(VideoMode(800, 800), "Maze between fog"); Texture gtexture; gtexture.loadFromFile("Data\\ground.png"); gtexture.setSmooth(false); Sprite ground; ground.setTexture(gtexture); ground.setPosition(45,45); Texture g2texture; g2texture.loadFromFile("Data\\ground2.png"); gtexture.setSmooth(false); Sprite na01; na01.setPosition(500, 80); na01.setTexture(g2texture); player p(); while(window.isOpen()) { Event event; while(window.pollEvent(event)) { if(event.type == Event::Closed) window.close(); if(Keyboard::isKeyPressed(Keyboard::Escape)) window.close(); } window.clear(); window.draw(ground); window.draw(na01); p().Update(window); p().Render(window); window.display(); } return 0; }
Jetzt faselt der was von einer nicht aufgelösten Externe
Und ja C++ kann ich nicht ganz, bringe mit der Stück für Stück mit SFML darin bei, ich weiß, dass man das nicht so macht
-
*mir das
nicht mit der?!
-
player p();
irgendetwas damit
-
Dann mach halt irgendwas damit
-
?
irgendetwas?
-
player p();
wird leider vom Compiler als Funktionsdeklaration, einer Funktion ohne parameter, die ein Objekt von player zurueckgibt, gelesen (Altlast aus altem C).
Du musst es beiplayer p;
belassen, bzw in diesem Fall muss es
plazer p("Irgendein Name");
sein, und an den anderen Stellen auch statt p() nur p hinschreiben. Ist ja keine Funktion, sondern Instanz einer Klasse.
-
Ja okay, stimmt ja.
Danke für eure Hilfe
Poste dann mal bald das Ergebnis hiervon
-
Also hier ist schon mal der Code, die player.png muss ich noch erstellen!
#include <SFML/Graphics.hpp> #include <iostream> #include <windows.h> #include "player.h" using namespace sf; using namespace std; int main() { RenderWindow window(VideoMode(750, 750), "Maze between fog"); Texture gtexture; gtexture.loadFromFile("Data\\ground.png"); gtexture.setSmooth(false); Sprite ground; ground.setTexture(gtexture); ground.setPosition(0,0); player SP("Spieler"); int tmp; cout << "Spiel starten? (1/0)" << endl; cin >> tmp; if(tmp == 1) { system("cls"); Mouse::setPosition(Vector2i(325,725),window); while(window.isOpen()) { Event event; while(window.pollEvent(event)) { if(event.type == Event::Closed) window.close(); if(Keyboard::isKeyPressed(Keyboard::Escape)) window.close(); } window.clear(); window.draw(ground); SP.Update(window); SP.Render(window); window.display(); } }else if(tmp == 0) { window.close(); }else { cout << "Fehler bei der Eingabe!" << endl; system("Pause >nul"); } return 0; }
#include "player.h" #include <iostream> #include <Windows.h> using namespace sf; using namespace std; player::player(String tex) { ptexture.loadFromFile("Data\\player.png"); ptexture.setSmooth(false); splayer.setOrigin(20,20); splayer.setTexture(ptexture); ziel.setSize(Vector2f(50,50)); ziel.setPosition(200,0); ziel.setFillColor(Color::Red); na.loadFromFile("Data\\ground2.png"); na.setSmooth(false); na1x8_1.setTexture(na); na1x8_1.setTextureRect(IntRect(0,0,100,750)); na1x8_1.setPosition(0,0); na1x8_2.setTexture(na); na1x8_2.setTextureRect(IntRect(650,0,750,750)); na1x8_2.setPosition(650,0); na3x2.setTexture(na); na3x2.setTextureRect(IntRect(350,600,700,750)); na3x2.setPosition(350,600); na1x1_1.setTexture(na); na1x1_1.setTextureRect(IntRect(100,0,100,100)); na1x1_1.setPosition(100,0); na1x1_2.setTexture(na); na1x1_2.setTextureRect(IntRect(250,450,100,100)); na1x1_2.setPosition(250,450); na1x1_3.setTexture(na); na1x1_3.setTextureRect(IntRect(500,450,100,100)); na1x1_3.setPosition(500,450); na1x2_1.setTexture(na); na1x2_1.setTextureRect(IntRect(100,300,100,200)); na1x2_1.setPosition(100,300); na1x2_2.setTexture(na); na1x2_2.setTextureRect(IntRect(250,0,100,150)); na1x2_2.setPosition(250,0); na1x2_3.setTexture(na); na1x2_3.setTextureRect(IntRect(550,0,100,200)); na1x2_3.setPosition(550,0); na1x2_4.setTexture(na); na1x2_4.setTextureRect(IntRect(550,200,100,200)); na1x2_4.setPosition(550,200); na1x2_5.setTexture(na); na1x2_5.setTextureRect(IntRect(400,150,100,200)); na1x2_5.setPosition(400,150); na1x2_6.setTexture(na); na1x2_6.setTextureRect(IntRect(400,350,100,200)); na1x2_6.setPosition(400,350); na2x1_1.setTexture(na); na2x1_1.setTextureRect(IntRect(350,0,200,100)); na2x1_1.setPosition(350,0); na2x1_2.setTexture(na); na2x1_2.setTextureRect(IntRect(150,150,200,100)); na2x1_2.setPosition(150,150); na2x1_3.setTexture(na); na2x1_3.setTextureRect(IntRect(200,300,200,100)); na2x1_3.setPosition(200,300); na2x1_4.setTexture(na); na2x1_4.setTextureRect(IntRect(150,550,200,100)); na2x1_4.setPosition(150,550); na2x1_5.setTexture(na); na2x1_5.setTextureRect(IntRect(100,700,200,50)); na2x1_5.setPosition(100,700); }; void player::Update(RenderWindow &Window) { int x,y; x = Mouse::getPosition(Window).x; y = Mouse::getPosition(Window).y; splayer.setPosition(x,y); if(splayer.getGlobalBounds().intersects(ziel.getGlobalBounds())) { cout << "Gewonnen!" << endl; system("Pause >nul"); } if(splayer.getGlobalBounds().intersects(na1x1_1.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x1_2.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x1_3.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x2_1.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x2_2.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x2_3.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x2_4.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x2_5.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x2_6.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x8_1.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na1x8_2.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na2x1_1.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na2x1_2.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na2x1_3.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na2x1_4.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na2x1_5.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); }else if(splayer.getGlobalBounds().intersects(na3x2.getGlobalBounds())) { cout << "Verloren!" << endl; system("Pause >nul"); } } void player::Render(RenderWindow &Window) { Window.draw(na1x1_1); Window.draw(na1x1_2); Window.draw(na1x1_3); Window.draw(na1x2_1); Window.draw(na1x2_2); Window.draw(na1x2_3); Window.draw(na1x2_4); Window.draw(na1x2_5); Window.draw(na1x2_6); Window.draw(na1x8_1); Window.draw(na1x8_2); Window.draw(na2x1_1); Window.draw(na2x1_2); Window.draw(na2x1_3); Window.draw(na2x1_4); Window.draw(na2x1_5); Window.draw(na3x2); Window.draw(splayer); Window.draw(ziel); }
#include <SFML/Graphics.hpp> using namespace sf; class player { public: void Update(RenderWindow &Window); void Render(RenderWindow &Window); explicit player(String tex); private: Texture ptexture; Sprite splayer; RectangleShape ziel; Texture na; Sprite na3x2; Sprite na1x8_1; Sprite na1x8_2; Sprite na1x1_1; Sprite na1x1_2; Sprite na1x1_3; Sprite na1x2_1; Sprite na1x2_2; Sprite na1x2_3; Sprite na1x2_4; Sprite na1x2_5; Sprite na1x2_6; Sprite na2x1_1; Sprite na2x1_2; Sprite na2x1_3; Sprite na2x1_4; Sprite na2x1_5; };
das war viel Arbeit, aber ich bin zufrieden
-
ich habe selber noch, ein paar kleine Fehler korrigiert
-
-
lern schleifen und container. Damit kannst du den Code bestimmt auf die Haelfte reduzieren.
-
war mir klar, ich bin so oder so bereits etwas am ändern, um paar teile zu verkürzen! Funkt zwar noch nicht alles, aber mal schauen
-
ich verkürze gerade mit vektoren!
wenn ich auf diesen Vektor "vector<Sprite> na1x1;" zum Beispiel mit "na1x1[0].setTexture(na);" zugreifen will, sagt er, dass das kein deklarierter Bezeichner wäre ...
-
Kopiere mal vollständige Fehlermeldung und gibt mehr Kontext vom Code, der sie erzeugt.
-
Fehler 7 error C2065: 'na1x8': nichtdeklarierter Bezeichner C:\Users\Jojo\documents\visual studio 2012\Projects\SPIEL_01-SFML\SPIEL_01-SFML\player.cpp 21 1 SPIEL_01-SFML
das beim vektor erstellen:
Fehler 1 error C2143: Syntaxfehler: Es fehlt ';' vor '<' c:\users\jojo\documents\visual studio 2012\projects\spiel_01-sfml\spiel_01-sfml\player.h 36 1 SPIEL_01-SFMLFehler 12 error C2228: Links von ".setPosition" muss sich eine Klasse/Struktur/Union befinden. C:\Users\Jojo\documents\visual studio 2012\Projects\SPIEL_01-SFML\SPIEL_01-SFML\player.cpp 23 1 SPIEL_01-SFML
Fehler 8 error C2228: Links von ".setTexture" muss sich eine Klasse/Struktur/Union befinden. C:\Users\Jojo\documents\visual studio 2012\Projects\SPIEL_01-SFML\SPIEL_01-SFML\player.cpp 21 1 SPIEL_01-SFML
Fehler 10 error C2228: Links von ".setTextureRect" muss sich eine Klasse/Struktur/Union befinden. C:\Users\Jojo\documents\visual studio 2012\Projects\SPIEL_01-SFML\SPIEL_01-SFML\player.cpp 22 1 SPIEL_01-SFML
Fehler 3 error C2238: Unerwartete(s) Token vor ';' c:\users\jojo\documents\visual studio 2012\projects\spiel_01-sfml\spiel_01-sfml\player.h 36 1 SPIEL_01-SFML
Fehler 6 error C2238: Unerwartete(s) Token vor ';' c:\users\jojo\documents\visual studio 2012\projects\spiel_01-sfml\spiel_01-sfml\player.h 36 1 SPIEL_01-SFML
Fehler 2 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. c:\users\jojo\documents\visual studio 2012\projects\spiel_01-sfml\spiel_01-sfml\player.h 36 1 SPIEL_01-SFML
Fehler 5 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. c:\users\jojo\documents\visual studio 2012\projects\spiel_01-sfml\spiel_01-sfml\player.h 36 1 SPIEL_01-SFML
14 IntelliSense: Der Bezeichner ""na1x8"" ist nicht definiert. c:\Users\Jojo\Documents\Visual Studio 2012\Projects\SPIEL_01-SFML\SPIEL_01-SFML\player.cpp 21 2 SPIEL_01-SFML
-
Sieht danach aus, als sei std::vector nicht richtig bekannt. Header eingebunden?
-
bei player.h ja aber bei player.cpp nein
-
Jetzt sagt er aber, dass ein Typspeziefierer erwartet wurde, bei dem Vektor, der nimmt die Anzahl nicht an
und wenn ich: "na1x8[1].setTexture..." nutzen will dann bietet er mir gar nicht das set... an
-
FJK-2842 schrieb:
bei player.h ja aber bei player.cpp nein
Bei player.h reicht, die bindest du ja in der .cpp ein und dadurch auch alle Header, die sie einbindet.
Poste bitte mal Code.