| 
			
				|  | JLI Spieleprogrammierung 
 
 |  
 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |  
		| Autor | Nachricht |  
		| Fossil Mini JLI'ler
 
 
 Alter: 90
 Anmeldedatum: 07.03.2006
 Beiträge: 11
 Wohnort: Tübingen
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 30.05.2006, 14:25    Titel: Linken geht, Ausführung stürzt ab |   |  
				| 
 |  
				| Hallo jli-Gemeinde, 
 ich hänge immer noch an Kapitel 19 fest, gebe aber zu, daß ich in letzer Zeit nicht fleißig war (Garten, Sommer(?), Familie).  Ich versuche gegenwärtig etwas ganz Einfaches: im Programm "Test Sprite" den fighter durch ein anderes Sprite zu ersetzen, indem ich den  IMAGE_FILE ändere.
 
 
 //#define IMAGE_FILE "..\\..\\media\\fighter.bmp"
 //#define SPRITE_WIDTH  74
 //#define SPRITE_HEIGHT
 
 #define IMAGE_FILE "e:\\eigene  Dateien\\GenesisCD\\Buch\\BitMaps\\House3.bmp"
 #define SPRITE_WIDTH  256
 #define SPRITE_HEIGHT 256
 
 
 Also: Zunächst habe ich den vollständigen Pfad für den fighter eingesetzt, das funktioniert. Dann habe ich (s.o.)  "...\\fighter.bmp" durch "e:\\...\\house3.bmp" ersetzt, wobei house3.bmp 256x256 Pixel groß ist, also gut auf die 600x800 Oberfläche paßt (SpriteX und SpriteY habe ich auf 0 gesetzt.)
 
 Komplieren verläuft ohne Fehler oder Warnung, ebenso das Linken. Bei der Ausführung wird noch die Message Box gezeigt, die u.a. die Verschiebemöglichkeit anzeigt, nach OK erscheint eine Message box, die einen Fehler in der Anwendung in TestSprite.exe anzeigt:
 
 Die Anweisung in "0x736f9e76" verweist auzf Speicher "0x000000004". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.
 
 Die Sache ist insoweit interessanter, als ich dieses Phänomen vor einiger Zeit mit allen Programmen des Kapitels 19 hatte. Ich habe netürlich an einigen dieser Programme herummanipuliert, aber was ich angestellt habe und warum plötzlich alle, auch die nicht berührten,  so reagieren, ist mir schleierhaft.  Ich habe mir so geholfen, daß ich alle Bespielprogramme von der CD  in einen neuen Ordner geladen habe und  wollte eigentlich die ganze Sache vergessen, aber jetzt ist es wieder aktuell geworden.
 
 Noch eine Frage: wie tranferiert ihr eigentlich einen Teil des Progammcodes in eine Nachricht wie diese hier? Ich habe es zwar mit Kopieren/Einfügen auch geschafft, aber Eure Mitteilungen sehen einfach besser aus.
 
 Kann mir jemand helfen? Vielen Dank.
 Euer Fossil
 _________________
 Weissjurabeta
 |  |  
		| Nach oben |  |  
		|  |  
		| GreveN JLI Master
 
  
 Alter: 38
 Anmeldedatum: 08.01.2004
 Beiträge: 901
 Wohnort: Sachsen - Dresden
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 30.05.2006, 15:14    Titel: |   |  
				| 
 |  
				| Sicher, dass der Pfad stimmt? Wie schaut deine Laderoutine aus? Ist mit der Bitmap alles ok? 
 Um den Code so hübsch formatiert anzeigen zukönnen, gibt's die CPP-Tags. ;)
 |  |  
		| Nach oben |  |  
		|  |  
		| DirectXer Dark JLI'ler
 
  
 
 Anmeldedatum: 05.02.2005
 Beiträge: 1201
 Wohnort: Köln
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 30.05.2006, 16:45    Titel: |   |  
				| 
 |  
				| schon mal mit debuggen versucht? damit du weißt, wo genau dein Programm abstürzt? 
 btw:
 kleines Beispiel: 	  | GreveN hat Folgendes geschrieben: |  	  | Um den Code so hübsch formatiert anzeigen zukönnen, gibt's die CPP-Tags.
  | 
  	  | Code: |  	  | [cpp] hier dein C++-Code [/cpp] | 
 um Sachen farbig hervorheben zu können:
 
  	  | Code: |  	  | [cpp] >>>hier dein hervorgehobener C++-Code<<< [/cpp] | 
 sieht dann so aus:
 
  	  | CPP: |  	  | normal hervorgehoben
 
 | 
 
 Gruß DXer
 |  |  
		| Nach oben |  |  
		|  |  
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 30.05.2006, 20:08    Titel: |   |  
				| 
 |  
				| jup also Kkonfiguration Debug wählen, und dann compileieren. Evtl. Windowed-Mode einscahtlen (also nicht Fullscreen) dann müsste bei einem Programmabsturz ein Fenster aufgehen in dem du auf Debug klicken kannst, dann bekommst du genau die Programmzeile angezeigt in der es den Crash gab, außerdem kannst du die Inhalte aller Variablen nachschauen, usw. Wahrscheinlich liegt es einfach daran, das er die Datei nicht finden kann. Für später lohnt es sich dann eine Sprite klasse zu programmieren, die die Datei überprüft, und wenn sie nicht geladen werden kann, einen Fehler ausgibt, bzw. in ein Logbuch schreibt.
 Bei mir ist es so, das das Prog zwar mie s läuft, oder evlt. abstürtzt ich dann aber genau sehen kann, welche DAtei ich veruscht habe zu laden und so den Fehler sehr schnell beheben kann, so dass wieder alles glatt läuft.
 _________________
 https://jonathank.de/games/
 |  |  
		| Nach oben |  |  
		|  |  
		| Fossil Mini JLI'ler
 
 
 Alter: 90
 Anmeldedatum: 07.03.2006
 Beiträge: 11
 Wohnort: Tübingen
 Medaillen: Keine
 
 
 |  |  
		| Nach oben |  |  
		|  |  
		| valentin_ Mini JLI'ler
 
  
 Alter: 35
 Anmeldedatum: 16.07.2006
 Beiträge: 28
 Wohnort: Graz
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 20.07.2006, 10:36    Titel: |   |  
				| 
 |  
				| Habe so ziemlich das selbe Problem wie Fossil es beschrieben hat. Linken und ausführen funktioniert ohne Probleme nur an genau der Stelle wo das Sprite gezeichnet werden sollte, kommt diese Fehlermeldung. zu dem wenn ich da auf debuggen klick, kommt die selbe fehlermeldung wieder, nur ohne "debuggen"-button. 
 
 Bin dabei den JLI_ASTEROIDS Code zu erweitern(mit Items und so):
 
 
 
  	  | CPP: |  	  | void CreateItem(int nextItem) {
 CSprite* Item = new CSprite;
 
 float x=rand()%940+15;
 float y=rand()%700+15;
 
 switch(nextItem)
 {
 case 0:
 sprintf(IDItem,"ITEM_CROSS_");
 break;
 case 1:
 sprintf(IDItem,"ITEM_BLITZ_");
 break;
 case 2:
 sprintf(IDItem,"ITEM_MAGNET_");
 break;
 case 3:
 sprintf(IDItem,"ITEM_BOMB_");
 break;
 }
 
 Item->Create(Direct3D.GetDevice(),&ResourceManager,1);
 Item->SetPosition(x, y);
 
 Item->AddTexture(ResourceManager.GetTexture(IDItem));
 Item->Draw();
 }
 
 
 | 
 
 
  	  | CPP: |  	  | #define ITEM_CROSS_   "D:\\Grafik\\Item_Cross.png" #define ITEM_BLITZ_      "D:\\Grafik\\Item_Blitz.png"
 #define ITEM_MAGNET_   "D:\\Grafik\\Item_Magnet.png"
 #define ITEM_BOMB_      "D:\\Grafik\\Item_Bomb.png"
 
 | 
 
 Danke schonmal im vorrraus!!
 valentin_
 |  |  
		| Nach oben |  |  
		|  |  
		| David Super JLI'ler
 
 
 Alter: 40
 Anmeldedatum: 13.10.2005
 Beiträge: 315
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 20.07.2006, 11:53    Titel: |   |  
				| 
 |  
				| Hi! 
 Da sind eindeutig einige Anführungszeichen zuviel, oder?
 Dieser ganze #define Kram is sowiso Müll, überleg dir da doch eine bessere Alternative...
 
 grüße
 |  |  
		| Nach oben |  |  
		|  |  
		| Christian Rousselle Site Admin
 
  
 Alter: 49
 Anmeldedatum: 19.07.2002
 Beiträge: 1630
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 20.07.2006, 12:06    Titel: |   |  
				| 
 |  
				| Was David eingentlich sagen wollte  ist: 
 Lass die doppelten Hochkommata (") bei sprintf() weg:
 
 
  	  | CPP: |  	  | sprintf(IDItem, ITEM_CROSS_); 
 | 
 
 Eine Alternative zu der Lösung mit #define ist, z.B. std::strings zu verwenden:
 
 
  	  | CPP: |  	  | const std::string ITEM_CROSS =  "D:\\Grafik\\Item_Cross.png"; 
 | 
 
 C.
 |  |  
		| Nach oben |  |  
		|  |  
		| valentin_ Mini JLI'ler
 
  
 Alter: 35
 Anmeldedatum: 16.07.2006
 Beiträge: 28
 Wohnort: Graz
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 20.07.2006, 12:20    Titel: |   |  
				| 
 |  
				| Ja es ist zwar schöner ohne #define, aber daran liegt doch nicht der Fehler. Die doppelten " hab ich weggeben, jetzt kommt keine Fehlermeldung mehr, aber es erscheit auch kein Sprite. wieso??
 
 valentin_
 |  |  
		| Nach oben |  |  
		|  |  
		| GreveN JLI Master
 
  
 Alter: 38
 Anmeldedatum: 08.01.2004
 Beiträge: 901
 Wohnort: Sachsen - Dresden
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 20.07.2006, 12:45    Titel: |   |  
				| 
 |  
				| Wenn du 'std::string' verwendest und unbedingt bei 'sprintf' bleiben willst, musst du die Methode 'c_str' vom Stringobjekt aufrufen, da 'sprintf' ein klassischen C-String erwartet. 
 Grafiken auch im korrekten Verzeichnis/Pfadangaben korrekt etc.?
 |  |  
		| Nach oben |  |  
		|  |  
		| valentin_ Mini JLI'ler
 
  
 Alter: 35
 Anmeldedatum: 16.07.2006
 Beiträge: 28
 Wohnort: Graz
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 20.07.2006, 12:50    Titel: |   |  
				| 
 |  
				| Hab jetzt den fehler fefunden. es wird bei mir Item->Draw() nur ein einziges mal aufgerufen!! 
 Dann sollte es funktioniern!
 
 Trotzdem DANKE!!
 
 valentin_
 |  |  
		| Nach oben |  |  
		|  |  
		|  |  
  
	| 
 
 | Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten.
 Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
 Du kannst deine Beiträge in diesem Forum nicht löschen.
 Du kannst an Umfragen in diesem Forum nicht mitmachen.
 
 |  
 Powered by phpBB © 2001, 2005 phpBB Group
 Deutsche Übersetzung von phpBB.de
 |