Téléverser les fichiers vers "/"
This commit is contained in:
314
glisseur_10.c
Normal file
314
glisseur_10.c
Normal file
@@ -0,0 +1,314 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "SDL.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user