author  Philipp Wiesemann <philipp.wiesemann@arcor.de> 
Sun, 14 Jul 2013 13:30:26 +0200  
changeset 7443  58c5fcba814d 
parent 7011  82bbfbbc720e 
child 7517  965d57022c01 
permissions  rwrr 
5535
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

1 
/* 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

2 
Copyright (C) 19972011 Sam Lantinga <slouken@libsdl.org> 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

3 

96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

4 
This software is provided 'asis', without any express or implied 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

5 
warranty. In no event will the authors be held liable for any damages 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

6 
arising from the use of this software. 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

7 

96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

8 
Permission is granted to anyone to use this software for any purpose, 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

9 
including commercial applications, and to alter it and redistribute it 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

10 
freely. 
96594ac5fd1a
SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents:
5517
diff
changeset

11 
*/ 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

12 
/* Simple program: Move N sprites around on the screen as fast as possible */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

13 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

14 
#include <stdlib.h> 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

15 
#include <stdio.h> 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

16 
#include <time.h> 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

17 

4969
d2247eb39fab
Need to include SDL_main.h ... eh, just include everything. :)
Sam Lantinga <slouken@libsdl.org>
parents:
3685
diff
changeset

18 
#include "SDL.h" 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

19 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

20 
#define WINDOW_WIDTH 640 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

21 
#define WINDOW_HEIGHT 480 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

22 
#define NUM_SPRITES 100 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

23 
#define MAX_SPEED 1 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

24 

3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3596
diff
changeset

25 
static SDL_Texture *sprite; 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

26 
static SDL_Rect positions[NUM_SPRITES]; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

27 
static SDL_Rect velocities[NUM_SPRITES]; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

28 
static int sprite_w, sprite_h; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

29 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

30 
/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

31 
static void 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

32 
quit(int rc) 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

33 
{ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

34 
exit(rc); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

35 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

36 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

37 
int 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

38 
LoadSprite(char *file, SDL_Renderer *renderer) 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

39 
{ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

40 
SDL_Surface *temp; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

41 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

42 
/* Load the sprite image */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

43 
temp = SDL_LoadBMP(file); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

44 
if (temp == NULL) { 
6259
4aef5b792087
Have testspriteminimal use the new simple API
Sam Lantinga <slouken@libsdl.org>
parents:
5535
diff
changeset

45 
fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError()); 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

46 
return (1); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

47 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

48 
sprite_w = temp>w; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

49 
sprite_h = temp>h; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

50 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

51 
/* Set transparent pixel as the pixel at (0,0) */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

52 
if (temp>format>palette) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

53 
SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp>pixels); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

54 
} else { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

55 
switch (temp>format>BitsPerPixel) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

56 
case 15: 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

57 
SDL_SetColorKey(temp, SDL_TRUE, 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

58 
(*(Uint16 *) temp>pixels) & 0x00007FFF); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

59 
break; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

60 
case 16: 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

61 
SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp>pixels); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

62 
break; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

63 
case 24: 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

64 
SDL_SetColorKey(temp, SDL_TRUE, 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

65 
(*(Uint32 *) temp>pixels) & 0x00FFFFFF); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

66 
break; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

67 
case 32: 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

68 
SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp>pixels); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

69 
break; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

70 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

71 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

72 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

73 
/* Create textures from the image */ 
5158
b3ccd1947786
Simplified and improved the process of creating a texture from a surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5147
diff
changeset

74 
sprite = SDL_CreateTextureFromSurface(renderer, temp); 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

75 
if (!sprite) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

76 
fprintf(stderr, "Couldn't create texture: %s\n", SDL_GetError()); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

77 
SDL_FreeSurface(temp); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

78 
return (1); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

79 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

80 
SDL_FreeSurface(temp); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

81 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

82 
/* We're ready to roll. :) */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

83 
return (0); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

84 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

85 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

86 
void 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

87 
MoveSprites(SDL_Window * window, SDL_Renderer * renderer, SDL_Texture * sprite) 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

