begin process at 2012 05 27 15:08:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications Linux

 > LE CRABER (UNIX-LINUX)

LE CRABER (UNIX-LINUX)


 Information sur la source

Note :
8,67 / 10 - par 3 personnes
8,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Applications Linux Niveau :Débutant Date de création :14/06/2005 Date de mise à jour :14/06/2005 10:01:50 Vu :5 240

Auteur : z189632

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
un petit code avec la lib X11 pour fair peur aux newbies sur un OS compatible et oubliant un XHOST +

Source

  • #include <stdio.h>
  • #include <X11/Xlib.h>
  • #include <unistd.h>
  • #include <stdlib.h>
  • #include <time.h>
  • #include <string.h>
  • int main (int argc, char **argv) {
  • Display *d;
  • Window f, wnul;
  • GC gc;
  • Pixmap tmp;
  • int nul, depth, ymax, xmax;
  • int src_x=0, src_y=0;
  • int i, *inc, incr;
  • if ((d = XOpenDisplay(NULL)) == NULL) {
  • printf("Echec de la connexion au serveur X\n");
  • return -1;
  • }
  • f = 0;
  • if (argc == 3 && strcmp(argv[1], "-id") == 0) {
  • sscanf(argv[2], "%x", &f);
  • XGetGeometry(d, f, &wnul, &nul, &nul, &xmax,
  • &ymax, &nul, &depth);
  • printf("Id : %x, %dx%d, %dbpp\n", f, xmax, ymax, depth);
  • incr = 20;
  • inc = (int *)malloc((xmax/incr)*sizeof(int));
  • srand(time(NULL));
  • for (i=0 ; i<xmax/incr ; i++) {
  • inc[i] = (rand()%8) + 2;
  • }
  • }
  • if (f == 0)
  • return 0;
  • tmp = XCreatePixmap(d, f, xmax, ymax, depth);
  • gc = DefaultGC(d, DefaultScreen(d));
  • for (;;) {
  • for (src_x=0, i=0 ; src_x<xmax ; src_x=src_x+incr, i++) {
  • /* if (src_y < 0) {
  • src_y = -src_y;
  • XCopyArea(d, f, tmp, gc, src_x, src_y, inc, ymax-src_y, src_x, 0);
  • XCopyArea(d, f, tmp, gc, src_x, 0, inc, src_y, src_x, ymax-src_y);
  • }else { }*/
  • src_y = inc[i];
  • XCopyArea(d, f, tmp, gc, src_x, 0, incr, ymax-src_y, src_x, src_y);
  • XCopyArea(d, f, tmp, gc, src_x, ymax-src_y, incr, src_y, src_x, 0);
  • }
  • XCopyArea(d, tmp, f, gc, 0, 0, xmax, ymax, 0, 0);
  • XFlush(d);
  • /*usleep(10000);*/
  • }
  • XCloseDisplay(d);
  • return 0;
  • }
#include <stdio.h>
#include <X11/Xlib.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>


