xors3d Geschrieben 11. November 2010 Geschrieben 11. November 2010 Dieser code funktioniert nicht weil die variable "camera" nicht bekannt ist. wollte den move() teil unten eigentlich in eine extra .h datei tun aber das geht ja auch nicht. gibts eine lösung für mein problem? würde gern eigene funktionen so schreiben und diese auch in extra dateien auslagern, oder wenigstens seperat im code. wenn jedoch immer die betreffenden variablen nicht bekannt sind, dann weiß ich auch nicht weiter... so hier erstmal der code #include "stdafx.h" #include "test.h" #include <xors3d.h> #include <iostream> #include "defs.h" #include "movement.h" int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { xGraphics3D(1366, 768, 32, false, true); xHidePointer(); int camera = xCreateCamera(); xPositionEntity(camera, 70, 60, 80); int light = xCreateLight(); xPositionEntity(light, 50, 60, 60); xRotateEntity(light, 45, 45, 45); int terrain = xLoadMesh("media/terrain.b3d"); xPositionEntity(terrain, 0, 0, 0); int hud_left = xLoadImage("media/hud-left.png"); while(!xKeyDown(KEY_ESCAPE)) { move(); xRenderWorld(); xDrawImage(hud_left, -25, 575); xFlip(); } return 0; } int move() { if(xKeyDown(KEY_W)) xMoveEntity(camera, 0, 0, 1); if(xKeyDown(KEY_S)) xMoveEntity(camera, 0, 0, -1); if(xKeyDown(KEY_A)) xMoveEntity(camera, -1, 0, 0); if(xKeyDown(KEY_D)) xMoveEntity(camera, 1, 0, 0); return 0; } und hier ist camera nicht bekannt und deshalb gehts nicht. gibts eine einfache lösung ohne class/singleton? muss doch einfacher gehen...globale variable muss doch irgendwie gehen Zitieren
Klotzkopp Geschrieben 11. November 2010 Geschrieben 11. November 2010 und hier ist camera nicht bekannt und deshalb gehts nicht. gibts eine einfache lösung ohne class/singleton?Wie wäre es mit einem einfachen int-Parameter für die move-Funktion, so dass du camera übergeben kannst? Zitieren
Guybrush Threepwood Geschrieben 11. November 2010 Geschrieben 11. November 2010 gibts eine lösung für mein problem? Ja und ohne das jetzt böse zu meinen: Die Lösung lautet die Grundlagen von C zu lernen. Entweder mit einem Tutorial oder besser mit einem entsprechendem Buch. Zitieren
xors3d Geschrieben 11. November 2010 Autor Geschrieben 11. November 2010 das mit der übergabe hab ich so versucht vorhin...ging aber nicht... hier seht...und ja ich bin noch am lernen dabei...aber würde dennoch fragen ob mir da jmd auf die sprünge helfen kann... main.cpp #include "stdafx.h" #include "test.h" #include <xors3d.h> #include <iostream> #include "defs.h" #include "movement.h" int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { xGraphics3D(1366, 768, 32, false, true); xHidePointer(); int camera = xCreateCamera(); xPositionEntity(camera, 70, 60, 80); int light = xCreateLight(); xPositionEntity(light, 50, 60, 60); xRotateEntity(light, 45, 45, 45); int terrain = xLoadMesh("media/terrain.b3d"); xPositionEntity(terrain, 0, 0, 0); int hud_left = xLoadImage("media/hud-left.png"); while(!xKeyDown(KEY_ESCAPE)) { move(camera); xRenderWorld(); xDrawImage(hud_left, -25, 575); xFlip(); } return 0; } movement.h int move(int cam) { if(xKeyDown(KEY_W)) xMoveEntity(camera, 0, 0, 1); if(xKeyDown(KEY_S)) xMoveEntity(camera, 0, 0, -1); if(xKeyDown(KEY_A)) xMoveEntity(camera, -1, 0, 0); if(xKeyDown(KEY_D)) xMoveEntity(camera, 1, 0, 0); return 0; } Zitieren
Klotzkopp Geschrieben 11. November 2010 Geschrieben 11. November 2010 Wenn du den Parameter in move cam nennst, solltest du dort auch diesen Bezeichner benutzen, und nicht weiterhin camera. Funktionsdefinitionen in Headerdateien sind übrigens heikel. Sobald du die Datei in mehr als eine Quellcodedatei einbindest, gibt es Linkerfehler. Zitieren
xors3d Geschrieben 11. November 2010 Autor Geschrieben 11. November 2010 stimmt...na das hätte mir auch selber auffallen können... vielen dank nun funktionierts.. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.