Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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;

}

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.