int main (int argc, char **argv) {
 Display *d;
 Window f, wnul;
 GC gc;
 Pixmap tmp;
 int nul, depth, ymax, xmax;
 int src_x=0, src_y=0;
 int i, *inc, incr;

 if ((d = XOpenDisplay(NULL)) == NULL) {
   printf("Echec de la connexion au serveur X\n");
   return -1;
 }

 f = 0;

 if (argc == 3 && strcmp(argv[1], "-id") == 0) {
   sscanf(argv[2], "%x", &f);
   XGetGeometry(d, f, &wnul, &nul, &nul, &xmax,
                &ymax, &nul, &depth);
   printf("Id : %x, %dx%d, %dbpp\n", f, xmax, ymax, depth);
   incr = 20;
   inc = (int *)malloc((xmax/incr)*sizeof(int));
   srand(time(NULL));
   for (i=0 ; i<xmax/incr ; i++) {
     inc[i] = (rand()%8) + 2;
   }
 }

 if (f == 0)
   return 0;

 tmp = XCreatePixmap(d, f, xmax, ymax, depth);
 gc = DefaultGC(d, DefaultScreen(d));

 for (;;) {
   for (src_x=0, i=0 ; src_x<xmax ; src_x=src_x+incr, i++) {
     /*      if (src_y < 0) {
       src_y = -src_y;
       XCopyArea(d, f, tmp, gc, src_x, src_y, inc, ymax-src_y, src_x, 0);
       XCopyArea(d, f, tmp, gc, src_x, 0, inc, src_y, src_x, ymax-src_y);
       }else { }*/
     src_y = inc[i];
     XCopyArea(d, f, tmp, gc, src_x, 0, incr, ymax-src_y, src_x, src_y);
     XCopyArea(d, f, tmp, gc, src_x, ymax-src_y, incr, src_y, src_x, 0);
   }
   XCopyArea(d, tmp, f, gc, 0, 0, xmax, ymax, 0, 0);
   XFlush(d);
   /*usleep(10000);*/
 }

 XCloseDisplay(d);
 return 0;
}

 Conclusion

ouai en faite pour les debutant liser sa la : man xwininfo
et pour ceux ki veulent un MakeFile le voila :
**********MAKEFILE****************************** *
CC=gcc
LF=-L /usr/X11R6/lib -lX11 -lXpm
IF=-I /usr/X11R6/include


crabes: crabes.c
        $(CC) $(IF) $(LF) crabes.c -o crabes
******************************************* ******
koi d autre bon bah si j ai oublier un truc il y a le forum pour m le dir .. ciao comm ils disent!!


 Historique

14 juin 2005 10:01:50 :
illustration

 Sources du même auteur

Source avec une capture GALAXY WAR (PROGRAME C UTILISANT LA LIB. SDL)

 Sources de la même categorie

Source avec Zip TRAITEMENT D'IMAGE PGM par Jios
Source avec une capture COLORIMÈTRE NUMÉRIQUE LINUX par valchek
Source avec Zip TRAITEMENTS D'IMAGES AU FORMAT PGM AVEC LES ALGORITHMES DE C... par lemout
Source avec Zip ALGORITHME ACO INTERFACE GTK par RyBeN
Source avec Zip COMPRESSER SES SAUVEGARDES SMSBACKUPRESTORE (ANDROID) EN C A... par ThalLab

Commentaires et avis

Commentaire de Isoth0p le 15/06/2005 20:44:30

Je te conseille de remplacer ceci :

/* if (src_y < 0) {
src_y = -src_y;
XCopyArea(d, f, tmp, gc, src_x, src_y, inc, ymax-src_y, src_x, 0);
XCopyArea(d, f, tmp, gc, src_x, 0, inc, src_y, src_x, ymax-src_y);
}else { }*/

par ceci :

#if 0
if (src_y < 0) {
src_y = -src_y;
XCopyArea(d, f, tmp, gc, src_x, src_y, inc, ymax-src_y, src_x, 0);
XCopyArea(d, f, tmp, gc, src_x, 0, inc, src_y, src_x, ymax-src_y);
}else { }
#endif

Ouai je sais c'est un peu n'importe quoi mais ... C'est plus propre, et c'est une des recommandation du Portability Guide :p

Sinon, très bonne source !

Commentaire de Nebula le 15/06/2005 22:40:59

C'est quoi ce "Portability Guide", au juste ? J'aimerais y jeter un oeil pour voir comment ils justifient un tel remplacement, parce que à priori je vois pas l'intérêt de remplacer /* */ par des #if 0 #endif... Le résultat est le même : ce code sera dézingué par le préprocesseur (et vu que /* */ est le format traditionnel de commentaires en C, je vois pas le problème de portabilité). Quid ?

Commentaire de muad-dib le 20/07/2007 20:07:15

L'intérêt de remplacer les /* */ par des instructions pré-processeur est que dans le code à "dézinguer" il peut y avoir d'autres commentaires /* */

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales