1 PROGRAM RozdzielaniePunktow;
2 #include "classes/gui.inc"
3 (*Program ma pozwolic odseparowac przy pomocy pewnej krzywej 2 zbiory punktow*)
14 sz = 30, (*szerokosc paska menu*)
15 my_ecranMinX = MinX+5,
16 my_ecranMinY = MinY+sz+3,
18 my_ecranMaxY= MaxY-(2*sz+1),
27 (*------------------------------------------------------------------------*)
29 (*------------------------------------------------------------------------*)
30 (* klasa definiujaca procedury graficzne *)
31 (*------------------------------------------------------------------------*)
32 UNIT graphics : GUI CLASS;
35 UNIT pauza : PROCEDURE(JakDlugo:integer);
38 for i :=1 to JakDlugo do i:=i od;
42 UNIT waitt : PROCEDURE;
45 While GUI_KeyPressed=/= 0 DO OD;
48 UNIT clear_all : procedure;
50 call GUI_Rect(my_ecranMinX, my_ecranMinY, my_ecranMaxX,
51 my_EcranMaxY,c_DarkGrey,c_LightGrey);
52 call GUI_Rect(my_EcranMinX, MaxY-2*sz,
53 my_EcranMaxX,MaxY-5,c_DarkGrey,c_DarkGrey);
56 UNIT clear : PROCEDURE(x0,y0,x1,y1,c1,c2: integer);
57 (* wymaz wszystko w prostokacie (x0,y0)-(y1,y1) *)
58 (* Zostaw ekran w kolorze c2*)
59 var i,j,x,y : integer;
64 while i<=x and j<=y do
65 call GUI_Rect(x0+i,y0+j,x1-i,y1-j,c_black,c_lightGrey);
68 while i>=0 and j>=0 do
69 call GUI_Rect(x0+i,y0+j,x1-i,y1-j,c1,c2);
75 (**************************************************************************)
77 UNIT katy : procedure(col1,col2,x,y,u,v,grubosc: integer);
82 call GUI_Line(x+i,y+i,u-i,y+i, col1);
83 call GUI_Line(x+i,y+i,x+i,v-i, col1)
87 call GUI_Line(u-i,v-i,x+i,v-i,col2);
88 call GUI_Line(u-i,v-i,u-i,y+i, col2);
93 unit comment: procedure(ss:string);
95 call GUI_Rect(minX+4,maxY-2*sz,maxX-4,maxY-10,c_darkGrey,c_darkGrey);
96 (* wymazanie obszaru pod komentarze *)
97 call GUI_writeText(comX+10,comY,unpack(ss),c_white,c_darkGrey);
100 unit YES : function : boolean;
103 while (c <> 'y' and c<> 'Y' and c <> 'n' and c<> 'N' ) do
104 call GUI_move(comX,comY);
105 c:= GUI_ReadChar(comX,comY,c_turq,c_lightGrey) od;
106 if (c= 'y' or c='Y') then
107 result := true else result := false
112 (*************************************************************************)
118 (*-----------------------------------------------------------------------*)
121 (*-----------------------------------------------------------------------*)
122 unit option : class(nb : integer);
123 var Nom : arrayof string;
124 unit virtual action : procedure(j : integer);
128 array Nom dim (1:nb);
132 unit ikona : class(c,x,y,u,v,grubosc : integer, ss : string);
134 unit write_i : procedure;
137 call GUI_Rect(x,y,u,v,c_black,c);
138 call katy(c_white,c_darkGrey,x,y,u,v,grubosc);
139 call GUI_writeText(x+grubosc+3,y+(v-y)div 2 - 5 ,unpack(ss),c_black,c)
142 unit wymaz : procedure;
144 call GUI_Rect(x,y,u,v,c_black,c_lightGrey);
147 unit push : procedure;
148 (* nacisniecie wybranej ikony *)
150 call katy(c_darkGrey,c_white,x,y,u,v,grubosc);
152 call katy (c_white,c_darkGrey,x,y,u,v,grubosc);
156 unit inactive : procedure;
158 call katy(c_white,c_darkGrey,x,y,u,v,grubosc);
160 call katy (c_darkGrey,c_white,x,y,u,v,grubosc);
165 unit CZY : function(xx,yy:integer,IC:Ikona): boolean;
166 begin (* czy mysz nacisnieta w polozeniu ikony IC *)
167 result := (IC.x<xx and xx<IC.u
168 and IC.y<yy and yy<IC.v)
172 unit menu : coroutine(minX,maxX,MinY,MaxY :integer, OPTIONS :option);
173 (* sz szerokosc paska ikon *)
174 var ICONES: arrayof IKONA, i,j,nb, x1, y1, dl : integer,
178 (* dl and sz - wymiary ikon w tym menu *)
180 unit instalation : procedure;
181 (* rysowanie menu oraz jego ikon *)
184 call GUI_Rect(minX,minY,maxX,maxY,c_black,c_lightGrey);
185 (* duzy obszar szary *)
187 call GUI_Rect(minX+4,maxY-(2*sz),maxX-4,maxY-4,c_black,c_darkGrey);
188 (*obszar dla komentarzy*)
191 call ICONES(i).write_i
195 unit INI : procedure;
196 var x,y,u,v : integer;
199 dl := (MaxX-Minx) div nb ;
201 array ICONES dim(1:nb);
202 x := minX+2; y := minY+2;
203 u := minX+dl-4; v := minY+sz;
206 ICONES(i) := new ikona(c_lightGrey,x,y,u,v,2,OPTIONS.NOM(i));
207 x := x+dl; u := u+dl;
212 call comment(" error exec ");
213 call YES_ikona.write_i;
214 call NO_ikona.write_i;
216 while not z=1 do call GUI_MousePressed(xx,yy,z) od;
218 (* szukam gdzie zostal nacisniety lewy klawisz myszki*)
219 if CZY(xx,yy,YES_ikona)
222 call clear(minX+5,minY+sz+3,maxX-5,maxY-2*sz-1,c_white,c_lightGrey);
225 if CZY(xx,yy,NO_ikona)
228 call clear(minX+5,minY+sz+3,maxX-5,maxY-2*sz-1,c_white,c_lightGrey);
233 others call comment(" ERROR press YES to continue or NO to stop?");
235 call YES_ikona.write_i;
236 call NO_ikona.write_i;
238 while not z=1 do call GUI_MousePressed(xx,yy,z) od;
240 (* szukam gdzie zostal nacisniety lewy klawisz myszki*)
241 if CZY(xx,yy,YES_ikona)
244 call clear(minX+5,minY+sz+3,maxX-5,maxY-2*sz-1,c_white ,c_lightGrey);
247 if CZY(xx,yy,NO_ikona)
250 call clear(minX+5,minY+sz+3,maxX-5,maxY-2*sz-1,c_white ,c_lightGrey);
259 do (* obsluga menu *)
260 call instalation; (* rysowanie ikon z tego menu *)
265 call GUI_MousePressed(xx,yy,i) ;
268 (* szukam gdzie zostal nacisniety lewy klawisz myszki *)
271 if czy(xx,yy,ICONES(j))
273 call ICONES(j).push;exit;
278 call OPTIONS.Action(j);
282 if ICONES(j).sub_menu<>none then
283 attach(ICONES(j).sub_menu);
292 unit OPTIONS_MAIN : option class;
293 unit virtual Action : procedure(j : integer);
294 var ch : char, i,x : integer, bol : boolean;
295 begin (* opcje glownego menu*)
298 when 1 : call comment("Exit ");
299 when 2 : call comment("Ustalanie parametrow.");
301 when 3 : call comment("Tu ma byc informacja o algorytmie");
303 when 4 : call WczytajDane(ilCZ, ilB);
311 Nom(2) := "PARAMETRY";
313 Nom(4) := "ALGORITHMS";
316 unit OPTIONS_START : option class;
317 unit virtual Action : procedure(j : integer);
318 var x: integer, boo :boolean;
321 when 1 : call comment("RETURN ");
323 call ALG_1(ilcz,ilb);
325 call ALG_2(ilcz,ilb);
326 when 4 : call comment("ALG_3");
338 unit OPTIONS_help : option class;
339 var ch : char, i:integer;
340 unit virtual Action : procedure(j : integer);
343 when 1 : call comment(" ");
344 when 2 : call comment("NACISNIJ Y lub N");
345 if YES then call comment("") fi;
346 when 3 : call comment("");
355 (*===================================================================*)
357 unit parametry : procedure;
358 const pminX = 30, pminY =50, pmaxX= 400, pmaxY=200,
360 var i ,xx, yy: integer, IK : arrayof IKONA;
363 array IK dim(1 : il_ikon);
364 call GUI_Rect(pminX,pminY,pmaxX,pmaxY,c_darkGrey,c_green);
365 call GUI_WriteText(pminX+10, pminY+10,unpack("Ilosc punktow = "),
367 call GUI_writeInt(pminX+150,pminY+10,
368 il_punktow, c_darkGrey,c_green);
369 call GUI_WriteText(pminX+10, pminY+45,unpack("Jakosc w % = "),
371 call GUI_writeInt(pminX+150,pminY+45,
372 jakosc, c_darkGrey,c_green);
373 IK(1) := new IKONA (6,pminX+200,pminY+10,pminX+250,pminY+35,3,"PLUS");
374 IK(2) := new IKONA (6,pminX+260,pminY+10,pminX+310,pminY+35,3,"MINUS");
375 IK(3) := new IKONA (6,pminX+200,pminY+45,pminX+250,pminY+70,3,"PLUS");
376 IK(4) := new IKONA (6,pminX+260,pminY+45,pminX+310,pminY+70,3,"MINUS");
377 IK(5) := new IKONA (6,pminX+200,pminY+120,pminX+250,pminY+145,3,"EXIT");
378 for i:=1 to il_ikon do call IK(i).write_i; od;
379 (*badanie ktora ikona zostala nacisnieta*)
383 call GUI_MousePressed(xx,yy,i) ;
386 (* szukam gdzie zostal nacisniety lewy klawisz myszki *)
387 for i :=1 to il_ikon do
390 call IK(i).push; exit
394 when 1 : il_punktow := il_punktow+10;
396 call GUI_Rect(pminX+150,pminY+10,pminX+180,pminY+25, c_green,c_green);
397 call GUI_writeInt(pminX+150,pminY+10,il_punktow, c_darkGrey,c_green);
398 when 2 : il_punktow := il_punktow-10;
399 call GUI_Rect(pminX+150,pminY+10, pminX+180,pminY+25, c_green,c_green);
400 call GUI_writeInt(pminX+150,pminY+10, il_punktow, c_darkGrey,c_green);
401 when 3 : jakosc := jakosc+1;
402 call GUI_Rect(pminX+150,pminY+45, pminX+180,pminY+60, c_green,c_green);
403 call GUI_writeInt(pminX+150,pminY+45, jakosc, c_darkGrey,c_green);
404 when 4 : jakosc := jakosc-1;
405 call GUI_Rect(pminX+150,pminY+45, pminX+180,pminY+60, c_green,c_green);
406 call GUI_writeInt(pminX+150,pminY+45, jakosc, c_darkGrey,c_green);
413 (*-------------------------------------------------------------*)
414 UNIT PokazPunkty : procedure;
417 call clear(minX+5,minY+sz+3,maxX-5,maxY-(2*sz+1),c_yellow,c_blue);
418 for i := 1 to ilCz do call TabCz(i).rysuj od;
419 for i := 1 to ilB do call TabB(i).rysuj od;
422 UNIT WczytajDane : procedure( output il_cz, il_b : integer);
425 call clear(minX+5,minY+sz+3,maxX-5,maxY-(2*sz+1),c_yellow,c_blue);
426 call comment("Losowanie punktow.");
427 array TabCz dim(1: il_punktow);
428 array TabB dim(1: il_punktow);
430 il_cz := 0; il_b := 0;
431 for i :=1 to il_punktow do
432 if random*10 <=6 then (* wylosowany punkt czerwony *)
434 pp:= new punkt(10+random*600,40+random*360,c_red);
436 (* wpisz do uporzadkowanej tablicy czerwonych*)
437 call insert(pp,TabCz, il_cz);
438 else (* wylosowany punkt bialy *)
440 pp := new punkt(10+random*600,40+random*360,c_white);
442 (*wpisz do uporzadkowanej tablicy bialych *)
443 call insert(pp,TabB, il_b);
451 unit INFO : procedure(ilcz,ilb : integer);
453 call GUI_WriteText( MinX+10, MaxY -50,
454 unpack("wylosowano czerowonych : "), c_red,c_darkGrey);
455 call GUI_WriteInt(MinX+200, MaxY-50,ilcz,c_red,c_darkGrey);
456 call GUI_WriteText(MinX+10,MaxY-30,
457 unpack("wylosowano bialych : "),c_white,c_darkGrey);
458 call GUI_WriteInt(MinX+200, MaxY-30,ilb,c_white,c_darkGrey);
459 call GUI_WriteText(MinX+250,MaxY-50,unpack("na lewo: "),
461 call GUI_WriteText(MinX+360,MaxY-50,unpack(":: "),
463 call GUI_WriteText(MinX+250,MaxY-30,unpack("na prawo: "),
465 call GUI_WriteText(MinX+360,MaxY-30,unpack(":: "),
467 call GUI_WriteText(MinX+460,MaxY-50,unpack("ocena: "),
469 call STOP_IKONA.write_i;
471 (*--------------------------------------------------------------*)
473 Unit ALG_1 : procedure(ilCz,ilB: integer);
474 var c, i : integer , pp : punkt,
475 zle, nr, cz, b, yy, ocena, ocenaMax: integer,
476 Lamana : arrayof punkt;
479 ocenaMax := ilCz*ilB;
480 array Lamana dim(1: il_punktow); yy := 400;
481 (* wybieram losowo pierwszy odcinek lamanej *)
482 Lamana(1) := new punkt(10+random*600, yy, c_yellow);
483 nr := 2; (*numer punktu lamanej *) yy := yy-40;
484 call INFO(ilCz, ilB);
486 DO (*tworzenie lamanej*)
488 Lamana(nr):= new punkt(10+random*600, yy,c_yellow);
489 call GUI_Line(Lamana(nr-1).x, Lamana(nr-1).y,
490 Lamana(nr).x, Lamana(nr).y, c_yellow);
492 call Zliczanie(Lamana,nr,ilCz,ilB, cz, b);
493 ocena := cz*(ilB-b) + b*(ilCz-cz);
495 (*wypisanie informacji o ilosciach punktow na ekranie *)
496 call WYPISZ_Info(cz,b,ilCz,ilB,ocena);
498 if GUI_KeyPressed <>0 then
499 (* zeby przerwac trzeba najpierw nacisnac jakis klucz*)
501 call GUI_MousePressed(xx,yy,i);
502 if i=1 and CZY(xx, yy,STOP_IKONA) then call clear_all;exit fi;
504 if ocena> 0.5*ocenaMax then
505 (*zatwierdzam ten odcinek lamanej *)
507 (* ocenaMax := ocena;*)
510 else (*wycofuje sie z ostatniego odcinka lamanej *)
511 call WYMAZ_KONIEC(LAMANA, nr);
515 if nr>2 then nr := nr-1; call WYMAZ_KONIEC(LAMANA,nr)
517 Lamana(1) := new punkt(10+random*600, 400, c_yellow);
522 if yy <50 then exit fi;
523 (* jesli lamana dojdzie na sama gore to koniec *)
529 UNIT WYPISZ_INFO : procedure(cz,b,il_cz,il_b, ocena : integer);
531 call GUI_Rect(MinX+320,MaxY-60,MinX+360,MaxY-10,c_darkGrey,c_darkGrey);
532 call GUI_Rect(MinX+390,MaxY-60,MinX+420,MaxY-10,c_darkGrey,c_darkGrey);
533 call GUI_Rect(MinX+510,MaxY-60,MinX+560,MaxY-10,c_darkGrey,c_darkGrey);
534 call GUI_WriteInt(MinX+320, MaxY-50, cz,c_red,c_darkGrey);
535 call GUI_WriteInt(MinX+390, MaxY-50, b,c_white,c_darkGrey);
536 call GUI_WriteInt(MinX+320, MaxY-30,il_cz-cz,c_red,c_darkGrey);
537 call GUI_WriteInt(MinX+390, MaxY-30,il_b-b,c_white,c_darkGrey);
538 call GUI_WriteInt(MinX+510, MaxY-50,ocena ,c_white,c_darkGrey);
541 unit Insert: procedure(pp: punkt,Tab : arrayof punkt, il : integer);
542 (* doloaczanie punktu pp do uporzadkowanej tablicy Tab o il-elementach *)
547 if pp.mniejsze (Tab(j)) then
548 Tab(j+1) := Tab(j); j := j-1;
554 unit punkt : class(x,y,c: integer);
555 unit mniejsze : function( p : punkt) : boolean;
557 result := (y< p.y or (y=p.y and x< p.x))
560 unit naLewo : function(p1,p2: punkt):boolean;
562 if ( (x-p1.x)*(p2.y - p1.y) -(p2.x-p1.x)*(y-p1.y))>0 then
564 else result := false fi
567 unit rysuj : procedure;
569 call GUI_Ellipse(x,y,5,5,0,360,c,c)
573 unit WYMAZ_KONIEC: procedure(L : arrayof punkt, nr : integer);
575 call GUI_Line(L(nr-1).x, L(nr-1).y, L(nr).x, L(nr).y, c_blue);
578 UNIT ZLICZANIE : procedure(LL: arrayof punkt, nr, ilcz,ilb :integer;
579 output cz, b : integer);
580 (*obliczanie liczby punktow czerwonych i bialych na lewo od lamanej*)
581 var i, j : integer, boo : boolean;
583 cz:= 0; (*czerwone na lewo*)
584 for i := 1 to ilcz do
588 if TabCz(i).naLewo(LL(j-1),LL(j)) then j:= j-1
591 if boo then cz := cz+1 fi
593 b:= 0; (*biale na lewo*)
598 if TabB(i).naLewo(LL(j-1),LL(j)) then j:= j-1
601 if boo then b := b+1 fi
605 UNIT NaLewo : procedure(p1,p2:punkt; output cz,b : integer);
608 cz:= 0; (*czerwone na lewo*)
609 for i := 1 to ilcz do
610 if TabCz(i).naLewo(p1,p2) then cz := cz+1 fi
612 b:= 0; (*biale na lewo*)
614 if TabB(i).naLewo(p1,p2) then b := b+1 fi
618 UNIT chromosom : class(x,y, u,w,ocena: integer);
622 UNIT RysujProsta :procedure(x1,y1,x2,y2,c:integer);
624 (* Narysuj przedluzenie wylosowanej prostej
625 call GUI_Line(p1.x,400,p2.x,40, c); *)
627 (*--------------------------------------------------------------*)
630 UNIT ALG_2 : procedure(ilCZ, ilB : integer);
631 var POKOLENIE : arrayof chromosom,
634 il_pokolen, b, cz,ocena,
635 ii, i, j, mocP, il_prob, nrChromosomu : integer,
636 x,xx,y,yy,mm : integer;
639 mocP := 10; (*zapamietuje tylko dziesiec najlepszych prob *)
641 array POKOLENIE dim(1:mocP); (*dwa punkty i ocena*)
646 call INFO(ilCz, ilB);
648 for i :=1 to il_prob do
649 (* wylosuj dwa punkty*)
651 p1 := new punkt(10+random*600, 40+random*360, c_yellow);
652 p2 := new punkt(10+random*600, 40+random*360, c_yellow);
653 (* narysuj prosta przechodzaca przez te punkty *)
654 call GUI_Line(p1.x,p1.y,p2.x,p2.y, c_yellow); (*wywolaj RysujProsta*)
655 x := p1.x + (p2.x-p1.x)*(40-p1.y)/(p2.y-p1.y);
656 if (x> 600 or x<20) then
657 if x<20 then mm := 20 fi ;
658 (*tak aby prosta miescila sie w ramce*)
659 if x>600 then mm:= 600 fi;
660 y := p1.y + (p2.y-p1.y)*(mm-p1.x)/(p2.x-p1.x);
663 xx :=p1.x + (p2.x-p1.x)*(400-p1.y)/(p2.y-p1.y);
664 if (xx> 600 or xx<20) then
665 if x<20 then mm := 20 fi ;
666 if x>600 then mm:= 600 fi;
667 yy := p1.y + (p2.y-p1.y)*(mm-p1.x)/(p2.x-p1.x);
670 call GUI_Line(x,y,xx,yy, c_red);
672 call NaLewo(p1,p2,cz, b);
673 ocena := cz*(ilB-b) + b*(ilCz-cz);
676 call WYPISZ_INFO(cz,b,ilCz,ilB,ocena);
677 while GUI_KeyPressed=0 do od; (*czeka na popchniecie *)
679 call GUI_Line(p1.x, p1.y, p2.x, p2.y, c_blue);
680 if i<10 then ii := i else ii := mocP fi;
682 (*wpisz te prosta do tablicy POKOLENIE , tzn.:*)
683 (*metoda insertion sort dolaczam nowy chromosom do tworzonego pokolenia*)
685 if POKOLENIE(ii-1).ocena < ocena then
686 POKOLENIE (ii) := POKOLENIE (ii-1);
692 POKOLENIE (ii) := new chromosom(p1.x, p1.y,p2.x,p2.y, ocena);
693 od (* koniec prob*) ;
694 for j := 1 to il_pokolen do
695 (* narysuj najlepsza prosta i jej ocene *)
696 call GUI_Line(POKOLENIE(1).x,POKOLENIE(1).y,
697 POKOLENIE(1).u,POKOLENIE(1).w, c_yellow);
698 call GUI_WriteInt(MinX+510, MaxY-50,
699 POKOLENIE(1).ocena,c_white,c_darkGrey);
701 (* mutacja lub / i krzyzowanie *)
702 call mutacja(prMutacji,POKOLENIE) ;
703 (* if random >pr_krzyzowanie then call krzyzowanie fi;*)
704 (*wyznaczam nastepne pokolenie*)
707 call GUI_MousePressed(xx,yy,i);
708 if i = 1 and CZY(xx, yy,STOP_IKONA) then call clear_all; exit fi;
712 UNIT MUTACJA : procedure(prMutacji: integer;
713 inout POKOLENIE: arrayof chromosom);
714 var i, j, ii, cz, b, mocP, ocena : integer, chr : chromosom;
716 mocP := upper(POKOLENIE);
717 for i := 1 to mocP do
718 if random>prMutacji then
720 j := random * 8; (*wylosuj pozycje mutowana*)
723 when 0,1 : chr.x := 10+random*600;
724 when 2,3 : chr.y := 40+random*360;
725 when 4,5 : chr.u := 10+random*600;
726 when 6,7 : chr.w := 40+random*360;
730 (* wylicz ocene zmutowanego chromosomu *)
731 call NaLewo(new punkt(chr.x,chr.y,0),new punkt(chr.u,chr.w,0),cz, b);
732 ocena := cz*(ilB-b) + b*(ilCz-cz);
734 (* wstaw na wlasciwe miejsce w tablicy POKOLENIE*)
735 if chr.ocena > POKOLENIE(i).ocena then
738 if POKOLENIE(ii-1).ocena < chr.ocena then
739 POKOLENIE (ii) := POKOLENIE (ii-1);
744 POKOLENIE (ii) := chr;
748 if POKOLENIE(ii+1).ocena > chr.ocena then
749 POKOLENIE (ii) := POKOLENIE (ii+1);
753 POKOLENIE (ii) := chr;
759 UNIT Krzyzowanie : procedure;
763 (*--------------------------------------------------------------*)
767 OK_ikona,YES_ikona,NO_ikona, STOP_IKONA,
768 EXIT_IKONA, CONTINUE_IKONA : IKONA,
769 menu_main, menu_START : menu,
771 TabCz, TabB : arrayof punkt,
772 xx,yy,r,l,z,i , il_punktow, ilCz, ilB, jakosc : integer,
773 prMutacji, prKrzyzowania : real;
776 when MEMERROR : call comment("Zabraklo pamieci");
778 when ACCERROR : call comment("Reference to none PR GLOWNY");
780 when LOGERROR : call comment("Niepoprawny Attach PR GLOWNY");
782 when CONERROR : call comment(" Array-index error PR GLOWNY");
784 when SYSERROR : call comment("input-output error");
786 when NUMERROR : call comment("blad numeryczny");
788 others : call comment("Jakis blad ");
793 BEGIN (* tu musi sie wygenerowac menu *)
795 YES_ikona := new IKONA(6,450,360,500,385,3,"YES");
796 NO_ikona := new IKONA(6,505,360,555,385,3,"NO");
797 STOP_IKONA := new IKONA(c_green,590,430,635,460,3,"STOP");
799 new IKONA(c_lightGrey,400,350,550,390,3," C O N T I N U E");
801 (* Strona tytulowa *)
802 CALL GUI_Rect(minX+1,minY+1,maxX-2,maxY-2,c_black,c_lightGrey);
804 CALL GUI_writeText(250,100,unpack("PROJEKT"), c_black,c_lightGrey);
805 CALL GUI_writeText(250,200,unpack(
806 "R O Z D Z I E L A N I E P U N K T O W"), c_black,c_lightGrey);
808 call CONTINUE_IKONA.write_i;
810 while i<>1 or not CZY(xx,yy,CONTINUE_IKONA) do
811 call GUI_MousePressed(xx,yy,i);
813 call CONTINUE_IKONA.push;
816 (* creation of main menu *)
817 menu_main := new menu(minX,maxX,minY,maxY,new OPTIONS_MAIN(4));
819 menu_main.ICONES(3).sub_menu :=
820 new menu(minX,maxX,minY,maxY,new OPTIONS_help(3));
822 menu_main.ICONES(4).sub_menu :=
823 new menu(minX,maxX,minY,maxY,new OPTIONS_START(4));
831 call comment("THIS ENDS THE PROGRAM EXECUTION !!!!!");
835 END (* block od Grafiki *)
836 END RozdzileaniePunktow;