Veröffentlicht 11. November 201014 j 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
11. November 201014 j 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?
11. November 201014 j 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.
11. November 201014 j 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; }
11. November 201014 j 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.
11. November 201014 j stimmt...na das hätte mir auch selber auffallen können... vielen dank nun funktionierts..
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.