Bonjour,
Voilà en ce moment je découvre (assez péniblement) l'utilisation du système X window pour réaliser un projet.
Grace au programme suivant je crée deux fenêtres.Le problème now est le suivant:
j'aimerais définir une fonction qui déplace une balle (représentée par le caractère 'o') en diagonale sur l'écran ; la balle devra rebondir sur les bords.
Comment puis je faire pour créer ce déplacement ?
et comment puis je faire pour synchroniser les deux fenetres (ie quand le caractère "o" est sorti de la fenetre A il faut alors qu'il apparaisse dans la fenetre B) ?
Merci
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
GC gc;
Display *display;
int screen;
Window wina, winb, root;
unsigned long white_pixel, black_pixel;
XSetWindowAttributes attrib;
unsigned long mask_attrib;
main() {
if ((display = XOpenDisplay ("")) == NULL) {
fprintf (stderr, "Can't open Display\n");
exit (1);
}
gc = DefaultGC (display, screen);
screen = DefaultScreen (display);
root = RootWindow (display, screen);
white_pixel = WhitePixel (display, screen);
black_pixel = BlackPixel (display, screen);
wina = XCreateSimpleWindow (display, root,
300, 300, 300, 380, 5, black_pixel, white_pixel);
XSelectInput (display, wina, ButtonPressMask);
XStoreName (display, wina, "gravity_S");
XMapWindow (display, wina);
winb = XCreateSimpleWindow (display, root,
600, 300, 300, 380, 5, black_pixel, white_pixel);
XSelectInput (display, winb, ButtonPressMask);
XStoreName (display, winb, "gravity_NW");
XMapWindow (display, winb);
attrib.bit_gravity = SouthGravity;
mask_attrib = CWBitGravity;
XChangeWindowAttributes(display, wina, mask_attrib, &attrib);
attrib.bit_gravity = NorthWestGravity;
XChangeWindowAttributes(display, winb, mask_attrib, &attrib);
for (;;) {
XEvent ev;
XNextEvent (display, &ev);
switch (ev.type) {
case ButtonPress :
if (ev.xbutton.window==wina) {
XClearWindow (display, wina);
XDrawString (display, wina, gc, 101,400, "0",1);
}
if (ev.xbutton.window==winb) {
XClearWindow (display, winb);
XDrawString (display, winb, gc, 10, 10, "0", 1);
}
break;
default :
break;
}
}
}