Hilfe^^
-
freemmorpgforfun schrieb:
Das sagt uns der Compiler:
30:'cout' undeclared (first use this function)
30:'endl' undeclarde (first use this function)benutze die präprozessor-direktive
<iostream>
und
unsing namespace std;
-
Und überprüfe zusätzlich wo deine Level.h liegt, denn wenn die korrekt eingebunden wird, wird damit der restliche Rattenschwanz wohl auch verschwinden.
-
Wie, liegt??
Wenn du den Ordner meinst, dann kann ich sagen dass ich alle in einen gepackt habe.Achso und:
using namespace std;
ist schon drin...
Ich hab jetzt auch
#include <iostream>
reingeschrieben...
LG freemmorpgforfun
-
Welche Fehlermeldungen sind denn nun noch vorhanden? Der Ordner von level.h muss als Header-Ordner (includes) eingebunden sein in deinem Projekt.
-
Na liegen halt
Fakt ist nunmal, dass deine Header-Datei nicht inkludiert wird, weswegen auch die ganzen Strukturen und Klassen nicht gefunden werden können. Wenn du Visual Studiuo nutzt, schau mal, ob die Dateien korrekt im Projekt eingefügt sind (.h unter header files, .cpp unter source files), und schau dir unter den Eigenschaften an (zusätzliche Include-Verzeichnisse).
-
Du erstellst einfach eine Headerdatei, die sich dann z.B. in deinem Fall "level.hpp" nennt. Wenn du nun die datei inkludieren möchtest inkludierst du in der Datei, wo du sie brauchst einfach
#include "level.hpp"
Achtung: Groß -und kleinschreibung beachten, sowie Dateiendung (.hpp oder .h).
-
-
Lasst es doch einfach bleiben
-
Wieso??
Wir haben Spaß dran... Und außerdem: das Forum ist doch dazu da zu helfen und nicht um jemanden zum aufgeben zu bringen.Wir machen solange weiter bis wir es geschafft haben^^
-
freemmorpgforfun schrieb:
Wieso??
Wir haben Spaß dran... Und außerdem: das Forum ist doch dazu da zu helfen und nicht um jemanden zum aufgeben zu bringen.Wir machen solange weiter bis wir es geschafft haben^^
Diese Einstellung habe ich auch
Ich würde Dir aber anraten einmal selbstständig nach Fehlern zu suchen, was dank
Google meistens recht leicht ist. Denn wenn du ein Projekt codest suchst Du - je
nach größe des Projekts - ungf. 10% der Arbeit nach Fehlern/Verbesserungen/usw.
-
Ja ich hab schon eigenständig versucht nach Fehlern zu suchen, aber bis jetzt konnte ich keins der Probs mit den mir bekannten Möglichkeiten lösen...
Achso und wenn es nötig ist kann ich auch die von uns bisher veränderten Dateien nochmal hochladen
-
Leveleditor X,Y Achsen.cpp
#include <Leveleditor.h> #include <Leveleditor.cpp> //Geht alle Felder durch for(int iHeight = 0;iHeight < LevelInfo.iHeight;iHeight++) { for(int iWidth = 0;iWidth < LevelInfo.iWidth;iWidth++) { //Zeichnet das Sprite (pBitmapName) //Wenn das Sprite nicht ausserhalb des Bildschirms ist (60 ober und links vom Bildschirm, und über den unteren und rechten Teil des Bildschirms if(((x+ScrollX> -60) && (x+ScrollX < MeineXAuslösung) && ((y+ScrollY > -60) && (y+ScrollY < MeineXAuflösung)))) MeineDrawFunktion(Lvl.GetField(x,y)->pBitmapName,x+ScrollX,y+ScrollY); //Sprite ist 50 Breit x += 50; } //Sprite ist 50 hoch y += 50; }
Leveleditor.cpp
//******************************* FOR MORE SEE THE .h file ********************************// #include <iostream> #include "Leveleditor.h.h" #include <cstdio> Level Lvl; using namespace std; int main() { LevelInfo.iMapID = 36; Lvl.Init(&LevelInfo,"Test.jpg",5,4); Lvl.GetField(1,1)->pBitmapName = "sdf.png"; Lvl.GetField(3,4)->pBitmapName = "sdf.png"; Lvl.SetSizeOfMap(1,1); Lvl.GiveMapOut(); Lvl.SaveLvl("test.drg"); Lvl.LoadLvl("test.drg"); cout << "ende" << endl; cout.flush(); getchar(); return 0; }
Leveleditor.h
//********************* Level.h ****************************// // This class manages the 2D Levels of the Engine // //**************************************************************************************// //Include files #include <iostream> #include <fstream> Anzeigen #include <vector> //Saves the stuff struct LevelData { unsigned int iMapID; unsigned int iWidth; unsigned int iHeight; }; //Saves the informations if its a teleport field struct TeleportField { int iMapID; int iTargetWidth; int iTargetHeight; int iTeleporttype; }; //Saves the field informations struct MapField { char* strBitmapName; TeleportField Teleport; }; //This class manages the 2D Levels class Level { public: //Initialize the class void Init(LevelData *pLevelData) { this->Init(pLevelData,"",0,0); } //Initialize the class void Init(LevelData *pLevelData,std::string strStandardFilename,int iWidth, int iHeight) { m_pLevelDatas = pLevelData; m_pLevelDatas->iWidth = iWidth; m_pLevelDatas->iHeight = iHeight; if(iWidth && iHeight) this->MakeNewMap(iWidth,iHeight,strStandardFilename); } void SetSizeOfMap(int iWidth, int iHeight) { } //Makes a new map (deletes all old datas) void MakeNewMap(int iWidth, int iHeight,std::string strStandardFilename) { m_pLevelDatas->iWidth = iWidth; m_pLevelDatas->iHeight = iHeight; //Clears it if there is already a version if(!m_bMap) m_bMap = true; else { //Resize it an sets it 0 for(int i = 0;i < m_pLevelDatas->iWidth;i++) m_MapField[i].clear(); m_MapField.clear(); } //Creats iWidth elements m_MapField.resize(m_pLevelDatas->iWidth); //Creates for each iWidth element iHeight elements for(int i = 0;i < m_pLevelDatas->iWidth;i++) { m_MapField[i].resize(m_pLevelDatas->iHeight); for(int z = 0;z < m_pLevelDatas->iHeight;z++) { //Sets it 0/pStandardFilename m_MapField[i][z].strBitmapName = (char*)strStandardFilename; m_MapField[i][z].Teleport.iMapID = 0; } } } //Returns the Field MapField* GetField(int iX, int iY) { if ((iX > m_pLevelDatas->iWidth) || (iY > m_pLevelDatas->iHeight)) { std::cout << "Error, field doesn't exist." << std::endl; } return &m_MapField[iX-1][iY-1]; } //Gives the map out, only for test (DOS) void GiveMapOut() { for(int i = 0;i < m_pLevelDatas->iHeight;i++) { for(int z = 0;z < m_pLevelDatas->iWidth;z++) { std::cout << m_MapField[z][i].pBitmapName << " "; } std::cout << std::endl; } } //Saves the level int SaveLvl(std::string strFilename) { if(!m_bMap) return 1; std::ofstream ofStream; //Opens the file binary ofStream.open(strFilename.c_str(),std::fstream::out | std::fstream::binary); //Writes the LevelData ofStream.write((char*)m_pLevelDatas, sizeof(*m_pLevelDatas)); for(int z = 0;z < m_pLevelDatas->iWidth;z++) for(int i = 0;i < m_pLevelDatas->iHeight;i++) ofStream.write((char*)&m_MapField[z][i], sizeof(m_MapField[z][i])); //Close the file ofStream.close(); return 0; } //Loads the level void LoadLvl(std::string strFilename) { std::ifstream ifStream; //Opens the file binary ifStream.open(strFilename.c_str(),std::fstream::in | std::fstream::binary); //Reads it ifStream.read((char*)m_pLevelDatas,sizeof(*m_pLevelDatas)); this->MakeNewMap(m_pLevelDatas->iWidth, m_pLevelDatas->iHeight, ""); for(int z = 0;z < m_pLevelDatas->iWidth;z++) for(int i = 0;i < m_pLevelDatas->iHeight;i++) ifStream.read((char*)&m_MapField[z][i],sizeof(m_MapField[z][i])); //Close the file ifStream.close(); } private: //If the map exist bool m_bMap; //The map std::vector < std::vector <MapField> > m_MapField; //This struct saves the header of the file LevelData *m_pLevelDatas; };
-
Warum Leveleditor.h*.h*?
Das ergibt keinen Sinn..
-
ja ich weiß
ich hab sie einfach so genannt
-
freemmorpgforfun schrieb:
ich hab sie einfach so genannt
Das würde ich aber nicht "einfach so" machen. Stell Dir z.B. du würdest ein richtig großes Projekt programmieren; mit rund 100 Header -und Quelldateien. Du gehst 2-3 Wochen in den Urlaub wo Du Deine ganze Arbeit nicht mitnimmst. Nach den 3 Wochen kommst Du wieder zu Hause an und willst weiter programmieren, jedoch weil Du keine vielerklärende Namen für die Dateien angelegt hast wird es schwer sein Dich in deinem Projekt wiederzufinden. Das war mal nur so ein Beispiel.
Es ist immer besser Übersichtlich zu programmieren, sonst kann man bei größeren Projekte die Schuhe verlieren.
-
gut... du hast Recht..
Aber das hier ist nunmal kein "großes" Projekt...
Ich hab die Dats so genannt dass sie ihren Inhalt am besten beschreiben...Ich hab das wohl etwas unverständlich geschrieben:
Ich dachte vorher dass man nicht erkennen könnte welche Datei nun welche ist^^
LG freemmorpgforfun
-
Ich würde außerdem grundsätzlich include guards verwenden, um mehrfache Includes ausschließen zu können.
Das ganze sähe dann so aus:
#ifndef LEVELEDITOR_H #define LEVELEDITOR_H ... deine Headerdatei ... #endif
-
Danke werde es gleich mal ausprobieren
-
hat wenig geholfen
-
Woran haperts denn?
Versuch mal das Problem genauer zu beschreiben.