home *** CD-ROM | disk | FTP | other *** search
/ PSION CD 2 / PsionCDVol2.iso / Programs / 263 / PUIS4.SIS / Puis4.opl (.txt) < prev    next >
Encoding:
EPOC OPL Source  |  1998-08-27  |  11.9 KB  |  714 lines

  1.  
  2.  
  3. APP Puis4,29091974 REM My date of birth!!!
  4.         ICON "Puis4Ico.mbm"
  5.         ICON "Puis4Mask.mbm"
  6.         ICON "Puis4_32Ico.mbm"
  7.         ICON "Puis4_32Mask.mbm"
  8.         ICON "Puis4_24Ico.mbm"
  9.         ICON "Puis4_24Mask.mbm"
  10. ENDA
  11.  
  12. PROC Start:
  13.     GLOBAL Col1%(5),Col2%(5),Col3%(5),Col4%(5)
  14.     GLOBAL Col5%(5),Col6%(5),Col7%(5),Player%
  15.     GLOBAL Pl1$(8),Pl2$(8),DisPl%,Comp1%, Status%
  16.     GLOBAL End%,Comp2%,flag%,UpArr%,SideArr%
  17.     Splash:
  18.     BUSY "INIT..."
  19.     DisPl%=0 REM Disabled by default
  20.     Pl1$="Sir RVB"
  21.     Pl2$="Shake"
  22.     Comp2%=-1
  23.     Player%=1
  24.     LOADM "Z:\System\Opl\Toolbar.opo"
  25.     TBarLink:("TInit")
  26. ENDP
  27.  
  28. PROC Splash:
  29.     dINIT "Puissance 4"
  30.     dTEXT "","Puissance 4 v0.6, by Herve Baile"
  31.     dTEXT "","This game is not finished actually... There is no AI at all... and"
  32.     dTEXT "","there is no support of the toolbar... The future version will fix"
  33.     dTEXT "","that. I hope you will find this program and its source code useful."
  34.     dTEXT "","Don't forget to mail me your comments at : hbaile@geocities.com"
  35.     dTEXT "","Keep checking my homepage for the future releases and more infos."
  36.     dBUTTONS "Ok",%o+256
  37.     DIALOG
  38. ENDP
  39.  
  40. PROC GrilleInit:
  41.     LOCAL i%
  42.     DO
  43.         i%=i%+1
  44.         Col1%(i%)=0
  45.         Col2%(i%)=0
  46.         Col3%(i%)=0
  47.         Col4%(i%)=0
  48.         Col5%(i%)=0
  49.         Col6%(i%)=0
  50.         Col7%(i%)=0
  51.     UNTIL i%=5
  52. ENDP
  53.  
  54. PROC ChangePlayer:
  55.     IF Player%=1
  56.         Player%=2
  57.     ELSE
  58.         Player%=1
  59.     ENDIF
  60. ENDP
  61.  
  62. PROC ClearBorders:
  63.     gAT 0,0
  64.     GFILL 507,17,1
  65.     gAT 0,0
  66.     GFILL 17,217,1
  67. ENDP
  68.  
  69. PROC ArrowInit:
  70. rem    LOCAL Up$(30),Side$(30)
  71. rem    Up$="c:\System\Apps\Puis4\up.mbm"
  72. rem    Side$="c:\System\Apps\Puis4\side.mbm"
  73.     UpArr%=gLOADBIT("c:\System\Apps\Puis4\up.mbm",0)
  74.     SideArr%=gLOADBIT("c:\System\Apps\Puis4\side.mbm",0)
  75.     ALERT(NUM$(UpArr%,5),NUM$(SideArr%,5))
  76.     gorder 1,255        rem main window background
  77. ENDP
  78.  
  79. PROC LastCoin:
  80.     ClearBorders:
  81.     gAT 46,3
  82.     gCOPY UpArr%,0,0,15,12,0
  83.     gAT 3,31
  84.     gCOPY SideArr%,0,0,12,15,0
  85. ENDP
  86.  
  87. PROC Grille:
  88.     LOCAL i%, j%, x%, y%
  89.     gMOVE 19,19
  90.     gXBORDER 2,$01,490,200
  91.     x%=19:y%=19
  92.     DO
  93.         DO
  94.             gAT x%,y%
  95.             gXBORDER 2,$44,70,40
  96.             x%=x%+70:i%=i%+1
  97.         UNTIL i%=7
  98.         i%=0:j%=j%+1
  99.         x%=19:y%=y%+40
  100.     UNTIL j%=5
  101. ENDP
  102.  
  103. PROC GetRow:(c%)
  104.     LOCAL i%,val%
  105.     DO
  106.         i%=i%+1
  107.         val%=GetVal:(c%,i%)
  108.         IF val%<>0
  109.             IF i%-1<>0
  110.                 IF Player%=1
  111.                     SetVal:(c%,i%-1,1)
  112.                 ELSE
  113.                     SetVal:(c%,i%-1,2)
  114.                 ENDIF
  115.                 RETURN i%-1
  116.             ELSE
  117.                 IF (Comp1%=0 AND Player%=1) OR (Comp2%=0 AND Player%=2)
  118.                     dINIT "ATTENTION"
  119.                     dTEXT "","This Column is full."
  120.                     dBUTTONS "Ok",%y
  121.                     DIALOG
  122.                 ENDIF
  123.                 RETURN 0
  124.             ENDIF
  125.         ENDIF
  126.     UNTIL i%=5
  127.     IF Player%=1
  128.         SetVal:(c%,i%,1)
  129.     ELSE
  130.         SetVal:(c%,i%,2)
  131.     ENDIF
  132.     RETURN i%
  133. ENDP
  134.  
  135. PROC GetVal:(c%,i%)
  136.     IF c%=1
  137.         RETURN col1%(i%)
  138.     ELSEIF c%=2
  139.         RETURN col2%(i%)
  140.     ELSEIF c%=3
  141.         RETURN col3%(i%)
  142.     ELSEIF c%=4
  143.         RETURN col4%(i%)
  144.     ELSEIF c%=5
  145.         RETURN col5%(i%)
  146.     ELSEIF c%=6
  147.         RETURN col6%(i%)
  148.     ELSEIF c%=7
  149.         RETURN col7%(i%)
  150.     ENDIF
  151. ENDP
  152.  
  153. PROC SetVal:(c%,i%,val%)
  154.     IF c%=1
  155.         col1%(i%)=val%
  156.     ELSEIF c%=2
  157.         col2%(i%)=val%
  158.     ELSEIF c%=3
  159.         col3%(i%)=val%
  160.     ELSEIF c%=4
  161.         col4%(i%)=val%
  162.     ELSEIF c%=5
  163.         col5%(i%)=val%
  164.     ELSEIF c%=6
  165.         col6%(i%)=val%
  166.     ELSEIF c%=7
  167.         col7%(i%)=val%
  168.     ENDIF
  169. ENDP
  170.  
  171.  
  172. PROC Handle:
  173.     LOCAL i%, col%, ev&(16), r%, cpt%
  174.     BUSY OFF
  175.     WHILE (1)
  176.         DO
  177.             IF Comp1%=-1 AND Comp2%=-1 AND End%=0
  178.                 CompPlay:
  179.                 i%=KEY
  180.                 IF i%<>0
  181.                     Settings:
  182.                 ENDIF
  183.             ELSE
  184.                 IF ((Player%=1 AND Comp1%=-1) OR (Player%=2 AND Comp2%=-1)) AND End%=0
  185.                     CompPlay:
  186.                 ENDIF
  187.                 GETEVENT32 ev&()
  188.                 IF (ev&(1) AND &400)=0
  189.                     KeyHandle:(ev&(1))
  190.                 ENDIF
  191.                 IF ev&(3) = 10000 AND cpt%=0
  192.                     cpt%=1
  193.                 ELSEIF ev&(3) = 10000 AND cpt%=1
  194.                     cpt%=0
  195.                     MenuHandle:
  196.                 ENDIF
  197.             ENDIF
  198.     UNTIL ev&(1)=&408
  199.         IF Comp1%=-1 AND Comp2%=-1 AND End%=0
  200.             CompPlay:
  201.             Settings:
  202.         ENDIF
  203.         IF ev&(4)=0 AND End%=0
  204.             IF ev&(3)=1
  205.                 col%=ColPointed:(ev&(6),ev&(7))
  206.             ELSE
  207.                 col%=0
  208.             ENDIF
  209.             IF col%<>0
  210.                 DrawCoin:(col%)
  211.                 gUPDATE
  212.                 IF DisPl%<>0 AND End%=0
  213.                     CurrentPlayer:
  214.                 ELSEIF DisPl%<>0 AND End%<>0
  215.                     BUSY OFF
  216.                 ENDIF
  217.             ENDIF
  218.             IF (Comp1%=-1 OR Comp2%=-1) AND End%=0 AND Col%<>0
  219.                 CompPlay:
  220.             ENDIF
  221.         ELSEIF  ev&(4)=0 AND End%<>0
  222.             r%=Attention:("Game finished",CHR$(End%), "New game?")
  223.             IF r%=%y
  224.                 New:
  225.             ENDIF
  226.         ENDIF
  227.     ENDWH
  228. ENDP
  229.  
  230. PROC CompPlay:
  231.     LOCAL Col%
  232.     BUSY "Thinking",2
  233.     Col%=Heuristic:
  234.     DrawCoin:(Col%)
  235.     gUPDATE
  236.     BUSY OFF
  237.     IF DisPl%<>0 AND End%=0
  238.         CurrentPlayer:
  239.     ELSEIF DisPl%<>0 AND End%<>0
  240.         BUSY OFF
  241.     ENDIF
  242. ENDP
  243.  
  244. PROC Currentplayer:
  245.     IF player%=2
  246.         BUSY Pl2$+" turn...",2
  247.     ELSE
  248.         BUSY Pl1$+" turn...",2
  249.     ENDIF
  250. ENDP
  251.  
  252. PROC ColPointed:(x&,y&)
  253.     IF y&>19 AND y&<219
  254.         IF x&>19 AND x&<89
  255.             RETURN 1
  256.         ELSEIF x&>89 AND x&<159
  257.             RETURN 2
  258.         ELSEIF x&>159 AND x&<229
  259.             RETURN 3
  260.         ELSEIF x&>229 AND x&<299
  261.             RETURN 4
  262.         ELSEIF x&>299 AND x&<369
  263.             RETURN 5
  264.         ELSEIF x&>369 AND x&<439
  265.             RETURN 6
  266.         ELSEIF x&>439 AND x&<509
  267.             RETURN 7
  268.         ELSE
  269.             RETURN 0
  270.         ENDIF
  271.     ENDIF
  272. ENDP
  273.  
  274. PROC DrawCoin:(col%)
  275.     LOCAL Row%,c%
  276.     IF col%=1
  277.         Row%=GetRow:(col%)
  278.         gAT 54,39
  279.     ELSEIF col%=2
  280.         Row%=GetRow:(col%)
  281.         gAT 124,39
  282.     ELSEIF col%=3
  283.         Row%=GetRow:(col%)
  284.         gAT 194,39
  285.     ELSEIF col%=4
  286.         Row%=GetRow:(col%)
  287.         gAT 264,39
  288.     ELSEIF col%=5
  289.         Row%=GetRow:(col%)
  290.         gAT 334,39
  291.     ELSEIF col%=6
  292.         Row%=GetRow:(col%)
  293.         gAT 404,39
  294.     ELSEIF col%=7
  295.         Row%=GetRow:(col%)
  296.         gAT 474,39
  297.     ENDIF
  298.     IF Row%=0 AND ( (Comp1%=-1 AND Player%=1) OR (Comp2%=-1 AND Player%=2) )
  299.         c%=Heuristic:
  300.         DrawCoin:(c%)
  301.     ENDIF
  302.     IF Player%=1 AND Row%<>0
  303.         gCOLOR 200,200,220
  304.         gCIRCLE 10,1
  305. rem        LastCoin:
  306.     ELSEIF Player%=2 AND Row%<>0
  307.         gCOLOR 0,0,0
  308.         gCIRCLE 10,1
  309. rem        LastCoin:
  310.     ENDIF
  311.     IF Row%>1
  312.         ScrollCoin:(col%,Row%)
  313.         Check:(col%,Row%)
  314.         ChangePlayer:
  315.     ELSEIF Row%<>0
  316.         Check:(col%,Row%)
  317.         ChangePlayer:
  318.     ENDIF
  319. ENDP
  320.  
  321. PROC Check:(col%,Row%)
  322.     LOCAL Res1%,Res2%
  323.     Res1%=Check_l:(col%,Row%,player%)
  324.     Res2%=Check_r:(col%,Row%,player%)
  325.     IF (Res1%+Res2%-1)>=4
  326.         Win:(Player%)
  327.         RETURN 0
  328.     ENDIF
  329.     Res1%=Check_d:(col%,Row%,player%)
  330.     Res2%=Check_u:(col%,Row%,player%)
  331.     IF (Res1%+Res2%-1)>=4
  332.         Win:(Player%)
  333.         RETURN 0
  334.     ENDIF
  335.     Res1%=Check_ul:(col%,Row%,player%)
  336.     Res2%=Check_dr:(col%,Row%,player%)
  337.     IF (Res1%+Res2%-1)>=4
  338.         Win:(Player%)
  339.         RETURN 0
  340.     ENDIF
  341.     Res1%=Check_ur:(col%,Row%,player%)
  342.     Res2%=Check_dl:(col%,Row%,player%)
  343.     IF (Res1%+Res2%-1)>=4
  344.         Win:(Player%)
  345.         RETURN 0
  346.     ENDIF
  347.     Res1%=End:
  348.     IF Res1%=1
  349.         End%=1
  350.         Res2%=0
  351.         Res1%=Attention:("A Draw","", "New game?")
  352.         IF Res1%=%y
  353.             New:
  354.         ENDIF
  355.     ENDIF
  356. ENDP
  357.  
  358. PROC Win:(pl%)
  359.     LOCAL Res%
  360.     End%=1
  361.     IF pl%=1 AND comp1%=-1
  362.             Res%=Attention:("Victory","Computer 1 won!", "New game?")
  363.     ELSEIF pl%=2 AND comp2%=-1
  364.             Res%=Attention:("Victory","Computer 2 won!", "New game?")
  365.     ELSEIF pl%=1
  366.         Res%=Attention:("Victory",pl1$+" won!", "New game?")
  367.     ELSE
  368.         Res%=Attention:("Victory",pl2$+" won!", "New game?")
  369.     ENDIF
  370.     IF Res%=%y
  371.         New:
  372.     ENDIF
  373. ENDP
  374.  
  375. PROC ScrollCoin:(c%,r%)
  376.     LOCAL j%,k%,dx%,dy%,x%,y%
  377.     dx%=0
  378.     dy%=40*(r%-1)
  379.     IF c%=1
  380.         x%=43:y%=28
  381.     ELSEIF c%=2
  382.         x%=113:y%=28
  383.     ELSEIF c%=3
  384.         x%=183:y%=28
  385.     ELSEIF c%=4
  386.         x%=253:y%=28
  387.     ELSEIF c%=5
  388.         x%=323:y%=28
  389.     ELSEIF c%=6
  390.         x%=393:y%=28
  391.     ELSEIF c%=7
  392.         x%=463:y%=28
  393.     ENDIF
  394.     gUPDATE
  395.     PAUSE 3
  396.     DO
  397.         j%=j%+1
  398.         gSCROLL dx%,40,x%,y%,22,22
  399.         gUPDATE
  400.         y%=y%+40
  401.         PAUSE 3
  402.     UNTIL j%=r%-1
  403. ENDP
  404.  
  405. PROC TInit:
  406. rem    ArrowInit:
  407.     TBarInit:("Puis 4",gWIDTH,gHEIGHT)
  408.     TBarShow:
  409.     New:
  410. ENDP
  411.  
  412. PROC New:
  413.     End%=0
  414.     gCLS
  415.     gBORDER 1
  416.     GrilleInit:
  417.     Grille:
  418.     IF DisPl%<>0
  419.         CurrentPlayer:
  420.     ENDIF
  421.     Handle:
  422. ENDP
  423.  
  424. PROC Heuristic:
  425. RETURN 1+INT(RND*7)
  426. ENDP
  427.  
  428. PROC KeyHandle:(k&)
  429.     LOCAL mod%
  430.     IF Comp1%=-1 AND Comp2%=-1
  431.         Settings:
  432.         RETURN 0
  433.     ENDIF
  434.     IF k&=14 REM "n"
  435.         mod%=Attention:("New Game","","This game will be lost...")
  436.         IF mod%=%y
  437.             New:
  438.         ENDIF
  439.     ELSEIF k&=15 REM "o"
  440.         Settings:
  441.     ELSEIF k&=1 REM "a"
  442.         About:
  443.     ELSEIF k&=5 REM "e"        
  444.         mod%=Attention:("Exit","","You really want to quit?")
  445.         IF mod%=%y
  446.             STOP
  447.         ENDIF
  448.     ELSEIF k&=4150 REM "MENU"
  449.         MenuHandle:
  450.     ENDIF
  451. ENDP
  452.  
  453. PROC MenuHandle:
  454.     LOCAL choice%
  455.     mINIT 
  456.     mCARD "Game","New",%n,"Settings",%o,"About",%a,"Quit",%e
  457.     choice%=MENU
  458.     IF choice%=%n
  459.         choice%=Attention:("New Game","","This game will be lost...")
  460.         IF choice%=%y
  461.             New:
  462.         ENDIF
  463.     ELSEIF choice%=%o
  464.         Settings:
  465.     ELSEIF choice%=%a
  466.         About:
  467.     ELSEIF choice%=%e
  468.         choice%=Attention:("Exit","","You really want to quit?")
  469.         IF choice%=%y
  470.             STOP
  471.         ENDIF
  472.     ENDIF
  473. ENDP
  474.  
  475. PROC Attention:(title$,msg1$,msg2$)
  476.     dINIT title$
  477.     dTEXT msg1$,msg2$
  478.     dBUTTONS "Yes",%y+256+512,"No",%n+256+512
  479.     RETURN DIALOG
  480. ENDP
  481.  
  482. PROC Settings:
  483.     dINIT "Settings"
  484.     dEDIT pl1$,"Player 1",10
  485.     dEDIT pl2$,"Player 2",10
  486.     dTEXT "","",$800
  487.     dCHECKBOX Comp1%,"Computer Player 1"
  488.     dCHECKBOX Comp2%,"Computer Player 2"
  489.     dTEXT "","",$800
  490.     dCHECKBOX DisPl%,"Display current player"
  491.     dBUTTONS "Ok",%o+256
  492.     DIALOG
  493.     IF DisPl%=0
  494.         BUSY OFF
  495.     ELSEIF DisPl%=-1
  496.         Currentplayer:
  497.     ENDIF
  498.     IF (Player%=1 AND Comp1%=-1) OR (Player%=2 AND Comp2%=-1)
  499.         CompPlay:
  500.     ENDIF
  501. ENDP
  502.  
  503. PROC GetCoin:(c%,r%)
  504.     IF c%=1
  505.         RETURN col1%(r%)
  506.     ELSEIF c%=2
  507.         RETURN col2%(r%)
  508.     ELSEIF c%=3
  509.         RETURN col3%(r%)
  510.     ELSEIF c%=4
  511.         RETURN col4%(r%)
  512.     ELSEIF c%=5
  513.         RETURN col5%(r%)
  514.     ELSEIF c%=6
  515.         RETURN col6%(r%)
  516.     ELSEIF c%=7
  517.         RETURN col7%(r%)
  518.     ENDIF
  519. ENDP
  520.  
  521. PROC Check_l:(c%,r%,pl%)
  522.     LOCAL curCol%,curRow%,count%,coin%,dr%
  523.     curCol%=c%
  524.     curRow%=r%
  525.     DO
  526.         IF curCol%<>0
  527.             coin%=GetCoin:(curCol%,curRow%)
  528.         ELSE
  529.             break
  530.         ENDIF
  531.         IF coin%<>pl%
  532.             break
  533.         ELSE
  534.             count%=count%+1
  535.         ENDIF
  536.         curCol%=curCol%-1
  537.     UNTIL count%=4
  538.         RETURN count%
  539. ENDP
  540.  
  541. PROC Check_r:(c%,r%,pl%)
  542.     LOCAL curCol%,curRow%,count%,coin%,dr%
  543.     curCol%=c%
  544.     curRow%=r%
  545.     DO
  546.         IF curCol%<>8
  547.             coin%=GetCoin:(curCol%,curRow%)
  548.         ELSE
  549.             break
  550.         ENDIF
  551.         IF coin%<>pl%
  552.             break
  553.         ELSE
  554.             count%=count%+1
  555.         ENDIF
  556.         curCol%=curCol%+1
  557.     UNTIL count%=4
  558.         RETURN count%
  559. ENDP
  560.  
  561. PROC Check_d:(c%,r%,pl%)
  562.     LOCAL curCol%,curRow%,count%,coin%,dr%
  563.     curCol%=c%
  564.     curRow%=r%
  565.     DO
  566.         IF curRow%<>6
  567.             coin%=GetCoin:(curCol%,curRow%)
  568.         ELSE
  569.             break
  570.         ENDIF
  571.         IF coin%<>pl%
  572.             break
  573.         ELSE
  574.             count%=count%+1
  575.         ENDIF
  576.         curRow%=curRow%+1
  577.     UNTIL count%=4
  578.         RETURN count%
  579. ENDP
  580.  
  581. PROC Check_u:(c%,r%,pl%)
  582.     LOCAL curCol%,curRow%,count%,coin%,dr%
  583.     curCol%=c%
  584.     curRow%=r%
  585.     DO
  586.         IF curRow%<>0
  587.             coin%=GetCoin:(curCol%,curRow%)
  588.         ELSE
  589.             break
  590.         ENDIF
  591.         IF coin%<>pl%
  592.             break
  593.         ELSE
  594.             count%=count%+1
  595.         ENDIF
  596.         curRow%=curRow%-1
  597.     UNTIL count%=4
  598.         RETURN count%
  599. ENDP
  600.  
  601. PROC Check_ul:(c%,r%,pl%)
  602.     LOCAL curCol%,curRow%,count%,coin%,dr%
  603.     curCol%=c%
  604.     curRow%=r%
  605.     DO
  606.         IF curRow%<>0 AND curCol%<>0
  607.             coin%=GetCoin:(curCol%,curRow%)
  608.         ELSE
  609.             break
  610.         ENDIF
  611.         IF coin%<>pl%
  612.             break
  613.         ELSE
  614.             count%=count%+1
  615.         ENDIF
  616.         curCol%=curCol%-1
  617.         curRow%=curRow%-1
  618.     UNTIL count%=4
  619.         RETURN count%
  620. ENDP
  621.  
  622. PROC Check_dr:(c%,r%,pl%)
  623.     LOCAL curCol%,curRow%,count%,coin%,dr%
  624.     curCol%=c%
  625.     curRow%=r%
  626.     DO
  627.         IF curRow%<>6 AND curCol%<>8
  628.             coin%=GetCoin:(curCol%,curRow%)
  629.         ELSE
  630.             break
  631.         ENDIF
  632.         IF coin%<>pl%
  633.             break
  634.         ELSE
  635.             count%=count%+1
  636.         ENDIF
  637.         curCol%=curCol%+1
  638.         curRow%=curRow%+1
  639.     UNTIL count%=4
  640.         RETURN count%
  641. ENDP
  642.  
  643. PROC Check_ur:(c%,r%,pl%)
  644.     LOCAL curCol%,curRow%,count%,coin%,dr%
  645.     curCol%=c%
  646.     curRow%=r%
  647.     DO
  648.         IF curRow%<>0 AND curCol%<>8
  649.             coin%=GetCoin:(curCol%,curRow%)
  650.         ELSE
  651.             break
  652.         ENDIF
  653.         IF coin%<>pl%
  654.             break
  655.         ELSE
  656.             count%=count%+1
  657.         ENDIF
  658.         curCol%=curCol%+1
  659.         curRow%=curRow%-1
  660.     UNTIL count%=4
  661.         RETURN count%
  662. ENDP
  663.  
  664. PROC Check_dl:(c%,r%,pl%)
  665.     LOCAL curCol%,curRow%,count%,coin%,dr%
  666.     curCol%=c%
  667.     curRow%=r%
  668.     DO
  669.         IF curRow%<>6 AND curCol%<>0
  670.             coin%=GetCoin:(curCol%,curRow%)
  671.         ELSE
  672.             break
  673.         ENDIF
  674.         IF coin%<>pl%
  675.             break
  676.         ELSE
  677.             count%=count%+1
  678.         ENDIF
  679.         curCol%=curCol%-1
  680.         curRow%=curRow%+1
  681.     UNTIL count%=4
  682.         RETURN count%
  683. ENDP
  684.  
  685. PROC About:
  686.     dINIT "About"
  687.     dTEXT "","Puissance 4 v0.6, by Herve Baile"
  688.     dTEXT "","This game is not finished actually. this is a trial version distributed"
  689.     dTEXT "","freely on the WEB at : http://www.geocitties.com/SiliconValley/Bay/8292/"
  690.     dTEXT "","The source code of this program is also available. I hope you will find"
  691.     dTEXT "","it useful. Don't forget to mail me your comments at : hbaile@geocities.com"
  692.     dTEXT "","Keep checking my homepage for the future releases and more infos."
  693.     dBUTTONS "Ok",%o+256
  694.     DIALOG
  695. ENDP
  696.  
  697. PROC End:
  698.     LOCAL c%,r%,coin%
  699.     DO
  700.         c%=c%+1
  701.         DO
  702.             r%=r%+1
  703.             coin%=GetVal:(c%,r%)
  704.             IF coin%=0
  705.                 RETURN coin%
  706.             ENDIF
  707.         UNTIL r%=5
  708.         r%=0
  709.     UNTIL c%=7
  710.     RETURN 1
  711. ENDP
  712.  
  713.  
  714.