From 9a3441d02f8d7e5a1f9af4d4644536d73821e622 Mon Sep 17 00:00:00 2001 From: blz Date: Thu, 5 Mar 2026 03:24:43 +1100 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"/"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- glisseur_10.c | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 glisseur_10.c diff --git a/glisseur_10.c b/glisseur_10.c new file mode 100644 index 0000000..082ae62 --- /dev/null +++ b/glisseur_10.c @@ -0,0 +1,314 @@ +#include +#include +#include "SDL.h" + + +/* + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. +*/ + + +/// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// +/// COMPILING (SDL and SDL-dev or -devel librairies needed: /// +/// $ gcc `sdl-config --cflags --libs` glisseur_10.c -o glisseur_10 /// +/// /// +/// RUNING: /// +/// $ ./sdl-glisseur_10 /// +/// /// +/// STOPING: /// +/// $ top ---> get PID of the glider proccess /// +/// $ kill -9 PID /// +/// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// + + + + + +Uint32 getpixel(SDL_Surface *surface,int x,int y) +{ + int bpp = surface->format->BytesPerPixel; + /* Here p is the address to the pixel we want to retrieve */ + Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp; + + switch(bpp) { + case 1: + return *p; + case 2: + return *(Uint16 *)p; + case 3: + if(SDL_BYTEORDER == SDL_BIG_ENDIAN) + return p[0] << 16 | p[1] << 8 | p[2]; + else + return p[0] | p[1] << 8 | p[2] << 16; + case 4: + return *(Uint32 *)p; + default: + return 0; /* shouldn't happen, but avoids warnings */ + } +} + +void putPixel(SDL_Surface * surface, Uint16 x, Uint16 y, Uint32 color) +{ + /* Nombre de bits par pixels de la surface d'ecran */ + Uint8 bpp = surface->format->BytesPerPixel; + /* Pointeur vers le pixel a remplacer (pitch correspond a la taille + d'une ligne d'ecran, c'est a dire (longueur * bitsParPixel) + pour la plupart des cas) */ + Uint8 * p = ((Uint8 *)surface->pixels) + y * surface->pitch + x * bpp; + + switch(bpp) + { + case 1: + *p = (Uint8) color; + break; + case 2: + *(Uint16 *)p = (Uint16) color; + break; + case 3: + if (SDL_BYTEORDER == SDL_BIG_ENDIAN) + { + *(Uint16 *)p = ((color >> 8) & 0xff00) | ((color >> 8) & 0xff); + *(p + 2) = color & 0xff; + } + else + { + *(Uint16 *)p = color & 0xffff; + *(p + 2) = ((color >> 16) & 0xff) ; + } + break; + case 4: + *(Uint32 *)p = color; + break; + } +} + +int main(int argc, char * argv[]) +{ + SDL_Surface * screen; +// SDL_Surface * image, * tmp; + SDL_Rect blitrect = {0, 0, 0, 0}; + int i, j; + int n, direction, couleur, new_couleur; + unsigned char r,g,b; + int nr, ng, nb; + + if (SDL_Init(SDL_INIT_VIDEO) == -1) + { + printf("Erreur lors de l'initialisation de SDL: %s\n", SDL_GetError()); + return 1; + } +#define SDL_VIDEO_FLAGS (SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT) + + screen = SDL_SetVideoMode(640, 480, 24, SDL_VIDEO_FLAGS); +// screen = SDL_SetVideoMode(270, 16, 24, SDL_VIDEO_FLAGS); + + printf("Mode video: %dx%dx%d\n", screen->w, screen->h, + screen->format->BitsPerPixel); + //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; + direction=1; + //for (j = 0; j < screen->h; j++) { + //for (i = 0; i < screen->w; i++) { + +// for (n = 0; n < 2000; n++) { +while (0!=1) { + + //SDL_LockSurface(screen); + //r=0; + //GetPixelColor(screen,i,j,r,g,b); + //r=getpixel(screen,i,j); + SDL_GetRGB(getpixel(screen,i,j),screen->format,&r,&g,&b); + //printf("direction=%i - ",direction); +/* printf("n=%i - ",n); + printf("i=%i - ",i); + printf("j=%i - ",j); + printf("r=%i - ",r); + printf("g=%i - ",g); + printf("b=%i - ",b); +*/ + if ((r==254) && (g==254) && (b==254)) + couleur=0; + else if (r==254 && g==0 && b==0) + couleur=1; + else if (r==0 && g==254 && b==0) + couleur=2; + else if (r==0 && g==0 && b==254) + couleur=3; + + +// printf("couleur=%i - ",couleur); + //printf("direction=%i - ",direction); + + + /// /// /// /// /// /// /// /// /// /// /// /// /// /// + /// for different gliders /// + /// on each 4 following cases /// + /// change new_couleur from 0 to 3 /// + /// change direction from direction+0 to direction+3 /// + // /// /// /// /// /// /// /// /// /// /// /// /// /// + /// /// + /// examples: /// + /// /// + /// --- 1: geometric shape: /// + /// case 0: new_couleur=1 / direction=direction+3 /// + /// case 1: new_couleur=2 / direction=direction+1 /// + /// case 2: new_couleur=3 / direction=direction+1 /// + /// case 3: new_couleur=0 / direction=direction+3 /// + /// /// + /// --- 2: center fractal with up down left right arms /// + /// case 0: new_couleur=1 / direction=direction+3 /// + /// case 1: new_couleur=2 / direction=direction+1 /// + /// case 2: new_couleur=3 / direction=direction+1 /// + /// case 3: new_couleur=0 / direction=direction+3 /// + /// /// + /// --- 2: center fractal then canon /// + /// case 0: new_couleur=1 / direction=direction+2 /// + /// case 1: new_couleur=2 / direction=direction+3 /// + /// case 2: new_couleur=3 / direction=direction+2 /// + /// case 3: new_couleur=0 / direction=direction+1 /// + // /// /// /// /// /// /// /// /// /// /// /// /// /// + + + /// --- 1: geometric shape: /// + switch(couleur){ + case 0: + new_couleur=1; + direction=direction+3; + break; + case 1: + new_couleur=2; + direction=direction+1; + break; + case 2: + new_couleur=3; + direction=direction+1; + break; + case 3: + new_couleur=0; + direction=direction+3; + break; + } + + /// --- 2: center fractal with up down left right arms /// + /* + switch(couleur){ + case 0: + new_couleur=1; + direction=direction+1; + break; + case 1: + new_couleur=2; + direction=direction+1; + break; + case 2: + new_couleur=3; + direction=direction+1; + break; + case 3: + new_couleur=0; + direction=direction+2; + break; + } + */ + + /// --- 3: center fractal then canon /// + /* + switch(couleur){ + case 0: + new_couleur=1; + direction=direction+2; + break; + case 1: + new_couleur=2; + direction=direction+3; + break; + case 2: + new_couleur=3; + direction=direction+2; + break; + case 3: + new_couleur=0; + direction=direction+1; + break; + } + */ + + + + direction = direction % 4; +// printf("direction=%i\n",direction); + nr=0; + ng=0; + nb=0; + //SDL_LockSurface(screen); + switch(new_couleur){ + case 0: + nr=254; + ng=254; + nb=254; + break; + case 1: + nr=254; + ng=0; + nb=0; + break; + case 2: + nr=0; + ng=254; + nb=0; + break; + case 3: + nr=0; + ng=0; + nb=254; + break; + } + putPixel(screen, i, j, SDL_MapRGB(screen->format, nr, ng, nb)); + //putPixel(screen, i, j, SDL_MapRGB(screen->format, 0xfe, 0, 0)); + + switch(direction){ + case 0: + j=j-1; + if (j<0) + j=479; + break; + case 1: + i=i+1; + if (i>639) + i=0; + break; + case 2: + j=j+1; + if (j>479) + j=0; + break; + case 3: + i=i-1; + if (i<0) + i=639; + break; + } + //SDL_UnlockSurface(screen); + SDL_Flip(screen); + } + //} + //sleep(5); + SDL_Quit(); + return 0; +} +