home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / sourcecode / various / general_selector.amos / general_selector.amosSourceCode
AMOS Source Code  |  1993-01-08  |  5KB  |  154 lines

  1. ' How to use the procedure  - GSEL 
  2. '
  3. '
  4. ' First choose how many words the user can select
  5. '
  6. W=4
  7. '
  8. ' Now define the array F$ with the amount of words you chose 
  9. '
  10. Dim F$(W)
  11. '
  12. ' Now fill each array with a word
  13. '
  14. F$(1)="Amos"
  15. F$(2)="Amos Tome"
  16. F$(3)="Amos 3D"
  17. F$(4)="Amos Compiler"
  18. '
  19. ' Then simply call the procedure 
  20. '
  21. GSEL_["Amos Program",4]
  22. '
  23. '("Amos Program" is the title / 4 is the number of words)  
  24. '
  25. ' The result will now be stored in the variable  Param$
  26. '
  27. ' So you can simply print it like -: 
  28. '
  29. Print "Your result was -: "+Param$
  30. '
  31. 'NB.    The title of the selector will switch between (a) & (an) 
  32. '       depending on the first letter being a vowel or not.
  33. '
  34. '       All words will be sorted in to alphabetical order
  35. '
  36. '       As a default the screen created is screen 4  
  37. '
  38. Procedure GSEL_[TYPE$,TF]
  39.    '     Procedure written by Brett George
  40.    Auto View Off : Menu Off 
  41.    Shared F$()
  42.    For Z=0 To TF
  43.       If F$(Z)="" Then F$(Z)="�" Else Inc NO_OF_FILES
  44.    Next 
  45.    Screen Open 4,512,125,8,Hires
  46.    Flash Off : Curs Off 
  47.    Palette 0,$888,$777,$BBB,$444,$AAA : Cls 0
  48.    _DRAW[90,10,484,124,-1,""] : PUSH[122,25,464,114,"",0]
  49.    PUSH[96,36,116,98,"",0] : Ink 0
  50.    _DRAW[95,20,117,34,-1,""] : _DRAW[95,100,117,114,-1,""]
  51.    _DRAW[98,37,114,97,-1,""]
  52.    Reserve Zone 12 : Sort F$(0)
  53.    _DRAW[95,20,117,33,1,""] : _DRAW[95,100,117,114,2,""]
  54.    Polygon 105,31 To 105,27 To 102,27 To 106,23 To 110,27 To 107,27 To 107,31
  55.    Get Block 1,101,22,16,10,0 : Get Block 2,101,22,16,10,0 : Vrev Block 2
  56.    Put Block 1 : Put Block 2,100,103 : ZB=0 : POS=0 : Wait Vbl 
  57.    Paper 2 : Pen 0
  58.    If Left$(Upper$(TYPE$),1)="A" Then V$="n " Else Inc QWERTY
  59.    If Left$(Upper$(TYPE$),1)="E" Then V$="n " Else Inc QWERTY
  60.    If Left$(Upper$(TYPE$),1)="I" Then V$="n " Else Inc QWERTY
  61.    If Left$(Upper$(TYPE$),1)="O" Then V$="n " Else Inc QWERTY
  62.    If Left$(Upper$(TYPE$),1)="U" Then V$="n " Else Inc QWERTY
  63.    If QWERTY=5 Then V$=" "
  64.    Locate ,2 : Centre "Please select a"+V$+TYPE$
  65.    If NO_OF_FILES=<10
  66.       For FP=3 To 2+NO_OF_FILES
  67.          If F$(FP-3)<>"�"
  68.             Print At(16,FP+1)+Space$(40)
  69.             Print At(16,FP+1)+Zone$(F$(FP-3),FP)
  70.          End If 
  71.       Next 
  72.    Else 
  73.       For FP=3 To 12
  74.          If F$(FP-3)<>"�"
  75.             Print At(16,FP+1)+Space$(40)
  76.             Print At(16,FP+1)+Zone$(F$(FP-3),FP)
  77.          End If 
  78.       Next 
  79.    End If 
  80.    For Z=0 To 70
  81.       Screen Display Screen,,150-Z,,Z*2 : View : Wait Vbl 
  82.    Next 
  83.    Repeat 
  84.       While Mouse Key=1
  85.          If Mouse Zone=1 and POS>0
  86.             If ZB=0
  87.                ZB=2 : PUSH[95,20,117,34,"",0] : Put Block 1
  88.             End If 
  89.             Dec POS
  90.             For FP=3 To 12
  91.                Print At(16,FP+1)+Space$(40)
  92.                Print At(16,FP+1)+Zone$(F$(FP-3+POS),FP)
  93.             Next 
  94.          End If 
  95.          If Mouse Zone=2 and POS+10<NO_OF_FILES
  96.             If ZB=0
  97.                ZB=1 : PUSH[95,100,117,114,"",0] : Put Block 2,100,103
  98.             End If 
  99.             Inc POS
  100.             For FP=3 To 12
  101.                Print At(16,FP+1)+Space$(40)
  102.                Print At(16,FP+1)+Zone$(F$(FP-3+POS),FP)
  103.             Next 
  104.          End If 
  105.          If ZB=1 Then _DRAW[95,100,117,114,-1,""] : Put Block 2,100,103 : ZB=0
  106.          If ZB=2 Then _DRAW[95,20,117,34,-1,""] : Put Block 1 : ZB=0
  107.          For Z=3 To NO_OF_FILES+2
  108.             If Mouse Zone=Z
  109.                RET$=F$(Z-3+POS) : Exit 3
  110.             End If 
  111.          Next 
  112.       Wend 
  113.    Until Mouse Key=2
  114.    Curs Off : Reserve Zone : Del Block : ZB=0
  115.    For GO=70 To 0 Step True
  116.       Screen Display Screen,,150-GO,,GO*2 : View : Wait Vbl 
  117.    Next 
  118.    Limit Mouse 128,42 To 447,298+(-Ntsc*55) : Screen Close Screen
  119.    Auto View On : POS=0
  120. End Proc[RET$]
  121. Procedure PUSH[X,Y,X1,Y1,MESSAGE$,TIME]
  122.    ' Procedure written by Brett George
  123.    Ink 2 : Bar X,Y To X1,Y1
  124.    If MESSAGE$<>""
  125.       Ink 0 : Box X-1,Y-1 To X1+1,Y1+1
  126.       Ink 1 : Plot X-1,Y-1 : Plot X-1,Y1+1 : Plot X1+1,Y-1 : Plot X1+1,Y1+1
  127.    End If 
  128.    Ink 5 : Draw X1,Y1 To X,Y1 : Draw X1,Y1-1 To X+1,Y1-1
  129.    Draw X1,Y1 To X1,Y : Draw X1-1,Y1-1 To X1-1,Y : Ink 4
  130.    Draw X,Y To X1,Y : Draw X,Y+1 To X1-1,Y+1 : Draw X,Y To X,Y1
  131.    Draw X+1,Y To X+1,Y1-1
  132.    If MESSAGE$<>""
  133.       _=((X+X1)/2-(Text Length(MESSAGE$))/2)-2 : Gr Writing 0 : Ink 4
  134.       Text _,(Y+Y1)/2+Text Base/2,MESSAGE$
  135.       Ink 0
  136.       Text _-1,((Y+Y1)/2+Text Base/2)-1,MESSAGE$
  137.    End If 
  138.    If TIME>0 Then Wait TIME : _DRAW[X,Y,X1,Y1,-1,MESSAGE$] : Wait TIME
  139. End Proc
  140. Procedure _DRAW[X,Y,X1,Y1,NUM,MESSAGE$]
  141.    'Procedure written by Brett George 
  142.    Ink 0 : Box X-1,Y-1 To X1+1,Y1+1
  143.    Ink 1 : Plot X-1,Y-1 : Plot X-1,Y1+1 : Plot X1+1,Y-1 : Plot X1+1,Y1+1
  144.    Ink 2 : Bar X,Y To X1,Y1 : Ink 4 : Draw X1,Y1 To X,Y1
  145.    Draw X1,Y1-1 To X+1,Y1-1 : Draw X1,Y1 To X1,Y : Draw X1-1,Y1 To X1-1,Y-1
  146.    Ink 5 : Draw X,Y To X1,Y : Draw X,Y+1 To X1-1,Y+1
  147.    Draw X,Y To X,Y1 : Draw X+1,Y To X+1,Y1-1 : If NUM>0 Then Set Zone NUM,X,Y To X1,Y1 : Ink 0
  148.    If MESSAGE$<>""
  149.       _=((X+X1)/2-(Text Length(MESSAGE$))/2)-2 : Gr Writing 0 : Ink 4
  150.       Text _,(Y+Y1)/2+Text Base/2,MESSAGE$
  151.       Ink 0
  152.       Text _-1,((Y+Y1)/2+Text Base/2)-1,MESSAGE$
  153.    End If 
  154. End Proc