Forum: SDL..

Forum huvudsida -> Programmering -> SDL..

Sidor: 1

Till botten

supermario89 16:07 - 22:a Juni 2006 | Post #1
Medlem
Inlägg: 12


Skicka PM
Jag håller på och leker lite med SDL..
Jag får inget felmedellande och programet funkar och inget hänger sig eller nåt men bilden ritas inte ut...

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <SDL/SDL.h>
  5. #include <windows.h>
  6. #include <iostream>
  7. using namespace std;
  8. SDL_Event poolevent;
  9. SDL_Event event;
  10. Uint8* keys;
  11. SDL_Surface * screen = NULL;
  12. SDL_Surface * image1=SDL_LoadBMP("sprite.bmp");
  13. struct picture
  14. {
  15. int x;
  16. int y;
  17. };
  18. void DrawALL();
  19. int defineimage();
  20. int main( int argc, char *arcv[]);
  21. int mainloop(); // huvudloopen
  22. void DrawIMG(SDL_Surface *img, int x, int y); //rita en bild
  23. void DrawIMG(SDL_Surface *img, int x, int y)
  24. {
  25. SDL_Rect dest;
  26. dest.x = x;
  27. dest.y = y;
  28. SDL_BlitSurface(img, NULL, screen, &dest);
  29. SDL_Flip(screen);
  30. }
  31. picture image[10];
  32. int main( int argc, char *arcv[]) /
  33. {
  34. if( SDL_Init(SDL_INIT_AUDIO | SDL_INIT_VIDEO) < 0 )
  35. {
  36. std::cout<<"ERROR INITILASING SDL!" <<std::endl<<"Reason: "<<SDL_GetError();
  37. exit(1);
  38. atexit(SDL_Quit);
  39. screen=SDL_SetVideoMode(800,600,32,SDL_SWSURFACE|SDL_HWPALETTE); //sätter skärmen till 800*600
  40. SDL_WM_SetCaption( "basic", "basic" );
  41. if(screen == NULL)
  42. {
  43. std::cout<<"ERROR SETTING 800x600x32 VIDEO!"<<std::endl<<"Reason: "<<SDL_GetError();
  44. exit(1);
  45. }
  46. defineimage();
  47. mainloop();
  48. } //slut på main
  49. int mainloop()
  50. {
  51. while(1)
  52. {
  53. DrawALL();
  54. while( SDL_PollEvent(&event) )
  55. {
  56. if(event.type == SDL_QUIT) { return 0; }
  57. if(event.type == SDL_KEYDOWN)
  58. {
  59. if(event.key.keysym.sym==SDLK_ESCAPE) { return 0; }
  60. }
  61. }
  62. }
  63. }
  64. int defineimage()
  65. {
  66. for (int i = 0; i < 10; i++)
  67. {
  68. image[i].x = i*5;
  69. image[i].y = i+5;
  70. }
  71. }
  72. void DrawALL()
  73. {
  74. for (int i = 0; i < 10; i++)
  75. {
  76. DrawIMG(image1, image[i].x, image[i].y);
  77. }
  78. SDL_Flip(screen);
  79. }


-------------------------
Ingen signatur!

Senast redigerad 16:08 - 22:a Juni 2006


Nissebosselasse 16:43 - 22:a Juni 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Ta bort SDL_Flip från sista raden i funktionen DrawIMG. Du "flippar" ju innehållet både i den och i DrawALL.

-------------------------
http://pushingcows.se
Gula Nallen



supermario89 17:45 - 22:a Juni 2006 | Post #3
Medlem
Inlägg: 12


Skicka PM
    Citat av Nissebosselasse:
Ta bort SDL_Flip från sista raden i funktionen DrawIMG. Du "flippar" ju innehållet både i den och i DrawALL.

Oj det hade jag missat.
Det är dock inte felet..

-------------------------
Ingen signatur!



Nissebosselasse 18:13 - 22:a Juni 2006 | Post #4
Medlem
Inlägg: 490


Skicka PM
Blir filen verkligen inladdad? Lägg in en koll så att SDL_LoadBMP inte returnerar NULL.
Du har kanske inte döpt filen till sprite.bmp, utan sprite1.bmp?

-------------------------
http://pushingcows.se
Gula Nallen



supermario89 18:37 - 22:a Juni 2006 | Post #5
Medlem
Inlägg: 12


Skicka PM
    Citat av Nissebosselasse:
Blir filen verkligen inladdad? Lägg in en koll så att SDL_LoadBMP inte returnerar NULL.
Du har kanske inte döpt filen till sprite.bmp, utan sprite1.bmp?

Bilden är döpt rätt, jag kollade dock om den returnerade NULL och det gjorde den Smiley Trots att allt är rätt döpt Smiley
Vad kan det då vara för fel?

Edit: Tog bort bilden och gjorde en likadan med samma namn,då funkade det Smiley
Tack för hjälpen Smiley

-------------------------
Ingen signatur!

Senast redigerad 18:41 - 22:a Juni 2006


Sidor: 1

Forum huvudsida -> Programmering -> SDL..
Atom feed

Du får inte posta i den här tråden | Till toppen