home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 February / VPR9602A.ISO / ffilly / hb_test / hb_main.tfy < prev    next >
Text File  |  1995-09-15  |  28KB  |  1,108 lines

  1. #include "hb_info.tfy"
  2.  
  3. int nPic0, nPic1, nPic2, nWin0, nMax, nYouNum, nComNum, nTurn, nUso, nWav, nWP_a, nWP_b, nLevel, nHit3a, nHit3b, nMax2, nUseWave, nLoop;
  4. int SRCCOPY, SRCERASE, SRCINVERT, SRCAND;
  5. int nTable[], nWAV_Buf[], nTable2[];
  6. int nNum[];
  7. str sKachiMake;
  8.  
  9. main(){
  10.     SRCCOPY = 0xCC0020;
  11.     SRCERASE = 0x440328;
  12.     SRCINVERT = 0x660046;
  13.     SRCAND = 0x8800C6;
  14.  
  15.     nLoop = 1;
  16.     nUseWave = 1;        // 0以外でWAV使用。
  17.  
  18.     nPic0 = LoadPic( "hb_back.bmp" );    // 実際に表示される画面
  19.     nPic1 = LoadPic( "hb_back.bmp" );    // 文字消去用
  20.  
  21.     voice( -1 );    // 引数が-1だと初期化
  22.  
  23.     mes( TIME ){
  24.         if( nLoop ){
  25.             nLoop = 0;
  26.             main00();
  27.         }
  28.     }
  29. }
  30.  
  31. main00(){
  32.     int nI;
  33.  
  34.     nYouNum = 0;
  35.     nComNum = 0;
  36.     nTurn = 0;
  37.     nHit3a = 0;
  38.     nHit3b = 0;
  39.     nUso = 0;
  40.     sKachiMake = "";
  41.  
  42.     CapTitle( "対戦型数当てゲーム「ヒット・アンド・ブロー」" );
  43.     nWin0 = OpenWin( nPic0 );
  44.  
  45.     BackMode( 1 );
  46.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  47.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  48.     center_print( "しばらくお待ちください。", nPic0, 256 );
  49.     voice( 20 );
  50.     MovePic( nPic1, 112, 16, 192, 208, nPic0, 112, 16 );
  51.     MovePic( nPic1, 112, 16, 192, 208, nPic0, 332, 16 );
  52.     MovePic( nPic1, 16, 56, 65, 160, nPic0,  16, 40 );
  53.     MovePic( nPic1, 16, 56, 65, 160, nPic0, 560, 40 );
  54.  
  55.     make_table();
  56.  
  57.     if( nUseWave ){
  58.         mes( TIME ){
  59.             if( nWav == 0 ){
  60.                 main_01();
  61.                 del_me;
  62.             }
  63.         }
  64.     } else {
  65.         main_01();
  66.     }
  67. }
  68.  
  69. main_01(){
  70.     int nI, nJ, nK, nN, nNumNew, nNumOld;
  71.     str sMode[];
  72.  
  73.     nNumNew = -2;
  74.     nNumOld = nNumNew;
  75.     nN = 0;
  76.  
  77.     sMode[ 0 ]  = "特訓";
  78.     sMode[ 1 ]  = "標準";
  79.     sMode[ 2 ]  = "上級";
  80.  
  81.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 800 );
  82.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  83.     shadow_print( "あなた", nPic0, 576, 16, 2, "R" );
  84.     shadow_print( "COM", nPic0, 16, 16, 2, "R" );
  85.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  86.     center_print( "0:特訓モード、1:標準モード、2:上級モード", nPic0, 240 );
  87.     center_print( "“0”か“1”か“2”をクリックして下さい。", nPic0, 272 );
  88.  
  89.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  90.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  91.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  92.     }
  93.  
  94.     mes( MOUSEMOVE ){
  95.         if( MesP2 < 192 && MesP3 >= 308 ){
  96.             nNumNew = MesP2 / 64;
  97.         } else {
  98.             nNumNew = -2;
  99.         }
  100.         if( nNumNew != nNumOld ){
  101.             TextColor( 255, 255, 255 );
  102.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  103.             TextColor( 255, 255, 0 );
  104.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  105.             nNumOld = nNumNew;
  106.         }
  107.     }
  108.  
  109.     mes( LBDOWN ){
  110.         if( MesP2 < 192 && MesP3 >= 308 ){
  111.             TextColor( 255, 0, 0 );
  112.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  113.             nLevel = nNumNew;
  114.             CloseWin( nWin0 );
  115.             CapTitle( "対戦型数当てゲーム「ヒット・アンド・ブロー」(" + sMode[ nLevel ] + ")" );
  116.             nWin0 = OpenWin( nPic0 );
  117.             if( nNumNew <= 1 ){
  118.                 del_us;
  119.                 main_02a();
  120.                 del_me;
  121.             } else {
  122.                 del_us;
  123.                 main_02b();
  124.                 del_me;
  125.             }
  126.         }
  127.     }
  128. }
  129.  
  130. main_02a(){
  131.     int nFlag_02a, nNumNew, nNumOld, nCount;
  132. //    int nNum[];
  133.  
  134.     nFlag_02a = 0;
  135.     nNumNew = -2;
  136.     nNumOld = nNumNew;
  137.     nCount = 0;
  138.  
  139.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  140.         nNum[ nI ] = -1;
  141.     }
  142.  
  143.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  144.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  145.     center_print( "あなたの考えた3桁の数字を入力してください。(最初が0でも可)", nPic0, 240 );
  146.     center_print( "同じ数字を2度以上使ってはいけません。", nPic0, 272 );
  147.  
  148.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  149.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  150.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  151.     }
  152.  
  153.     mes( MOUSEMOVE ){
  154.         if( MesP3 >= 308 ){
  155.             nNumNew = MesP2 / 64;
  156.             if( nNum[ nNumNew ] == 0 ){
  157.                 nNumNew = -2;
  158.             }
  159.         } else {
  160.             nNumNew = -2;
  161.         }
  162.         if( nNumNew != nNumOld ){
  163.             TextColor( 255, 255, 255 );
  164.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  165.             TextColor( 255, 255, 0 );
  166.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  167.             nNumOld = nNumNew;
  168.         }
  169.     }
  170.  
  171.     mes( LBUP ){
  172.             nFlag_02a = -1;
  173.     }
  174.  
  175.     mes( LBDOWN ){
  176.         if( nFlag_02a && MesP3 >= 308 && nNumNew >= 0 && nNum[ nNumNew ] ){
  177.             nNum[ nNumNew ] = 0;
  178.             nNumOld = -2;
  179.             TextColor( 255, 255, 255 );
  180.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  181.             for( nI = 0 ; nI <= 96 ; nI = nI + 4 ){
  182.                 MovePic( nPic0, nNumNew * 64, 304, 64, 96, nPic0, nNumNew * 64, 308 );
  183.             }
  184.             MovePic( nPic1, 8, 8, 64, 128, nPic1, 332, 8 );
  185.             shadow_print( StrPrint( "%ld", nNumNew ), nPic1, 332, 8, 4 );
  186.             for( nI =0 ; nI <= 96 ; nI = nI + 4 ){
  187.                 MovePic( nPic1, 332, 120 - nI, 64, nI, nPic0, 332 + nCount * 64, 16 );
  188.             }
  189.             nCount = nCount + 1;
  190.             if( nCount == 1 ){
  191.                 nYouNum = nYouNum + nNumNew * 100;
  192.             } else { if( nCount == 2 ){
  193.                 nYouNum = nYouNum + nNumNew * 10;
  194.             } else { if( nCount == 3 ){
  195.                 nYouNum = nYouNum + nNumNew;
  196.                 del_us;
  197.                 main_03();
  198.                 del_me;
  199.             } } }
  200.         }
  201.     }
  202. }
  203.  
  204. main_02b(){
  205.     int nFlag_02b;
  206.  
  207.     nFlag_02b = 0;
  208.  
  209.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  210.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  211.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  212.     }
  213.  
  214.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  215.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  216.     center_print( "3桁の数字を思い浮かべてください。(最初が0でも可)", nPic0, 240 );
  217.     center_print( "同じ数字を2度以上使ってはいけません。", nPic0, 256 );
  218.     center_print( "数字を思い浮かべたらどこかをクリックしてください。", nPic0, 272 );
  219.  
  220.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  221.     MovePic( nPic1, 8, 8, 64, 128, nPic1, 332, 8 );
  222.     shadow_print( "?", nPic1, 332, 8, 4 );
  223.  
  224.     mes( LBUP ){
  225.         nFlag_02b = -1;
  226.     }
  227.  
  228.     mes( LBDOWN ){
  229.         if( nFlag_02b ){
  230.             for( nCount = 0 ; nCount <= 2 ; nCount = nCount + 1 ){
  231.                 for( nI =0 ; nI <= 96 ; nI = nI + 4 ){
  232.                     MovePic( nPic1, 332, 120 - nI, 64, nI, nPic0, 332 + nCount * 64, 16 );
  233.                 }
  234.             }
  235.             del_us;
  236.             main_03();
  237.             del_me;
  238.         }
  239.     }
  240. }
  241.  
  242. main_03(){
  243.     int nFlag_03;
  244.  
  245.     nFlag_03 = 0;
  246.     nComNum = nTable[ Random( 720 ) ];
  247.  
  248.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  249.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  250.     center_print( "コンピュータも3桁の数字を考えました。", nPic0, 240 );
  251.     center_print( "次へ進むにはどこかをクリックしてください。", nPic0, 272 );
  252.  
  253.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  254.     MovePic( nPic1, 8, 8, 64, 128, nPic1, 332, 8 );
  255.     shadow_print( "?", nPic1, 332, 8, 4 );
  256.  
  257.     mes( LBUP ){
  258.         nFlag_03 = -1;
  259.     }
  260.  
  261.     mes( LBDOWN ){
  262.         if( nFlag_03 ){
  263.             for( nCount = 0 ; nCount <= 2 ; nCount = nCount + 1 ){
  264.                 for( nI =0 ; nI <= 96 ; nI = nI + 4 ){
  265.                     MovePic( nPic1, 332, 120 - nI, 64, nI, nPic0, 112 + nCount * 64, 16 );
  266.                 }
  267.             }
  268.             del_us;
  269.             main_04();
  270.             del_me;
  271.         }
  272.     }
  273. }
  274.  
  275. main_04(){
  276.     int nFlag_04, nI, nNumNew, nNumOld;
  277.  
  278.     nFlag_04 = 0;
  279.     nNumNew = -2;
  280.     nNumOld = nNumNew;
  281.  
  282.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  283.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  284.     center_print( "どちらから先に答えますか?", nPic0, 240 );
  285.     center_print( "あなたの場合は“1”コンピュータの場合は“0”をクリックして下さい", nPic0, 272 );
  286.  
  287.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  288.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  289.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  290.     }
  291.  
  292.     mes( MOUSEMOVE ){
  293.         if( MesP2 < 128 && MesP3 >= 308 ){
  294.             nFlag_04 = -1;
  295.             nNumNew = MesP2 / 64;
  296.         } else {
  297.             nNumNew = -2;
  298.         }
  299.         if( nNumNew != nNumOld ){
  300.             TextColor( 255, 255, 255 );
  301.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  302.             TextColor( 255, 255, 0 );
  303.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  304.             nNumOld = nNumNew;
  305.         }
  306.     }
  307.  
  308.     mes( LBUP ){
  309.         if( MesP2 < 128 && MesP3 >= 308 ){
  310.             nFlag_04 = -1;
  311.             nNumNew = MesP2 / 64;
  312.         } else {
  313.             nNumNew = -2;
  314.         }
  315.         if( nNumNew != nNumOld ){
  316.             TextColor( 255, 255, 255 );
  317.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  318.             TextColor( 255, 255, 0 );
  319.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  320.             nNumOld = nNumNew;
  321.         }
  322.     }
  323.  
  324.     mes( LBDOWN ){
  325.         if( nFlag_04 && MesP2 < 128 && MesP3 >= 308 ){
  326.             nNumNew = MesP2 / 64;
  327.             TextColor( 255, 0, 0 );
  328.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  329.             del_us;
  330.             if( nNumNew == 1 ){
  331.                 main_05();
  332.                 del_me;
  333.             } else {
  334.                 main_06();
  335.                 del_me;
  336.             }
  337.         }
  338.     }
  339. }
  340.  
  341. main_05(){
  342.     int nFlag_05, nNumNew, nNumOld, nCount, nAnser, nHB, nH, nB, nX0, nY0, nX1, nY1;
  343. //    int nNum[];
  344.  
  345.     nFlag_05 = 0;
  346.     nNumNew = -2;
  347.     nNumOld = nNumNew;
  348.     nCount = 0;
  349.  
  350.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  351.         nNum[ nI ] = -1;
  352.     }
  353.  
  354.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  355.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  356.     turn_print();
  357.     center_print( "コンピュータが考えていると思われる", nPic0, 256 );
  358.     center_print( "3桁の数字を入力してください。", nPic0, 272 );
  359.  
  360.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  361.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  362.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  363.     }
  364.  
  365.     for( nI = 0 ; nI <= 96 ; nI = nI + 4 ){
  366.         MovePic( nPic0, 112, 124 + nI, 192, 96 - nI, nPic0, 112, 128 + nI );
  367.     }
  368.  
  369.     mes( MOUSEMOVE ){
  370.         if( MesP3 >= 308 ){
  371.             nFlag_05 = -1;
  372.             nNumNew = MesP2 / 64;
  373.             if( nNum[ nNumNew ] == 0 ){
  374.                 nNumNew = -2;
  375.             }
  376.         } else {
  377.             nNumNew = -2;
  378.         }
  379.         if( nNumNew != nNumOld ){
  380.             TextColor( 255, 255, 255 );
  381.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  382.             TextColor( 255, 255, 0 );
  383.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  384.             nNumOld = nNumNew;
  385.         }
  386.     }
  387.  
  388.     mes( LBUP ){
  389.         if( MesP3 >= 308 ){
  390.             nFlag_05 = -1;
  391.             nNumNew = MesP2 / 64;
  392.             if( nNum[ nNumNew ] == 0 ){
  393.                 nNumNew = -2;
  394.             }
  395.         } else {
  396.             nNumNew = -2;
  397.         }
  398.         if( nNumNew != nNumOld ){
  399.             TextColor( 255, 255, 255 );
  400.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  401.             TextColor( 255, 255, 0 );
  402.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  403.             nNumOld = nNumNew;
  404.         }
  405.     }
  406.  
  407.     mes( LBDOWN ){
  408.         if( nFlag_05 && MesP3 >= 308 && nNumNew >= 0 && nNum[ nNumNew ] ){
  409.             nNumNew = MesP2 / 64;
  410.             nNum[ nNumNew ] = 0;
  411.             nNumOld = -2;
  412.             nX0 = nNumNew * 64;
  413.             nY0 = 304;
  414.             nX1 = nX0;
  415.             nY1 = nY0;
  416.  
  417.             BackMode( 0 );
  418.             TextColor( 255, 255, 255 );
  419.             BgColor( 255, 255, 255 );
  420.             TextWrite( "O", nPic1, 0, 288 );
  421.             BgColor( 0, 0, 0 );
  422.             TextWrite( StrPrint( "%ld", nNumNew ), nPic1, 64, 288 );
  423.             BackMode( 1 );
  424.             TextColor( 0, 0, 0 );
  425.             TextWrite( StrPrint( "%ld", nNumNew ), nPic1, 4, 292 );
  426.             TextWrite( StrPrint( "%ld", nNumNew ), nPic1, 0, 288 );
  427.  
  428.             MovePic( nPic1, 192, 304, 63, 96, nPic0, nX0, nY0 );
  429.             MovePic( nPic0, nX0, nY0, 63, 96, nPic1, 128, 304 );
  430.  
  431.             for( nI = 176 ; nI >= 0 ; nI = nI - 16 ){
  432.                 nX0 = ( nCount * 64 + 112 ) - ( ( ( ( ( nCount * 64 + 112 ) - ( nNumNew * 64 ) ) * 1000000 ) / 176 ) * nI ) / 1000000;
  433.                 nY0 = nI + 128;
  434.                 MovePic( nPic1, 128, 304, 63, 96, nPic0, nX1, nY1 );
  435.                 MovePic( nPic0, nX0, nY0, 63, 96, nPic1, 128, 304 );
  436.                 MovePic( nPic1, 0, 308, 63, 96, nPic0, nX0, nY0, SRCAND );
  437.                 MovePic( nPic1, 64, 308, 63, 96, nPic0, nX0, nY0, SRCINVERT );
  438.                 nX1 = nX0;
  439.                 nY1 = nY0;
  440.             }
  441.  
  442.             nCount = nCount + 1;
  443.             if( nCount == 1 ){
  444.                 nAnser = nAnser + nNumNew * 100;
  445.             } else { if( nCount == 2 ){
  446.                 nAnser = nAnser + nNumNew * 10;
  447.             } else { if( nCount == 3 ){
  448.                 del_us;
  449.  
  450.                 nAnser = nAnser + nNumNew;
  451.                 nHB = judge( nComNum, nAnser );
  452.                 nH = nHB / 10;
  453.                 nB = nHB % 10;
  454.                 nFlag_05 = 0;
  455.  
  456.                 voice( nH );
  457.                 voice( 17 );
  458.                 voice( nB );
  459.                 voice( 18 );
  460.  
  461.                 MovePic( nPic1, 192, 288, 192, 112, nPic1, 0, 288 );
  462.                 MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  463.                 SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  464.                 center_print( StrPrint( "%ld ヒット、%ld ブロー、だそうです。", nH, nB ), nPic0, 240 );
  465.                 center_print( "どこかをクリックすると次へ進みます。", nPic0, 272 );
  466.  
  467.                 auto_memo( nAnser, nH, nB, 560 );
  468.  
  469.                 choice2( nAnser, nH, nB );
  470.  
  471.                 if( sKachiMake == "" ){
  472.                     if( nH == 3 ){
  473.                         if( ( nTurn % 2 ) == 1 ){
  474.                             if( nHit3b ){
  475.                                 sKachiMake = "引き分け";
  476.                             } else {
  477.                                 sKachiMake = "あなたの勝ち";
  478.                             }
  479.                         }
  480.                     } else {
  481.                         if( nHit3b ){
  482.                             sKachiMake = "COMの勝ち";
  483.                         }
  484.                     }
  485.                 }
  486.  
  487.                 if( nH == 3 ){
  488.                     nHit3a = -1;
  489.                     center_print( "当たりです。", nPic0, 256 );
  490.                 }
  491.  
  492.                 if( nLevel < 1 ){
  493.                     if( nHit3a && ( sKachiMake != "" ) ){
  494.                         del_us;
  495.                         main_07( sKachiMake );
  496.                         del_me;
  497.                     }
  498.                 } else {
  499.                     if( sKachiMake != "" ){
  500.                         del_us;
  501.                         main_07( sKachiMake );
  502.                         del_me;
  503.                     }
  504.                 }
  505.  
  506.                 mes( LBUP ){
  507.                     nFlag_05 = -1;
  508.                 }
  509.  
  510.                 mes( LBDOWN ){
  511.                     if( nFlag_05 ){
  512.                         nTurn = nTurn + 1;
  513.                         del_us;
  514.                         main_06();
  515.                         del_me;
  516.                     }
  517.                 }
  518.                 del_me;
  519.             } } }
  520.         }
  521.     }
  522. }
  523.  
  524. main_06(){
  525.     if( nHit3b ){
  526.         nTurn = nTurn + 1;
  527.         main_05();
  528.         return;
  529.     }
  530.  
  531.     int nFlag_06, nI, nJ, nNum, nNumNew, nNumOld, nCount, nRange, nAnser, nHB, nH, nB, nX0, nY0, nX1, nY1;
  532.  
  533.     nFlag_06 = 0;
  534.     nNumNew = -2;
  535.     nNumOld = nNumNew;
  536.     nCount = 0;
  537.     nRange = 256;
  538.  
  539.     voice( 13 );
  540.  
  541.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  542.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  543.     turn_print();
  544.     center_print( "コンピュータは、あなたが考えていると思われる", nPic0, 256 );
  545.     center_print( "3桁の数字を表示します。", nPic0, 272 );
  546.  
  547.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  548.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  549.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  550.     }
  551.  
  552.     nAnser = nTable[ Random( nMax ) ];
  553.  
  554.     for( nI = 0 ; nI <= 96 ; nI = nI + 4 ){
  555.         MovePic( nPic0, 332, 124 + nI, 192, 96 - nI, nPic0, 332, 128 + nI );
  556.     }
  557.  
  558.     for( nJ = 0 ; nJ <= 2 ; nJ = nJ + 1 ){
  559.         if( nJ == 0 ){ nNum = nAnser / 100; }
  560.         if( nJ == 1 ){ nNum = nAnser / 10 % 10; }
  561.         if( nJ == 2 ){ nNum = nAnser % 10; }
  562.  
  563.         if( nNum ){
  564.             voice( nNum + 3 );
  565.         } else {
  566.             voice( nNum );
  567.         }
  568.  
  569.         nX0 = nNum * 64;
  570.         nY0 = 304;
  571.         nX1 = nX0;
  572.         nY1 = nY0;
  573.  
  574.         SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  575.         BackMode( 0 );
  576.         TextColor( 255, 255, 255 );
  577.         BgColor( 255, 255, 255 );
  578.         TextWrite( "O", nPic1, 0, 288 );
  579.         BgColor( 0, 0, 0 );
  580.         TextWrite( StrPrint( "%ld", nNum ), nPic1, 64, 288 );
  581.         BackMode( 1 );
  582.         TextColor( 0, 0, 0 );
  583.         TextWrite( StrPrint( "%ld", nNum ), nPic1, 4, 292 );
  584.         TextWrite( StrPrint( "%ld", nNum ), nPic1, 0, 288 );
  585.  
  586.         MovePic( nPic1, 192, 304, 63, 96, nPic0, nX0, nY0 );
  587.         MovePic( nPic0, nX0, nY0, 63, 96, nPic1, 128, 304 );
  588.  
  589.         for( nI = 176 ; nI >= 0 ; nI = nI - 16 ){
  590.             nX0 = ( nJ * 64 + 332 ) - ( ( ( ( ( nJ * 64 + 332 ) - ( nNum * 64 ) ) * 1000000 ) / 176 ) * nI ) / 1000000;
  591.             nY0 = nI + 128;
  592.             MovePic( nPic1, 128, 304, 63, 96, nPic0, nX1, nY1 );
  593.             MovePic( nPic0, nX0, nY0, 63, 96, nPic1, 128, 304 );
  594.             MovePic( nPic1, 0, 308, 63, 96, nPic0, nX0, nY0, SRCAND );
  595.             MovePic( nPic1, 64, 308, 63, 96, nPic0, nX0, nY0, SRCINVERT );
  596.             nX1 = nX0;
  597.             nY1 = nY0;
  598.         }
  599.     }
  600.  
  601.     nHB = judge( nYouNum, nAnser );
  602.     nH = nHB / 10;
  603.     nB = nHB % 10;
  604.  
  605.     voice( 14 );
  606.  
  607.     MovePic( nPic1, 192, 288, 192, 112, nPic1, 0, 288 );
  608.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  609.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  610.     center_print( "あなたが考えている数字と照らし合わせて", nPic0, 240 );
  611.     if( nYouNum ){
  612.         center_print( "ヒットの数とプローの数を順に入力して下さい。" + StrPrint( "( %ldヒット %ldブロー )", nH, nB ), nPic0, 256 );
  613.     } else {
  614.         center_print( "ヒットの数とプローの数を順に入力して下さい。", nPic0, 256 );
  615.     }
  616.  
  617.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  618.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  619.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  620.     }
  621.  
  622.     mes( MOUSEMOVE ){
  623.         if( MesP2 < nRange && MesP3 >= 308 ){
  624.             nFlag_06 = -1;
  625.             nNumNew = MesP2 / 64;
  626.         } else {
  627.             nNumNew = -2;
  628.         }
  629.         if( nNumNew != nNumOld ){
  630.             SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  631.             TextColor( 255, 255, 255 );
  632.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  633.             TextColor( 255, 255, 0 );
  634.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  635.             nNumOld = nNumNew;
  636.         }
  637.     }
  638.  
  639.     mes( LBUP ){
  640.         if( MesP2 < nRange && MesP3 >= 308 ){
  641.             nFlag_06 = -1;
  642.             nNumNew = MesP2 / 64;
  643.         } else {
  644.             nNumNew = -2;
  645.         }
  646.         if( nNumNew != nNumOld ){
  647.             SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  648.             TextColor( 255, 255, 255 );
  649.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  650.             TextColor( 255, 255, 0 );
  651.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  652.             nNumOld = nNumNew;
  653.         }
  654.     }
  655.  
  656.     mes( LBDOWN ){
  657.         if( nFlag_06 && MesP2 < nRange && MesP3 >= 308 ){
  658.             SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  659.             TextColor( 255, 0, 0 );
  660.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  661.             if( nCount == 0 ){
  662.                 nCount = nCount + 1;
  663.                 if( nNumNew == 2 ){
  664.                     nRange = 64;
  665.                 } else {
  666.                     nRange = ( 4 - nNumNew ) * 64;
  667.                 }
  668.                 if( MesP2 < nRange ){
  669.                     TextColor( 255, 255, 0 );
  670.                 } else {
  671.                     TextColor( 255, 255, 255 );
  672.                 }
  673.                 TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  674.                 nH = nNumNew;
  675.                 SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  676.                 shadow_print( StrPrint( "%ld ヒット", nH ), nPic0, 248, 272, 2 );
  677.             } else {
  678.                 del_us;
  679.                 nB = nNumNew;
  680.                 TextColor( 255, 255, 255 );
  681.                 TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  682.                 SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  683.                 shadow_print( StrPrint( "%ld プロー", nB ), nPic0, 328, 272, 2 );
  684.  
  685.                 auto_memo( nAnser, nH, nB, 16 );
  686.  
  687.                 if( sKachiMake == "" ){
  688.                     if( nH == 3 ){
  689.                         if( ( nTurn % 2 ) == 1 ){
  690.                             if( nHit3a ){
  691.                                 sKachiMake = "引き分け";
  692.                             } else {
  693.                                 sKachiMake = "COMの勝ち";
  694.                             }
  695.                         }
  696.                     } else {
  697.                         if( nHit3a ){
  698.                             sKachiMake = "あなたの勝ち";
  699.                         }
  700.                     }
  701.                 }
  702.  
  703.                 if( nH == 3 ){
  704.                     nHit3b = -1;
  705.                 }
  706.  
  707.                 if( nLevel < 1 ){
  708.                     if( nHit3a && ( sKachiMake != "" ) ){
  709.                         del_us;
  710.                         main_07( sKachiMake );
  711.                         del_me;
  712.                     }
  713.                 } else {
  714.                     if( sKachiMake != "" ){
  715.                         del_us;
  716.                         main_07( sKachiMake );
  717.                         del_me;
  718.                     }
  719.                 }
  720.  
  721.                 if( choice( nAnser, nH, nB ) == -1 ){
  722.                     nUso = -1;
  723.                 }
  724.  
  725.                 nTurn = nTurn + 1;
  726.                 main_05();
  727.                 del_me;
  728.             }
  729.         }
  730.     }
  731. }
  732.  
  733. main_07( str sHantei ){
  734.     int nFlag_07, nCount, nN, nI, nYouWin, nComWin, nDraw;
  735.     str sMode[];
  736.  
  737.     nFlag_07 = 0;
  738.  
  739.     sMode[ 0 ] = "(特訓モード)";
  740.     sMode[ 1 ] = "(標準モード)";
  741.     sMode[ 2 ] = "(上級モード)";
  742.  
  743.     if( nLevel && sHantei == "COMの勝ち" ){
  744.         voice( 15 );
  745.     }
  746.  
  747.     for( nCount = 0 ; nCount <= 2 ; nCount = nCount + 1 ){
  748.         if( nCount == 0 ){
  749.             nN = nComNum / 100;
  750.         } else { if( nCount == 1 ){
  751.             nN = nComNum / 10 % 10;
  752.         } else {
  753.             nN = nComNum % 10;
  754.         } }
  755.         SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  756.         MovePic( nPic1, 8, 8, 64, 128, nPic1, 332, 8 );
  757.         shadow_print( StrPrint( "%ld", nN ), nPic1, 332, 8, 4 );
  758.         for( nI =0 ; nI <= 96 ; nI = nI + 4 ){
  759.             MovePic( nPic1, 332, 120 - nI, 64, nI, nPic0, 112 + nCount * 64, 16 );
  760.         }
  761.         if( nLevel && sHantei == "COMの勝ち" ){
  762.             if( nN ){
  763.                 voice( nN + 3 );
  764.             } else {
  765.                 voice( nN );
  766.             }
  767.         }
  768.     }
  769.  
  770.     if( nLevel && sHantei == "COMの勝ち" ){
  771.         voice( 16 );
  772.     }
  773.  
  774.     nYouWin = GetIniInt( StrPrint( "Level%ld", nLevel ), "YouWin", 0, "hb_log.ini" );
  775.     nComWin = GetIniInt( StrPrint( "Level%ld", nLevel ), "ComWin", 0, "hb_log.ini" );
  776.     nDraw = GetIniInt( StrPrint( "Level%ld", nLevel ), "Draw", 0, "hb_log.ini" );
  777.  
  778.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  779.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  780.  
  781.     if( sHantei == "あなたの勝ち" ){
  782.         nYouWin = nYouWin + 1;
  783.         center_print( StrPrint( "あなたの勝ちです。 %s あなた%ld勝 COM%ld勝 引き分け%ld", sMode[ nLevel ], nYouWin, nComWin, nDraw ), nPic0, 240 );
  784.         if( nUso ){
  785.             center_print("でも、どこかでウソをついているのではないかと", nPic0, 256 );
  786.             center_print("コンピュータは疑っています。(^_^;", nPic0, 272 );
  787.         }
  788.         voice( 21 );
  789.     } else { if( sHantei == "COMの勝ち" ){
  790.         nComWin = nComWin + 1;
  791.         SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  792.         center_print( StrPrint( "コンピュータの勝ちです。 %s COM%ld勝 あなた%ld勝 引き分け%ld", sMode[ nLevel ], nComWin, nYouWin, nDraw ), nPic0, 240 );
  793.         voice( 22 );
  794.     } else { if( sHantei == "引き分け" ){
  795.         nDraw = nDraw + 1;
  796.         center_print( StrPrint( "引き分けです。 %s あなた%ld勝 COM%ld勝 引き分け%ld", sMode[ nLevel ], nYouWin, nComWin, nDraw ), nPic0, 240 );
  797.         if( nUso ){
  798.             center_print("でも、どこかでウソをついているのではないかと", nPic0, 256 );
  799.             center_print("コンピュータは疑っています。(^_^;", nPic0, 272 );
  800.         }
  801.     } } }
  802.  
  803.     WriteIniInt( StrPrint( "Level%ld", nLevel ), "YouWin", nYouWin, "hb_log.ini" );
  804.     WriteIniInt( StrPrint( "Level%ld", nLevel ), "ComWin", nComWin, "hb_log.ini" );
  805.     WriteIniInt( StrPrint( "Level%ld", nLevel ), "Draw", nDraw, "hb_log.ini" );
  806.  
  807.     mes( LBUP ){
  808.         nFlag_07 = -1;
  809.     }
  810.  
  811.     mes( LBDOWN ){
  812.         if( nFlag_07 ){
  813.             main_08();
  814.             del_me;
  815.         }
  816.     }
  817. }
  818.  
  819. main_08(){
  820.     int nFlag_08, nI, nNumNew, nNumOld;
  821.  
  822.     nFlag_08 = 0;
  823.     nNumNew = -2;
  824.     nNumOld = nNumNew;
  825.  
  826.     MovePic( nPic1, 0, 238, 640, 52, nPic0, 0, 240 );
  827.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 0 );
  828.     center_print( "もう一度ゲームをしますか?", nPic0, 240 );
  829.     center_print( "する場合は“1”やめる場合は“0”をクリックして下さい", nPic0, 272 );
  830.  
  831.     SetFont( 128, "MS ゴシック", 0, 0, 0, 0, 0 );
  832.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  833.         shadow_print( StrPrint( "%ld", nI ), nPic0, nI * 64, 288, 4 );
  834.     }
  835.  
  836.     mes( MOUSEMOVE ){
  837.         if( MesP2 < 128 && MesP3 >= 308 ){
  838.             nFlag_08 = -1;
  839.             nNumNew = MesP2 / 64;
  840.         } else {
  841.             nNumNew = -2;
  842.         }
  843.         if( nNumNew != nNumOld ){
  844.             TextColor( 255, 255, 255 );
  845.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  846.             TextColor( 255, 255, 0 );
  847.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  848.             nNumOld = nNumNew;
  849.         }
  850.     }
  851.  
  852.     mes( LBUP ){
  853.         if( MesP2 < 128 && MesP3 >= 308 ){
  854.             nFlag_08 = -1;
  855.             nNumNew = MesP2 / 64;
  856.         } else {
  857.             nNumNew = -2;
  858.         }
  859.         if( nNumNew != nNumOld ){
  860.             TextColor( 255, 255, 255 );
  861.             TextWrite( StrPrint( "%ld", nNumOld ), nPic0, nNumOld * 64, 288 );
  862.             TextColor( 255, 255, 0 );
  863.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  864.             nNumOld = nNumNew;
  865.         }
  866.     }
  867.  
  868.     mes( LBDOWN ){
  869.         if( nFlag_08 && MesP2 < 128 && MesP3 >= 308 ){
  870.             nNumNew = MesP2 / 64;
  871.             TextColor( 255, 0, 0 );
  872.             TextWrite( StrPrint( "%ld", nNumNew ), nPic0, nNumNew * 64, 288 );
  873.             del_us;
  874.             if( nNumNew == 1 ){
  875.                 mes( LBUP ){
  876.                     nLoop = 1;
  877.                     CloseWin( nWin0 );
  878.                     del_us;
  879.                     del_me;
  880.                 }
  881.             } else {
  882.                 CloseWin( nWin0 );
  883.                 del_all;
  884.                 del_me;
  885.             }
  886.         }
  887.     }
  888. }
  889.  
  890. make_table(){
  891.     int nI, nJ, nK;
  892.  
  893.     nMax = 0;
  894.  
  895.     for( nI = 0 ; nI <= 9 ; nI = nI + 1 ){
  896.         for( nJ = 0 ; nJ <= 9 ; nJ = nJ + 1 ){
  897.             if( nJ != nI ){
  898.                 for( nK = 0 ; nK <= 9 ; nK = nK + 1 ){
  899.                     if( nK != nJ && nK != nI ){
  900.                         nTable[ nMax ] = nI * 100 + nJ * 10 + nK;
  901.                         nTable2[ nMax ] = nTable[ nMax ];
  902.                         nMax = nMax + 1;
  903.                     }
  904.                 }
  905.             }
  906.         }
  907.     }
  908.     nMax2 = nMax;
  909. }
  910.  
  911. choice( int nNum0, nHit, nBlow ){
  912.     int nI, nHB, nH, nB, nEnd, nTmp;
  913.  
  914.     nEnd = nMax - 1;
  915.  
  916.     for( nI = 0 ; nI <= nEnd ; nI = nI + 1 ){
  917.         while( nI < nMax ){
  918.             nHB = judge( nNum0, nTable[ nI ] );
  919.             nH = nHB / 10;
  920.             nB = nHB % 10;
  921.             if( nHit != nH || nBlow != nB ){
  922.                 nTmp = nTable[ nI ];
  923.                 nTable[ nI ] = nTable[ nMax - 1 ];
  924.                 nTable[ nMax - 1 ] = nTmp;
  925.                 nMax = nMax - 1;
  926.                 if( nMax == 0 ){
  927.                     nMax = 720;
  928.                     return( -1 );
  929.                 }
  930.             } else {
  931.                 break;
  932.             }
  933.         }
  934.     }
  935.  
  936.     return( 0 );
  937. }
  938.  
  939. choice2( int nNum0, nHit, nBlow ){
  940.     int nI, nHB, nH, nB, nEnd, nTmp;
  941.  
  942.     nEnd = nMax2 - 1;
  943.  
  944.     for( nI = 0 ; nI <= nEnd ; nI = nI + 1 ){
  945.         while( nI < nMax2 ){
  946.             nHB = judge( nNum0, nTable2[ nI ] );
  947.             nH = nHB / 10;
  948.             nB = nHB % 10;
  949.             if( nHit != nH || nBlow != nB ){
  950.                 nTmp = nTable2[ nI ];
  951.                 nTable2[ nI ] = nTable2[ nMax2 - 1 ];
  952.                 nTable2[ nMax2 - 1 ] = nTmp;
  953.                 nMax2 = nMax2 - 1;
  954.                 if( nMax2 == 0 ){
  955.                     nMax2 = 720;
  956.                     return( -1 );
  957.                 }
  958.             } else {
  959.                 break;
  960.             }
  961.         }
  962.     }
  963.  
  964.     return( 0 );
  965. }
  966.  
  967. judge( int nNum0, nNum1 ){
  968.     int nHit, nBlow;
  969.  
  970.     nHit = 0;
  971.     nBlow = 0;
  972.  
  973.     nH0 = nNum0 / 100;
  974.     nM0 = ( nNum0 / 10 ) % 10;
  975.     nL0 = nNum0 % 10;
  976.  
  977.     nH1 = nNum1 / 100;
  978.     nM1 = ( nNum1 / 10 ) % 10;
  979.     nL1 = nNum1 % 10;
  980.  
  981.     if( nH0 == nH1 ){
  982.         nHit = nHit +1;
  983.     }else{if( nH0 == nM1 || nH0 == nL1 ){
  984.         nBlow = nBlow +1;
  985.     }}
  986.     if( nM0 == nM1 ){
  987.         nHit = nHit +1;
  988.     }else{if( nM0 == nH1 || nM0 == nL1 ){
  989.         nBlow = nBlow +1;
  990.     }}
  991.     if( nL0 == nL1 ){
  992.         nHit = nHit +1;
  993.     }else{if( nL0 == nH1 || nL0 == nM1 ){
  994.         nBlow = nBlow +1;
  995.     }}
  996.  
  997.     return( nHit * 10 + nBlow );
  998. }
  999.  
  1000. center_print( str sString, int nPicNo, int nYpos ){
  1001.     shadow_print( sString, nPicNo, ( 640 - StrLen( sString ) * 8 ) / 2, nYpos, 2 );
  1002. }
  1003.  
  1004. shadow_print( str sString, int nPicNo, int nXpos, int nYpos, int nOffset, str sColor = "W" ){
  1005.     TextColor( 0, 0, 0 );
  1006.     TextWrite( sString, nPicNo, nXpos + nOffset, nYpos + nOffset );
  1007.     if( sColor == "W" ){
  1008.         TextColor( 255, 255, 255 );
  1009.     } else { if( sColor == "R" ){
  1010.         TextColor( 255, 0, 0 );
  1011.     } else { if( sColor == "G" ){
  1012.         TextColor( 0, 255, 0 );
  1013.     } else { if( sColor == "B" ){
  1014.         TextColor( 0, 0, 255 );
  1015.     } else { if( sColor == "Y" ){
  1016.         TextColor( 255, 255, 0 );
  1017.     } else { if( sColor == "C" ){
  1018.         TextColor( 0, 255, 255 );
  1019.     } else { if( sColor == "M" ){
  1020.         TextColor( 255, 0, 255 );
  1021.     } } } } } } }
  1022.     TextWrite( sString, nPicNo, nXpos, nYpos );
  1023. }
  1024.  
  1025. auto_memo( int nAnser, nH, nB, nX ){
  1026.     int nY, nI, nIN;
  1027.     str sCol;
  1028.  
  1029.     if( nTurn / 2 > 9 ){
  1030.         nY = 184;
  1031.         MovePic( nPic0, nX, 56, 65, 160, nPic0, nX, 40 );
  1032.     } else {
  1033.         nY = nTurn / 2 * 16 + 40;
  1034.     }
  1035.  
  1036.     SetFont( 16, "MS ゴシック", 128, 0, 0, 0, 400 );
  1037.     if( nH == 3 ){
  1038.         sCol = "Y";
  1039.         voice( 19 );
  1040.     } else {
  1041.         sCol = "B";
  1042.     }
  1043.     if( nX == 560 && nLevel == 0 ){
  1044.         nIN = -1;
  1045.         for( nI = 0 ; nI <= nMax2 ; nI = nI + 1 ){
  1046.             if( nAnser == nTable2[ nI ] ){
  1047.                 nIN = 0;
  1048.                 break;
  1049.             }
  1050.         }
  1051.         if( nIN ){
  1052.             sCol = "R";
  1053.         }
  1054.     }
  1055.     shadow_print( StrPrint( "%03ld:", nAnser ), nPic0, nX, nY, 1, sCol );
  1056.     shadow_print( StrPrint( "%ldH", nH ), nPic0, nX + 32, nY, 1, sCol );
  1057.     shadow_print( StrPrint( "%ldB", nB ), nPic0, nX + 48, nY, 1, sCol );
  1058. }
  1059.  
  1060. turn_print(){
  1061.     if( nLevel == 0 && nHit3b ){
  1062.         center_print( StrPrint( "ターン %ld です。", nTurn / 2 + 1 ), nPic0, 240 );
  1063.     } else {
  1064.         if( nTurn % 2 == 0 ){
  1065.             center_print( StrPrint( "ターン %ld 前半です。", nTurn / 2 + 1 ), nPic0, 240 );
  1066.         } else {
  1067.             center_print( StrPrint( "ターン %ld 後半です。", nTurn / 2 + 1 ), nPic0, 240 );
  1068.         }
  1069.     }
  1070. }
  1071.  
  1072. voice( int nVoiceNo ){
  1073.     int nI;
  1074.  
  1075.     if( nUseWave == 0 ){
  1076.         return;
  1077.     }
  1078.  
  1079.     if( nVoiceNo >= 0 ){
  1080.         if( nWav == 0 ){
  1081.             PlayWAVE( "voice_" + StrPrint( "%02ld", nVoiceNo ) + ".wav" );
  1082.         }
  1083.  
  1084.         nWAV_Buf[ nWP_a ] = nVoiceNo;
  1085.         nWP_a = ( nWP_a + 1 ) % 16;
  1086.         nWav = nWav + 1;
  1087.     } else {
  1088.         nWav = 0;
  1089.         nWP_a = 0;
  1090.         nWP_b = 0;
  1091.  
  1092.         for( nI=0 ; nI<=15 ; nI=nI+1 ){
  1093.             nWAV_Buf[ nI ] = -1;
  1094.         }
  1095.  
  1096.         mes( WAVE_END ){
  1097.             if( nWP_a == ( ( nWP_b + nWav ) % 16 ) ){
  1098.                 nWAV_Buf[ nWP_b ] = -1;
  1099.                 nWP_b = ( nWP_b + 1 ) % 16;
  1100.                 nWav = nWav - 1;
  1101.                 if( nWav ){
  1102.                     PlayWAVE( "voice_" + StrPrint( "%02ld", nWAV_Buf[ nWP_b ] ) + ".wav" );
  1103.                 }
  1104.             }
  1105.         }
  1106.     }
  1107. }
  1108.