Forum huvudsida -> Programmering -> Lazy Foo's SDL tutorial problem
Sidor: 1
Mannez | 04:01 - 6:e September 2008 | Post #1 | |
Medlem Inlägg: 4 Skicka PM |
Hej igen, har googlat och sökt på forumet men hittar inget som kan hjälpa mig =/ ,,r osäker på ifall det är för tidigt för mig att ge mig in på SDL nu men jag gjorde ett försök endå Vill först fråga hur det igentligen går till med SDL, skriver man koderna som vanligt i c++ och sedan öppnar exe filen för att se resultat? anledningen till att jag frågar detta är på grund av tutorialen av Lazy foo där han snackar om att man inte ser bilderna än och grejjer, är det någon speciell ruta som ska tas upp? Vidare till problemet jag har följt steg ett i tutorialen - http://lazyfoo.net/SDL_tutorials/lesson01/windows/devcpp/index.php -ppnade nytt projekt - empty - ändrade det man ska ändra i projekt alternativen och skrev in koden man skulle skriva in, sparade det sedan i en mapp där SDL.dll filen finns samt bilderna som följde med tutorialen på steg 2 -http://lazyfoo.net/SDL_tutorials/lesson02/index.php Kompileringen gick bra men problemen kommer i steg 2 av tutorialen. Skrev in denna kod i ett nytt tomt dokument: #include "SDL/SDL.h" const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; const int SCREEN_BPP = 32; SDL_Surface *message = NULL; SDL_Surface *background = NULL; SDL_Surface *screen = NULL; SDL_Surface *load_image [std::string filename ] { SDL_surface* loadedImage = NULL; SDL_surface* optimizedImage = NULL; loadedImage = SDL_LoadBMP(filename.c_str() ); if( loadedImage != NULL) { optimizedImage = SDL_DisplayFormat( loadImage ); SDL_FreeSurface( loadedImage ); } return optimizedImage; } void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ) { SDL_Rect offset; offset.x = x; offset.y = y; SDL_BlitSurface( source, NULL, destination, &offset ); } int main( int argc, char* args[] ) { if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) { return 1; } screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE ); if( screen == NULL) { return 1; } SDL_WM_SetCaption("Shuuu", NULL ); message = load_image(helo_world.bmp"); background = load_image("background.bmp"); apply_surface( 0, 0, background, screen ); apply_surface( 180, 140 message, screen ); if( SDL_Flip( screen ) == -1 ) { return 1; } SDL_Delday( 2000 ); SDL_FreeSurface( message ); SDL_FreeSurface( background ); SDL_Quit(); return 0; } Och det funkade inte, kom upp en massa errors, här är error listan: 12 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c `string' is not a member of `std' 12 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c expected `]' before "filename" 12 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c expected init-declarator before "filename" 12 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c expected `,' or `;' before "filename" C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c In function `int SDL_main(int, char**)': 56 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c `helo_world' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) 56 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c missing terminating " character 61 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c expected `)' before "message" 31 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c too few arguments to function `void apply_surface(int, int, SDL_Surface*, SDL_Surface*)' 61 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c at this point in file 68 C:\Dev-Cpp\Projekt\SDL_tutorial\1\main.c `SDL_Delday' undeclared (first use this function) C:\Dev-Cpp\Projekt\SDL_tutorial\1\Makefile.win [Build Error] [main.o] Error 1 Vet inte om det är rätt grejjer jag visar här, är helt ny inom programering och har hittils endast läst tutorialen på denna sida, vet även inte hur man får fram rad nummer, så det kanske inte blir så lätt att hitta felen men om någon säger hur man gör så ändrar jag på det direkt =) ,,r oerhört tacksam för svar, vill börja komma igång med detta då det verkar sjukt intressant, bara förvirrande såhär i början MVH / Manne EDIT Skulle även uppskatta lite tipps på hur jag kan komma igång med programmeringen, mitt mål är att en vacker dag börja hobby programmera små 3d spel, även tänkt lära mig 3dsmax senare och kombinera med zbrush som jag redan är kär i Bok tips är bra men ekonomin tillåter inga köp nu men ska försöka låna från biblan när c++ accelerate eller vad den nu heter kommit in igen =) Gärna lite sidor med tips små små nybörjar projekt som man kan pyssla med för att lära sig mer Senast redigerad 04:16 - 6:e September 2008 |
Nissebosselasse | 06:42 - 6:e September 2008 | Post #2 | |
Medlem Inlägg: 490 Skicka PM |
Du har inte skrivit in all kod från sidan. Kompilatorn klagar på string eftersom du inte inkluderat filen string, vilket står klart och tydligt längst upp på hans sida:
Den andra saken är SDL_Surface *load_image [std::string filename ] - det ska inte vara hakparanteser utan vanliga paranteser, det är nämligen en funktion. Det positiva med ditt fel är väl att du antagligen inte har kopierat texten rakt av och bara klistrat in, du såg kanske fel när du läste? Från hans sida:
Börja med de här felen. Ett annat tips är att dubbelkolla så att du skrivit rätt, jag ser att du skrivit SDL_Delday istället för SDL_Delay, kompilatorn kan inte gissa vilken funktion du menar utan du måste ange dess namn exakt så som den stavas. Bruce Eckel ger ut gratisböcker i elektronisk form om olika programmeringsrelaterade saker, bland annat C++ (finns att ladda ner här: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html), rekommenderar starkt dom. Dom tar visserligen upp grunderna i C++ och inget om SDL, men det är minst lika viktigt (om inte mer). Till sist: skaffa en annan kompilator! Bloodshed Dev-C++ utvecklas inte längre (det var länge sedan den gjordes). Sitter du på Windows eller något annat? I så fall finns Visual Studio C++ 2008 Express Edition helt gratis. (Icke relaterat: vad är det för horribel färgkodning av kodrutorna??) ------------------------- http://pushingcows.se Gula Nallen |
Mannez | 19:03 - 6:e September 2008 | Post #3 | |
Medlem Inlägg: 4 Skicka PM |
Citat av Nissebosselasse:Du har inte skrivit in all kod från sidan. Kompilatorn klagar på string eftersom du inte inkluderat filen string, vilket står klart och tydligt längst upp på hans sida: Oj, jag hade skrivit in det innan också, har testat att ändra på massor av grejjer, men det funkade inte heller, har även testat att använda mig av lazy foo's kod vilket gav samma error, kan jag ha gjort något fel med Lib? Jag följde guiden om att lägga in filerna och allt gick bra =/
Oj haha my bad, var väldigt svårt o se vad som var vad på hans tutorial försöker alltid skriva allt själv, annars kommer inte nått att fastna i huvet men det var inte det som orsakade errorsen då jag testat hans egna kod och även testat att ändra nu till [] men får samma fel =/
Oj haha det var klantigt av mig, ska försöka se mig för med stavfel i framtiden
Nice! dem måste jag kolla in! innehåller dem kanske även små nybörjar projekt som man kan testa själv eller är det massa kopiera detta o detta?
jag körde på microsoft visual c++ men efter att läst runt så verkade alla luta sig mot dev c++ och sa att det var bättre på något sätt, så jag ville inte riskera något utan tankade ner den direkt
HAhaha ingen aning, håller med om att det inte ser så modernt ut men har inte försökt ändra något än Tack för svaret Nissebosselasse! |
Linkowiezi | 14:08 - 26:e September 2008 | Post #4 | |
Medlem Inlägg: 5 Skicka PM |
Hej, jag råkade ha lite tid över så jag drog en google på cpp problem och hittade det här och tänkte ge det ett försök och jag copierade din kod och ändrade lite i den sen har jag nu reggat ett konto för att ge dig ett svar. Vet inte om du kollar in här nåt mer det är ju ett tag sen du la upp tråden, men ändå man vet ju aldrig... Här är den ändrade koden iaf: #include "SDL/SDL.h" #include <string> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; const int SCREEN_BPP = 32; SDL_Surface *message = NULL; SDL_Surface *background = NULL; SDL_Surface *screen = NULL; SDL_Surface *load_image ( std::string filename ) { SDL_Surface* loadedImage = NULL; SDL_Surface* optimizedImage = NULL; loadedImage = SDL_LoadBMP(filename.c_str() ); if( loadedImage != NULL) { optimizedImage = SDL_DisplayFormat( loadedImage ); SDL_FreeSurface( loadedImage ); } return optimizedImage; } void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ) { SDL_Rect offset; offset.x = x; offset.y = y; SDL_BlitSurface( source, NULL, destination, &offset ); } int main( int argc, char* args[] ) { if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) { return 1; } screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE ); if( screen == NULL) { return 1; } SDL_WM_SetCaption("Shuuu", NULL ); message = load_image("helo_world.bmp"); background = load_image("background.bmp"); apply_surface( 0, 0, background, screen ); apply_surface( 180, 140, message, screen ); if( SDL_Flip( screen ) == -1 ) { return 1; } SDL_Delay( 2000 ); SDL_FreeSurface( message ); SDL_FreeSurface( background ); SDL_Quit(); return 0; } Det jag gjort är att ändra detta: lägga till #include <string> ändra SDL_Surface *load_image [std::string filename ] till SDL_Surface *load_image (std::string filename ) ändra SDL_surface* loadedImage = NULL; SDL_surface* optimizedImage = NULL; till SDL_Surface* loadedImage = NULL; SDL_Surface* optimizedImage = NULL; ändra optimizedImage = SDL_DisplayFormat( loadImage ); till optimizedImage = SDL_DisplayFormat( loadedImage ); lägga till en " i message = load_image(helo_world.bmp"); så att det blev message = load_image("helo_world.bmp"); lägga till , i apply_surface( 180, 140 message, screen ); så att det blev apply_surface( 180, 140, message, screen ); ändra SDL_Delday( 2000 ); till SDL_Delay( 2000 ); Jag använde dock ej DevCPP utan eclipse med mingw32 kompilator och jag kompilerade utan felmeddelande. Och programmet gick att starta... Hade dock inga bilder i mappen där jag försökte starta programmet ifrån så det stängdes ju så klart av men det borde fungera med dessa små ändringar. Hoppas att detta var till någon hjälp ------------------------- Silence is an option... Listen to it and behold the hidden message. Otherwise the silence might be the last thing you'll ever hear... |
Sidor: 1
Forum huvudsida -> Programmering -> Lazy Foo's SDL tutorial problem
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-22 09:01
Vecka: 51
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.