home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1988-01-20 | 2.7 KB | 150 lines |
- Screen Open 0,640,200,8,Hires
- Curs Off : Cls 0 : Pen 2 : Paper 0
- Set Input 10,-1
- Open In 1,"Amoner001:Knight.txt"
- CHESSME=0
- Gosub PHASE0
- PHASE=0
- TEX_READ:
- PHASE=PHASE+1
- For LINE=LINE+1 To H
- Line Input #1,LINE$
- Print LINE$
- Next LINE
- If CHESSME=1 Then Gosub BOARD1
- If CHESSME=2 Then Gosub BOARD2
- If CHESSME=3 Then Gosub BOARD3
- Repeat : Until Mouse Click
- GT$="phase"+Str$(PHASE)-" "
- Cls 0
- Gosub GT$ : Goto TEX_READ
- PHASE0:
- Locate 1,6 : H=8
- Return
- PHASE1:
- Locate 1,2 : H=25
- Return
- PHASE2:
- Locate 1,2 : H=42
- Return
- PHASE3:
- Locate 1,2 : H=61
- Return
- PHASE4:
- Locate 1,2 : H=75
- Return
- PHASE5:
- Locate 1,1 : H=96
- Inc CHESSME
- Return
- PHASE6:
- Locate 1,1 : H=120
- Inc CHESSME
- Return
- PHASE7:
- Locate 1,1 : H=135
- Inc CHESSME
- Return
- PHASE8:
- Locate 1,1 : H=155
- Inc CHESSME
- Return
- PHASE9:
- Close 1
- Run "Amoner001:Start.amos"
- BOARD1:
- CHESSBOARD[360,12]
- KNIGHT[445,43]
- MARKMOVES[6,4,445,43]
- Print At(51,12);"Figure 1"
- CHESSBOARD[32,100]
- KNIGHT[37,171]
- MARKMOVES[1,8,37,170]
- Print At(10,23);"Figure 2"
- Return
- BOARD2:
- CHESSBOARD[150,60]
- KNIGHT[235,90]
- MARKMOVES[6,4,235,90]
- For X=1 To 8
- Ink 7,0
- If X=5 Then Ink 2,0
- Draw 140+(X*20),50 To 140+(X*20),150
- Text 128+(X*20),160,(Str$(X-5))
- Ink 7,0
- If X=4 Then Ink 2,0
- Draw 130,55+(X*10) To 320,55+(X*10)
- Text 110,58+(X*10),(Str$(4-X))
- Next X
- Print At(1,15);"Figure 3"
- Return
- BOARD3:
- CHESSBOARD[200,120]
- KNIGHT[348,131]
- MARKBOARD[200,120]
- Print At(60,16);"Figure 4"
- Return
- Procedure CHESSBOARD[X,Y]
- C=1
- For X1=0 To 140 Step 20
- For Y1=0 To 70 Step 10
- C=3-C
- Ink C
- Bar X+X1,Y+Y1 To X+X1+19,Y+Y1+9
- Next Y1
- C=3-C
- Next X1
- End Proc
- Procedure KNIGHT[X,Y]
- Restore KNIGHT_SHAPE
- For Y1=0 To 7
- For X1=0 To 7
- Read B_OR_W
- If B_OR_W=1 Then Plot X+X1,Y+Y1,0
- Next X1
- Next Y1
- KNIGHT_SHAPE:
- Data 0,0,0,0,0,0,0,0
- Data 0,0,0,1,0,0,0,0
- Data 0,0,1,1,1,0,0,0
- Data 0,1,1,1,1,0,0,0
- Data 0,0,0,1,1,0,0,0
- Data 0,0,1,1,1,0,0,0
- Data 0,1,1,1,1,1,0,0
- Data 0,0,0,0,0,0,0,0
- End Proc
- Procedure MARKMOVES[XS,YS,X,Y]
- Restore CORDS
- For SET=1 To 8
- Read XC,YC
- If(XS+XC)>0 and(XS+XC)<9 and(YS+YC)>0 and(YS+YC)<9
- Ink 6
- Circle 5+X+(XC*20),4+Y+(YC*10),3
- Paint X+(XC*20)+5,Y+(YC*10)+4
- End If
- Next SET
- CORDS:
- Data 1,-2,2,-1,2,1,1,2,-1,2,-2,1,-2,-1,-1,-2
- End Proc
- Procedure MARKBOARD[X,Y]
- Restore MARKS
- For Y1=1 To 8
- For X1=1 To 8
- Read MARK
- If MARK=1
- Ink 6
- Circle X+(X1*20)-10,Y+(Y1*10)-5,3
- Paint X+(X1*20)-10,Y+(Y1*10)-5
- End If
- Next X1
- Next Y1
- MARKS:
- Data 1,1,1,0,1,1,1,1
- Data 1,1,1,1,1,0,1,0
- Data 1,1,1,1,1,1,1,1
- Data 1,0,0,1,1,1,1,1
- Data 1,1,1,1,1,1,1,1
- Data 1,1,1,1,1,1,1,1
- Data 1,1,1,1,1,1,1,1
- Data 1,1,1,1,1,1,1,0
- End Proc