Better width and height handle + border bounce or pass through

This commit is contained in:
blz
2026-03-08 01:53:13 +01:00
parent 03f7bb3cd5
commit c01289f14b

View File

@@ -1,7 +1,7 @@
#include <stdio.h>
#include <unistd.h>
#include "SDL.h"
#include <math.h>
/*
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
@@ -33,7 +33,8 @@
/// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// ///
#define WIDTH 640
#define HEIGHT 480
Uint32 getpixel(SDL_Surface *surface,int x,int y)
@@ -111,7 +112,8 @@ int main(int argc, char * argv[])
}
#define SDL_VIDEO_FLAGS (SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT)
screen = SDL_SetVideoMode(640, 480, 24, SDL_VIDEO_FLAGS);
//screen = SDL_SetVideoMode(640, 480, 24, SDL_VIDEO_FLAGS);
screen = SDL_SetVideoMode(WIDTH, HEIGHT, 24, SDL_VIDEO_FLAGS);
// screen = SDL_SetVideoMode(270, 16, 24, SDL_VIDEO_FLAGS);
printf("Mode video: %dx%dx%d\n", screen->w, screen->h,
@@ -119,8 +121,10 @@ int main(int argc, char * argv[])
//SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0xff, 0xff, 0xff));
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 254, 254, 254));
i=320;
j=240;
//i=320;
//j=240;
i = floor(WIDTH / 2);
j = floor(HEIGHT / 2);
direction=1;
//for (j = 0; j < screen->h; j++) {
//for (i = 0; i < screen->w; i++) {
@@ -281,28 +285,71 @@ while (0!=1) {
putPixel(screen, i, j, SDL_MapRGB(screen->format, nr, ng, nb));
//putPixel(screen, i, j, SDL_MapRGB(screen->format, 0xfe, 0, 0));
// BORDER BOUNCE //
switch(direction){
case 0:
j=j-1;
if (j<0)
j=479;
//j=479;
j = 0;
break;
case 1:
i=i+1;
if (i>639)
//if (i>639)
if ( i > ( WIDTH - 1 ) )
//i=0;
i = WIDTH -1;
break;
case 2:
j=j+1;
//if (j>479)
if ( j > ( HEIGHT - 1 ) )
//j=0;
j = HEIGHT -1;
break;
case 3:
i=i-1;
if (i<0)
//i=639;
//i = WIDTH - 1;
i = 0;
break;
direction = ( direction + 2 ) % 4;
}
// END - BORDER BOUNCE //
// BORDER PASS THROUGH //
/*
switch(direction){
case 0:
j=j-1;
if (j<0)
//j=479;
j = HEIGHT - 1;
break;
case 1:
i=i+1;
//if (i>639)
if ( i > ( WIDTH - 1 ) )
i=0;
break;
case 2:
j=j+1;
if (j>479)
//if (j>479)
if ( j > ( HEIGHT - 1 ) )
j=0;
break;
case 3:
i=i-1;
if (i<0)
i=639;
//i=639;
i = WIDTH - 1;
break;
}
*/
// END - BORDER PASS THROUGH //
//SDL_UnlockSurface(screen);
SDL_Flip(screen);
}