Forum: SDL Nybörjare. Hjälp!

Forum huvudsida -> Programmering -> SDL Nybörjare. Hjälp!

Sidor: 1

Till botten

zippo88 19:34 - 3:e April 2009 | Post #1
Medlem
Inlägg: 13


Skicka PM
Hej jag har precis börjat med SDL och har gjort en början på ett litet spel.

Problemetet är att jag följde denna guiden:
http://www.aaroncox.net/tutorials/arcade/Introduction.html

och när jag kom till delen om hur man ska göra så att programmet går i en bestämd hastighet och inte för snabbt på en snabb dator så blev det alldeles för mycket.

Någon som har några tips om hur man skulle kunna få in en sådan grej i denna koden? Förklara gärna utförligtSmiley.

Här är spelet: http://rapidshare.com/files/217032701/SDLSpel.rar.html

Och koden:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <SDL/SDL.h>
  5. #include <windows.h>
  6.  
  7. int main(int argc, char **argv)
  8. {
  9. bool gamerunning = true;
  10. bool keysHeld[323] = {false}; // everything will be initialized to false
  11. int level = 1;
  12.  
  13. SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER );
  14. SDL_Surface* screen = SDL_SetVideoMode(640, 480, 0, SDL_HWSURFACE | SDL_DOUBLEBUF);
  15. SDL_WM_SetCaption("SDLTest", 0);
  16. //Ladda BMP fil och ge den namnet bild
  17. SDL_Surface* bakgrund = SDL_LoadBMP("Bakgrund.bmp");
  18. SDL_Surface* gubbe = SDL_LoadBMP("Gubbe.bmp");
  19.  
  20. // Göm färgen Magneta för bild
  21. SDL_SetColorKey(gubbe, SDL_SRCCOLORKEY, SDL_MapRGB(gubbe->format, 255, 0, 255));
  22.  
  23. //BakgrundBildens koordinater som ska laddas
  24. SDL_Rect bakgrundDel;
  25. bakgrundDel.x = 0;
  26. bakgrundDel.y = 0;
  27. bakgrundDel.w = 640;
  28. bakgrundDel.h = 480;
  29.  
  30. //BakgrundBildens koordinater i SDL rutan
  31. SDL_Rect bakgrundposition;
  32. bakgrundposition.x = 0;
  33. bakgrundposition.y = 0;
  34. bakgrundposition.w = bakgrundDel.w;
  35. bakgrundposition.h = bakgrundDel.h;
  36.  
  37. //GubbBildens koordinater som ska laddas
  38. SDL_Rect gubbeDel;
  39. gubbeDel.x = 0;
  40. gubbeDel.y = 0;
  41. gubbeDel.w = 40;
  42. gubbeDel.h = 40;
  43.  
  44. //GubbBildens koordinater i SDL rutan
  45. SDL_Rect gubbeposition;
  46. gubbeposition.x = screen->w / 2 - (gubbeDel.w / 2);
  47. gubbeposition.y = (screen->h / 2) - (gubbeDel.h / 2);
  48. gubbeposition.w = gubbeDel.w;
  49. gubbeposition.h = gubbeDel.h;
  50.  
  51. SDL_Event event;
  52.  
  53.  
  54. while (gamerunning)
  55. {
  56. if (SDL_PollEvent(&event))
  57. {
  58. if (event.type == SDL_QUIT)
  59. {
  60. gamerunning = false;
  61. }
  62. if (event.type == SDL_KEYDOWN)
  63. {
  64. keysHeld[event.key.keysym.sym] = true;
  65. }
  66. if (event.type == SDL_KEYUP)
  67. {
  68. keysHeld[event.key.keysym.sym] = false;
  69. }
  70. }
  71.  
  72. if (keysHeld[SDLK_ESCAPE])
  73. {
  74. gamerunning = false;
  75. }
  76.  
  77. if ( keysHeld[SDLK_LEFT] )
  78. {
  79. gubbeposition.x -= 1;
  80. gubbeDel.x = 40;
  81. }
  82. if ( keysHeld[SDLK_RIGHT] )
  83. {
  84. gubbeposition.x += 1;
  85. gubbeDel.x = 40;
  86. }
  87. if ( keysHeld[SDLK_UP] )
  88. {
  89. gubbeposition.y -= 1;
  90. gubbeDel.x = 0;
  91. }
  92. if (keysHeld[SDLK_DOWN])
  93. {
  94. gubbeposition.y += 1;
  95. gubbeDel.x = 0;
  96. }
  97.  
  98. if (level==1)
  99. {
  100. if (gubbeposition.x == screen->w)
  101. {
  102. gubbeposition.x = 1;
  103. bakgrundDel.x = 640;
  104. level += 1;
  105. }
  106. }
  107. if (level==2)
  108. {
  109. if (gubbeposition.x == screen->w)
  110. {
  111. gubbeposition.x = 0;
  112. bakgrundDel.x = 1280;
  113. level += 1;
  114. }
  115. else if (gubbeposition.x == 0)
  116. {
  117. gubbeposition.x = screen->w;
  118. bakgrundDel.x = 0;
  119. level -= 1;
  120. }
  121. }
  122.  
  123.  
  124. //Gör skärmen svart efter varje loop
  125. SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
  126.  
  127. //Hämta en del av en .BMP fil. FIL / Del av bild / Yta / bild position
  128. SDL_BlitSurface(bakgrund, &bakgrundDel, screen, &bakgrundposition);
  129. SDL_BlitSurface(gubbe, &gubbeDel, screen, &gubbeposition);
  130. SDL_Flip(screen);
  131. SDL_Delay(1);
  132. }
  133. SDL_FreeSurface(gubbe);
  134. SDL_FreeSurface(bakgrund);
  135. SDL_Quit();
  136. return 0;
  137. }





Sidor: 1

Forum huvudsida -> Programmering -> SDL Nybörjare. Hjälp!
Atom feed

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