home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 May / PCW596.iso / polskie / eduk / genfast / demo_07.pak / MULTITST.DA_ < prev    next >
Text File  |  1996-02-08  |  17KB  |  876 lines

  1. ;==========================================================================
  2. ;             TEST WIELOKROTNEGO WYBORU -- PLIK PRZYK£ADOWY
  3. ;               (C) 1995 RangelSoft  Robert Grzegorzewski
  4. ;==========================================================================
  5.  
  6.  
  7. ;**************************************************************************
  8. ; UWAGA! Aby zmodyfikowaì test na wÆasne potrzeby (tzn. zdefiniowaì
  9. ; innå liczbæ pytañ, losowañ, odpowiedzi itp.) naleºy zmieniì
  10. ; warto₧ci przypisywane odpowiednim zmiennym w róºnych miejscach
  11. ; tego pliku, a wyróºnione przy pomocy linii "gwiazdkowych", tak jak
  12. ; niniejszy tekst...
  13. ;**************************************************************************
  14.  
  15.  
  16. ; OPIS WYKORZYSTYWANEJ STRUKTURY DANYCH (TABLICY)
  17.  
  18. ; W tablicy przechowywane så nastæpujåce informacje w komórkach:
  19. ; 1 - numer strony rozpoczynajåcej pytania z odpowiedziami
  20. ; 2 - numer strony koñczåcej pytania
  21. ; 3 - liczba pytañ do wylosowania - nie moºe byì wiæksza niº liczba pytañ !
  22. ;     warto₧ì pomniejszana w miaræ losowania pytañ
  23. ;
  24. ; 4, 5 - informacje o numerach juº zadanych pytañ
  25. ; 6 - kopia informacji o liczbie pytañ do wylosowania - dla statystyki
  26. ; 7 - informacja o wÆa₧ciwej odpowiedzi numer 1
  27. ;     0 gdy wÆa₧ciwe jest NIE, 1 - gdy TAK
  28. ; 8 - jak wyºej dla odpowiedzi numer 2
  29. ; 9 - jak wyºej dla odpowiedzi numer 3
  30. ; 10 - liczba peÆnych odpowiedzi na pytania
  31. ; 11 - liczba waºona odpowiedzi czæ₧ciowych danych poprawnie
  32. ; 12 - liczba odpowiedzi czæ₧ciowych danych poprawnie
  33. ; 13 - caÆkowita liczba waºona odpowiedzi czæ₧ciowych
  34. ; 14 - caÆkowita liczba odpowiedzi czæ₧ciowych
  35. ; 20 do 29 - informacja o stanie przycisków odpowiedzi
  36. ; 100 do ... - numery stron zawierajåcych pytania
  37. ;
  38. ;
  39. ; Informacje o zawarto₧ci tej tablicy så wykorzystywane przez istniejåce
  40. ; juº procedury, dlatego teº nie trzeba ich we wÆasnym zakresie
  41. ; oprogramowywaì. Wszelkie zmiany wprowadzone w numeracji komórek i ich
  42. ; zawarto₧ci mogå powodowaì nieprawidÆowe dziaÆanie testu.
  43.  
  44.  
  45. ; inicjalizacja tablicy
  46. [procedure InitArray]
  47. @LoadCode('ARRAY.SYS');
  48. @C := 3;
  49. @ExecuteCode;
  50. @Return;
  51.  
  52. ; zainicjowanie ekranu 
  53. [procedure InitScreen]
  54. @A := 1;
  55. @DisableStatusBar;
  56. @SetColors(2,2);
  57. @Bar(0,0,639,479);
  58. @SetColors(8,15);
  59. @DrawButton(15,425,80,470,7,0,'KONIEC.RBM','Zakoñczenie testu');
  60. @DrawButton(130,425,350,470,3,30,'ARR4SZT.RBM','Akceptacja odpowiedzi');
  61. @UpArea(400,425,625,470,7);
  62. @DownArea(405,430,620,465,7);
  63. @DisableHypertext;
  64. @Return;
  65.  
  66. [procedure ResetujPola]
  67. @A := 20;
  68. @B := 0;
  69. @C := 1;
  70. @Repeat:10;
  71. @ExecuteCode;
  72. @A := %A + 1;
  73. @Next;
  74. @Return;
  75.  
  76. [procedure Procenty]
  77. @PushVariables;
  78. @A:=6;
  79. @C:=2;
  80. @ExecuteCode;
  81. @K:=%B;
  82. @A:=3;
  83. @ExecuteCode;
  84. @L:=%K-%B;
  85. @DownArea(405,430,620,465,7);
  86. @SetColors(5,5);
  87. @Bar(407,432,407+210*(%L/%K),463);
  88. @SetColors(15,15);
  89. @WriteString(400,425,625,470,'[%L*100/%K:0] %');
  90. @PopVariables;
  91. @Return;
  92.  
  93. ; narysowanie ekranu z miejscem na 2 odpowiedzi
  94. [procedure TwoAnswers]
  95. @DownArea(15,195,625,267,7)
  96. @UpArea(20,200,110,262,7);
  97. @SetPosition(30,204);
  98. @SetColors(0,15);
  99. @Picture('TAK_NIE.CGV');
  100. @DownArea(84,205,100,225,3);
  101. @DownArea(84,237,100,257,3);
  102. @UpArea(120,200,620,262,7);
  103. @SetInvisibleButton(84,205,100,225,20);
  104. @SetInvisibleButton(84,237,100,257,21);
  105. @DownArea(15,312,625,384,7);
  106. @UpArea(20,317,110,379,7);
  107. @SetPosition(30,321);
  108. @Picture('TAK_NIE.CGV');
  109. @DownArea(84,322,100,342,3);
  110. @DownArea(84,354,100,374,3);
  111. @UpArea(120,317,620,379,7);
  112. @SetInvisibleButton(84,322,100,342,22);
  113. @SetInvisibleButton(84,354,100,374,23);
  114. @Return;
  115.  
  116. ; to samo tylko dla 3 odpowiedzi
  117. [procedure ThreeAnswers]
  118. @DownArea(15,166,625,238,7);
  119. @UpArea(20,171,110,233,7);
  120. @SetPosition(30,175);
  121. @SetColors(0,15);
  122. @Picture('TAK_NIE.CGV');
  123. @DownArea(84,176,100,196,3);
  124. @DownArea(84,208,100,228,3);
  125. @UpArea(120,171,620,233,7);
  126. @SetInvisibleButton(84,176,100,196,24);
  127. @SetInvisibleButton(84,208,100,228,25);
  128. @DownArea(15,254,625,326,7);
  129. @UpArea(20,259,110,321,7);
  130. @SetPosition(30,263);
  131. @Picture('TAK_NIE.CGV');
  132. @DownArea(84,264,100,284,3);
  133. @DownArea(84,296,100,316,3);
  134. @UpArea(120,259,620,321,7);
  135. @SetInvisibleButton(84,264,100,284,26);
  136. @SetInvisibleButton(84,296,100,316,27);
  137. @DownArea(15,342,625,414,7);
  138. @UpArea(20,347,110,409,7);
  139. @SetPosition(30,351);
  140. @Picture('TAK_NIE.CGV');
  141. @DownArea(84,352,100,372,3);
  142. @DownArea(84,384,100,404,3);
  143. @UpArea(120,347,620,409,7);
  144. @SetInvisibleButton(84,352,100,372,28);
  145. @SetInvisibleButton(84,384,100,404,29);
  146. @Return;
  147.  
  148. ; wy₧wietlenie duºego znaku zapytania
  149. [procedure Question]
  150. @SetColors(2,2);
  151. @Bar(0,0,639,424);
  152. @If (%J = 2) Then Call:TwoAnswers;
  153. @If (%J = 3) Then Call:ThreeAnswers;
  154. @DownArea(15,15,625,140,7);
  155. @LoadPart(35,25,'QUESTCHR.RES');
  156. @SetColors(15,15);
  157. @SetPosition(150,40);
  158. @Return;
  159.  
  160. ; zapisanie numerów stron pierwszej i ostatniej z pytaniami
  161. [procedure SaveQuestionsPages]
  162. @A := 1;
  163. @B := %K;
  164. @C := 1;
  165. @ExecuteCode;
  166. @A := 2;
  167. @B := %L;
  168. @ExecuteCode;
  169. @Return;
  170.  
  171. ; zapisanie liczby losowanych pytañ - nie moºe byì ona wiæksza
  172. ; od liczby zdefiniowanych pytañ
  173. [procedure SaveQuestionsNumbers]
  174. @A := 3;
  175. @B := %K;
  176. @C := 1;
  177. @ExecuteCode;
  178. @A := 6;
  179. @ExecuteCode;
  180. @Return;
  181.  
  182. ; zapisanie informacji na potrzeby losowania pytañ
  183. [procedure FirstAndLastQuestion]
  184. @A := 4;
  185. @B := %K;
  186. @C := 1;
  187. @ExecuteCode;
  188. @A := 5;
  189. @B := %L;
  190. @C := 1;
  191. @Execute Code;
  192. @C := 1;
  193. @D := %L - %K + 1;
  194. @Repeat:%D;
  195. @A := %K;
  196. @B := %K;
  197. @ExecuteCode;
  198. @K := %K + 1;
  199. @Next;
  200. @Return;
  201.  
  202. ; narysowanie we wskazanym miejscu znaku zakre₧lenia opcji
  203. [procedure CrossOption]
  204. @Line(%A+2,%B+10,%A+5,%B+13);
  205. @Line(%A+6,%B+13,%A+13,%B+6);
  206. @Line(%A+3,%B+10,%A+5,%B+12);
  207. @Line(%A+6,%B+12,%A+12,%B+6);
  208. @Return;
  209.  
  210. ; wylosowanie numeru pytania
  211. [procedure GetQuestion]
  212. @A := 4;
  213. @C := 2;
  214. @ExecuteCode;
  215. @K := %B;
  216. @A := 5;
  217. @ExecuteCode;
  218. @L := %B;
  219. @Random(%K,%L,%D);
  220. @A := %D;
  221. @C := 2;
  222. @ExecuteCode;
  223. @E := %B;
  224. @A := %K;
  225. @C := 2;
  226. @ExecuteCode;
  227. @F := %B;
  228. @A := %D;
  229. @C := 1;
  230. @ExecuteCode;
  231. @A := 4;
  232. @B:=%K+1;
  233. @C := 1;
  234. @ExecuteCode;
  235. @A := 3;
  236. @C := 2;
  237. @ExecuteCode;
  238. @B := %B - 1;
  239. @C := 1;
  240. @ExecuteCode;
  241. @Return;
  242.  
  243. ; sprawdzenie ilo₧ci zadanych pytañ
  244. [procedure CheckQuestions]
  245. @A := 3;
  246. @C := 2;
  247. @ExecuteCode;
  248. @Return;
  249.  
  250. ; parametry odpowiedzi 1 - zapisanie informacji o prawidÆowej
  251. ; odpowiedzi (TAK lub NIE) przekazanej w zmiennej A (0 - NIE, 1 - TAK)
  252. [procedure Answer1]
  253. @If (%J = 2) Then Begin
  254. @SetPosition(130,210);
  255. @Else
  256. @SetPosition(130,181);
  257. @End;
  258. @B := %A;
  259. @A := 7;
  260. @C := 1;
  261. @ExecuteCode;
  262. @SetColors(0,14);
  263. @Return;
  264.  
  265. ; analogicznie dla odpowiedzi 2
  266. [procedure Answer2]
  267. @If (%J = 2) Then Begin
  268. @SetPosition(130,327);
  269. @Else
  270. @SetPosition(130,269);
  271. @End;
  272. @B := %A;
  273. @A := 8;
  274. @C := 1;
  275. @ExecuteCode;
  276. @SetColors(0,14);
  277. @Return;
  278.  
  279. ; analogicznie dla odpowiedzi 3
  280. [procedure Answer3]
  281. @B := %A;
  282. @A := 9;
  283. @C := 1;
  284. @ExecuteCode;
  285. @SetPosition(130,357);
  286. @SetColors(0,14);
  287. @Return;
  288.  
  289. [procedure SaveNewChoice]
  290. @G := %C;
  291. @H := %D;
  292. @C := 1;
  293. @ExecuteCode;
  294. @A := %G;
  295. @B := %H;
  296. @ExecuteCode; 
  297. @Return;
  298.  
  299. ; zapisanie poprawnej peÆnej odpowiedzi
  300. [procedure SaveBigPoint]
  301. @A := 10;
  302. @C := 2;
  303. @ExecuteCode;
  304. @B := %B + 1;
  305. @C := 1;
  306. @ExecuteCode;
  307. @Return;
  308.  
  309. ; zapisanie odpowiedzi czæ₧ciowej
  310. [procedure Save2SmallPoints]
  311. @A := 11;
  312. @C := 2;
  313. @ExecuteCode;
  314. @B := %B + (%F * 3);
  315. @C := 1;
  316. @ExecuteCode;
  317. @A := 12;
  318. @C := 2;
  319. @ExecuteCode;
  320. @B := %B + %F;
  321. @C := 1;
  322. @ExecuteCode;
  323. @Return;
  324.  
  325. ; zapisanie odpowiedzi czæ₧ciowej
  326. [procedure Save2AllSmall]
  327. @A := 13;
  328. @C := 2;
  329. @ExecuteCode;
  330. @B := %B + 6;
  331. @C := 1;
  332. @ExecuteCode;
  333. @A := 14;
  334. @C := 2;
  335. @ExecuteCode;
  336. @B := %B + 2;
  337. @C := 1;
  338. @ExecuteCode;
  339. @Return;
  340.  
  341. ; sprawdzenie poprawno₧ci odpowiedzi
  342. [procedure Save2Points]
  343. @F := 0;
  344. @If (%K = %G) Then Begin
  345. @If (%K <> %H) Then Begin
  346. @F := %F + 1;
  347. @End;
  348. @End;
  349. @If (%L = %D) Then Begin
  350. @If (%L <> %E) Then Begin
  351. @F := %F + 1;
  352. @End;
  353. @End;
  354. @If (%F = 2) Then Call:SaveBigPoint;
  355. @Call:Save2SmallPoints;
  356. @Call:Save2AllSmall;
  357. @Return;
  358.  
  359. ; zapisanie odpowiedzi czæ₧ciowej
  360. [procedure Save3SmallPoints]
  361. @A := 11;
  362. @C := 2;
  363. @ExecuteCode;
  364. @B := %B + (%J * 2);
  365. @C := 1;
  366. @ExecuteCode;
  367. @A := 12;
  368. @C := 2;
  369. @ExecuteCode;
  370. @B := %B + %J;
  371. @C := 1;
  372. @ExecuteCode;
  373. @Return;
  374.  
  375. ; zapisanie odpowiedzi czæ₧ciowej
  376. [procedure Save3AllSmall]
  377. @A := 13;
  378. @C := 2;
  379. @ExecuteCode;
  380. @B := %B + 6;
  381. @C := 1;
  382. @ExecuteCode;
  383. @A := 14;
  384. @C := 2;
  385. @ExecuteCode;
  386. @B := %B + 3;
  387. @C := 1;
  388. @ExecuteCode;
  389. @Return;
  390.  
  391. ; sprawdzenie poprawno₧ci odpowiedzi
  392. [procedure Save3Points]
  393. @A := 0;
  394. @If (%J = %D) Then Begin
  395. @If (%J <> %E) Then Begin
  396. @A := 1;
  397. @End;
  398. @End;
  399. @If (%K = %F) Then Begin
  400. @If (%K <> %G) Then Begin
  401. @A := %A + 1;
  402. @End;
  403. @End;
  404. @If (%L = %H) Then Begin
  405. @If (%L <> %I) Then Begin
  406. @A := %A + 1;
  407. @End;
  408. @End;
  409.  
  410. @J := %A;
  411. @If (%J = 3) Then Call:SaveBigPoint;
  412. @Call:Save3SmallPoints;
  413. @Call:Save3AllSmall;
  414. @Return;
  415.  
  416. ; wywoÆanie sprawdzania poprawno₧ci odpowiedzi
  417. [procedure CheckAnswers]
  418. @If (%J = 2) Then Begin
  419. @A := 7;
  420. @C := 2;
  421. @ExecuteCode;
  422. @K := %B;
  423. @A := 8;
  424. @ExecuteCode;
  425. @L := %B;
  426. @A := 20;
  427. @ExecuteCode;
  428. @G := %B;
  429. @A := 21;
  430. @ExecuteCode;
  431. @H := %B;
  432. @A := 22;
  433. @ExecuteCode;
  434. @D := %B;
  435. @A := 23;
  436. @ExecuteCode;
  437. @E := %B;
  438. @Call:Save2Points;
  439. @Else
  440. @A := 7;
  441. @C := 2;
  442. @ExecuteCode;
  443. @J := %B;
  444. @A := 8;
  445. @ExecuteCode;
  446. @K := %B;
  447. @A := 9;
  448. @ExecuteCode;
  449. @L := %B;
  450. @A := 24;
  451. @ExecuteCode;
  452. @D := %B;
  453. @A := 25;
  454. @ExecuteCode;
  455. @E := %B;
  456. @A := 26;
  457. @ExecuteCode;
  458. @F := %B;
  459. @A := 27;
  460. @ExecuteCode;
  461. @G := %B;
  462. @A := 28;
  463. @ExecuteCode;
  464. @H := %B;
  465. @A := 29;
  466. @ExecuteCode;
  467. @I := %B;
  468. @Call:Save3Points;
  469. @End;
  470. @Return;
  471.  
  472. ; poczåtek wykonywania pliku testu
  473. [1]
  474. @Call:InitArray;
  475. @Call:InitScreen;
  476. @DefKeyboardHandler(80);
  477. @ShowScreen;
  478.  
  479. ;**************************************************************************
  480. ; Informacje o pierwszej (K) i ostatniej (L) stronie z pytaniami
  481. @K := 100;
  482. @L := 104;
  483. ;**************************************************************************
  484.  
  485. @Call:SaveQuestionsPages;
  486. @Call:FirstAndLastQuestion;
  487.  
  488. ;**************************************************************************
  489. ; Liczba pytañ do losowania
  490. @K := 5;
  491. ;**************************************************************************
  492.  
  493. @Call:SaveQuestionsNumbers;
  494.  
  495. [10]
  496. @Call:CheckQuestions;
  497. @If (%B = 0) then GoTo:50;
  498. @DisableUserButtons;
  499. @Call:GetQuestion;
  500. @GoSub:%E;
  501. @SetColors(8,15);
  502. @SetButton(15,425,80,470,7,0,'KONIEC.RBM','Zakoñczenie testu');
  503. @SetButton(130,425,350,470,3,30,'ARR4SZT.RBM','Akceptacja odpowiedzi');
  504. @Call:Procenty;
  505. @SetColors(0,15);
  506. [11]
  507. @CheckEvents;
  508.  
  509. [procedure MouseUp]
  510. [19]
  511. @GetMousePosition;
  512. @if (%Z <> 0) then goto:19;
  513. @Return;
  514.  
  515. ; strony od 20 do 29 - dziaÆania na polach do zakre₧lenia przy odpowiedziach
  516. [20]
  517. @A := 84;
  518. @B := 205;
  519. @Call:CrossOption;
  520. @DownArea(84,237,100,257,3);
  521. @SetColors(0,15);
  522. @ReverseArea(30,205,80,225)
  523. @SetColors(15,0);
  524. @ReverseArea(30,237,80,257);
  525. @SetColors(0,15);
  526. @A := 20;
  527. @B := 1;
  528. @C := 21;
  529. @D := 0;
  530. @Call:SaveNewChoice;
  531. @Call:MouseUp;
  532. @GoTo:11;
  533.  
  534. [21]
  535. @A := 84;
  536. @B := 237;
  537. @Call:CrossOption;
  538. @DownArea(84,205,100,225,3);
  539. @SetColors(0,15);
  540. @ReverseArea(30,237,80,257)
  541. @SetColors(15,0);
  542. @ReverseArea(30,205,80,225);
  543. @SetColors(0,15);
  544. @A := 21;
  545. @B := 1;
  546. @C := 20;
  547. @D := 0;
  548. @Call:SaveNewChoice;
  549. @Call:MouseUp;
  550. @GoTo:11;
  551.  
  552. [22]
  553. @A := 84;
  554. @B := 322;
  555. @Call:CrossOption;
  556. @DownArea(84,354,100,374,3);
  557. @SetColors(0,15);
  558. @ReverseArea(30,322,80,342)
  559. @SetColors(15,0);
  560. @ReverseArea(30,354,80,374);
  561. @SetColors(0,15);
  562. @A := 22;
  563. @B := 1;
  564. @C := 23;
  565. @D := 0;
  566. @Call:SaveNewChoice;
  567. @Call:MouseUp;
  568. @GoTo:11;
  569.  
  570. [23]
  571. @A := 84;
  572. @B := 354;
  573. @Call:CrossOption;
  574. @DownArea(84,322,100,342,3);
  575. @SetColors(0,15);
  576. @ReverseArea(30,354,80,374)
  577. @SetColors(15,0);
  578. @ReverseArea(30,322,80,342);
  579. @SetColors(0,15);
  580. @A := 23;
  581. @B := 1;
  582. @C := 22;
  583. @D := 0;
  584. @Call:SaveNewChoice;
  585. @Call:MouseUp;
  586. @GoTo:11;
  587.  
  588. [24]
  589. @A := 84;
  590. @B := 176;
  591. @Call:CrossOption;
  592. @DownArea(84,208,100,228,3);
  593. @SetColors(0,15);
  594. @ReverseArea(30,176,80,196)
  595. @SetColors(15,0);
  596. @ReverseArea(30,208,80,228);
  597. @SetColors(0,15);
  598. @A := 24;
  599. @B := 1;
  600. @C := 25;
  601. @D := 0;
  602. @Call:SaveNewChoice;
  603. @Call:MouseUp;
  604. @GoTo:11;
  605.  
  606. [25]
  607. @A := 84;
  608. @B := 208;
  609. @Call:CrossOption;
  610. @DownArea(84,176,100,196,3);
  611. @SetColors(0,15);
  612. @ReverseArea(30,208,80,228)
  613. @SetColors(15,0);
  614. @ReverseArea(30,176,80,196);
  615. @SetColors(0,15);
  616. @A := 25;
  617. @B := 1;
  618. @C := 24;
  619. @D := 0;
  620. @Call:SaveNewChoice;
  621. @Call:MouseUp;
  622. @GoTo:11;
  623.  
  624. [26]
  625. @A := 84;
  626. @B := 264;
  627. @Call:CrossOption;
  628. @DownArea(84,296,100,316,3);
  629. @SetColors(0,15);
  630. @ReverseArea(30,264,80,284)
  631. @SetColors(15,0);
  632. @ReverseArea(30,296,80,316);
  633. @SetColors(0,15);
  634. @A := 26;
  635. @B := 1;
  636. @C := 27;
  637. @D := 0;
  638. @Call:SaveNewChoice;
  639. @Call:MouseUp;
  640. @GoTo:11;
  641.  
  642. [27]
  643. @A := 84;
  644. @B := 296;
  645. @Call:CrossOption;
  646. @DownArea(84,264,100,284,3);
  647. @SetColors(0,15);
  648. @ReverseArea(30,296,80,316)
  649. @SetColors(15,0);
  650. @ReverseArea(30,264,80,284);
  651. @SetColors(0,15);
  652. @A := 27;
  653. @B := 1;
  654. @C := 26;
  655. @D := 0;
  656. @Call:SaveNewChoice;
  657. @Call:MouseUp;
  658. @GoTo:11;
  659.  
  660. [28]
  661. @A := 84;
  662. @B := 352;
  663. @Call:CrossOption;
  664. @DownArea(84,384,100,404,3);
  665. @SetColors(0,15);
  666. @ReverseArea(30,352,80,372)
  667. @SetColors(15,0);
  668. @ReverseArea(30,384,80,404);
  669. @SetColors(0,15);
  670. @A := 28;
  671. @B := 1;
  672. @C := 29;
  673. @D := 0;
  674. @Call:SaveNewChoice;
  675. @Call:MouseUp;
  676. @GoTo:11;
  677.  
  678. [29]
  679. @A := 84;
  680. @B := 384;
  681. @Call:CrossOption;
  682. @DownArea(84,352,100,372,3);
  683. @SetColors(0,15);
  684. @ReverseArea(30,384,80,404)
  685. @SetColors(15,0);
  686. @ReverseArea(30,352,80,372);
  687. @SetColors(0,15);
  688. @A := 29;
  689. @B := 1;
  690. @C := 28;
  691. @D := 0;
  692. @Call:SaveNewChoice;
  693. @Call:MouseUp;
  694. @GoTo:11;
  695.  
  696. ; sprawdzenie odpowiedzi po naci₧niæciu przycisku '>>>>'
  697. ; lub klawisza <ENTER> na klawiaturze
  698. [30]
  699. @Call:CheckAnswers;
  700. ; resetowanie komórek zawierajåcych stan pól aktywnych odpowiedzi
  701. @Call:ResetujPola;
  702. @GoTo:10;
  703.  
  704. ; okienko statystyki testu (po jego zamkniæciu nastæpuje powrót do menu)
  705. [50]
  706. @DisableUserButtons;
  707. @DefKeyboardHandler(81);
  708. @DialogBox(150,150,490,300,7,'Statystyka testu');
  709. @SetColors(0,15);
  710. @SetPosition(170,191);
  711. @FastWrite('Liczba peÆnych odpowiedzi  :     /');
  712. @SetPosition(170,211);
  713. @FastWrite('Liczba punktów czæ₧ciowych :     /');
  714. @SetPosition(170,231);
  715. @FastWrite('Liczba punktów waºonych    :     /');
  716. @DrawButton(270,260,370,280,9,0,'Akceptacja','Zakoñczenie')
  717. @SetColors(15,15);
  718. @A := 10;
  719. @C := 2;
  720. @ExecuteCode;
  721. @WriteValue(396,190,428,198,0,0,%B);
  722. @A := 6;
  723. @ExecuteCode;
  724. @WriteValue(438,190,480,198,0,0,%B);
  725. @A := 12;
  726. @ExecuteCode;
  727. @WriteValue(396,210,428,218,0,0,%B);
  728. @A := 14;
  729. @ExecuteCode;
  730. @WriteValue(438,210,480,218,0,0,%B);
  731. @A := 11;
  732. @ExecuteCode;
  733. @WriteValue(396,230,428,238,0,0,%B);
  734. @A := 13;
  735. @ExecuteCode;
  736. @WriteValue(438,230,480,238,0,0,%B);
  737. @CheckEvents;
  738.  
  739. ; obsÆuga zdarzeñ pochodzåcych z klawiatury
  740. [80]
  741. @if (%Z = $011B) then goto:0;
  742. @if (%Z = $1C0D) then goto:30;
  743. @CheckEvents;
  744.  
  745. [81]
  746. @if (%Z = $011B) then goto:0;
  747. @if (%Z = $1C0D) then goto:0;
  748. @CheckEvents;
  749.  
  750. ;**************************************************************************
  751. ;**************************************************************************
  752. ;**************************************************************************
  753.  
  754. ; na stronach 100 - 104 (w tym przykÆadzie) definicja pytañ i odpowiedzi
  755. ; - kaºda strona musi posiadaì wszystkie wykazane na nich elementy
  756. ; i musi byì zakoñczona poleceniem RETURN
  757.  
  758.  
  759. [100]
  760. ; okre₧lenie liczby odpowiedzi w zmiennej J (dopuszczalne warto₧ci to 2 lub 3)
  761. @J := 3;
  762. @Call:Question;
  763. Pytanie numer 1
  764.  
  765. ; w zmiennej A okre₧lenie poprawno₧ci odpowiedzi
  766. ; w tym przypadku odpowiedª TAK (A = 1)
  767. @A := 1;
  768. @Call:Answer1;
  769. Odpowiedz numer jeden
  770. Linia druga odpowiedzi
  771. No i linia trzecia
  772.  
  773. ; analogicznie dla odpowiedzi 2
  774. @A := 1;
  775. @Call:Answer2;
  776. Odpowiedz numer dwa
  777. Linia druga odpowiedzi
  778. No i linia trzecia
  779.  
  780. ; i trzeciej
  781. @A := 1;
  782. @Call:Answer3;
  783. Odpowiedz numer trzy
  784. Linia druga odpowiedzi
  785. No i linia trzecia
  786.  
  787. ; kaºda strona z pytaniem musi koñczyì siæ poleceniem RETURN
  788. @Return;
  789.  
  790.  
  791. [101]
  792. @J := 2;
  793. @Call:Question;
  794. Pytanie numer 2
  795.  
  796. @A := 0;
  797. @Call:Answer1;
  798. Odpowiedz numer jeden
  799. Linia druga odpowiedzi
  800. No i linia trzecia
  801.  
  802. @A := 0;
  803. @Call:Answer2;
  804. Odpowiedz numer dwa
  805. Linia druga odpowiedzi
  806. No i linia trzecia
  807. @Return;
  808.  
  809.  
  810. [102]
  811. @J := 3;
  812. @Call:Question;
  813. Pytanie numer 3
  814.  
  815. @A := 0;
  816. @Call:Answer1;
  817. Odpowiedz numer jeden
  818. Linia druga odpowiedzi
  819. No i linia trzecia
  820.  
  821. @A := 0;
  822. @Call:Answer2;
  823. Odpowiedz numer dwa
  824. Linia druga odpowiedzi
  825. No i linia trzecia
  826.  
  827. @A := 0;
  828. @Call:Answer3;
  829. Odpowiedz numer trzy
  830. Linia druga odpowiedzi
  831. No i linia trzecia
  832. @Return;
  833.  
  834.  
  835. [103]
  836. @J := 2;
  837. @Call:Question;
  838. Pytanie numer 4
  839.  
  840. @A := 1;
  841. @Call:Answer1;
  842. Odpowiedz numer jeden
  843. Linia druga odpowiedzi
  844. No i linia trzecia
  845.  
  846. @A := 1;
  847. @Call:Answer2;
  848. Odpowiedz numer dwa
  849. Linia druga odpowiedzi
  850. No i linia trzecia
  851. @Return;
  852.  
  853.  
  854. [104]
  855. @J := 3;
  856. @Call:Question;
  857. Pytanie numer 5
  858.  
  859. @A := 0;
  860. @Call:Answer1;
  861. Odpowiedz numer ~jeden~
  862. Linia druga odpowiedzi
  863. No i linia trzecia
  864.  
  865. @A := 0;
  866. @Call:Answer2;
  867. Odpowiedz numer dwa
  868. Linia ~druga~ odpowiedzi
  869. No i linia trzecia
  870.  
  871. @A := 0;
  872. @Call:Answer3;
  873. Odpowiedz numer trzy
  874. Linia druga odpowiedzi
  875. No i linia ~trzecia~
  876. @Return