Zum Inhalt springen

Kadaj

Mitglieder
  • Gesamte Inhalte

    133
  • Benutzer seit

  • Letzter Besuch

  1. Ja, es handelt sich im ein anderes Fenster, in meinem Fall, ein Java-Programm. Vielleicht gibt es eine Lösung in C++ für das Problem? Sind Spiele-Bots nicht so programmiert? Oder müssen dort auch immer die betreffenden Fenster im Fokus sein? Ehrlich gesagt wundert es mich, dass es für sowas keine Möglichkeit in Java gibt.
  2. Hallo, ich hab mir ein Programm geschrieben, mit dem ich Tastendrücke in einer Schleife simuliere. Also in der Form: keySender.keyPress( KeyEvent.VK_6 ); Thread.sleep(500); keySender.keyRelease( KeyEvent.VK_6 ); Thread.sleep(1000); ..... [/PHP] Problem dabei ist nur, dass ich dabei immer das Fenster, für das es bestimmt ist, im Vordergrund haben muss. Gibt es eine Möglichkeit, diese Tastendrücke explizit an ein bestimmtes Fenster zu senden? Dann könnte ich nebenbei noch an anderen Sachen arbeiten. Gruß
  3. Jap, danke dir. bin auch nochmal unseren Skript durchgegangen. Ich hatte das völlig falsch verstanden aber nun hat es sich mir endlich erschlossen^^
  4. Hallochen, ich les grad das buch von Addison Wesley und verstehe nicht ganz wie Runnable funktioiert. Klar ist, warum es das gibt, weil es keine Mehrfachvererbung gibt, man aber trotzdem eine Klasse ableiten und als Thread laufen lassen möchte. Nun hat eine Runnable-Klasse doch aber nur die Aufgabe ihre run()-Funktion aufzurufen, wenn any.start() aufgerufen wird, oder nicht? Beispiel: class hauptklasse{ int a = 1; System.out.println("hauptklasse"); // wird das ausgegeben, wenn meinThread gestartet wird? } class meinThread extends hauptklasse implements Runnable{ run(){ System.out.println(a); } } [/PHP] Ich habe gelesen, dass beim start() von objekt vom typ meinThread gleich die run()-Methode aufgerufen wird. Was passiert aber mit dem ganzen code in meiner hauptklasse? ich könnte ja auch eine Klasse von thread ableiten. Dann hätte diese Klasse eine eigene run()-Methode und wenn ich eine weitere Klasse von dieser, von Thread abgeleiteten Klasse, ableite und diese dann Runnable implementieren soll ( was glaub ich blödsinn wäre, weil diese klasse ja schon ein thread wäre ), was würde dann beim Aufruf von start() geschehen? Dann hätte ich ja 2 run()-Methoden. Kann mir jemand erklären wie die Runnable-Schnittstelle richtig funktioniert und wann man sie einsetze sollte?
  5. Wie Recht du hast^^ Egal welchen Compiler ich nehme: "Prog - Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping... Das passiert auch, wenn ich einfach ein neues Glut-Projekt unter codeblocks anlege und gleich einen c++-Compiler nehme. Nichtmal der Beispiel-Code lässt sich übersetzen. Ja, da hab mich mich auch erst gewundert. Ich hab eine BITMAP.cpp.C und eine BITMAP.C mit dem selben Inhalt, nur C-Code. Die Dateien hat mein Prof als Beispiel an uns weitergegeben, diese Konstellation hat bei ihm unter Visual Studio funktioniert. Leider habe ich keine Idee wie ich das unter CodeBlocks anstelle, oder ob das überhaupt funktionieren kann. Vielleicht such ich mir einfach ein anderes Beispiel zum Laden von Texturen.
  6. Verstehe, ich hatte aber auch schon versucht den Compiler zu ändern. Mit einem C++-Compiler hat es aber nicht mehr funktioniert. Muss ich also ein neues c++-Projekt erstellen, damit ich meine bitmap.h verwenden kann?
  7. Hallochen, ich programmiere eigentlich nur unter linux, aber ich muss für ein Projekt unter Windows arbeiten. Nun habe ich ein Problem beim Verwenden eigener Header-Dateien. Ich habe mir ein Projekt erstellt, unter "build options" -> "search directories" für Compiler und Linker jeweils den Pfad angegeben, in dem die beiden header bitmap.h und texture.h mit den zugehörigen .c files liegen und diese Dateien auch noch dem Projekt hinzugefügt. Ich hab mir einige Beschreibungen im Netz angesehen, bei mir scheint nichts davon zu funktionieren. Die Fehler beziehen sich dabei alle auf die bitmap.c ("was not declared in this scope" zu 90%) Ich verwende für das Projekt den GNU-gcc Compiler. Die bitmap.h wird von der texture.h inkludiert. Hier mal die bitmap.c #include "bitmap.h" void *LoadDIBitmap(char *filename, BITMAPINFO **info) /* BITMAPINFO kennt er schonmal nicht */ { // den Rest aus dem header auch nicht FILE *fp; /* Open file pointer */ void *bits; /* Bitmap pixel bits */ long bitsize, /* Size of bitmap */ infosize; /* Size of header information */ BITMAPFILEHEADER header; /* File header */ ... [/PHP] und die bitmap.h [PHP] #ifndef _BITMAP_H #define _BITMAP_H //File: Bitmap.h //Written by: Mark Bernard //on GameDev.net: Captain Jester //e-mail: mark.bernard@rogers.com //Please feel free to use and abuse this code as much //as you like. But, please give me some credit for //starting you off on the right track. // //The file Bitmap.cpp goes along with this file // #include <iostream> #include <cstdio> #include <string> using namespace std; const short BITMAP_MAGIC_NUMBER=19778; const int RGB_BYTE_SIZE=3; #pragma pack(push,bitmap_data,1) typedef struct tagRGBQuad { char rgbBlue; char rgbGreen; char rgbRed; char rgbReserved; } RGBQuad; typedef struct tagBitmapFileHeader { unsigned short bfType; unsigned int bfSize; unsigned short bfReserved1; unsigned short bfReserved2; unsigned int bfOffBits; } BitmapFileHeader; typedef struct tagBitmapInfoHeader { unsigned int biSize; int biWidth; int biHeight; unsigned short biPlanes; unsigned short biBitCount; unsigned int biCompression; unsigned int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; unsigned int biClrUsed; unsigned int biClrImportant; } BitmapInfoHeader; #pragma pack(pop,bitmap_data) class Bitmap { public: //variables RGBQuad *colours; char *data; bool loaded; int width,height; unsigned short bpp; string error; //methods Bitmap(void); Bitmap(char *); ~Bitmap(); bool loadBMP(char *); private: //variables BitmapFileHeader bmfh; BitmapInfoHeader bmih; int byteWidth; //the width in bytes of the image int padWidth; //the width in bytes of the added image unsigned int dataSize; //size of the data in the file //methods void reset(void); bool convert24(char *); //convert to 24bit RGB bottom up data bool convert8(char *); //convert to 24bit RGB bottom up data }; #endif //_BITMAP_H Also unter Linux ist das definitiv einfacher, einfach die header inkludieren und dem gcc alle .c-Dateien mitgeben ... Weiß jemand wo das Problem liegt?
  8. Ok, es lag daran, dass ich vergessen hab moveX und moveZ zu initialisieren. Immerhin rechne ich ja mit +=.
  9. Hallo, ich schreibe grade an einem openGL-Programm. Dazu gehören natürlich auch keyboard-Funktionen. Mit w bzw s bewege ich mich vorwärts und rückwärts in einem Raum. Dazu folgendes: float camspeed = 0.8,directionX,directionZ,moveX,moveZ; ... case 'w': //Richtungsvektor directionX = centerX-eyeX; directionZ = centerZ-eyeZ; //Einheitvektor berechnen moveX+=camspeed*directionX/( sqrt( (directionX*directionX) + (directionZ*directionZ) ) ); moveZ+=camspeed*directionZ/( sqrt( (directionX*directionX) + (directionZ*directionZ) ) ); printf("directionX: %f und directionZ: %f\n",directionX,directionZ); printf("moveX: %f und moveZ: %f\n",moveX,moveZ); eyeX += moveX; eyeZ += moveZ; centerX += moveX; centerZ += moveZ; gluLookAt(eyeX,eyeY,eyeZ,centerX,centerY,centerZ,0,1,0); break; ... [/PHP] Das funktioniert auch wunderbar, nur ist mir aufgefallen, dass ich manchmal beim Drücken der w-Taste gewaltige Sprünge nach vorne mache und nichts mehr von meinen Objekten sehe. Daher hab ich mir mal ausgeben lassen, was in moveX und moveY steht, was einem Punkt mit dem Abstand 1 vom Koordinatenursprung entspricht, welche ich dann mit der Position der Kamera und mit dem Punkt, auf dem sie fokusiert ist, addiere. Ich habe das Programm nur einmal kompiliert und erhalte 2 verschiedene Ergebnisse, nachdem ich nur die w-Taste gedrückt habe: [code] [kadaj@atheros Computergrafik]$ ./figuren OpenGL Version: |4.3.0 NVIDIA 310.19| directionX: -0.500000 und directionZ: -3.500000 moveX: -0.113137 und moveZ: -0.791960 [kadaj@atheros Computergrafik]$ ./figuren OpenGL Version: |4.3.0 NVIDIA 310.19| directionX: -0.500000 und directionZ: -3.500000 moveX: -213190605925492478661477779111936.000000 und moveZ: -0.791960 [/code] Was ist denn hier passiert? oO Wie kann es sein, dass auf einmal totaler Murks rauskommt. Das Programm ist doch das selbe. Kann vielleicht jemand Abhilfe schaffen? Gruß
  10. Da hab ich wirklich nur mit einem Auge gelesen, bloß gut. Stimmt, hätte man auch selbst drauf kommen können. Danke für die Hilfe
  11. Danke euch beiden! Bei beiden Beispielen scheint die windows.h eine Rolle zu spielen; in dem einem im Beispiel und bei dem anderen als Lösungshinweis. Ich werd mich am Montag mal durchwühlen. Scheinbar muss ich auch c++ verwenden, mal sehen ob sich das nicht auch als C darstellen lässt. Gruß
  12. Hallo, ich beschäftige mich grade mit openGL. Wir sollen dafür unter Verwendung der glut.h einige Sache ausprobieren. Ich würde dabei gern auf Linux bleiben, was bei 3D-Objekten und Beleuchtung etc. auch kein Problem war. Allerdings verzweifle ich grade daran eine Bitmap zu laden und diese auf ein Objekt zu legen. Ich hab schon ne halbe Ewigkeit gegoogelt. Da ich absolut keine Idee habe, wie ich das machen könnte, wollte ich ein Beispiel zum testen kopieren und es dann anpassen. Ein Schachbrett ist nicht das Problem, dazu lade ich ja auch keine Bitmap, aber die Beispiele, die ich gefunden habe, beziehen sich entweder nur auf ein Schachbrett oder verwenden Bibliotheken, die es nur unter Windows gibt Ich bin doch nicht der erste, der ein C-Programm unter Linux schreiben will, welches eine Bitmap lädt und diese als Textur verwendet. Im OpenGL-Buch von Dave Shreiner steht auch nichts zum Laden von Bitmaps. Gibt es irgendein Buch oder Tutorial welches das Problem unter Linux beschreibt?
  13. Kann das passieren? Also bei mir funktioniert es sowohl mit Bildern als auch mit mp3-Dateien von einem Rechner zum anderen. Laut doc auf oracle.com: Vielleicht passiert das, wenn man im Laufe des Quellcodes diesem Array mal ein anderes zuweist mit "=", dann verändert sich nämlich auch dessen Größe. Anders könnte ich mir das nicht erklären Gruß
  14. Ja, das ist mir auch aufgefallen. Ich hatte mich anfangs gewundert, dass die Dateien viel größer sind, bis mir bei der Textdatei aufgefallen ist, dass noch Nullen am Ende stehen. Ich hab es dann so gelöst, dass mein Client und mein Server anhand der Dateigröße im ersten Paket einfach berechnen wie viele bytes sie einlesen müssen. Gut zu wissen, danke
  15. Seh ich denn beim debug was in der datei passiert? Ich weiß leider ohnehin nicht wie ich das unter fedora-eclipse mache :/ Jedenfalls hab ich Beispiel im Netz gefunden und mein Fehler ist hier: //while( fis.read( DataBytes ) != -1 ){} fis.read( DataBytes ); [/PHP] Ich dachte es wird immer nur ein byte beim Aufruf in das byte geschrieben und -1 wird zurückgegeben, wenn das byte-array voll ist. Aber das byte wird gleich vollgeschrieben und -1 wird zurückgegeben, wenn das Dateiende erreicht wurde. Das habe ich an der Stelle wohl damit verwechselt: [PHP] int c; while ((c = in.read()) != -1) { ... Jedenfalls wird die Kopie jetzt fehlerfrei kopiert.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...