home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 126-150 / apd140 / dot-matrix.amos / dot-matrix.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1990-08-11  |  8.4 KB  |  417 lines

  1. 'Set Buffer 25 
  2. Default 
  3. Rem ********************************************** 
  4. Rem *********                            ********* 
  5. Rem *********      DOT MATRIX GAME       ********* 
  6. Rem ****                                      **** 
  7. Rem ***         BY THE ARC ANGEL 1990          *** 
  8. Rem *******                                ******* 
  9. Rem ********************************************** 
  10. Screen Open 0,320,256,16,Lowres
  11. Flash Off : Curs Off 
  12. MATRIX
  13. Procedure MATRIX
  14.    Unpack 6 To 0
  15.   Get Sprite Palette 
  16.    Colour 5,$F00
  17.    Colour 6,$F
  18.    Get Cblock 1,0,0,230,256
  19.    Limit Mouse 128,50 To 440,280
  20.    Restore Y1
  21.    Reserve Zone 5
  22.    For T=1 To 4
  23.       Read A,B,C,D
  24.       Set Zone T,A,B To C,D
  25.    Next T
  26.    Y1:
  27.    Data 299,44,313,58,299,65,313,79,245,106,309,114,245,128,309,136
  28.    Get Block 1,0,0,16,16 : Wait Vbl : Print : Put Block 1,0,0
  29.    TT:
  30.    Put Cblock 1,0,0
  31.    Curs Off 
  32.    Flash Off 
  33.    Paper 0
  34.    Locate 33,24 : Print PLA
  35.    Locate 33,29 : Print PLA2
  36.    Goto ZON_PLA
  37.    STRT:
  38.    Put Cblock 1,0,0
  39.    Limit Mouse 128,50 To 357,280
  40.    Ink 1 : Paper 0
  41.    Flash 3,"(FFF,2)(200,2)(300,2)(400,2)(500,2)(600,2)(700,2)(800,2)"
  42.    X=18 : Y=28 : LP=1
  43.    For ACC=1 To N
  44.       For DWN=1 To N
  45.          For XX=1 To 3
  46.             For YY=1 To 3
  47.                Plot X+XX,Y+YY
  48.             Next YY
  49.          Next XX
  50.          Y=Y+20
  51.       Next DWN
  52.       Y=28
  53.       X=X+20
  54.    Next ACC
  55. Double Buffer 
  56.    TP:
  57.    While Mouse Key<>0
  58.    Wend 
  59.    Ink 1
  60.    If PLA+PLA2=SIZE
  61.     Sam Play 3
  62.      If PLA>PLA2
  63.          Locate 0,30 : Print "player one has won"
  64.       End If 
  65.       If PLA<PLA2
  66.          Locate 0,30 : Print "player two has won"
  67.       End If 
  68.       PLA=0 : PLA2=0 : LP=1
  69.       While Mouse Key<>0
  70.       Wend 
  71.       Goto ZON_PLA
  72.    End If 
  73.    If Mouse Key=2
  74.       Goto TT
  75.    End If 
  76.    Ink 1
  77.    X1=X Mouse : X2=X Screen(X1)
  78.    Y1=Y Mouse : Y2=Y Screen(Y1)
  79.    C=Point(X2,Y2) : CU=Point(X,Y-3) : CD=Point(X,Y+3) : CL=Point(X-3,Y) : CR=Point(X+3,Y)
  80.    If LP=5
  81.       LP=1
  82.    End If 
  83.    If Mouse Key=1 and C<>1
  84.       Bell 
  85.       Goto TP
  86.    End If 
  87.    If LP<3
  88.       Locate 33,24 : Print PLA
  89.       Flash 4,"(100,2)(200,2)(300,2)(400,2)(500,2)(600,2)(700,2)(FFF,2)"
  90.    Else 
  91.       Locate 33,29 : Print PLA2
  92.       Flash 3,"(100,2)(200,2)(300,2)(400,2)(500,2)(600,2)(700,2)(FFF,2)"
  93.    End If 
  94.    If Mouse Key=1 and C=1 and LP>0 and LP<5
  95.       Curs Off 
  96.       X=X2/2 mod 0
  97.       XX=X*2
  98.       If XX<X2
  99.          X=X+1
  100.          X=X*2
  101.          Goto YC
  102.       End If 
  103.       If XX=X2-1
  104.          X=X-1
  105.          X=X*2
  106.          Goto YC
  107.       End If 
  108.       X=X*2
  109.       YC:
  110.       Y=Y2/2 mod 0
  111.       YY=Y*2
  112.       If YY<Y2
  113.          Y=Y+1
  114.          Y=Y*2
  115.          Goto XX_YY
  116.       End If 
  117.       If YY=Y2-1
  118.          Y=Y-1
  119.          Y=Y*2
  120.          Goto XX_YY
  121.       End If 
  122.       Y=Y*2
  123.       Goto XX_YY
  124.    End If 
  125.    Goto TP
  126.    XX_YY:
  127.    XX=X2-2
  128.    C=Point(XX,Y2)
  129.    CO=Point(XX+3,Y+1)
  130.    If X>X2 and CO<>1 and C=1
  131.       X=X-2
  132.    End If 
  133.    YY=Y2-2
  134.    C=Point(X2,YY)
  135.    CO=Point(X2+1,YY+3)
  136.    If Y>Y2 and CO<>1 and C=1
  137.       Y=Y-2
  138.    End If 
  139.    Goto LIN_DRW
  140.    LIN_DRW:
  141.    If LP=>1 and LP=<2
  142.       If LP=1
  143.          Y3=Y : X3=X : X4=0 : Y4=0
  144.       End If 
  145.       If LP=2
  146.          Y4=Y : X4=X
  147.       End If 
  148.       If X3=X4 and Y3=Y4
  149. Sam Play 1
  150.          LP=1
  151.          Goto TP
  152.       End If 
  153.       If Y4=Y3+20 and X4=X3
  154.          If CD<>0
  155.             Bell 
  156.             LP=1
  157.             Goto TP
  158.          End If 
  159.          Ink 5
  160. Gosub AMIN_DW
  161.          DR_E=3
  162.          PL=1
  163.          Gosub TST_LIN
  164.       End If 
  165.       If Y4=Y3-20 and X4=X3
  166.          If CU<>0
  167. Sam Play 1
  168.             LP=1
  169.             Goto TP
  170.          End If 
  171.          Ink 5
  172. Gosub AMIN_DW
  173.          DR_E=1
  174.          PL=1
  175.          Gosub TST_LIN
  176.       End If 
  177.       If X4=X3+20 and Y4=Y3
  178.          If CR<>0
  179. Sam Play 1
  180.             LP=1
  181.             Goto TP
  182.          End If 
  183.          Ink 5
  184. Gosub AMIN_AC
  185.          DR_E=2
  186.          PL=1
  187.          Gosub TST_LIN
  188.       End If 
  189.       If X4=X3-20 and Y4=Y3
  190.          If CL<>0
  191. Sam Play 1
  192.             LP=1
  193.             Goto TP
  194.          End If 
  195.          Ink 5
  196. Gosub AMIN_AC
  197.          DR_E=4
  198.          PL=1
  199.          Gosub TST_LIN
  200.       End If 
  201.       If LP<>1 and LP<>3 and LP=>4
  202.          Y4=0 : Y3=0 : X4=0 : X3=0
  203.          Inc LP
  204.          Goto TP
  205.       End If 
  206.    End If 
  207.    If LP=>3 and LP=<4
  208.       If LP=3
  209.          Y5=Y : X5=X : X6=0 : Y6=0
  210.       End If 
  211.       If LP=4
  212.          Y6=Y : X6=X
  213.       End If 
  214.       If X5=X6 and Y5=Y6
  215. Sam Play 1
  216.          LP=3
  217.          Goto TP
  218.       End If 
  219.       If Y6=Y5+20 and X6=X5
  220.          If CD<>0
  221. Sam Play 1
  222.             LP=3
  223.             Goto TP
  224.          End If 
  225.          Ink 6
  226. Gosub AMIN_DW1
  227.          DR_E=3
  228.          PL=2
  229.          Gosub TST_LIN
  230.       End If 
  231.       If Y6=Y5-20 and X6=X5
  232.          If CU<>0
  233. Sam Play 1
  234.             LP=3
  235.             Goto TP
  236.          End If 
  237.          Ink 6
  238. Gosub AMIN_DW1
  239.          DR_E=1
  240.          PL=2
  241.          Gosub TST_LIN
  242.       End If 
  243.       If X6=X5+20 and Y6=Y5
  244.          If CR<>0
  245. Sam Play 1
  246.             LP=3
  247.             Goto TP
  248.          End If 
  249.          Ink 6
  250. Gosub AMIN_AC1
  251.          DR_E=2
  252.          PL=2
  253.          Gosub TST_LIN
  254.       End If 
  255.       If X6=X5-20 and Y6=Y5
  256.          If CL<>0
  257. Sam Play 1
  258.             LP=3
  259.             Goto TP
  260.          End If 
  261.          Ink 6
  262. Gosub AMIN_AC1
  263.          DR_E=4
  264.          PL=2
  265.          Gosub TST_LIN
  266.       End If 
  267.       If LP=<1 and LP<>2 and LP<>3
  268.          Y6=0 : Y5=0 : X6=0 : X5=0 : LP=1
  269.          Goto TP
  270.       End If 
  271.    End If 
  272.    Inc LP
  273.    While Mouse Key<>0
  274.    Wend 
  275.    Goto TP
  276.    TST_LIN:
  277.    CW=Point(X-2,Y) : CN=Point(X,Y-2) : CNW=Point(X-20,Y-10) : CNNW=Point(X-10,Y-20)
  278.    CE=Point(X+2,Y) : CS=Point(X,Y+2) : CSW=Point(X-20,Y+10) : CSSW=Point(X-10,Y+20)
  279.    CNE=Point(X+20,Y-10) : CNNE=Point(X+10,Y-20) : CSE=Point(X+20,Y+10) : CSSE=Point(X+10,Y+20)
  280.    On DR_E Gosub BL_BR,TL_BL,TL_TR,TR_BR
  281.    If PL=1 and F=1
  282.       PLA=PLA+1
  283.       LP=1 : F=0
  284.       Goto TP
  285.    End If 
  286.    If PL=1 and F=2
  287.       PLA=PLA+2
  288.       LP=1 : F=0
  289.       Goto TP
  290.    End If 
  291.    If PL=2 and F=1
  292.       PLA2=PLA2+1
  293.       LP=3 : F=0
  294.       Goto TP
  295.    End If 
  296.    If PL=2 and F=2
  297.       PLA2=PLA2+2
  298.       LP=3 : F=0
  299.       Goto TP
  300.    End If 
  301.    F=0
  302.    Return 
  303.    BL_BR:
  304.    If CW<>0 and CSW<>0 and CSSW<>0
  305. Sam Play 2
  306.       Paint X-10,Y+10
  307.       F=1
  308.    End If 
  309.    If CE<>0 and CSE<>0 and CSSE<>0
  310. Sam Play 2
  311.       Paint X+10,Y+10,1
  312.       F=F+1
  313.    End If 
  314.    Return 
  315.    TL_BL:
  316.    If CN<>0 and CNNW<>0 and CNW<>0
  317. Sam Play 2
  318.       Paint X-10,Y-10,1
  319.       F=1
  320.    End If 
  321.    If CS<>0 and CSW<>0 and CSSW<>0
  322. Sam Play 2
  323.       Paint X-10,Y+10,1
  324.       F=F+1
  325.    End If 
  326.    Return 
  327.    TL_TR:
  328.    If CW<>0 and CNW<>0 and CNNW<>0
  329. Sam Play 2
  330.       Paint X-10,Y-10,1
  331.       F=1
  332.    End If 
  333.    If CE<>0 and CNE<>0 and CNNE<>0
  334. Sam Play 2
  335.       Paint X+10,Y-10,1
  336.       F=F+1
  337.    End If 
  338.    Return 
  339.    TR_BR:
  340.    If CN<>0 and CNE<>0 and CNNE<>0
  341. Sam Play 2
  342.       Paint X+10,Y-10,1
  343.       F=1
  344.    End If 
  345.    If CS<>0 and CSE<>0 and CSSE<>0
  346. Sam Play 2
  347.       Paint X+10,Y+10,1
  348.       F=F+1
  349.    End If 
  350.    Return 
  351.    ZON_PLA:
  352.    Limit Mouse 128,50 To 440,280
  353.    N=4 : Ink 1 : Paper 0
  354.    ZN:
  355.    MZ=Mouse Zone : M=Mouse Key
  356.    S=N-1 : SIZE=S^2 : If SIZE=24 : SIZE=25 : End If 
  357.    If MZ=1 and M=1
  358.       N=N+1
  359.       If N>10 : N=4 : End If 
  360.       S=N-1 : SIZE=S^2 : If SIZE=24 : SIZE=25 : End If 
  361.       Locate 33,10 : Print "   "
  362.       Locate 33,10 : Print SIZE : Curs Off 
  363.       While Mouse Key<>0
  364.       Wend 
  365.       Goto ZN
  366.    End If 
  367.    If MZ=2 and M=1
  368.       N=N-1
  369.       If N<4 : N=10 : End If 
  370.       S=N-1 : SIZE=S^2 : If SIZE=24 : SIZE=25 : End If 
  371.       Locate 33,10 : Print "   "
  372.       Locate 33,10 : Print SIZE : Curs Off 
  373.       While Mouse Key<>0
  374.       Wend 
  375.       Goto ZN
  376.    End If 
  377.    If MZ=3 and M=1
  378.       Goto STRT
  379.    End If 
  380.    If MZ=4 and M=1
  381.       End 
  382.    End If 
  383.    Goto ZN
  384. AMIN_DW:
  385. XX=Y4+20
  386. For M=0 To XX : Bob 1,X3-8,M,5 : Wait Vbl : Next M
  387. If Y4=Y3+20 : Draw X3,Y3+2 To X4,Y4-2 : Else 
  388. Draw X3,Y4+2 To X4,Y3-2 : End If 
  389. Limit Bob 1,0,0 To 235,256
  390. For M=X3-8 To 250 : Bob 1,M,Y4,3 : Wait Vbl : Next M : Bob Off 
  391. Return 
  392. AMIN_AC:
  393. XX=X4+20
  394. For M=0 To XX : Bob 1,M,Y3-8,3 : Wait Vbl : Next M
  395. If X4=X3+20 : Draw X3+2,Y3 To X4-2,Y4 : Else 
  396. Draw X3-2,Y3 To X4+2,Y4 : End If 
  397. For M=Y4 To 260 : Bob 1,X4,M,5 : Wait Vbl : Next M
  398. Bob Off 
  399. Return 
  400. AMIN_DW1:
  401. XX=Y6+20
  402. For M=0 To XX : Bob 1,X5-8,M,9 : Wait Vbl : Next M
  403. If Y6=Y5+20 : Draw X5,Y5+2 To X6,Y6-2 : Else 
  404. Draw X5,Y5-2 To X6,Y6+2 : End If 
  405. Limit Bob 1,0,0 To 235,256
  406. For M=X5-8 To 250 : Bob 1,M,Y6,6 : Wait Vbl : Next M
  407. Bob Off 
  408. Return 
  409. AMIN_AC1:
  410. XX=X6+20
  411. For M=0 To XX : Bob 1,M,Y5-8,6 : Wait Vbl : Next M
  412. If X6=X5+20 : Draw X5+2,Y5 To X6-2,Y6 : Else 
  413. Draw X5-2,Y5 To X6+2,Y6 : End If 
  414. For M=Y6 To 260 : Bob 1,X6,M,9 : Wait Vbl : Next M
  415. Bob Off 
  416. Return 
  417. End Proc