home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 May / PCW596.iso / polskie / eduk / genfast / genfast.lzh / DEMO_01.PAK / DEMO1.DA_ < prev    next >
Text File  |  1996-02-08  |  17KB  |  733 lines

  1. ; Program demonstracyjny w jæzyku EasyGEN
  2. ; (C) 1995,96 RangelSoft  Robert Grzegorzewski
  3.  
  4. [procedure InitDesktop]
  5. @ClrScr;
  6. @SetColors(0,15);
  7. @SetPosition(40,15);
  8. @SetHelpContext(1);
  9. @DisableStatusButton(7);
  10. @DisableStatusButton(8);
  11. @Return;
  12.  
  13. [procedure ReverseImage]
  14. @if (%C <> 12) then goto:20;
  15. @SetColors(9,12);
  16. @ReverseArea(62,322,109,385);
  17. @SetColors(1,4);
  18. @ReverseArea(62,322,109,385);
  19. @Return;
  20. [20]
  21. @SetColors(4,1);
  22. @ReverseArea(62,322,109,385);
  23. @SetColors(12,9);
  24. @ReverseArea(62,322,109,385);
  25. @Return;
  26.  
  27. [procedure KasujEkran]
  28. @Clear(0,0,639,289);
  29. @ResetFields;
  30. @DisableKeywords;
  31. @Return;
  32.  
  33. [procedure Kolory]
  34. @SetColors(0,15);
  35. @Return;
  36.  
  37. [procedure Gong]
  38. @Sound(100,250);
  39. @Sound(250,250);
  40. @Sound(500,250);
  41. @Return;
  42.  
  43. [procedure StartScreen]
  44. @Call:KasujEkran;
  45. @SetColors(0,15);
  46.  
  47. ; O₧ pozioma
  48. @Line(50,150,600,150);
  49. @Line(585,140,600,150);
  50. @Line(585,160,600,150);
  51.  
  52. ; O₧ pionowa
  53. @Line(50,250,50,50);
  54. @Line(35,60,50,50);
  55. @Line(65,60,50,50);
  56.  
  57. ; PodziaÆka X
  58. @Line(140,137,140,163);
  59. @Line(230,137,230,163);
  60. @Line(320,137,320,163);
  61. @Line(410,137,410,163);
  62.  
  63. @Return
  64.  
  65. [procedure ResetButtons]
  66. ; zdefiniowanie dodatkowego obszaru aktywnego
  67. ; tzn. niewidocznego przycisku
  68. @SetInvisibleButton(22,292,618,418,900);
  69.  
  70. ; redefiniowanie zwykÆych przycisków
  71. @SetColors(8,15);
  72. @SetButton(150,300,200,350,7,100,'OLOWEK1.rbm','Rysowanie');
  73. @SetButton(150,360,200,410,7,400,'Litcyf.rbm','Dane z pliku');
  74. @SetButton(223,300,273,350,7,700,'OKNODIAL.RBM','Okno dialogowe');
  75. @SetButton(223,360,273,410,7,701,'TEKST.RBM','Wy₧wietlanie tekstu');
  76. @SetButton(295,300,345,350,7,200,'gumka1.rbm','Skasowanie ekranu');
  77. @SetButton(295,360,345,410,7,500,'showgraf.rbm','Wy₧wietlenie .CGV');
  78. @SetButton(368,300,418,350,7,702,'buttons.RBM','Modyfikacja statusu');
  79. @SetButton(368,360,418,410,7,703,'ODCZZAPI.RBM','Zapis/odczyt ekranu');
  80. @SetButton(440,300,490,350,7,300,'Zapis.rbm','Zapis danych na dysku');
  81. @SetButton(440,360,490,410,7,600,'Odczyt.rbm','Odczyt danych do wykresu');
  82. @SetButton(513,300,563,350,7,704,'FLIDEMO.RBM','Animacja .FLI');
  83. @SetButton(513,360,563,410,7,706,'ANIMACJA.RBM','Animacja wewnætrzna');
  84. @Return;
  85.  
  86. [1!]
  87. ; wyÆåczenie wysokopoziomowego sprawdzania
  88. ; bÆædów podczas dziaÆañ arytmetycznych
  89. @DisableOverflowChecking;
  90.  
  91. ; zdefiniowanie etykiety (strona 999) do ktorej
  92. ; dzialanie zostanie przekazane w momencie nacisniecia
  93. ; przycisku powodujacego przejscie do menu (ikona symbolizujaca
  94. ; drzwi) lub po nacisnieciu klawisza <Esc>
  95. @DefExitProc(999);
  96.  
  97. ; redefiniowanie dzialania przycisku aktywujacego wydruk ekranu
  98. @DefPrintProc(998);
  99.  
  100. ; zdefiniowanie procedury obslugujacej zdarzenia z klawiatury
  101. @DefKeyboardHandler(995);
  102.  
  103. ; odtworzenie próbki dªwiækowej
  104. ;@PlayVOC('ACCESSED.VOC',16000);
  105. ;@PlayVOC('ACKNOWLG.VOC',16000);
  106.  
  107. @Call:InitDesktop;
  108. @UpArea(20,290,620,420,7);
  109. @DownArea(40,310,130,400,7);
  110.  
  111. ; narysowanie niebieskiego wykrzyknika
  112. ; Uwaga! Postac na ekranie wyswietlanych plikow .BMP moze roznic sie
  113. ; od ich wygladu w standardowych przegladarkach, z tego powodu,
  114. ; iz nie jest uwzgledniana paleta zapisana w tychze plikach -
  115. ; modyfikacja palety do potrzebnej postaci spowodowalaby negatywne
  116. ; efekty wizualne na ekranie i zmiane kolorow juz narysowanych
  117. ; elementow...
  118. @SetPosition(62,322);
  119. @Picture('WYKRZYKN.BMP');
  120. ; ...dlatego tez, aby dokonac pewnego retuszu wyswietlonego
  121. ; rysunku, stosujemy procedure ReverseArea, ktora zamienia
  122. ; kolor podany jako pierwszy parametr procedury SetColor
  123. ; na kolor podany jako drugi parametr tejze procedury...
  124. @SetColors(7,0);
  125. @ReverseArea(62,322,109,385);
  126. @SetColors(8,7);
  127. @ReverseArea(62,322,109,385);
  128.  
  129. ; wypisanie tekstu na rysunku
  130. @SetPosition(60,340);
  131. @SetColors(14,15);
  132. @FastWrite('OBSZAR');
  133. @SetPosition(57,355);
  134. @FastWrite('AKTYWNY');
  135.  
  136. ; zdefiniowanie dodatkowego obszaru aktywnego
  137. ; tzn. niewidocznego przycisku
  138. @SetInvisibleButton(22,292,618,418,900);
  139.  
  140. ; narysowanie przyciskow ekranowych
  141. ; Uwaga! procedura SetColors() ustawia kolory cienia przycisku
  142. ; (prawy i dolny brzeg) oraz "smugi" (lewy i gorny brzeg)
  143. @SetColors(8,15);
  144. @DrawButton(150,300,200,350,7,100,'olowek1.rbm','Rysowanie');
  145. @DrawButton(150,360,200,410,7,400,'Litcyf.rbm','Dane z pliku');
  146. @DrawButton(223,300,273,350,7,700,'OKNODIAL.RBM','Okno dialogowe');
  147. @DrawButton(223,360,273,410,7,701,'TEKST.RBM','Wy₧wietlanie tekstu');
  148. @DrawButton(295,300,345,350,7,200,'gumka1.rbm','Skasowanie ekranu');
  149. @DrawButton(295,360,345,410,7,500,'showgraf.rbm','Wy₧wietlenie .CGV');
  150. @DrawButton(368,300,418,350,7,702,'BUTTONS.RBM','Modyfikacja statusu');
  151. @DrawButton(368,360,418,410,7,703,'ODCZZAPI.RBM','Zapis/odczyt ekranu');
  152. @DrawButton(440,300,490,350,7,300,'Zapis.rbm','Zapis danych na dysku');
  153. @DrawButton(440,360,490,410,7,600,'Odczyt.rbm','Odczyt danych do wykresu');
  154. @DrawButton(513,300,563,350,7,704,'FLIDEMO.RBM','Animacja .FLI');
  155. @DrawButton(513,360,563,410,7,706,'ANIMACJA.RBM','Animacja wewnætrzna');
  156.  
  157. ; wlaczenie obrazu
  158. @ShowScreen;
  159. [2]
  160. @SetCurrentPage(1);
  161. @CheckEvents
  162.  
  163. [100]
  164. @C := 12;
  165. @Call:ReverseImage;
  166. @Call:Kolory;
  167. @Call:StartScreen;
  168. ; sprawdzenie, czy juz nie jest uaktywnione rysowanie
  169. ; (obecnosc pola aktywnego numer 14 na ekranie)
  170. @GetParam;
  171. @if (%F = 14) then goto:101;
  172. @SetInvisibleButton(1,1,638,275,901);
  173. [101]
  174. @SetPosition(50,150);
  175. @A := 0;
  176. @L := 50;
  177. @K := 150;
  178. @Repeat:181;
  179. @B:=(sin(3.14*(%A/90)))*80;
  180. @I := 50 + %A;
  181. @J:=150 - %B;
  182. @Line(%L,%K,%I,%J);
  183. @L:=%I;
  184. @K:=%J;
  185. @A:=%A+2;
  186. @Next;
  187. @Call:Gong;
  188. @K:=0;
  189. @L:=0;
  190. @SetPosition(400,20);
  191. @SetColors(0,15);
  192. @Interline(14);
  193. ~Teraz moºesz trochæ~
  194. ~porysowaì za pomocå myszy.~
  195. <#32>
  196. @SetColors(4,14);
  197. ~S~p~r~ó~b~u~j~...
  198. @goto:2
  199.  
  200. [200]
  201. @C := 12;
  202. @Call:ReverseImage;
  203. @Call:KasujEkran;
  204. @Call:Kolory;
  205. @GetParam;
  206. @if (%F < 14) then goto:2;
  207. @DeleteButton;
  208. @GoTo:2
  209.  
  210. [300]
  211. @C := 12;
  212. @Call:ReverseImage;
  213. ; utworzenie nowego pliku uzytkownika
  214. ; (w okienku uzytkownik musi podac nazwe nowego
  215. ; pliku lub wybrac jeden z juz istniejacych, wyswietlonych
  216. ; na liscie i pasujacych do maski *.RYS)
  217. @CreateUserFile('Zapis danych','*.RYS');
  218. @GetErrorCode;
  219. @If (%Z<>0) then GoTo:2;
  220.  
  221. @Delay(500);
  222.  
  223. ; nalezy zapamietac nieco wiekszy obszar,
  224. ; gdyz cien pod oknem dialogowym wykracza poza
  225. ; obszar podany w wywolaniu procedury DialogBox.
  226. @GetImage(150,100,510,220);
  227.  
  228. @DialogBox(150,100,490,200,10,'Informacja');
  229.  
  230. @SetPosition(220,150);
  231. @SetColors(0,15);
  232. @FastWrite('Zapis danych do pliku...');
  233. @A := 1;
  234. @Repeat:37
  235. @B:=(sin(3.14*(%A/180)))*80;
  236. @L:=50+%A;
  237. @K:=150-%B;
  238. @WriteReal(%L);
  239. @WriteReal(%K);
  240. @A:=%A+10;
  241. @Next;
  242. @CloseFile;
  243. @Delay(1000);
  244. @PutImage;
  245. @Call:Gong;
  246. @GoTo:2
  247.  
  248. [procedure ReadFourWords]
  249. @ReadWord(%A);
  250. @ReadWord(%B);
  251. @ReadWord(%C);
  252. @ReadWord(%D);
  253. @Return
  254.  
  255. [400]
  256. @C := 9;
  257. @Call:ReverseImage;
  258. @Call:KasujEkran;
  259. @L:=0;
  260. @GetValue(%L,'Podaj liczbæ powtórzeñ (1-5)');
  261. @If (%L<1) Then GoTo:2
  262. @If (%L>5) Then GoTo:2
  263.  
  264. ; Program generujåcy dane do rysowania
  265. @Execute('POKAZ.EXE');
  266. ;
  267. @OpenFile('POKAZ.DAT');
  268. @GetErrorCode;
  269. ; teraz w zmiennej tylko do odczytu %Z znajduje sie kod bledu
  270. ; operacji poprzednio wykonanej (0 oznacza poprawne wykonanie)
  271. @If (%Z<>0) then GoTo:599;
  272. ;
  273. @Repeat:%L
  274. @Call:ReadFourWords;
  275.  
  276. @Rectangle(%A,%B,%C,%D);
  277.  
  278. @Call:ReadFourWords;
  279. @ReadWord(%K);
  280. @SetColors(%K,%K);
  281. @FillEllipse(%A,%B,%C,%D);
  282. @Next;
  283. @CloseFile;
  284. @Call:Gong;
  285. @Call:Kolory;
  286. @GoTo:2
  287.  
  288. [500]
  289. @SetHypertextColor(9);
  290. @C := 9;
  291. @Call:ReverseImage;
  292. @D:=1;
  293. @Call:KasujEkran;
  294. @DownArea(20,20,620,40,7);
  295. @SetPosition(30,27);
  296. @FastWrite('Wybierz za pomocå myszy jeden z poniºszych bloków schematu...');
  297. @SetPosition(60,60);
  298. @SetColors(0,15);
  299. @Picture('ARCZ1.CGV');
  300. @A:=1;
  301. @Repeat:8
  302. @AssignField(%A,500+%A);
  303. @A:=%A+1
  304. @Next
  305. @GoTo:2
  306.  
  307. [procedure HideBlock]
  308. @SetColors(0,15);
  309. @IF (%E = %D) then Return;
  310. @HideBlock(%D)
  311. @Return
  312.  
  313. [501]
  314. @DownArea(20,20,620,40,7);
  315. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  316. @DisableKeywords;
  317. @SetPosition(30,22);
  318. Mieszacz, dokonujåcy proces przemiany czæstotliwo₧ci
  319. @E:=1;
  320. @Call:HideBlock;
  321. @ShowBlock(1);
  322. @D:=1;
  323. @GoTo:2;
  324.  
  325. [502]
  326. @DownArea(20,20,620,40,7);
  327. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  328. @DisableKeywords;
  329. @SetPosition(30,22);
  330. Heterdodyna, czyli tzw. generator lokalny
  331. @E:=2;
  332. @Call:HideBlock;
  333. @ShowBlock(2);
  334. @D:=2;
  335. @GoTo:2;
  336.  
  337. [503]
  338. @DownArea(20,20,620,40,7);
  339. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  340. @DisableKeywords;
  341. @SetPosition(30,22);
  342. Wzmacniacz po₧redniej czæstotliwo₧ci
  343. @E:=3;
  344. @Call:HideBlock;
  345. @ShowBlock(3);
  346. @D:=3;
  347. @GoTo:2;
  348.  
  349. [504]
  350. @DownArea(20,20,620,40,7);
  351. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  352. @DisableKeywords;
  353. @SetPosition(30,22);
  354. Filtr 38 MHz
  355. @E:=4;
  356. @Call:HideBlock;
  357. @ShowBlock(4);
  358. @D:=4;
  359. @GoTo:2;
  360.  
  361. [505]
  362. @DownArea(20,20,620,40,7);
  363. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  364. @DisableKeywords;
  365. @SetPosition(30,22);
  366. Ogranicznik amplitudy
  367. @E:=5;
  368. @Call:HideBlock;
  369. @ShowBlock(5);
  370. @D:=5;
  371. @GoTo:2;
  372.  
  373. [506]
  374. @DownArea(20,20,620,40,7);
  375. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  376. @DisableKeywords;
  377. @SetPosition(30,22);
  378. Dyskryminator czæstotliwo₧ci
  379. @E:=6;
  380. @Call:HideBlock;
  381. @ShowBlock(6);
  382. @D:=6;
  383. @GoTo:2;
  384.  
  385. [507]
  386. @DownArea(20,20,620,40,7);
  387. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  388. @DisableKeywords;
  389. @SetPosition(30,22);
  390. Wzmacniacz prådu staÆego
  391. @E:=7;
  392. @Call:HideBlock;
  393. @ShowBlock(7);
  394. @D:=7;
  395. @GoTo:2;
  396.  
  397. [508]
  398. @DownArea(20,20,620,40,7);
  399. ; deaktywacja podswietlonych (poprzednio) slow hipertekstu na ekranie
  400. @DisableKeywords;
  401. @SetPosition(30,22);
  402. UkÆad reaktancyjny
  403. @E:=8;
  404. @Call:HideBlock;
  405. @ShowBlock(8);
  406. @D:=8;
  407. @GoTo:2;
  408.  
  409. [599]
  410. @MessageBox('BÆåd','Brak pliku na dysku.');
  411. @GoTo:2
  412.  
  413. [600]
  414. @C := 9;
  415. @Call:ReverseImage;
  416. @Call:KasujEkran;
  417. @OpenUserFile('Odczyt danych','*.RYS');
  418. @GetErrorCode;
  419. @If (%Z<>0) then GoTo:599
  420. @Call:StartScreen;
  421. @SetColors(1,1);
  422. @I:=50
  423. @J:=150
  424. @FileSize(%E);
  425. @Repeat:(%E/12);
  426. @ReadReal(%K);
  427. @ReadReal(%L);
  428. @Line(%I,%J,%K,%L);
  429. @Line(%I,%J+1,%K,%L+1);
  430. @I:=%K
  431. @J:=%L
  432. @Next
  433. @CloseFile;
  434.  
  435. ; skasowanie pliku (musi byc wczesniej zamkniety)
  436. @EraseFile;
  437.  
  438. @Call:Gong
  439. @Call:Kolory
  440. @GoTo:2
  441.  
  442. [700]
  443. @C := 12;
  444. @Call:ReverseImage;
  445. @GetImage(150,100,510,270);
  446. @DialogBox(150,100,490,250,3,'PrzykÆadowe okno dialogowe');
  447.  
  448.  
  449. ; deaktywacja przyciskow ekranowych (na czas dzialania okna dialogowego)
  450. ; oraz pola aktywnego typu zdefiniowanego przy pomocy
  451. ; procedury @SetInvisibleButton
  452. ; Uwaga! Deaktywacji wszystkich przyciskow uzytkownika mozna
  453. ; dokonac takze za pomoca procedury @DisableUserButtons
  454. @Repeat:14
  455. @DeleteButton;
  456. @Next;
  457. ; Uwaga! istnieje takºe moºliwo₧ì deaktywacji wszystkich przycisków
  458. ; i pól aktywnych na ekranie poprzez ustalenie duºego pola aktywnego
  459. ; (nie reagujåcego na zdarzenia) na obszarze caÆego ekranu
  460. ; (moºna w ten sposób zdeaktywowaì na pewien czas takºe przyciski
  461. ; w linii statusu, gdy rozmiar tego pola aktywnego bædzie np. taki:
  462. ; @SetInvisibleButton(0,0,639,479,999);
  463. ; Strona 999 powinna byì zdefiniowana np. w ten sposób:
  464. ;
  465. ; [999]
  466. ; @GoTo:<numer etykiety (strony) przed wywolaniem procedury @CheckEvents>
  467.  
  468.  
  469. ; odczytanie liczby pol aktywnych do %E (jesli istnieja)
  470. ; i deaktywacja tychºe pól w rysunku CGV
  471. @K:=%D;
  472. @GetParam;
  473. @ResetFields;
  474. @SetColors(0,15);
  475. @DrawButton(280,215,360,240,12,800,'OK','');
  476. @SetPosition(170,140);
  477. @SetColors(0,0);
  478. @Interline(14);
  479. Oto przykÆad sposobu utworzenia
  480. wÆasnego okienka dialogowego z
  481. przyciskiem zamykajåcym oraz tekstem
  482. wypisywanym czcionkå uºytkownika...
  483. @SetCurrentPage(799);
  484. ; ^ procedura ta powoduje, ze nacisniecie przycisku z reka
  485. ; skierowana w prawa strone automatycznie zamknie okno
  486. ; poprzez przejscie do strony 800 (jako nastepnej po 799)
  487. @CheckEvents;
  488.  
  489. [procedure ResetCGV]
  490. ; sprawdzenie w zmiennej %E, czy byly strony aktywne (patrz wyzej)
  491. @If (%E = 0) then Return;
  492. @SetPosition(60,60);
  493. @LoadFields('ARCZ1.CGV');
  494. @A:=1
  495. @Repeat:8
  496. @AssignField(%A,500+%A);
  497. @A:=%A+1
  498. @Next
  499. @Return
  500.  
  501. [800]
  502. @DeleteButton;
  503. @PutImage;
  504. @Call:ResetButtons;
  505. @Call:ResetCGV;
  506. @D:=%K;
  507. @GoTo:2;
  508.  
  509. [701]
  510. @C := 9;
  511. @Call:ReverseImage;
  512. @Call:KasujEkran;
  513. @LoadFont('COURMAZ.RSF');
  514. @SetPosition(20,20);
  515. To jest duºa
  516. czcionka...
  517. @LoadFont('SYSTEM.RSF');
  518. @SetPosition(30,110);
  519. @A := 8;
  520. @Repeat:10
  521. @SetColors(%A,15);
  522. @Interline(%A);
  523. A to jest czcionka maÆa z róºnym ustawieniem ~interlinii~...
  524. @A:=%A+2;
  525. @Next
  526. @GoTo:2;
  527.  
  528. [702]
  529. @C := 12;
  530. @Call:ReverseImage;
  531. @A := 1;
  532. @Repeat:8
  533. @DisableStatusButton(%A);
  534. @Delay(1000);
  535. @EnableStatusButton(%A);
  536. @A := %A + 1;
  537. @Next;
  538. @Call:Gong;
  539. @Delay(1000);
  540. @Repeat:2;
  541. @DisableStatusBar;
  542. @Delay(500);
  543. @EnableStatusBar;
  544. @Delay(500);
  545. @Next;
  546. @DisableStatusButton(7);
  547. @DisableStatusButton(8);
  548. @GoTo:2
  549.  
  550. [703]
  551. @C := 9;
  552. @Call:ReverseImage;
  553. @SaveScreen;
  554. @ClrScr;
  555. @SetPosition(40,50);
  556. @SetColors(0,15);
  557. @Interline(20)
  558. Ekran zostaÆ zapisany na dysku, a nastæpnie
  559. wykasowany poleceniem ~@ClrScr~...
  560. ; odstæp (moºna zamiast <#32> wstawiì zwykÆå spacjæ - kod #32)
  561. <#32>
  562. Po ~5 sekundach~ zawarto₧ì ekranu zostanie
  563. przywrócona za pomocå polecenia ~@LoadScreen~
  564. (polecenie to, w przeciwieñstwie do ~@RestoreScreen~,
  565. nie aktywizuje trybu graficznego, tak wiæc, je₧li
  566. tryb graficzny byÆ zmieniany np. przez zewnætrzny
  567. program wywoÆany poleceniem ~@Execute~, to naleºy
  568. uºyì wÆa₧nie procedury ~@RestoreScreen~ zamiast ~@LoadScreen~)
  569.  
  570. ; 6 linii odstæpu
  571. @Repeat:6;
  572. <#32>
  573. @Next;
  574.  
  575. @SetColors(14,14);
  576. Najedª na powyºszå ramkæ kursorem myszy (ale bez naciskania
  577. przycisku) aby rozpoczåì odliczanie czasu...
  578.  
  579. @UpArea(100,300,524,330,7);
  580. [714]
  581. @GetMousePosition;
  582. @if (%X < 100) then goto:714;
  583. @if (%X > 524) then goto:714;
  584. @if (%Y < 300) then goto:714;
  585. @if (%Y > 330) then goto:714;
  586. @SetColors(12,15);
  587. @J:=1;
  588. @Repeat:20;
  589. @Bar(81+%J*21,302,102+%J*21,328);
  590. @J := %J + 1;
  591. @Delay(200);
  592. @Next
  593.  
  594. ; odtworzenie ekranu
  595. @LoadScreen;
  596.  
  597. ; ponowne zapisanie ekranu
  598. @SaveScreen;
  599.  
  600. @MessageBox('Teraz prezentacja @RestoreScreen','Naci₧nij <ENTER>');
  601.  
  602. ; wyswietlenie rysunku .PCX (320x200x256)
  603. @ShowPCX('DEMO256K.PCX');
  604.  
  605. ; wstrzymanie wykonywania kodu na 5 sekund (lub mniej w przypadku
  606. ; nacisniecia jakiegos klawisza przez uzytkownika)
  607. @StopAction(5000);
  608.  
  609. ; wyswietlenie rysunku .PCX (640x480x16)
  610. @ShowPCX('DEMO.PCX');
  611.  
  612. ; wstrzymanie wykonywania kodu do momentu nacisniecia jakiegos klawisza
  613. @StopAction(0);
  614.  
  615. ; odtworzenie ekranu
  616. @RestoreScreen;
  617.  
  618. ; warto₧ì standardowa interlinii
  619. @Interline(14);
  620. @SetColors(0,15);
  621. @GoTo:2
  622.  
  623. [900]
  624. @MessageBox('NacisnåÆe₧ obszar aktywny!','Rysowanie wyÆåczone !!!');
  625. @GetParam;
  626. @if (%F < 14) then goto:2
  627. @DeleteButton;
  628. @GoTo:2
  629.  
  630. [901]
  631. ; w tym miejscu w zmiennych tylko do odczytu %X i %Y så wspóÆrzædne
  632. ; ekranowe kursora myszy
  633. @SetColors(15,15);
  634. @if (%K = 0) then goto:902
  635. @Line(%K,%L,%X,%Y);
  636. [902]
  637. @K := %X;
  638. @L := %Y;
  639. @GoTo:2
  640.  
  641. ; animacja
  642.  
  643. [704]
  644. @C := 12;
  645. @Call:ReverseImage;
  646. @MessageBox('Teraz bædzie animacja!','Spróbuj teº "Alt+A"');
  647. [705]
  648. @SaveScreen;
  649. ; jesli drugi parametr procedury ShowFLI bedzie rowny 1, to animacja
  650. ; bedzie odbywala sie z maksymalna predkoscia;
  651. ; zwiekszanie tego parametru spowolni animacje,
  652. ; wartosc 0 oznacza domyslna predkosc zdefiniowana w pliku .FLI
  653. @ShowFLI('DEMO',0,0,3);
  654. @RestoreScreen;
  655. @GoTo:2
  656.  
  657. [procedure ResetF]
  658. @F := 5;
  659. @Return;
  660.  
  661. ; animacja przy pomocy jezyka EasyGEN
  662.  
  663. [706]
  664. @C := 9;
  665. @Call:ReverseImage;
  666. @SaveScreen;
  667. @Clear(0,0,639,289);
  668. @SetColors(14,15);
  669. @K:=-1;
  670. @Repeat:16;
  671. @K:=%K+1;
  672. @SetColors(%K,15);
  673. @Bar(%K*40,0,%K*40+40,280);
  674. @Next;
  675. @GetImage(0,61,639,101);
  676. @SetColors(1,15);
  677. @FillEllipse(40,80,20,20);
  678. @J := 8;
  679. @F := 5;
  680. @Repeat:80;
  681. @PutImage;
  682. @GetImage(0,61,639,101);
  683. @F := %F + 2;
  684. @If (%F > 20) then Call:ResetF;
  685. @SetColors(%F,%F+1);
  686. @FillEllipse(32+%J,80,%F,%F);
  687. @J := %J + 8;
  688. @Delay(50);
  689. @Next;
  690. @MessageBox('Informacja','To juº koniec...');
  691. @PutImage;
  692. @LoadScreen;
  693. @GoTo:2
  694.  
  695. ; procedura wywoÆywana po naci₧niæciu dowolnego nieredefiniowanego klawisza
  696.  
  697. [995]
  698. ; teraz w zmiennej %Z znajduje sie kod nacisnietego klawisza
  699. @Sound(200,100);
  700. ; Kod $1E00 odpowiada kombinacji klawiszy "Alt+A"
  701. ; po nacisnieciu tej kombinacji proces przejdzie do strony 705...
  702. @If (%Z = $1E00) then goto:705;
  703. @Goto:2
  704.  
  705. ; procedura wywoÆywana po naci₧niæciu przycisku
  706. ; realizujåcego wydruk ekranu (lub <Alt+D>)
  707.  
  708. [998]
  709. @MessageBox('Co Ty chcesz drukowaì ?','Drukowanie nieaktywne!');
  710. @GoTo:2
  711.  
  712. ; procedura wywoÆywana po naci₧niæciu przycisku
  713. ; realizujåcego powrót do menu (lub <Esc>)
  714.  
  715. [999]
  716. @Call:Gong;
  717. @Repeat:5;
  718. @HideScreen;
  719. @Delay(200);
  720. @ShowScreen;
  721. @Delay(200);
  722. @Next;
  723. @MessageBox('Uwaga','Powrót do menu...');
  724.  
  725. ; w tym miejscu najlepiej jest skasowaì wszystkie pliki
  726. ; buforowe, zamknåì otwarty plik i ewentualnie zapytaì o zgodæ na
  727. ; zakoñczenie itp.
  728. @EraseFile('DANE.TST');
  729.  
  730. ; dalej juº nie ma kodu, wiæc naståpi powrót do menu
  731. ; - moºna takºe wstawiì tu instrukcjæ np. @Goto:990,
  732. ; czyli skok do nieistniejåcej strony, co bædzie miaÆo
  733. ; ten sam efekt.