88 
{ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

89 
int i; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

90 
int window_w = WINDOW_WIDTH; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

91 
int window_h = WINDOW_HEIGHT; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

92 
SDL_Rect *position, *velocity; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

93 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

94 
/* Draw a gray background */ 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

95 
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); 
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

96 
SDL_RenderClear(renderer); 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

97 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

98 
/* Move the sprite, bounce at the wall, and draw */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

99 
for (i = 0; i < NUM_SPRITES; ++i) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

100 
position = &positions[i]; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

101 
velocity = &velocities[i]; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

102 
position>x += velocity>x; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

103 
if ((position>x < 0)  (position>x >= (window_w  sprite_w))) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

104 
velocity>x = velocity>x; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

105 
position>x += velocity>x; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

106 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

107 
position>y += velocity>y; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

108 
if ((position>y < 0)  (position>y >= (window_h  sprite_h))) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

109 
velocity>y = velocity>y; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

110 
position>y += velocity>y; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

111 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

112 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

113 
/* Blit the sprite onto the screen */ 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

114 
SDL_RenderCopy(renderer, sprite, NULL, position); 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

115 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

116 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

117 
/* Update the screen! */ 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

118 
SDL_RenderPresent(renderer); 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

119 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

120 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

121 
int 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

122 
main(int argc, char *argv[]) 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

123 
{ 
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3596
diff
changeset

124 
SDL_Window *window; 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

125 
SDL_Renderer *renderer; 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

126 
int i, done; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

127 
SDL_Event event; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

128 

6259
4aef5b792087
Have testspriteminimal use the new simple API
Sam Lantinga <slouken@libsdl.org>
parents:
5535
diff
changeset

129 
if (SDL_CreateWindowAndRenderer(WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer) < 0) { 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

130 
quit(2); 
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

131 
} 
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

132 

ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

133 
if (LoadSprite("icon.bmp", renderer) < 0) { 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

134 
quit(2); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

135 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

136 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

137 
/* Initialize the sprite positions */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

138 
srand(time(NULL)); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

139 
for (i = 0; i < NUM_SPRITES; ++i) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

140 
positions[i].x = rand() % (WINDOW_WIDTH  sprite_w); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

141 
positions[i].y = rand() % (WINDOW_HEIGHT  sprite_h); 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

142 
positions[i].w = sprite_w; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

143 
positions[i].h = sprite_h; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

144 
velocities[i].x = 0; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

145 
velocities[i].y = 0; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

146 
while (!velocities[i].x && !velocities[i].y) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

147 
velocities[i].x = (rand() % (MAX_SPEED * 2 + 1))  MAX_SPEED; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

148 
velocities[i].y = (rand() % (MAX_SPEED * 2 + 1))  MAX_SPEED; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

149 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

150 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

151 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

152 
/* Main render loop */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

153 
done = 0; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

154 
while (!done) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

155 
/* Check for events */ 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

156 
while (SDL_PollEvent(&event)) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

157 
if (event.type == SDL_QUIT  event.type == SDL_KEYDOWN) { 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

158 
done = 1; 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

159 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

160 
} 
5147
ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multithreaded rendering in the future.
Sam Lantinga <slouken@libsdl.org>
parents:
4969
diff
changeset

161 
MoveSprites(window, renderer, sprite); 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

162 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

163 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

164 
quit(0); 
7443
58c5fcba814d
Fixed compiler warnings in test programs by adding return statements.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
7011
diff
changeset

165 

58c5fcba814d
Fixed compiler warnings in test programs by adding return statements.
Philipp Wiesemann <philipp.wiesemann@arcor.de>
parents:
7011
diff
changeset

166 
return 0; /* to prevent compiler warning */ 
3417
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

167 
} 
64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

168 

64a60c5d502e
Automatically initialize the video system and create a renderer to simplify use.
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset

169 
/* vi: set ts=4 sw=4 expandtab: */ 