home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1990-08-11 | 8.4 KB | 417 lines |
- 'Set Buffer 25
- Default
- Rem **********************************************
- Rem ********* *********
- Rem ********* DOT MATRIX GAME *********
- Rem **** ****
- Rem *** BY THE ARC ANGEL 1990 ***
- Rem ******* *******
- Rem **********************************************
- Screen Open 0,320,256,16,Lowres
- Flash Off : Curs Off
- MATRIX
- Procedure MATRIX
- Unpack 6 To 0
- Get Sprite Palette
- Colour 5,$F00
- Colour 6,$F
- Get Cblock 1,0,0,230,256
- Limit Mouse 128,50 To 440,280
- Restore Y1
- Reserve Zone 5
- For T=1 To 4
- Read A,B,C,D
- Set Zone T,A,B To C,D
- Next T
- Y1:
- Data 299,44,313,58,299,65,313,79,245,106,309,114,245,128,309,136
- Get Block 1,0,0,16,16 : Wait Vbl : Print : Put Block 1,0,0
- TT:
- Put Cblock 1,0,0
- Curs Off
- Flash Off
- Paper 0
- Locate 33,24 : Print PLA
- Locate 33,29 : Print PLA2
- Goto ZON_PLA
- STRT:
- Put Cblock 1,0,0
- Limit Mouse 128,50 To 357,280
- Ink 1 : Paper 0
- Flash 3,"(FFF,2)(200,2)(300,2)(400,2)(500,2)(600,2)(700,2)(800,2)"
- X=18 : Y=28 : LP=1
- For ACC=1 To N
- For DWN=1 To N
- For XX=1 To 3
- For YY=1 To 3
- Plot X+XX,Y+YY
- Next YY
- Next XX
- Y=Y+20
- Next DWN
- Y=28
- X=X+20
- Next ACC
- Double Buffer
- TP:
- While Mouse Key<>0
- Wend
- Ink 1
- If PLA+PLA2=SIZE
- Sam Play 3
- If PLA>PLA2
- Locate 0,30 : Print "player one has won"
- End If
- If PLA<PLA2
- Locate 0,30 : Print "player two has won"
- End If
- PLA=0 : PLA2=0 : LP=1
- While Mouse Key<>0
- Wend
- Goto ZON_PLA
- End If
- If Mouse Key=2
- Goto TT
- End If
- Ink 1
- X1=X Mouse : X2=X Screen(X1)
- Y1=Y Mouse : Y2=Y Screen(Y1)
- C=Point(X2,Y2) : CU=Point(X,Y-3) : CD=Point(X,Y+3) : CL=Point(X-3,Y) : CR=Point(X+3,Y)
- If LP=5
- LP=1
- End If
- If Mouse Key=1 and C<>1
- Bell
- Goto TP
- End If
- If LP<3
- Locate 33,24 : Print PLA
- Flash 4,"(100,2)(200,2)(300,2)(400,2)(500,2)(600,2)(700,2)(FFF,2)"
- Else
- Locate 33,29 : Print PLA2
- Flash 3,"(100,2)(200,2)(300,2)(400,2)(500,2)(600,2)(700,2)(FFF,2)"
- End If
- If Mouse Key=1 and C=1 and LP>0 and LP<5
- Curs Off
- X=X2/2 mod 0
- XX=X*2
- If XX<X2
- X=X+1
- X=X*2
- Goto YC
- End If
- If XX=X2-1
- X=X-1
- X=X*2
- Goto YC
- End If
- X=X*2
- YC:
- Y=Y2/2 mod 0
- YY=Y*2
- If YY<Y2
- Y=Y+1
- Y=Y*2
- Goto XX_YY
- End If
- If YY=Y2-1
- Y=Y-1
- Y=Y*2
- Goto XX_YY
- End If
- Y=Y*2
- Goto XX_YY
- End If
- Goto TP
- XX_YY:
- XX=X2-2
- C=Point(XX,Y2)
- CO=Point(XX+3,Y+1)
- If X>X2 and CO<>1 and C=1
- X=X-2
- End If
- YY=Y2-2
- C=Point(X2,YY)
- CO=Point(X2+1,YY+3)
- If Y>Y2 and CO<>1 and C=1
- Y=Y-2
- End If
- Goto LIN_DRW
- LIN_DRW:
- If LP=>1 and LP=<2
- If LP=1
- Y3=Y : X3=X : X4=0 : Y4=0
- End If
- If LP=2
- Y4=Y : X4=X
- End If
- If X3=X4 and Y3=Y4
- Sam Play 1
- LP=1
- Goto TP
- End If
- If Y4=Y3+20 and X4=X3
- If CD<>0
- Bell
- LP=1
- Goto TP
- End If
- Ink 5
- Gosub AMIN_DW
- DR_E=3
- PL=1
- Gosub TST_LIN
- End If
- If Y4=Y3-20 and X4=X3
- If CU<>0
- Sam Play 1
- LP=1
- Goto TP
- End If
- Ink 5
- Gosub AMIN_DW
- DR_E=1
- PL=1
- Gosub TST_LIN
- End If
- If X4=X3+20 and Y4=Y3
- If CR<>0
- Sam Play 1
- LP=1
- Goto TP
- End If
- Ink 5
- Gosub AMIN_AC
- DR_E=2
- PL=1
- Gosub TST_LIN
- End If
- If X4=X3-20 and Y4=Y3
- If CL<>0
- Sam Play 1
- LP=1
- Goto TP
- End If
- Ink 5
- Gosub AMIN_AC
- DR_E=4
- PL=1
- Gosub TST_LIN
- End If
- If LP<>1 and LP<>3 and LP=>4
- Y4=0 : Y3=0 : X4=0 : X3=0
- Inc LP
- Goto TP
- End If
- End If
- If LP=>3 and LP=<4
- If LP=3
- Y5=Y : X5=X : X6=0 : Y6=0
- End If
- If LP=4
- Y6=Y : X6=X
- End If
- If X5=X6 and Y5=Y6
- Sam Play 1
- LP=3
- Goto TP
- End If
- If Y6=Y5+20 and X6=X5
- If CD<>0
- Sam Play 1
- LP=3
- Goto TP
- End If
- Ink 6
- Gosub AMIN_DW1
- DR_E=3
- PL=2
- Gosub TST_LIN
- End If
- If Y6=Y5-20 and X6=X5
- If CU<>0
- Sam Play 1
- LP=3
- Goto TP
- End If
- Ink 6
- Gosub AMIN_DW1
- DR_E=1
- PL=2
- Gosub TST_LIN
- End If
- If X6=X5+20 and Y6=Y5
- If CR<>0
- Sam Play 1
- LP=3
- Goto TP
- End If
- Ink 6
- Gosub AMIN_AC1
- DR_E=2
- PL=2
- Gosub TST_LIN
- End If
- If X6=X5-20 and Y6=Y5
- If CL<>0
- Sam Play 1
- LP=3
- Goto TP
- End If
- Ink 6
- Gosub AMIN_AC1
- DR_E=4
- PL=2
- Gosub TST_LIN
- End If
- If LP=<1 and LP<>2 and LP<>3
- Y6=0 : Y5=0 : X6=0 : X5=0 : LP=1
- Goto TP
- End If
- End If
- Inc LP
- While Mouse Key<>0
- Wend
- Goto TP
- TST_LIN:
- CW=Point(X-2,Y) : CN=Point(X,Y-2) : CNW=Point(X-20,Y-10) : CNNW=Point(X-10,Y-20)
- CE=Point(X+2,Y) : CS=Point(X,Y+2) : CSW=Point(X-20,Y+10) : CSSW=Point(X-10,Y+20)
- CNE=Point(X+20,Y-10) : CNNE=Point(X+10,Y-20) : CSE=Point(X+20,Y+10) : CSSE=Point(X+10,Y+20)
- On DR_E Gosub BL_BR,TL_BL,TL_TR,TR_BR
- If PL=1 and F=1
- PLA=PLA+1
- LP=1 : F=0
- Goto TP
- End If
- If PL=1 and F=2
- PLA=PLA+2
- LP=1 : F=0
- Goto TP
- End If
- If PL=2 and F=1
- PLA2=PLA2+1
- LP=3 : F=0
- Goto TP
- End If
- If PL=2 and F=2
- PLA2=PLA2+2
- LP=3 : F=0
- Goto TP
- End If
- F=0
- Return
- BL_BR:
- If CW<>0 and CSW<>0 and CSSW<>0
- Sam Play 2
- Paint X-10,Y+10
- F=1
- End If
- If CE<>0 and CSE<>0 and CSSE<>0
- Sam Play 2
- Paint X+10,Y+10,1
- F=F+1
- End If
- Return
- TL_BL:
- If CN<>0 and CNNW<>0 and CNW<>0
- Sam Play 2
- Paint X-10,Y-10,1
- F=1
- End If
- If CS<>0 and CSW<>0 and CSSW<>0
- Sam Play 2
- Paint X-10,Y+10,1
- F=F+1
- End If
- Return
- TL_TR:
- If CW<>0 and CNW<>0 and CNNW<>0
- Sam Play 2
- Paint X-10,Y-10,1
- F=1
- End If
- If CE<>0 and CNE<>0 and CNNE<>0
- Sam Play 2
- Paint X+10,Y-10,1
- F=F+1
- End If
- Return
- TR_BR:
- If CN<>0 and CNE<>0 and CNNE<>0
- Sam Play 2
- Paint X+10,Y-10,1
- F=1
- End If
- If CS<>0 and CSE<>0 and CSSE<>0
- Sam Play 2
- Paint X+10,Y+10,1
- F=F+1
- End If
- Return
- ZON_PLA:
- Limit Mouse 128,50 To 440,280
- N=4 : Ink 1 : Paper 0
- ZN:
- MZ=Mouse Zone : M=Mouse Key
- S=N-1 : SIZE=S^2 : If SIZE=24 : SIZE=25 : End If
- If MZ=1 and M=1
- N=N+1
- If N>10 : N=4 : End If
- S=N-1 : SIZE=S^2 : If SIZE=24 : SIZE=25 : End If
- Locate 33,10 : Print " "
- Locate 33,10 : Print SIZE : Curs Off
- While Mouse Key<>0
- Wend
- Goto ZN
- End If
- If MZ=2 and M=1
- N=N-1
- If N<4 : N=10 : End If
- S=N-1 : SIZE=S^2 : If SIZE=24 : SIZE=25 : End If
- Locate 33,10 : Print " "
- Locate 33,10 : Print SIZE : Curs Off
- While Mouse Key<>0
- Wend
- Goto ZN
- End If
- If MZ=3 and M=1
- Goto STRT
- End If
- If MZ=4 and M=1
- End
- End If
- Goto ZN
- AMIN_DW:
- XX=Y4+20
- For M=0 To XX : Bob 1,X3-8,M,5 : Wait Vbl : Next M
- If Y4=Y3+20 : Draw X3,Y3+2 To X4,Y4-2 : Else
- Draw X3,Y4+2 To X4,Y3-2 : End If
- Limit Bob 1,0,0 To 235,256
- For M=X3-8 To 250 : Bob 1,M,Y4,3 : Wait Vbl : Next M : Bob Off
- Return
- AMIN_AC:
- XX=X4+20
- For M=0 To XX : Bob 1,M,Y3-8,3 : Wait Vbl : Next M
- If X4=X3+20 : Draw X3+2,Y3 To X4-2,Y4 : Else
- Draw X3-2,Y3 To X4+2,Y4 : End If
- For M=Y4 To 260 : Bob 1,X4,M,5 : Wait Vbl : Next M
- Bob Off
- Return
- AMIN_DW1:
- XX=Y6+20
- For M=0 To XX : Bob 1,X5-8,M,9 : Wait Vbl : Next M
- If Y6=Y5+20 : Draw X5,Y5+2 To X6,Y6-2 : Else
- Draw X5,Y5-2 To X6,Y6+2 : End If
- Limit Bob 1,0,0 To 235,256
- For M=X5-8 To 250 : Bob 1,M,Y6,6 : Wait Vbl : Next M
- Bob Off
- Return
- AMIN_AC1:
- XX=X6+20
- For M=0 To XX : Bob 1,M,Y5-8,6 : Wait Vbl : Next M
- If X6=X5+20 : Draw X5+2,Y5 To X6-2,Y6 : Else
- Draw X5-2,Y5 To X6+2,Y6 : End If
- For M=Y6 To 260 : Bob 1,X6,M,9 : Wait Vbl : Next M
- Bob Off
- Return
- End Proc