#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <SDL/SDL.h>
#include "atetris.h"
SDL_Surface *display_surface;
int map[HEIGHT][WIDTH];
Figure current_figure;
int figure_x, figure_y;
int main(int argc, char *argv[])
{
SDL_Event event;
init();
current_figure = figures[nrand(0, 14)];
place_figure_on_top();
while (1) {
if (SDL_PollEvent(&event) == 1) {
if (event.type == SDL_QUIT) {
break;
}
}
draw_map();
}
terminate();
debug();
return 0;
}
void init(void)
{
int i, j;
if (SDL_Init(SDL_INIT_VIDEO) == -1) {
fprintf(stderr, "Couldn't initialize SDL.\n");
}
display_surface = SDL_SetVideoMode(WIDTH * BLOCK_SIZE, HEIGHT * BLOCK_SIZE,
0, SDL_ANYFORMAT);
if (display_surface == NULL) {
fprintf(stderr, "Could't set the video mode.\n");
}
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
map[j] = NOTHING;
}
}
srand((unsigned int) time((time_t *) NULL));
}
void terminate(void)
{
SDL_Quit();
}
void draw_map(void)
{
int i, j;
SDL_Surface *block;
SDL_Rect src_rect, dest_rect;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
if (map[j] != NOTHING) {
block = SDL_LoadBMP(block_images[map[j]]);
src_rect.x = src_rect.y = 0;
src_rect.w = src_rect.h = BLOCK_SIZE;
dest_rect.x = j * BLOCK_SIZE;
dest_rect.y = i * BLOCK_SIZE;
dest_rect.w = dest_rect.h = BLOCK_SIZE;
SDL_BlitSurface(block, &src_rect, display_surface, &dest_rect);
}
}
}
SDL_UpdateRect(display_surface, 0, 0, 0, 0);
}
void place_figure_on_top(void)
{
int i, j;
do {
figure_x = nrand(0, WIDTH);
}
while (figure_x + current_figure.width > WIDTH - 1);
figure_y = 0;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (current_figure.pattern[j] != NOTHING) {
map[j + figure_x] = current_figure.pattern[j];
}
}
}
}
int nrand(int lower, int upper)
{
int diff = upper - lower + 1;
int a = rand() % diff + lower;
return a;
}
void debug(void)
{
int i, j;
for (i = 0; i < HEIGHT; i++) {
for (j = 0; j < WIDTH; j++) {
printf("%d", map[j]);
}
putchar('\n');
}
}
Problem with tetris clone
I'm trying ot make a tetris clone with SDL. I have only made very litle yet, but the first bug is a fact; sometimes draw_map() doesn't seem to write out the figure. It's about every fifth time this happening.
The code look like this:
OK... this is totally just a shot in the dark... I don't understand exactly what isn't drawing to the screen.
But you mention every 5th.
This cycles through and execute 4 times. 0, 1, 2, 3. Maybe try i <= 4 and j <= 4?
But you mention every 5th.
for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { if (current_figure.pattern[j] != NOTHING) { map[j + figure_x] = current_figure.pattern[j]; } }}
This cycles through and execute 4 times. 0, 1, 2, 3. Maybe try i <= 4 and j <= 4?
Do you realise that you are loading every image from disk multiple times every frame? Thats such a waste, try changing it so that images are loaded once. Or at least remember to SDL_FreeSurface() all those images ( that is one hell of a memory leak [smile] ).
After that I might try look harder at your drawing code. [grin]
After that I might try look harder at your drawing code. [grin]
OK, now I load every image at the beginning of the game and just blit the image I want. But still the same problem.
Quote:Original post by Adam4444
OK, now I load every image at the beginning of the game and just blit the image I want. But still the same problem.
Try post your updated code, I will try running it. It *looks* right...
Also, by "fifth time", I assume you mean "every fifth frame" or something. But perhaps you mean every fifth map tile. Can you reword your problem, or perhaps post a screenshot of expected vs actual output?
The code looks like this right now:
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <time.h>#include <SDL/SDL.h>#include "atetris.h"SDL_Surface *display_surface;SDL_Surface *blocks[8];SDL_TimerID timer;int map[HEIGHT][WIDTH];Figure current_figure;int figure_x, figure_y;int main(int argc, char *argv[]){ SDL_Event event; init(); current_figure = figures[nrand(0, 14)]; place_figure_on_top(); while (1) { if (SDL_PollEvent(&event) == 1) { if (event.type == SDL_QUIT) { break; } if (event.type == SDL_USEREVENT && event.user.code == MOVE_FIGURE_DOWN) { if (move_figure_down() == false) { current_figure = figures[nrand(0, 14)]; place_figure_on_top(); } } } draw_map(); } terminate(); debug(); return 0;}void init(void){ int i, j; if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1) { fprintf(stderr, "Couldn't initialize SDL.\n"); exit(1); } display_surface = SDL_SetVideoMode(WIDTH * BLOCK_SIZE, HEIGHT * BLOCK_SIZE, 0, SDL_ANYFORMAT); if (display_surface == NULL) { fprintf(stderr, "Could't set the video mode.\n"); exit(1); } for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) { map[j] = NOTHING; } } for (i = 0; i < 8; i++) { blocks = SDL_LoadBMP(block_images); } timer = SDL_AddTimer(1000, do_move_figure_down, NULL); srand((unsigned int) time((time_t *) NULL));}void terminate(void){ SDL_Quit();}void draw_map(void){ int i, j; SDL_Surface *block; SDL_Rect src_rect, dest_rect; for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) { src_rect.x = src_rect.y = 0; src_rect.w = src_rect.h = BLOCK_SIZE; dest_rect.x = j * BLOCK_SIZE; dest_rect.y = i * BLOCK_SIZE; dest_rect.w = dest_rect.h = BLOCK_SIZE; SDL_BlitSurface(blocks[map[j]], &src_rect, display_surface, &dest_rect); } } SDL_UpdateRect(display_surface, 0, 0, 0, 0);}void place_figure_on_top(void){ int i, j; do { figure_x = nrand(0, WIDTH); } while (figure_x + current_figure.width > WIDTH - 1); figure_y = 0; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { if (current_figure.pattern[j] != NOTHING) { map[j + figure_x] = current_figure.pattern[j]; } } }}bool move_figure_down(void){ int coordinats[4][2]; int coordinats_index = 0; int i, j; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { if (map[j + figure_x] > <span class="cpp-number">0</span>) {<br> coordinats[coordinats_index][<span class="cpp-number">0</span>] = i + figure_y;<br> coordinats[coordinats_index][<span class="cpp-number">1</span>] = j + figure_x;<br> coordinats_index++;<br> }<br> }<br> }<br> <span class="cpp-keyword">for</span> (i = <span class="cpp-number">0</span>; i < <span class="cpp-number">4</span>; i++) {<br> <span class="cpp-keyword">for</span> (j = <span class="cpp-number">0</span>; j < <span class="cpp-number">4</span>; j++) {<br> map[j + figure_x] = <span class="cpp-number">0</span>;<br> }<br> }<br> <span class="cpp-keyword">for</span> (i = <span class="cpp-number">0</span>; i < <span class="cpp-number">4</span>; i++) {<br> <span class="cpp-keyword">if</span> (map[coordinats<span style="font-weight:bold;">[<span class="cpp-number">0</span>] + <span class="cpp-number">1</span>][coordinats<span style="font-weight:bold;">[<span class="cpp-number">1</span>]] == NOTHING) {<br> map[coordinats<span style="font-weight:bold;">[<span class="cpp-number">0</span>] + <span class="cpp-number">1</span>][coordinats<span style="font-weight:bold;">[<span class="cpp-number">1</span>]] = current_figure.color;<br> }<br> <span class="cpp-keyword">else</span> {<br> map[coordinats<span style="font-weight:bold;">[<span class="cpp-number">0</span>]][coordinats<span style="font-weight:bold;">[<span class="cpp-number">1</span>]] = current_figure.color;<br> }<br> }<br> figure_y++;<br> <br> <span class="cpp-keyword">return</span> <span class="cpp-keyword">true</span>;<br>}<br><br>Uint32 do_move_figure_down(Uint32 interval, <span class="cpp-keyword">void</span> *param)<br>{<br> SDL_Event event;<br> <br> event.type = SDL_USEREVENT;<br> event.user.code = MOVE_FIGURE_DOWN;<br> event.user.data1 = <span class="cpp-number">0</span>;<br> event.user.data2 = <span class="cpp-number">0</span>;<br> SDL_PushEvent(&event);<br> <br> <span class="cpp-keyword">return</span> interval;<br>}<br><br><span class="cpp-keyword">int</span> nrand(<span class="cpp-keyword">int</span> lower, <span class="cpp-keyword">int</span> upper)<br>{<br> <span class="cpp-keyword">int</span> diff = upper - lower + <span class="cpp-number">1</span>;<br> <span class="cpp-keyword">int</span> a = rand() % diff + lower;<br> <br> <span class="cpp-keyword">return</span> a;<br>}<br><br><span class="cpp-keyword">void</span> debug(<span class="cpp-keyword">void</span>)<br>{<br> <span class="cpp-keyword">int</span> i, j;<br> <br> <span class="cpp-keyword">for</span> (i = <span class="cpp-number">0</span>; i < HEIGHT; i++) {<br> <span class="cpp-keyword">for</span> (j = <span class="cpp-number">0</span>; j < WIDTH; j++) {<br> printf(<span class="cpp-literal">"%d"</span>, map<span style="font-weight:bold;">[j]);<br> }<br> putchar('\n');<br> }<br>}<br><br><br></pre></div><!–ENDSCRIPT–><br><br>And the header; atetris.h: <!–STARTSCRIPT–><!–source lang="cpp"–><div class="source"><pre><span class="cpp-directive">#ifndef</span> GAME_H<br><span class="cpp-directive">#define</span> GAME_H<br><br><span class="cpp-directive">#define</span> WIDTH <span class="cpp-number">10</span><br><span class="cpp-directive">#define</span> HEIGHT <span class="cpp-number">20</span><br><span class="cpp-directive">#define</span> BLOCK_SIZE <span class="cpp-number">20</span><br><span class="cpp-directive">#define</span> COLOR_BLUE <span class="cpp-number">1</span><br><span class="cpp-directive">#define</span> COLOR_BROWN <span class="cpp-number">2</span><br><span class="cpp-directive">#define</span> COLOR_CYAN <span class="cpp-number">3</span><br><span class="cpp-directive">#define</span> COLOR_GREEN <span class="cpp-number">4</span><br><span class="cpp-directive">#define</span> COLOR_MAGENTA <span class="cpp-number">5</span><br><span class="cpp-directive">#define</span> COLOR_RED <span class="cpp-number">6</span><br><span class="cpp-directive">#define</span> COLOR_WHITE <span class="cpp-number">7</span><br><span class="cpp-directive">#define</span> MOVE_FIGURE_DOWN <span class="cpp-number">8</span><br><br><span class="cpp-keyword">typedef</span> <span class="cpp-keyword">struct</span> Figure_ {<br> <span class="cpp-keyword">int</span> width;<br> <span class="cpp-keyword">int</span> color;<br> <span class="cpp-keyword">int</span> pattern[<span class="cpp-number">4</span>][<span class="cpp-number">4</span>];<br>} Figure;<br><br><span class="cpp-keyword">void</span> init(<span class="cpp-keyword">void</span>);<br><span class="cpp-keyword">void</span> terminate(<span class="cpp-keyword">void</span>);<br><span class="cpp-keyword">void</span> place_figure_on_top(<span class="cpp-keyword">void</span>);<br><span class="cpp-keyword">bool</span> move_figure_down(<span class="cpp-keyword">void</span>);<br><span class="cpp-keyword">void</span> draw_map(<span class="cpp-keyword">void</span>);<br>Uint32 do_move_figure_down(Uint32 interval, <span class="cpp-keyword">void</span> *param);<br><span class="cpp-keyword">int</span> nrand(<span class="cpp-keyword">int</span> lower, <span class="cpp-keyword">int</span> upper);<br><span class="cpp-keyword">void</span> debug(<span class="cpp-keyword">void</span>);<br><br><span class="cpp-keyword">const</span> Figure figures[<span class="cpp-number">15</span>] = {<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_BLUE,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}, <br> {<span class="cpp-number">0</span>, <span class="cpp-number">1</span>, <span class="cpp-number">1</span>, <span class="cpp-number">0</span>}, <br> {<span class="cpp-number">0</span>, <span class="cpp-number">1</span>, <span class="cpp-number">1</span>, <span class="cpp-number">0</span>}, <br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">4</span>,<br> COLOR_BROWN,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">2</span>, <span class="cpp-number">2</span>, <span class="cpp-number">2</span>, <span class="cpp-number">2</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">1</span>,<br> COLOR_BROWN,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">2</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">2</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">2</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">2</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">3</span>,<br> COLOR_CYAN,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">3</span>, <span class="cpp-number">3</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">3</span>, <span class="cpp-number">3</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_CYAN,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">3</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">3</span>, <span class="cpp-number">3</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">3</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">3</span>,<br> COLOR_GREEN,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">4</span>, <span class="cpp-number">4</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">4</span>, <span class="cpp-number">4</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_GREEN,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">4</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">4</span>, <span class="cpp-number">4</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">4</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_MAGENTA,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">5</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">5</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">5</span>, <span class="cpp-number">5</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">3</span>,<br> COLOR_MAGENTA,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">5</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">5</span>, <span class="cpp-number">5</span>, <span class="cpp-number">5</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_RED,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">6</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">6</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">6</span>, <span class="cpp-number">6</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">3</span>,<br> COLOR_RED,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">6</span>, <span class="cpp-number">6</span>, <span class="cpp-number">6</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">6</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">3</span>,<br> COLOR_WHITE,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">7</span>, <span class="cpp-number">7</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_WHITE,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">3</span>,<br> COLOR_WHITE,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">7</span>, <span class="cpp-number">7</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> },<br> {<br> <span class="cpp-number">2</span>,<br> COLOR_WHITE,<br> {{<span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">7</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>},<br> {<span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>, <span class="cpp-number">0</span>}}<br> }<br>};<br><span class="cpp-keyword">const</span> <span class="cpp-keyword">char</span> *block_images[<span class="cpp-number">8</span>] = {<span class="cpp-literal">"media/block_empty.bmp"</span>, <br> <span class="cpp-literal">"media/block_brown.bmp"</span>,<br> <span class="cpp-literal">"media/block_cyan.bmp"</span>,<br> <span class="cpp-literal">"media/block_green.bmp"</span>,<br> <span class="cpp-literal">"media/block_magenta.bmp"</span>,<br> <span class="cpp-literal">"media/block_red.bmp"</span>,<br> <span class="cpp-literal">"media/block_white.bmp"</span>};<br><br><span class="cpp-directive">#endif</span><br><br><br></pre></div><!–ENDSCRIPT–><br><br>Well, I'm so bad at explaining things, at least in english. But I meant about every fifth time I start the game draw_map() doesn't seems to draw anything.
It seems to work for me (except when the piece falls off the edge of the screen your program crashed, but I can see that you have yet to implement that code).
Seeing as I don't have your image bitmaps, I made SDL_Surfaces in memory and filled them with a colour. So maybe the issue is with your images, I see no error checking where you load them ( check for NULL return values ).
If you wish to try the code I used and see if it still has the same problem on your machine, replace init() with this:
Seeing as I don't have your image bitmaps, I made SDL_Surfaces in memory and filled them with a colour. So maybe the issue is with your images, I see no error checking where you load them ( check for NULL return values ).
If you wish to try the code I used and see if it still has the same problem on your machine, replace init() with this:
void init(void){ int i, j; SDL_PixelFormat *format; /* some random colours */ Uint32 colours[8] = {0x0,0xff,0xff00,0xff0000,0xffff,0xff00ff,0xffff00,0xffffff}; if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1) { fprintf(stderr, "Couldn't initialize SDL.\n"); exit(1); } display_surface = SDL_SetVideoMode(WIDTH * BLOCK_SIZE, HEIGHT * BLOCK_SIZE, 0, SDL_ANYFORMAT); if (display_surface == NULL) { fprintf(stderr, "Could't set the video mode.\n"); exit(1); } for (i = 0; i < HEIGHT; i++) { for (j = 0; j < WIDTH; j++) { map[j] = NOTHING; } } format = display_surface->format; for (i = 0; i < 8; i++) { blocks = SDL_CreateRGBSurface(0, BLOCK_SIZE, BLOCK_SIZE, 32,format->Rmask, format->Gmask, format->Bmask, format->Amask); if( blocks == NULL ) { fprintf(stderr,"CreateRGBSurface() error: %s",SDL_GetError()); fflush(stderr); exit(1); } SDL_FillRect(blocks,NULL,colours); } timer = SDL_AddTimer(1000, do_move_figure_down, NULL); srand((unsigned int) time((time_t *) NULL));}
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement