//------------------- DODAJ LICZBE DO DRZEWA ------------------------ void POLE::pole(int wybor) { char *znak; znak = sprawdz(); if (pusty[wybor]==true) { korzen=&dane[wybor]; // *korzen=*znak; pusty[wybor]=false; } }
int wyswietl(circle *circles, int id) { mydisplay = XOpenDisplay(""); myscreen = DefaultScreen(mydisplay); myvisual = DefaultVisual(mydisplay,myscreen); mydepth = DefaultDepth(mydisplay,myscreen); mywindowattributes.background_pixel = XWhitePixel(mydisplay,myscreen); mywindowattributes.override_redirect = False; mywindowattributes.backing_store = Always; mywindowattributes.bit_gravity = NorthWestGravity; mywindow = XCreateWindow(mydisplay,XRootWindow(mydisplay,myscreen), 100,100,600,600,10,mydepth,InputOutput, myvisual,CWBackingStore|CWBackingPlanes|CWBitGravity| CWBackPixel|CWOverrideRedirect,&mywindowattributes); XSelectInput(mydisplay,mywindow,ExposureMask|KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonMotionMask); mycolormap = DefaultColormap(mydisplay,myscreen); XAllocNamedColor(mydisplay,mycolormap,"blue",&mycolor,&dummy); XAllocNamedColor(mydisplay,mycolormap,"white",&mycolor1,&dummy); XAllocNamedColor(mydisplay,mycolormap,"black",&mycolor2,&dummy); XAllocNamedColor(mydisplay,mycolormap,"red",&mycolor3,&dummy); myname="Berek"; XStoreName(mydisplay,mywindow,myname); XMapWindow(mydisplay,mywindow); mygc = DefaultGC(mydisplay,myscreen); while (1) { if(XPending(mydisplay) > 0) { XNextEvent(mydisplay,&myevent); switch (myevent.type) { case Expose: XSetFunction(mydisplay,mygc,GXcopy); pokaz_wszystkich(circles, id); if(circles[id].czy_berek == true) { XSetForeground(mydisplay,mygc,mycolor3.pixel); } else { XSetForeground(mydisplay,mygc,mycolor.pixel); } circles[id].x = 100; circles[id].y = 100; circles[id].size = 60; // pokaz_wszystkich(circles, id); XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); //pokaz_wszystkich(circles, id); //int i; for(i=0; i<6; i++) {printf("%d %d %d\n", circles[i].ID, circles[i].x, circles[i].y); } XFlush(mydisplay); break; case KeyPress: // printf("%x\n", myevent.xkey.keycode); //EXIT XSetForeground(mydisplay, mygc, mycolor1.pixel); XFillRectangle(mydisplay, mywindow, mygc, 0, 0, 600, 600); sprawdz(circles, id); pokaz_wszystkich(circles, id); if(myevent.xkey.keycode == 0x09) { XCloseDisplay(mydisplay); shmdt(adres); shmctl(pamiec, IPC_RMID, NULL); exit(0); } //UP if(myevent.xkey.keycode == 0x62) {//0x62) { sprawdz(circles, id); XSetForeground(mydisplay,mygc,mycolor1.pixel); XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); if(circles[id].czy_berek == true) { XSetForeground(mydisplay,mygc,mycolor3.pixel); } else {XSetForeground(mydisplay,mygc,mycolor.pixel); } circles[id].y -= 5; XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); XFlush(mydisplay); } //RIGHT if(myevent.xkey.keycode == 0x66) {//0x66) { sprawdz(circles, id); XSetForeground(mydisplay,mygc,mycolor1.pixel); XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); if(circles[id].czy_berek == true) { XSetForeground(mydisplay,mygc,mycolor3.pixel); } else {XSetForeground(mydisplay,mygc,mycolor.pixel); } circles[id].x += 5; XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); XFlush(mydisplay); } //LEFT if(myevent.xkey.keycode == 0x64) {//0x64) { sprawdz(circles, id); XSetForeground(mydisplay,mygc,mycolor1.pixel); XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); if(circles[id].czy_berek == true) { XSetForeground(mydisplay,mygc,mycolor3.pixel); } else {XSetForeground(mydisplay,mygc,mycolor.pixel); } circles[id].x -= 5; XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); XFlush(mydisplay); } //DOWN if(myevent.xkey.keycode == 0x68) {//0x68) { sprawdz(circles, id); XSetForeground(mydisplay,mygc,mycolor1.pixel); XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); if(circles[id].czy_berek == true) { XSetForeground(mydisplay,mygc,mycolor3.pixel); } else {XSetForeground(mydisplay,mygc,mycolor.pixel); } circles[id].y += 5; XFillArc(mydisplay, mywindow, mygc, circles[id].x, circles[id].y, circles[id].size, circles[id].size, 0, 360*64); XFlush(mydisplay); } break; } } } }