Subversion Repositories Kolibri OS

Rev

Rev 5230 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. //Leency 06.10.2011, Flood-it! v2.41, GPL
  2.  
  3. #include "lib\kolibri.h"
  4. #include "lib\random.h"
  5.  
  6. #ifndef AUTOBUILD
  7. #include "lang.h--"
  8. #endif
  9.  
  10. system_colors sc;
  11. proc_info Form;
  12. dword stak[100]; //îêíî ïîìîùè
  13.  
  14. //óðîâíè ñëîæíîñòè
  15. int DIFFICULTY_LEV_PARAMS[]={ 28, 14, 25,  //ëåãêî
  16.                               17, 28, 50}; //òÿæåëî
  17.                                                          
  18. //ïî-óìîë÷àíèþ "ëåãêî"
  19. int BLOCK_SIZE = 28; //ðàçìåð êâàäðàòèêà
  20. int BLOCKS_NUM = 14; //êîëè÷åñòâî êâàäðàòèêîâ ïî Õ è ïî Y
  21. int MAX_CLICKS = 25; //ìàêñèìàëüíîå êîëè÷åñòâî êëèêîâ äî âûèãðûøà
  22.  
  23. int CLICKS = 0;      //ñêîëüêî õîäîâ óæå ñäåëàë èãðîê
  24.  
  25. #define USER_PANEL_WIDTH 119
  26.  
  27. //øåñòü öâåòîâ èñïîëüçóåòñÿ â èãðå äëÿ êâàäðàòèêîâ, ñåäüìîé æå (ïîñëåäíèé) äëÿ òîãî,
  28. //÷òîáû îòìåòèòü êâàäðàòèêè â ïðîöåññå çàëèâêè
  29. dword FIELD_COLORS[]= {0xf18db6, 0x605ca8, 0xfddc80, 0xdc4a20, 0x46b1e2, 0x7e9d1e,   0x232323, 0};
  30. char *BOARD_SIZES[]={ "S", "L", 0 };
  31.  
  32.  
  33. #ifdef LANG_RUS
  34.         char *BUTTON_CAPTIONS[]={ " ‡ ­®¢® [F2]", " ®¬®éì [F1]", " ‚ë室 [Esc]", 0};
  35.         char CLICKS_TEXT[]=" Š«¨ª¨:   /";
  36.         char LEVELS_TEXT[]="®«¥:";
  37.        
  38.         char HELP_WINDOW_CAPTION[]="®¬®éì";
  39.         char *HELP_TEXT[]={     "Š ª ¨£à âì ¢® Flood-it?",
  40.         "",
  41.         "‡ ¯®«­¨â¥ ¯®«¥ ®¤­¨¬ 梥⮬ §  ®£à ­¨ç¥­­®¥ ç¨á«® 室®¢.",
  42.         "ˆ£à  ­ ç¨­ ¥âáï á ¢¥àå­¥© «¥¢®© ª«¥âª¨. ‚ë¡¥à¨â¥ 梥â, ­ ¦ ¢ ­  ®¤¨­ ¨§",
  43.         "ª¢ ¤à â¨ª®¢ á«¥¢ , ¨ ª«¥âª¨ ®ªà áïâáï í⨬ 梥⮬ - â ª ¢ë ¯à¨á®¥¤¨­¨â¥",
  44.         "á®á¥¤­¨¥ ª«¥âª¨ ⮩ ¦¥ ®ªà áª¨. ‡ å¢ â¨âì ¯®«¥ ­ã¦­® §  ¬¨­¨¬ «ì­®¥",
  45.         "ç¨á«® 室®¢. ®è £®¢ ï áâà â¥£¨ï á ¨­â¥à¥á­ë¬ ¯à¨­æ¨¯®¬ - ¨§¬¥­¨áì,",
  46.         "çâ®¡ë ¯®¡¥¤¨âì!",
  47.         "",
  48.         "ˆ£à âì â ª¦¥ ¬®¦­® ª« ¢¨è ¬¨:",
  49.         "[Q] [W] [E]",
  50.         "[A] [S] [D]",
  51.         0};
  52. #elif LANG_EST
  53.         char *BUTTON_CAPTIONS[]={ "Uus mäng [F2]", "Abi      [F1]", "Välju   [Esc]", 0};
  54.         char CLICKS_TEXT[]="Klikki:   /";
  55.         char LEVELS_TEXT[]="Väli:";
  56.        
  57.         char HELP_WINDOW_CAPTION[]="Help";
  58.         char *HELP_TEXT[]={     "Kuidas mängida mängu Flood-it?",
  59.         "",
  60.         "Ujuta kogu mänguväli üle ühe värviga lubatud käikude arvuga.",
  61.         "Mängu alustad ülemisest vasakust nurgast ja edened valides ühe värvi",
  62.         "vajutades nuppudele vasakul. Kui sa muudad värvi pragusel alal,",
  63.         "siis iga kokkupuutuv sama värv muutub samaks. Nii saad ujutada",
  64.         "teised alad mänguväljal üle. Valida saad 2 mänguvälja suuruse",
  65.         "vahel. Proovi väli üle ujutada etteandtud käikude arvuga!",
  66.         "Kaasahaarav ja lõbus!",
  67.         "",
  68.         "Mängida saab ka klaviatuuriga:",
  69.         "[Q] [W] [E]",
  70.         "[A] [S] [D]",
  71.         0};
  72. #else
  73.         char *BUTTON_CAPTIONS[]={ "New Game [F2]", "Help     [F1]", "Exit    [Esc]", 0};
  74.         char CLICKS_TEXT[]="Clicks:   /";
  75.         char LEVELS_TEXT[]="Board:";
  76.        
  77.         char HELP_WINDOW_CAPTION[]="Help";
  78.         char *HELP_TEXT[]={     "How to play Flood-it?",
  79.         "",
  80.         "Flood the whole board with one color within the allowed steps.",
  81.         "You start from the top left corner and progress by selecting one",
  82.         "of the colored buttons on the left. When you change your current area",
  83.         "color, every adjacent square with the same color also changes, that",
  84.         "way you can flood other areas of the board. Select from 3 sizes of",
  85.         "the board and try to flood-it in the least amount of steps!",
  86.         "Addictive and Fun!",
  87.         "",
  88.         "You can also play with keyboard:",
  89.         "[Q] [W] [E]",
  90.         "[A] [S] [D]",
  91.         0};
  92. #endif
  93.  
  94.  
  95. unsigned char color_matrix[28*28]; //öâåòà äëÿ ïîëÿ ñ êâàäðàòèêàìè
  96.  
  97. unsigned char loss_matrix[14*14]={
  98. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  99. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  100. 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 2,
  101. 2, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 3, 2, 2,
  102. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2,
  103. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2,
  104. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2,
  105. 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 2,
  106. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2,
  107. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2,
  108. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2,
  109. 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 2,
  110. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  111. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
  112. };
  113.  
  114. unsigned char win_matrix[14*14]={
  115. 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  116. 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  117. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 1, 4,
  118. 4, 1, 4, 1, 4, 1, 4, 4, 4, 1, 4, 4, 1, 4,
  119. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 4, 1, 4,
  120. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 4,
  121. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 1, 4,
  122. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 1, 4,
  123. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 1, 4,
  124. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 1, 4,
  125. 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 1, 4,
  126. 4, 4, 1, 4, 1, 4, 4, 1, 4, 1, 4, 4, 1, 4,
  127. 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  128. 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
  129. };
  130.  
  131. void main()
  132. {  
  133.         int key, id;
  134.        
  135.         new_game();
  136.    
  137.         loop()
  138.         {
  139.                 switch(WaitEvent())
  140.                 {
  141.                         case evButton:
  142.                                 id = GetButtonID();
  143.                                 IF (id==1) || (id==4) ExitProcess();
  144.                                 IF (id==2) goto _NEW_GAME_MARK;
  145.                                 IF (id==3) goto _HELP_MARK;
  146.                                 IF (id>=100)
  147.                                 {
  148.                                         make_turn(id-100);
  149.                                         break;
  150.                                 }
  151.                                 if (id>=10)
  152.                                 {
  153.                                         id=id-10*3;
  154.                                        
  155.                                         IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[id]) break; //âûáðàí òîò æå ðàçìåð
  156.                                        
  157.                                         BLOCK_SIZE = DIFFICULTY_LEV_PARAMS[id]; //ðàçìåð êâàäðàòèêà
  158.                                         BLOCKS_NUM = DIFFICULTY_LEV_PARAMS[id+1]; //êîëè÷åñòâî êâàäðàòèêîâ ïî Õ è ïî Y
  159.                                         MAX_CLICKS = DIFFICULTY_LEV_PARAMS[id+2]; //ìàêñèìàëüíîå êîëè÷åñòâî êëèêîâ äî âûèãðûøà
  160.                                        
  161.                                         new_game();
  162.                                        
  163.                                         MoveSize(-1, -1, BLOCK_SIZE*BLOCKS_NUM +14+USER_PANEL_WIDTH, BLOCK_SIZE*BLOCKS_NUM +GetSkinHeight()+14);
  164.                                 }
  165.                                 break;
  166.                         case evKey:
  167.                                 key = GetKeyScancode();
  168.                                 IF (key==01) //Escape
  169.                                          ExitProcess();
  170.                                 IF (key==59) //F1
  171.                                 {
  172.                                         _HELP_MARK:
  173.                                                 CreateThread(#help,#stak);
  174.                                 }
  175.                                 IF (key==60) //F2
  176.                                 {
  177.                                         _NEW_GAME_MARK:
  178.                                                 new_game();
  179.                                                 draw_clicks_num();
  180.                                                 draw_field();
  181.                                 }
  182.                                 IF (key==16) make_turn(0); //Q
  183.                                 IF (key==17) make_turn(1); //W
  184.                                 IF (key==18) make_turn(2); //E
  185.                                 IF (key==30) make_turn(3); //A
  186.                                 IF (key==31) make_turn(4); //S
  187.                                 IF (key==32) make_turn(5); //D
  188.                                 break;
  189.                         case evReDraw:
  190.                                 draw_window();
  191.                 }
  192.         }
  193. }
  194.  
  195.  
  196. void make_turn(int turn_id)
  197. {
  198.         IF (color_matrix[0]==turn_id) return; //åñëè öâåò ïåðâîé ôèøêè òàêîé æå, èãíîðèðóåì áåññìûñëåííûé õîä
  199.         IF (CLICKS>=MAX_CLICKS) return; //åñëè èãðà çàêîí÷åíà
  200.        
  201.         CLICKS++;
  202.         draw_clicks_num();
  203.        
  204.         fill_field(turn_id);
  205.         draw_field();
  206.         check_for_end(); //åñëè èãðà çàêîí÷åíà 
  207. }
  208.  
  209.  
  210. void draw_window()
  211. {
  212.         int i, j;
  213.         #define BUTTON_SIZE 28
  214.        
  215.         sc.get();
  216.                
  217.         DefineAndDrawWindow(300,176, BLOCK_SIZE*BLOCKS_NUM +14+USER_PANEL_WIDTH, BLOCK_SIZE*BLOCKS_NUM +GetSkinHeight()+14, 0x74,sc.work,0,0,"Flood-it!");
  218.        
  219.         //ïðîâåðÿåì íå ñõëîïíóòî ëè îêíî â çàãîëîâîê
  220.         GetProcessInfo(#Form, SelfInfo);
  221.         IF (Form.status_window==4) return;
  222.        
  223.         //çàêðàøèâàåì ôîí -> óìåíüøàåò ïåðåðèñîâêó
  224.         for (i=0;i<=4;i++)
  225.         {
  226.                 IF (i<>4)
  227.                         DrawRegion(USER_PANEL_WIDTH+i-5,i, BLOCK_SIZE*BLOCKS_NUM +9-i-i, BLOCK_SIZE*BLOCKS_NUM+9-i-i, sc.work);
  228.                 else
  229.                         DrawRegion(USER_PANEL_WIDTH+i-5,i, BLOCK_SIZE*BLOCKS_NUM +9-i-i, BLOCK_SIZE*BLOCKS_NUM+9-i-i, sc.work_graph); //îáîäîê
  230.         }
  231.         DrawBar(0,0, USER_PANEL_WIDTH-5, BLOCK_SIZE*BLOCKS_NUM+10, sc.work);
  232.        
  233.         //êíîïî÷êè çàëèâêè
  234.         for (i=0;i<2;i++)
  235.                 for (j=0;j<3;j++)
  236.                         DefineButton(j*BUTTON_SIZE+17,i*BUTTON_SIZE+15,BUTTON_SIZE,BUTTON_SIZE, i*3+j+100,FIELD_COLORS[i*3+j]);
  237.  
  238.         //êíîïî÷êè äåéñòâèé
  239.         for (j=0;j<3;j++)
  240.         {
  241.                 DefineButton(17,j*25+120, 13*6+6, 20, j+2,sc.work_button);
  242.                 WriteText(17+4,j*25+127,0x80,sc.work_button_text,BUTTON_CAPTIONS[j],0);
  243.         }
  244.  
  245.         //êíîïî÷êè âûáîðà óðîâíÿ ñëîæíîñòè
  246.         WriteText(17,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,sc.work_text,#LEVELS_TEXT,0);
  247.         for (j=0;j<2;j++)
  248.         {
  249.                 DefineButton(j*25+56,BLOCKS_NUM*BLOCK_SIZE-20, 20,20, j+10,sc.work_button);
  250.                
  251.                 IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[j*3]) EDI=0x800080;
  252.                         else EDI=sc.work_button_text;
  253.                
  254.                 WriteText(j*25+56+8,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,EDI,BOARD_SIZES[j],0);
  255.                 WriteText(j*25+56+9,BLOCKS_NUM*BLOCK_SIZE-20+7,0x80,EDI,BOARD_SIZES[j],0);
  256.         }
  257.        
  258.         draw_clicks_num();
  259.        
  260.         draw_field();
  261.  
  262. }
  263.  
  264.  
  265. void new_game()
  266. {
  267.         int i;
  268.        
  269.         CLICKS = 0;
  270.        
  271.         for (i=0;i<BLOCKS_NUM*BLOCKS_NUM;i++)
  272.                         color_matrix[i] = random(6);
  273. }
  274.  
  275.  
  276. void fill_field(int new_color_id)
  277. {
  278.         int i, j,
  279.         old_color_id=color_matrix[0],
  280.         restart;
  281.         #define MARKED 6
  282.        
  283.         color_matrix[0]=MARKED;
  284.        
  285.         _RESTART_MARK:
  286.        
  287.         restart=0;
  288.        
  289.         for (i=0;i<BLOCKS_NUM;i++)
  290.                 for (j=0;j<BLOCKS_NUM;j++)
  291.                 {
  292.                         IF (color_matrix[i*BLOCKS_NUM+j]<>old_color_id) continue; //åñëè ôèøêà íå íóæíîãî öâåòà èä¸ì äàëüøå
  293.                         IF (color_matrix[i*BLOCKS_NUM+j]==MARKED) continue; //åñëè ôèøêà óæå îòìå÷åíà, èä¸ì äàëåå
  294.                        
  295.                         IF (j>0) && (color_matrix[i*BLOCKS_NUM+j-1]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì ëåâûé
  296.                         IF (i>0) && (color_matrix[i-1*BLOCKS_NUM+j]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì âåðõíèé
  297.                         IF (j<BLOCKS_NUM-1) && (color_matrix[i*BLOCKS_NUM+j+1]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì ïðàâûé
  298.                         IF (i<BLOCKS_NUM-1) && (color_matrix[i+1*BLOCKS_NUM+j]==MARKED) color_matrix[i*BLOCKS_NUM+j]=MARKED; //ñìîòðèì íèæíèé
  299.                        
  300.                         IF (color_matrix[i*BLOCKS_NUM+j]==MARKED) restart=1; //åñëè ôèøêó îòìåòèëè, òî ïîòîì öèêë íóæíî áóäåò ïðîêðóòèòü ñíà÷àëà - ìîæ åù¸ ÷¸ îòìåòèì
  301.                 }
  302.         IF (restart) goto _RESTART_MARK;
  303.  
  304.         for (i=0;i<BLOCKS_NUM*BLOCKS_NUM;i++)
  305.                         IF (color_matrix[i]==MARKED) color_matrix[i]=new_color_id;
  306. }
  307.  
  308.  
  309. int check_for_end()
  310. {
  311.         int i, j, ii, jj;
  312.  
  313.         if (CLICKS>=MAX_CLICKS) //åñëè ïðîèãðûø
  314.         {
  315.                 IF (CLICKS==MAX_CLICKS) //âûèãðûøü íà ïîñëåäíåì õîäå
  316.                 {
  317.                         for (i=0;i<BLOCKS_NUM*BLOCKS_NUM;i++) //ïðîâåðÿåì âñ¸ ëè ïîëå îäíîãî öâåòà, åñëè íåò óõîäèì
  318.                                         IF (color_matrix[i]<>color_matrix[0]) goto _loss_MARK;
  319.                         goto _WIN_MARK;
  320.                 }
  321.                
  322.                 _loss_MARK:
  323.                
  324.                 for (i=0;i<14;i++)
  325.                         for (j=0;j<14;j++)
  326.                         {
  327.                                 IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[0])
  328.                                 {
  329.                                         ii=i;
  330.                                         jj=j;
  331.                                 }
  332.                                 else
  333.                                 {
  334.                                         ii=i*2;
  335.                                         jj=j*2;
  336.                                 }
  337.                                 color_matrix[ii*BLOCKS_NUM+jj]=loss_matrix[i*14+j];
  338.                                 color_matrix[ii+1*BLOCKS_NUM+jj]=loss_matrix[i*14+j];
  339.                                 color_matrix[ii*BLOCKS_NUM+jj+1]=loss_matrix[i*14+j];
  340.                                 color_matrix[ii+1*BLOCKS_NUM+jj+1]=loss_matrix[i*14+j];
  341.                                 draw_field();
  342.                                 //Pause(5);                            
  343.                         }      
  344.                        
  345.                 return 1;
  346.         }
  347.        
  348.         for (i=0;i<BLOCKS_NUM*BLOCKS_NUM;i++) //ïðîâåðÿåì âñ¸ ëè ïîëå îäíîãî öâåòà, åñëè íåò óõîäèì
  349.                         IF (color_matrix[i]<>color_matrix[0]) return 0;
  350.  
  351.         //âñ¸ ïîëå îäíîãî öâåòà è ôèøåê ìåíüøå MAX_CLICKS -> ïîáåäà
  352.        
  353.         _WIN_MARK:
  354.        
  355.         for (i=0;i<25;i++)
  356.         {
  357.                 new_game();
  358.                 draw_field();
  359.                 Pause(7);
  360.         }
  361.  
  362.         CLICKS=MAX_CLICKS;
  363.        
  364.         for (i=0;i<14;i++)
  365.                 for (j=0;j<14;j++)
  366.                 {
  367.                         IF (BLOCK_SIZE == DIFFICULTY_LEV_PARAMS[0]) //çàëèâêà äëÿ ïîëåé ðàçíîãî ðàçìåðà ðàçíàÿ
  368.                         {
  369.                                 ii=i;
  370.                                 jj=j;
  371.                         }
  372.                         else
  373.                         {
  374.                                 ii=i*2;
  375.                                 jj=j*2;
  376.                         }
  377.                         color_matrix[ii*BLOCKS_NUM+jj]=win_matrix[i*14+j];
  378.                         color_matrix[ii+1*BLOCKS_NUM+jj]=win_matrix[i*14+j];
  379.                         color_matrix[ii*BLOCKS_NUM+jj+1]=win_matrix[i*14+j];
  380.                         color_matrix[ii+1*BLOCKS_NUM+jj+1]=win_matrix[i*14+j];
  381.                         draw_field();
  382.                         //Pause(5);                            
  383.                 }      
  384.         return 1;
  385. }
  386.  
  387.  
  388. void draw_clicks_num()
  389. {
  390.         #define TEXT_X 21
  391.         #define TEXT_Y 92
  392.        
  393.         DrawBar(TEXT_X, TEXT_Y, USER_PANEL_WIDTH-TEXT_X-3,9, sc.work);
  394.        
  395.         WriteText(TEXT_X,TEXT_Y,0x80,sc.work_text,#CLICKS_TEXT,0);
  396.  
  397.         IF (CLICKS<10) EBX=9*6+TEXT_X;
  398.                 else EBX=8*6+TEXT_X;
  399.        
  400.         WriteText(EBX,TEXT_Y,0x80,sc.work_text,IntToStr(CLICKS),0);
  401.        
  402.         WriteText(11*6+TEXT_X,TEXT_Y,0x80,sc.work_text,IntToStr(MAX_CLICKS),0);
  403. }
  404.  
  405.  
  406. void draw_field()
  407. {
  408.         int i, j;
  409.         int color_id;
  410.        
  411.         for (i=0;i<BLOCKS_NUM;i++)
  412.                 for (j=0;j<BLOCKS_NUM;j++)
  413.                 {
  414.                         color_id = color_matrix[i*BLOCKS_NUM+j];
  415.                         DrawBar(j*BLOCK_SIZE+USER_PANEL_WIDTH, i*BLOCK_SIZE+5, BLOCK_SIZE,BLOCK_SIZE, FIELD_COLORS[color_id]);
  416.                 }
  417. }
  418.  
  419.  
  420. void help()
  421. {  
  422.         int i;
  423.        
  424.         loop() switch (WaitEvent())
  425.         {
  426.                 case evButton:
  427.                                 ExitProcess();
  428.                 case evKey:
  429.                                 IF (GetKeyScancode()==001) ExitProcess(); //Esc
  430.                                 break;
  431.                 case evReDraw:
  432.                                 for (i=0; HELP_TEXT[i]<>0; i++;) {};
  433.                                 DefineAndDrawWindow(400,200,610,i*19+25+GetSkinHeight(),0x34,sc.work,0,0,#HELP_WINDOW_CAPTION);
  434.                                 WriteText(6,12,0x90,sc.work_text,HELP_TEXT[0],0); //ýòî äëÿ æèðíîãî øðèôòà
  435.                                 for (i=0; HELP_TEXT[i]<>0; i++;) WriteText(5,i*19+12,0x90,sc.work_text,HELP_TEXT[i],0);
  436.         }
  437. }
  438.  
  439.  
  440. stop: